来源简介:本文章为一系列,软件工程学习笔记,根据《软件工程理论与实践》一书以及上课总结的笔记,单纯的笔记如有不完善请指出。
章节简介: 软件过程:软件的诞生和生命周期时一个过程,是为了开发出软件产品。
目录
1. 传统软件生命周期的各个阶段
- 可行性研究: 确定待开发软件产品所要解决的问题,需要多和用户交流。完成可行性分析报告
- 需求分析: 解决用户提出的问题,目标系统需要做什么。完成需求规格说明书
- 软件设计: 在需求分析的基础上,软件开发人员通过制定设计方案,把需求文档中表述的功能可视化操作。关注每个模块的细节
- 编码: 编写程序代码
- 软件测试: 发现软件产品中存在的软件缺陷,保证软件质量。
- 软件维护: 软件错误修复,产品的更新,确保符合市场需求和软件能正常运行
2. 软件过程模型
软件开发模型是软件工程思想的具体化,反应了软件在其生命周期中各个阶段之间的衔接和过渡关系。把软件生命周期中的各个活动或步骤安排到一个框架中,将软件开发的全过程清晰直观的表达出来。
(1) 瀑布模型
- 其和传统的生命周期差不多
- 在软件开发的过程中,需求很少发生变化,开发人员可以一次性的获取到全部需求
- 瀑布模型具有较差的可回溯性,在后续阶段中需求经常性的变更需要付出高昂的代价
- 软件开发人员具有丰富的经验
- 软件项目的风险较低
(2) 快速原型模型
本质是“快速”,开发人员尽可能块的建造出原型系统,以加快软件开发过程。
- 已有产品或产品的原形(样品),只需要客户化的工程项目。
- 简单而熟悉的行业或领域
- 有快速原形开发工具
- 进行产品移植或升级
(3) 增量模型
把待开发的软件系统模块化,将每个模块作为一个增量组件,从而进行分批次的分析,设计,编码和测试这些增量组件。
- 相对于瀑布模型,增量模型不需要一次性将整个软件交给用户,而是分批次的提交。
- 将待开发的软件系统模块化,使得用户及时了解软件项目的进展
- 以组件为单位进行开发降低了软件开发风险
- 开发顺序灵活
- 软件产品可以分批次进行交付
- 带开发软件系统能够进行模块化
- 项目管理人员把握全局的水平较高
(4) 螺旋模型
螺旋模型是一种用于风险较大的大型软件项目开发的过程模型。该模型将瀑布模型与快速原型模型结合起来,并加入了两种模型所忽略的风险分析。
- 四个活动:制定计划,风险分析,实施工程,客户评估
- 优点:风险分析扩展到各个阶段,大幅度降低了软件开发的风险
- 缺点:管理比较麻烦,可操作性不强,对管理人员要求高
(5) 喷泉模型
喷泉模型是一种面向过程的模型,同时也支持面向对象的开发。
- 分析阶段:建立对象-关系和对象-行为模型
- 设计阶段:从现实角度对模型进行修改和扩展
- 编码阶段:使用面向对象语言和方法实现设计模式
3. 基于组件的开发模型
在实际中,很少的新产品开发完全是从零开发,都是或多或少的使用现有的组件或系统开发框架。
- 需求分析后,开发人员从现有的组件库中筛选合适的组件。
- 筛选完后,开发人员需要使用这些组件,一些无法利用的主键需要进行单独开发。
- 最后将所有组件集成一起,进行系统测试。
4. 统一软件开发过程模型(RUP)
RUP模型是基于UML统一建模语言的,是一种面向对象软件开发模型;其适用的范围极为广泛,单是对开发人员素质要求极高
5. 敏捷开发
敏捷开发时一种轻量型软件工程方法,更强调开发过程中各种变化的必然性,需要团队成员之间充分的交流与沟通。
- 尽早的交付有价值的软件让客户满意
- 软件开发过程中可以进行需求变更,利用变更为客户创建竞争优势。
- 经常交付软件,2到3周一次
- 业务人员多和开发人员待在一起工作
- 激励个人构建项目
- 团队内部,消息传递是面对面交谈
- 尽量时工作简单化
- 每隔一段时间,团队一个反省如何才能有效地工作