软件工程 续
瀑布模型 续
以质量为基石
瀑布模型特别强调质量。因为每个阶段的输出都会成为下一个阶段的输入,所以前一个阶段的错误会放大到后面的阶段,可能导致项目失败。这就要求每一阶段都不能有遗漏,必须确保产出的文档、代码等都达到了高质量。
里程碑和评审
瀑布模型的里程碑就是一步步通过评审的文档。
在瀑布模型中,每个阶段的结束都需要进行评审,确保这一阶段的所有工作都已完成,并满足质量要求。评审不仅仅是检查文档,还包括确保所有的需求都已被考虑、设计是合理的、代码是正确的等。这些评审过程是项目的关键里程碑,确保项目按计划进行。
反馈环
虽然瀑布模型是线性的,但在实际应用中,通常会在每个阶段增加反馈环。也就是说,当某个阶段发现前面阶段的问题时,会返回到那个阶段重新进行。这样可以及时发现和修复问题,但也增加了项目的复杂性。
每一步骤增加反馈环。
软件交付后任何的变化需要调整,都放在维护阶段。但即使增加反馈环也不能很好地处理功能、性能的变化。
瀑布模型中,软件的交付被视为项目的结束。但实际上,软件的生命周期远不止此。当软件交付后,任何的变化、新的需求或发现的错误都需要在维护阶段进行。瀑布模型的一个常见批评就是它对变化的处理不够灵活。如果需求在后期发生变化,整个项目可能都需要重头开始。
快速原型模型
构筑原型给客户看,这个原型不是最终的系统,只是最终系统的一个子集。原型可以有很多方面。目的是导出需求,快速跟客户敲定需求。
使用快速原型代替需求分析部分,快速确定重点需求,快速原型与后文没有反馈环,解决了需求的不确定性。
规格说明:帮助文档详细说明
那么原型模型到底用不用?大型系统建议使用抛弃型,原型就是个子集,整体十分复杂。中小型系统使用渐进型,不需要太复杂的架构。
增量模型
一开始就要把系统分成若干个构件/增量,最后在一起就完成了整个软件。给了开发人员一个缓冲的时间,一次性一次性交付一部分。
先开发最重要的增量,抓住主要矛盾,先可以实现主要功能,再加别的增量。
核心点:设计开放式结构,能够将所有增量聚合在一起。
边做边改的开发方式是不好的。大致了解的一个项目,可以逐步推出项目的完整构建。
螺旋模型
风险评估与分析:确定事情是否能做,如果风险太大就停止进行
很多时候用于内部开发
每个模型都在解决一部分的问题,都是软件危机的方案
文档是必不可少的,敏捷过程建议的文档并不是不写,而是初期重点放在软件实现上
Rational统一过程
Rational统一过程(RUP)和敏捷过程是两种不同的软件开发方法论,每种方法论都有其独特的优点、缺点和应用场景。
- 定义: RUP是一种迭代的、以用例驱动的、面向架构的和增量的软件开发过程。
- 特点:
- 以用例驱动:需求、设计和测试都围绕用例进行。
- 面向架构:鼓励开发者首先定义和建立一个稳定的架构。
- 迭代和增量:软件是在多次迭代中逐渐开发和完善的。
- 四个主要阶段:启动阶段、精化阶段、构造阶段和交付阶段。
- 视角:RUP定义了多个视角,如业务建模、需求、设计、实施、测试等。
- 适用性:RUP经常用于大型、复杂的项目中,其中结构化的过程和严格的阶段定义可以带来益处。
敏捷过程
- 定义:敏捷是一种以人为本、迭代、增量和客户协作为中心的软件开发方法。
- 特点:
- 快速迭代:开发团队在短时间内(例如,两到四周)进行迭代,每次迭代产生一个可工作的产品增量。
- 响应变化:对需求变更持开放态度。
- 客户协作:经常与客户进行沟通,确保他们的需求和反馈被考虑。
- 简洁的文档:相对于详尽的文档,更重视代码和功能的实际完成。
- 流行的敏捷方法:Scrum、极限编程 (XP)、Kanban 等。
- 适用性:敏捷开发方法特别适合需求不断变化的项目,或者需要快速响应市场变化的项目。
总结:工程化思想,思维过程的培养,一步一步跟着老师的思想。
课后任务:
1.从软件的复杂性,上市效果看Vista
2.Araine 5。怎么才能够发现这个错误
3.第一章阅读材料
4.人月神话
5.职业道德探索
第二章 可行性研究
CHANGE:变更
图形化工具,显示的是控制流。不同的图形符号自带含义。图形的箭头是什么?
在流程图中,箭头的主要含义是表示控制流的方向。它指示在完成一个步骤或决策后下一步要执行哪个动作或步骤。
要按照规范画图,读图的人才能明白图的意义。
延期:目前没有环境条件支持,以后可能会实现。
一、问题定义(WHY)
二、可行性研究
用快速的方式判断问题能不能解决,本质就是一个权衡的过程。
技术可行性
现有技术是否能够支持系统开发的全过程?
目前的项目组能否使用所需技术?隐含的问题就有学习、经济成本。
经济可行性
经济效益与开发成本的关系?