3-1 软件工程与开发模型
考点分析

只考察上午题
最常考察:关键路径法、软件工程基础
软件工程基础
软件危机:随着软件复杂度提升,开发成本、软件质量、生产效率等问题,软件系统涉及因素巨大
软件工程:为了消除软件危机,以工程学思路进行软件开发,即软件工程
软件工程三个要素
方法:完成软件工程项目的技术手段——偏向于使用的架构
工具:支持软件的开发、管理、文档生成——语言、管理、文档等
过程:支持软件开发的各个环节控制、管理——偏向于项目管理
软件的生命周期
软件生命周期:即软件产品从考虑其概念到产品交付使用,直至最终退役为止的整个过程。可以分为以下6个周期
计划阶段:确定待开发系统的总体目标和范围,可行性研究和预算、进度估算
分析阶段:分析、整理和提炼用户需求,编写需求规格说明书和初步用户手册
设计阶段:根据需求规格说明书,确定软件体系结构,确定每个模块的实现算法、数据结构和接口,编写设计说明书,并组织评审。——系统架构师
实现阶段:将设计的各个模块编写成计算机可接受的程序代码和相关文档——程序员
测试阶段:测试各个功能模块,然后将各个模块集成起来,进行功能需求测试——测试人员
运行维护阶段:后期运维,增删改
软件开发的模型
瀑布模型
定义:将软件生命周期分为:制定计划、需求分析、软件设计、程序编写、软件测试和运行维护6个阶段,并规定他们是自上而下、相互衔接的固定次序
优点:可以规范过程,有利于评审(一步一步形成过程文档,利于评审)
缺点:过于理想,缺乏灵活性,容易产生需求偏差
适用性:用户需求明确、软件开发单位有充足经验和案例的项目(即适用非常成熟的项目)

快速原型模型(抛弃原型法)
第一步是建造一个快速原型,让用户评价,之后抛弃原型,确定需求转入正式开发。
可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险
演化模型(演化原型法)
与快速原型模型不同的是,该模型快速开发一个原型,逐步演化成最终软件。
增量模型
- 软件被作为一系列的增量构件来设计、实现、集成和测试(即先逐个开发子模块,客户逐个看到,再验证修改)
- 整个产品被分解成若干构件,开发人员可以逐个开发交付,客户可以不断看到开发的软件,从而降低开发风险,有利于快速开发软件
螺旋模型
综合了瀑布模型和演化模型的优点,还增加了风险分析,特别适合大型复杂系统
