《软件工程与计算(卷二)》-Chapter22-23-软件开发过程模型与软件工程职业基础
A级:
软件生命周期模型:需求工程→软件设计→软件实现→软件测试→软件交付→软件维护
需求工程:建立解决方案
主要任务:(获取,分析,规格说明,验证,管理)
需求开发:需求获取,需求分析,需求规格说明,需求验证
需求管理
方法:
结构化分析方法:DFD,ERD
面向对象分析方法:用例图,概念类图,行为模型(顺序图、状态图)
软件设计:如何完成功能
体系结构设计:高层设计
结构化方法:结构图
面向对象:包图,构件图,部署图
主要制品:软件体系结构原型,软件体系结构设计模型,软件体系结构设计文档(概要设计文档)
详细设计
结构化方法:结构图
面向对象:包图,类图,顺序图
主要制品:软件详细设计模型,软件详细设计文档
人机交互设计:设计交互机制,具有易用性
软件构造:构件软件
编程,集成,测试,调试
软件测试:保障产品质量
单元测试
集成测试
系统测试
方法:白盒与黑盒
软件交付:产品交付用户
安装与部署,用户培训,文档支持
软件维护:
完善性维护,适应性维护,修正性维护,预防性维护
****,再工程,遗留资产处理
构建-修复模型(Build-Fix Model):
缺点:没有考虑最基本的生命周期。没有分析需求的真实性。没有考虑软件结构的质量。没有考虑可维护性。
适用范围:软件规模很小、质量要求不高、对后期维护要求不高的程序可以使用。
瀑布模型(Waterfall Model):按照一个阶段到另一个阶段的有序的转换序列。要求每一个活动必须进行验证。
允许出现迭代,每个活动的结果必须验证,“文档驱动”
需求工程→软件设计→软件实现→软件测试→软件交付→软件维护(可以迭代反复)。
缺点:对文档的高期望、对开发活动的线性预设、客户用户参与不够、里程碑粒度过粗。
适用范围:需求非常成熟稳定、技术可靠、复杂度适中的工程。
增量迭代模型:
将开发活动组织为多个迭代、并行的瀑布式开发活动。“需求驱动”
目的:迭代,渐进交付,并行开发
优点:有更好的适用性,并行开发可以帮助缩短软件产品的开发时间,渐进交付可以加强用户反馈降低开发风险。
缺点:加入构件不能破坏已经构造的部分,需要完备清晰的项目前景。
适用范围:相对稳定、成熟的领域。
演化模型:
多个迭代、并行的瀑布式开发活动。
优点:
迭代式开发
并行开发
渐进交付加强用户反馈
缺点:无法确定项目范围,整体项目计划不好把握,后续迭代容易蜕变为Build-Fix模式。
适用范围:变更比较频繁,不稳定领域的大规模系统开发。
原型模型(Prototyping):注重使用抛弃式原型(不确定部分)而不是演化式原型(成为产品的一部分的原型)。
需求开发部分迭代(抛弃式原型):原型需求→设计原型→构件原型→评估原型。
优点:加强了客户用户的交流,适用于新颖的领域。
缺点:原型方法在避免风险时候带来新的风险,不舍得抛弃原型。
适用范围:不确定性较多的软件开发。
螺旋模型(Spiral Model):为了尽早解决比较高的风险。风险驱动。
是迭代与瀑布的结合,使用原型解决需求的不确定性
优点:可以降低风险,减少项目因风险造成的损失。
缺点:自身带来风险,模型过于复杂。
适用范围:高风险的大规模软件系统开发。
软件⼯工程知识体系的知识域:(SWEBOK)
第二版:(10个)
软件生命周期知识:(5个)
软件需求
软件设计
软件构造
软件测试
软件维护
软件工程的工程知识:(5个)(软件工程需要配置工具来控制生产过程和软件质量)
软件工程管理
软件配置管理
软件工程过程
软件工程工具和方法
软件质量
第三版:(新增5个)(职业软件工程师需要学习概率论,线性代数,高等数学和软件工程)
软件工程职业实践
工程经济学基础
计算基础
数学基础
工程基础
C级:
Rational统一过程:
软件生命周期:初始,细化,构造和交付
基础思想:迭代,管理需求,基于组件的体系结构,可视化建模,验证质量,控制变更
RUP裁剪
特点:
吸收借鉴了传统的最佳实践方法
适用面广
有一套软件工具的支持
缺点:
没有考虑交付后的软件维护问题
裁剪和配置工作不是一个简单的任务
敏捷过程:
敏捷宣言:
个人和他们之间的交流胜过了开发过程和工具
可运行的软件胜过了宽泛的文档
客户合作胜过了合同谈判
对变更的良好响应胜过了按部就班地遵循计划
敏捷原则:
(1)尽早、持续交付有价值的软件来使客户满意
(2)即使在项目的后期,也欢迎需求变更
(3)经常交付可运行的软件
(4)业务人员和开发人员必须天天都在一起工作
(5)围绕有积极性的个人构建项目
(6)最有效率和效果的信息传递方法是面对面交流
(7)可运行的软件是进度的首要度量标准
(8)提倡可持续的开发速度
(9)不断关注优秀的技能和好的设计会增强敏捷能力
(10)简单
(11)最好的架构、需求和设计出自于自组织团队
(12)反省