软件工程学习过程(2)
七大软件开发模型
瀑布模型
生存周期模型或线性顺序模型
模型图
- 问题定义→ 可行性研究→ 需求分析→ 概要设计→ 详细设计→ 编码→ 测试和维护
- 需求分析→ 规格说明→ 设计→ 编码 → 综合测试 → 维护
特点: - 阶段具有顺序性和依赖性
- 推迟实现观点:推迟程序物理实现 ,逻辑设计和物理设计分开,充分的准备之后才编码实现
- 质量保证观点, 以文档为驱动,适用于需求很明确的软件项目开发,每阶段都必须完成完整,准确的文档,每阶段结束前对文档评审
- 有严格的顺序性,灵活性差,产品出现晚,开发人员,阻塞状态严重
快速原型模型
快速建立反应用户主要需求的原型系统,反复由用户评价修正需求,开发出最终产品
模型图
- 快速原型→ 规格说明→ 设计→ 编码 → 综合测试 → 维护
特点 - 确定需求优于瀑布模型:通过原型与用户交互
- 增加开发者和使用着对系统的了解
- 出品速度块
- 逐步求精
- 开发阶段迭代特征
- 连续修改导致内部结构可能不好
- 实现过程中不应有的折中方案
- 开发者急于完成原型二忽略了整体设计和可维性
- 用户的参与造成软件开发管理的混乱
增量模型
分批向用户提交产品
模型图
- 需求分析→ 规格说明→ 设计→ 编码和集成 → 维护
特点 - 较短时间内向用户提交完成有用的工作产品
- 用户有充裕时间学习适应产品
- 软件结构必须开发,方便向现有产品加入新构建,灵活性高
- 并行构建后有可能会构建集成不到一起的风险
螺旋模型
螺旋模型是一种迭代模型,加入了风险分析→它是一种风险驱动的模型,适用于大规模高风险的软件项目开发
模型图
笛卡尔坐标四象限四方面活动
- 制定计划:确定目标,选定方案,设定约束条件
- 风险分析:评估方案,识别和消除风险
- 实施工程:软件开发
- 客户评估:评价开发工作,计划下一阶段工作,沿螺线自内而外每旋转一圈开发出更完善版本
特点 - 大型软件开发下目有较好的风险控制
- 需要风险评估的经验
- 契约式开发通常需要事先指定过程模型和分布产品 ,不适合螺旋模型
- 普及度不如前者模型
喷泉模型
一种比较典型的面向对象软件开发模型以用户需求为动力,以对象作为驱动,适合面向对象的开发方法
特点
- 迭代性→系统某部分常被重复工作多次,相关功能在每次迭代中加入演进系统,
- 无间隙性→分析,设计,编码不存在明显界限
- 提高开发效率和开发时间
- 过分迭代增加开发成本,甚至延迟提交时间
- 随时加入信息,审核难度加大
基于构建的开发模型,
利用预先封装的软件构件来构造应用软件系统,从而提高软件的重用性和可靠性,通常构件需要符合特定的接口标准,并实现一组接口
特点
可以在不同的计算机软件系统中复用,在某个领域具有一定的通用性
统一过程(RUP)模型
基于面向对象统一建模语言(UML)的一种面向对象的软件过程模型,RUP有九个核心工作流,包括6个核心过程工作流和三个核心支持工作流,有4个连续阶段,每阶段通过一次或多次迭代完成
特点
- RUP软件由用例驱动,以构件为中心,采用迭代和增量的开发策略,
- 它的软件生存周期是一个二维的软件开发模型
基于形式化的开发模型
借助数学的方法来研究计算机科学中的有关问题,确保严格,无错
变化模型→结合形式化软件开发方法和程序自动生成技术的一种软件开发模型,采用用严格的数学的表示体系来表示软件规格说明
净室模型→一种形式化的增量开发模型,在无错误或”净室“状态下实现软件开发
可行性研究
可行性研究的目的
这个阶段的目的不是解决用户提出的问题,而是确定这个问题是否值得去解决
可行性研究的任务
从经济,技术,操作,法律四个方面来研究每种算法的可行性
1.经济可行性→成本—效益分析,即要分析在整个软件周期中所花费的代价与得到的效益之间的度量
2.技术可行性→对要开发项目的功能,性能,限制条件进行分析
3.操作可行性→系统的操作方式在这个应用范围内是否新的通
4.法律可行性→会不会在社会上或政治上引起侵权
可行性研究的步骤
1.复查并确定系统规模和目标
2.研究目前正在使用的系统
3.建立新系统的高层逻辑模型
4.导出和评价各种方案
5/推荐可行方案
6.草拟初步的开发计划
7.编写可行性研究报告提交审查
成本-效益分析
系统成本包括开发成本和运行维护成本
系统效益包括
有形的经济效益
- 货币的时间价值→钱数=存入P元 x(1+年利率 x n年)→P元钱在n年后的价值
- 投资回收期
- 纯收入
无形的经济效益
可行性研究报告的主要内容
- 引言:说明编写文档的目的,项目名称,背景
- 可行性研究前提:说明开发 项目的功能,性能,基本要求,限制条件
- 对现有系统的分析
- 对所建设系统的分析:经济,技术,社会因素可行性分析
- 其他与设计有关选择方案
- 其他与设计有关的专门问题
- 结论意见
花神的博客生涯之软件工程(1)结束了哦~
接下来会持续更新(⊙o⊙)!