软件工程复习——第一章
第一章
1、软件危机:
在计算机软件的开发和维护过程中所遇到的一系列严重问题
原因:
与软件本身特点有关 测试 规模 可预见性
与开发与维护方法的不正确有关 忽视需求分析与软件维护
解决:
正确认识计算机软件
技术措施 组织管理措施
2、软件工程:
软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科
方法学:传统方法学(静态) 面向对象方法学(动态)
方法学三要素:方法 工具 过程(方法和工具是课程重点)
(重点)3、软件生命周期
软件定义:问题定义 可行性分析 需求分析
软件开发:概要设计 详细设计 编码 测试
运行维护:运行维护
(之后分章节详细讲述 需了解阶段划分及各阶段的任务)
(重点)4、软件过程:为获得高质量软件所需完成的一系列任务的框架,其规定了完成各项任务的工作步骤
生命周期模型:
1)瀑布模型:遵循软件生存期的划分,明确规定各个阶段的任务,各个阶段的工作自上而下、顺序展开
特点:阶段间具有顺序性和依赖性 推迟实现的观点 质量保证的观点
优点:提供软件开发、维护规范 对于需求确定、不随时间发生变化的项目比较优秀
缺点:完全依赖静态文档 开发成本高 会出现“阻塞”状态
2)快速原型模型:快速建立起可以在计算机上运行的程序,其功能往往是最终产品功能的子集
(该模型=快速原型+“瀑布”-“反馈环”)
优点:减少由于需求的不明确而带来的开发风险
缺点:大型复杂系统x 缺乏规范化文档
3)增量模型:把软件产品作为一系列的增量构件来设计、编码、集成和测试
第一个增量构件往往实现软件的基本需求,提供最核心的功能
优点:
较短时间内提交可以部分工作的产品
减少全新产品带给客户的冲击
重要功能被首先交付使用,可以得到更多测试
缺点:集成新的增量构件时,必须保证不破坏原有系统(需要开放式架构)
有构件无法集成到一起的风险
4)螺旋模型:风险分析+“快速原型模型”
图片:
a.带箭头的点划线的长度代表当前累计的开发费用
b.螺线旋过的角度值代表开发进度
c.每周期对应一个开发阶段
优点
¨对可选方案和约束条件的强调有利于已有软件的重用
¨有助于把软件质量作为软件开发的重要目标
¨减少了过多/过少测试带来的风险
¨维护作为开发的一个周期,与开发没有本质区别
¨风险驱动型:风险过大时能及时终止项目
缺点
¨风险驱动:需要专业的风险评估人员
5)喷泉模型:典型的面向对象生命周期模型 具有迭代和无缝的特性
总目标:
线性过程
图片:
1、圆圈重叠:活动之间存在交迭
2、OO方法:保证各项开发活动无缝过渡
3、向下箭头:阶段内的迭代(求精)
4、各项活动无明显边界,可同步进行
5)了解敏捷过程和极限编程的基本思想
敏捷开发:渐增式 协作 简单易懂 适配性
极限编程:要将软件开发中好的原则和实践演绎到极致