《软件工程与计算(卷二)》-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)反省
 
 
发布了137 篇原创文章 · 获赞 2 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/m0_37302219/article/details/104363055