软件制造工程期末复习知识点汇总(一)——软件工程概述
传统的瀑布式开发
缺点:不能适应需求的动态变更
敏捷开发
概念:一种以人为核心、迭代、循序渐进的开发方法。
力求在很短的周期内开发出产品的核心功能,尽早发布出可用的版本。然后在后续的生产周期内,按照新需求不断迭代升级,完善产品。
实现:SCRUM,XP(极限编程),Crystal Methods、FDD
1.了解软件工程学产生的背景和原因
背景:1960~1970软件危机
时间:1968年
软件危机:在计算机软件的开发和维护过程中所遇到的一系列严重问题
表现形式:用户需求,可维护性,可靠性,成本,开发速度,质量
软件≠程序
软件=程序+数据+文档
2.了解软件工程的基本原理、概念和方法
软件工程:是指导计算机软件 开发 和 维护 的一门工程学科。
特性:关注大型程序的构造,控制复杂性,经常变化,和谐合作
基本原理:分阶段,阶段评审,产品控制
软件工程的中心课题:控制复杂性
软件工程包括 技术 和管理 两方面的内容
技术方面:
技术,即方法学(又称范型)
三个要素:方法,工具,过程
方法:
传统方法学(生命周期方法学/结构化范型):划分为若干个阶段,强调自顶向下,采用 结构化技术 来完成软件;
面向对象方法学:强调主动地多次反复迭代
面向对象方法=对象+类+继承+用消息通信
3.掌握软件生命周期模型
组成:三个时期八个阶段
问题定义:问题是什么=》关于系统规模和目标的报告书
可行性研究:问题是否有解决方案=》系统的高层逻辑模型(数据流图、成本效益分析),可行性论证报告
需求分析:必须做什么=》系统的逻辑模型(数据流图、数据字典、简要的算法描述),需求规格说明书
概要设计:如何解决已提出的问题=>系统流程图、成本效益分析,系统体系结构(层次图或结构图)
详细设计:怎样具体实现该系统=》程序流程图、PAD图、N-S图
编码和单元测试:得到正确的程序模块=》代码和测试报告
综合测试:得到符合要求的软件=》测试计划、详细测试方案以及实际测试结果,完整一致的软件配置
软件发布、运行、维护:使系统持久地满足用户的需要=》完整准确的维护记录
其中维护占生命周期的一半以上,维护又细分为:完整性维护(对应用户需求)>适应性维护(软件运行环境)~改正性维护(Bug)>预防性维护(预防Bug)
4.为特定的项目选择适合的模型
软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
软件过程模型:
软件过程模型 | 要点 | 优点 | 缺点 | 适用范围 |
---|---|---|---|---|
瀑布模型 | 每个阶段都有文档产出 | 文档驱动的有序方法 | 只能通过文档了解产品,交付产品可能不符合客户的要求 | 项目周期较短。需求是预知的,软件实现方法是成熟的; |
快速原型模型 | 不带反馈环,线性顺序进行,本质是“快速” | 确保交付的产品符合客户的要求 | 还没有证明无懈可击 | 无完整的需求说明,只有一些基本要求 |
增量模型 | 每一个增量均发布一个可操作产品 | 增大投资的早期回报,能在较短的时间内,提供可完成部分工作的初步产品给用户; | 要求较高,要求开放的结构,可能退化为建造-修补模型 | 需求经常改变,开发人员数量不够 |
螺旋模型 | 强调风险分析(快速原型+瀑布模型)+风险分析 | 结合上述所有模型的特性,风险驱动 | 开发成本,只能用于大型的内部软件产品,开发者必须精通风险分析和风险排除 | 适用于庞大、复杂并具有高风险的系统。 |
喷泉模型 | 无间隙 | 各个阶段没有明显的界限,开发人员可以同步进行开发。 | 不利于项目的管理,要求严格管理文档,使得审核的难度加大 | 适用于面向对象的软件开发过程。 |
Rational统一过程(RUP) | 迭代的,以架构为中心的,用例驱动的软件开发方法。四个阶段:初始阶段,精化阶段,构建阶段,移交阶段 | |||
敏捷过程之极限编程(XP) | 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。敏捷过程中最富盛名的一个 | 需求模糊,规模小、进度紧、需求变化大、质量要求严的项目。不适合项目团队超过10人的中大型项目,团队人员异地分布的项目; | ||
微软过程 | 每一个生命周期发布一个递进的版本,各生命周期持续快速地迭代循环 | 综合了Rational统一过程和敏捷过程的优点 | 对方法、工具和产品等方面不够全面 |