软件工程方法学的3要素是什么?
- 方法、工具、过程
软件生命周期的阶段如何还分,每个阶段的主要任务是什么?
- 软件定义(问题定义、可行性研究、需求分析)
问题定义:明白要解决的问题是什么 可行性研究:探索这个问题是否值得去解,是否有可行的解决办法 需求分析:确定系统必须具备哪些功能
- 软件开发(总体设计、详细设计、编码和单元测试、综合测试)
总体设计:设计出实现目标系统的几种可能方案,确定程序由哪些模块组成以及模块间的关系 详细设计:设计出程序的详细规格说明 编码和单元测试:写出正确的容易理解、容易维护的程序模块 综合测试:通过各种类型的测试和调试使软件达到预定的要求
- 软件维护(软件维护)
通过各种必要的维护活动使系统持久地满足用户的需要
结构化程序设计有哪几种基本结构,有何特点?有何要求?
基本结构:顺序、选择、循环
特点:任意基本结构都具有唯一入口和唯一出口
要求:尽可能少用go to语句,最好在检测出错误时采使用go to语句,而且应该总是使用前向go to语句
什么是白盒测试、什么是黑盒测试,白盒测试有哪些测试方法、黑盒测试有哪些测试方法?
白盒测试:按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作
黑盒测试:在程序接口进行的测试,只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性。
白盒测试的方法:逻辑覆盖、控制结构测试
黑盒测试的方法:等价划分、边界值分析、错误推测
耦合有哪些类别,内聚有哪些类型,各是何含义?
耦合:
非直接耦合:相互之间没有数据交换
数据耦合:两个模块通过参数交换信息
控制耦合:两个模块通过参数交换控制信息,这个信息会影响另一个模块
特征耦合:当把整个数据结构作为参数传递而被调用的模块只需要其中一部分数据元素时
公共数据环境耦合:多个模块共用一个数据环境
内容耦合:一个模块访问另一个模块里面的数据,一个模块不经过正常入口进入另一个模块,一个模块有多个入口,两个模块之间有代码重叠
内聚:
功能内聚:里面的元素为了共同实现同一个功能
顺序内聚:模块内两个步骤按照顺序执行,共同为了完成某个功能
通信内聚:使用相同的输入数据,或者产生相同的输出数据
过程内聚:一个模块内的处理元素是相关的,比如两个数据公用同一个循环或者判定条件,比如过程中用同一个公式执行
时间内聚:只是因为他们在同一个时间执行才把它们放到一起,比如共同用来初始化的一些函数,或者紧急处理模块
逻辑内聚:一个模块完成的任务在逻辑上属于相同或相似的一类
偶然内聚:一个模块完成一组任务,但是这些任务之间没有太大关系,关系是很松散的。
软件生命周期模型有哪些?各有何特点?
瀑布模型:阶段间具有顺序行和依赖性、推迟实现、质量保证
快速原型模型:快速建立起能够在计算机上运行的程序
增量模型:把软件产品作为一系列的增量构件来设计、编码、继承和测试
螺旋模型:是风险驱动的,在每个阶段之前都增加了风险分析过程
喷泉模型:具有面向对象软件开发过程迭代和无缝的特性