需求分析阶段的主要任务是通过开发人员与用户之间的广泛交流,不断澄清模糊的概念,最终形成一个完整的、清晰的、一直的需求说明。(做什么)
在需求明确之后,下一步就是对软件系统进行设计。(怎么做)
一、需求分析的任务与过程
需求分析主要是确定待开发软件的功能、性能、数据、界面等要求。
需求分析的步骤包括:
1 | 获取当前系统的物理模型 |
需求分析工作的4个方面
1 | 问题识别:用于发现需求、描述需求 |
1、需求的分类
软件需求包括功能需求、非功能需求、设计约束三方面。
1 | 功能需求:系统必须完成的事,为了向用户提供有用的功能,产品必须执行的动作。 |
除了上面三种需求之外,在其他维度,还有业务需求、用户需求、系统需求。
1 | 业务需求:客户对系统、产品高层次的目标要求。 |
2、需求工程
创建和维护系统需求文档的所有活动,包括需求开发和需求管理两大工作。
(1)需求开发
包括需求捕获、需求分析、编写规格说明书和需求验证四个阶段。
需求开发是目标,是主线,是努力掌握客户对系统的需求。
(2)需求管理
包括需求基线、处理需求变更、需求跟踪等。
需求管理是支持,是保障,是对需求的变化进行管理的过程。
2、需求分析方法
根据分析方法发展的历史,分为
1 | 结构化分析方法 |
二、如何进行系统设计
系统设计与其说是在设计,不如说是在选择和妥协。
妥协,就是在各个系统目标之间找到一个平衡点。系统目标包括但不限于功能、性能、健壮性、开发周期、交付日期等,但这些目标往往都是矛盾的。
没有一个设计者会完全重新开始设计一个系统,他们总参考多个与目标系统相类似的系统,再从中进行甄别、取舍和补充来作为新系统的设计。
要成为优秀的设计者,了解、掌握、消化、总结前人和自己以前的设计成果是最好的、也是唯一的方法。
优秀的系统设计一般在以下几个方面都很出色:
1 | 组建的独立性。做到高内聚、低耦合。 |
也有一些技术能够改进系统设计,这些方法包括:
1 | 降低复杂性 |
三、软件设计的任务与活动
软件设计时把软件需求变成软件表示的过程。
软件表示先是总体框架,然后在进一步细化,并在框架中填入细节。
1、从工程管理角度,软件设计可以分为两个步骤:
(1)概要设计:也称为高层设计
将软件需求转化为数据结构和软件的系统结构。
(2)详细设计:也称为底层设计
对结构表示进行细化,得到详细的数据结构与算法。
2、主要的设计方法比较
结构化设计的时代,主要设计方法包括Jackson方法和Parnas方法。结构化方法侧重于“模块相对独立且功能单一,使模块间联系弱、模块内联系强”;
Jackson方法是从数据结构导出模块结构。
Parnas方法是将可能引起变化的因素隐藏在有关模块内部,是这些因素变化时的影响范围受到限制。
近年来,对象技术凭借数据的高效封装和良好的消息机制,实现了高内聚、低耦合,成为现代软件设计的主流方法。