文章目录
软件生命周期模型
软件生命周期模型是描述软件开发过程中各种活动如何执行的模型。主要有:瀑布模型、原型模型、增量模型、螺旋模型。
1.瀑布模型
- 优点:规范,文档驱动 。为项目提供了按阶段划分的检查点。它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。当前一阶段完成后,只需要去关注后续阶段。
- 缺点:系统可能不满足客 户真正的需求。由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。不适应用户需求的变化。各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
- 适用范围:适合于结构化方法,也就是面向过程的软件开发方法。在开发时间内需求没有或很少变化。
2.快速原型
- 优点:克服了瀑布型的缺 点 。减少由于软件需求不明确带来的开发风险。减少了开发时间,大大提高了系统开发效率。通过一系列对原型的修改和完善,大大增加了用户对设计的满意程度,进而提高了信息系统的质量。
- 缺点:通过原型法所开发的系统不具备灵活性,以适应用户需求的变化。
- 适用范围:适用于开发需求不确定的大型软件系统。
3.增量模型
- 优点:开发早期回报明确, 易于维护。能在较短的时间内向用户提交可完成部分工作的产品
- 缺点:要求开放的软件体系结构
- 适用范围:进行已有产品升级或新版本开发;对完成期限严格要求的产品;对所开发的领域比较熟悉而且已有原型系统。
4.螺旋模型
- 优点: 风险驱动,适用于大型项目开发。设计上的灵活性,可以在项目的各个阶段进行变更。
- 缺点:风险分析人员需要 有经验且经过充分训练。过多的迭代次数会增加开发成本,延迟提交时间。
- 适用范围:螺旋模型只适合于大规模的软件项目。
软件危机
软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
- 原因:
- 软件开发无计划性
- 软件需求不充分
- 软件开发过程无规范
- 软件产品无评测手段
- 表现:
- 超出预算时间和成本
- 客户对生产出的软件不满意
- 软件有残存的错误
- 软件产品不可维护
- 文档资料不完整
- 软件生产率的提高跟不上硬件的发展速度
-
解决方法:软件工程
用现代工程的概念,原理,技术和方法进行计算机软件的开发,管理和维护,由此诞生了软件工程。
软件工程是用工程,科学和数学的原则与方法来研制,维护计算机软件的有关技术及管理方法。
软件工程包括3要素:方法,工具和工程。
需求分析
- 必要性:
介于系统分析和软件设计阶段之间的桥梁。一方面,需求分析以系统规格说明和项目规划作为分析活动的基本出发点,并从软件角度对它们进行检查与调整;另一方面,需求规格说明又是软件设计、实现、测试直至维护的主要基础。良好的分析活动有助于避免或尽早剔除早期错误,从而提高软件生产率,降低开发成本,改进软件质量。
- 主要任务:
对目标系统提出完整、准确、清晰、具体的要求
1、确定对系统的综合要求:功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、将来可能提出的需求
2、分析系统的数据需求
3、导出系统的逻辑模型
4、修正系统开发计划
数据流图
描绘系统逻辑模型,图中没有具体的物理元素,只描绘信息在系统中流动处理情况。是非常好的通信工具和软件设计出发点。
- 数据流图符号
正方形(立方体):表数据的原点或终点
圆角矩形(或圆形):代表数据的处理
开口矩形(或两条平行线):代表数据存储
箭头:表数据流,即特定数据的流动方向(有流动的数据项或数据集合)
- 解法
①从问题描述提取数据流图四种成分, 原点、终点、处理、数据流、数据存储
②着手画数据流图的基本系统模型, 即一个原点一个处理一个终点,确定边界
③把基本系统模型细化,描绘系统主要功能
④主要功能进一步细化
⑤结束,或进一步分解到涉及如何具体实现功能时,不再分解。
- 数据流图的平衡原则