软件的生命周期主要包括哪些阶段?请简要说明各阶段的主要任务
- 分析阶段:分析、整理和提炼所收集到的用户需求,建立完整的分析模型,将其编写成软件需求规格说明和初步的用户手册;
- 设计阶段:设计人员根据软件需求规格说明文档,确定软件的体系结构,进而确定每个模块的实现算法、数据结构和接口等,编写设计说明书,并组织进行设计评审;
- 实现阶段:将所设计的各个模块编写成计算机可接受的程序代码,与实现相关的文档就是源程序以及合适的注释;
- 测试阶段:在设计测试用例的基础上,测试软件的各个组成模块,然后将各个模块集成在一起,测试整个产品的性能和功能是否满足已有的规格说明;
- 维护阶段:为了改正错误、适应环境变化和增强功能,对软件进行一系列的修订。
什么是黑盒测试?什么是白盒测试?
黑盒测试:完全不考虑程序的内部结构和处理过程,只知道软件产品应该具有的功能,通过测试检验每个功能是否能正常使用,又称功能测试或行为测试;
白盒测试:透明盒测试,已经知道产品的内部工作过程,通过测试检验产品的内部动作是否按照产品规格说明的规定正常运行;
过程模型的异同及其适应领域
(1)瀑布模型:
适合于需求明确,无重大变化的软件开发;
‘优点’---开发质量高,层次化明确,需求明确。
‘缺点’---不支持迭代开发,会产生大量文档,软件开发周期长。
(2)快速原型模型:
需求不确定,已有类似原型或有原型开发工具,进行产品移植或升级;
‘优点’---关注用户需求,从而减少由于软件需求不明确带来的开发风险。
‘缺点’---快速建立起来的系统结构和不断的修改导致产品质量低下,所选用的开发技术和工具不一定符合主流发展导致人才技术要求高。
(3)螺旋模型:适用于需求不明确的大型软件系统的开发,并支持软件规格说明、面向过程、面向对象等多种软件开发方法;
‘优点’---提高大型项目开发的质量和效率。
‘缺点’---风险高、投资大、周期长
(4)喷泉模型:适用于面向对象的开发方法
‘优点’---提高软件项目开发效率。
‘缺点’---在各个开发阶段都是重叠的,因此在开发过程需要大量开发人员,不利于项目管理。
(5)增量模型:非整体开发的思想,需求经常发生改变的项目
‘优点’---人员分配灵活,可短时间交付。
‘缺点’---容易退化成边做边改模型。
比较面向对象开发方法与结构化开发方法的异同
1.结构化的最大特点是面向功能分解问题,但处理与数据是分离的,并且在设计阶段和分析阶段采用不同的模型。
- 优点:简单、实用,适合于瀑布模型,易于为开发者掌握,特别适合于数据处理领域中的应用。
- 缺点:难以解决软件重用、维护问题,难以适应需求变化。
2.面向对象方法以最稳定的对象与类系统作为考虑问题的出发点,通过不断反复、累增,逐步改进系统,从而获得更符合用户需求、简单可靠、适应性强的系统。面向对象方法强调对象结构,而不是程序结构,从而解决了抽象和重用的问题,成为当今的主流模式。
UML各种类型建模图
静态模型:用例图,类图,对象图,包图,构件图,部署图
动态模型:状态图,活动图,协作图,序列图
功能模型:用例图
软件概要设计中应该遵循的基本原理
模块化、抽象、逐步求精、信息隐藏和局部化、模块独立。
什么是软件工程?什么是软件过程?
软件工程:为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。
软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。描述了who、when、what、how,用以实现某一个特定的具体目标。定义了运用方法的顺序、应该交付的文档资料、管理措施和标识软件开发各个阶段任务完成的里程碑。