0%

系统分析与设计方法(二)需求分析与软件设计

需求分析阶段的主要任务是通过开发人员与用户之间的广泛交流,不断澄清模糊的概念,最终形成一个完整的、清晰的、一直的需求说明。(做什么)

在需求明确之后,下一步就是对软件系统进行设计。(怎么做)

一、需求分析的任务与过程

需求分析主要是确定待开发软件的功能、性能、数据、界面等要求。
需求分析的步骤包括:

1
2
3
获取当前系统的物理模型
抽象出当前系统的逻辑模型
建立目标系统的逻辑模型

需求分析工作的4个方面

1
2
3
4
问题识别:用于发现需求、描述需求
分析与综合:对问题进行分析,并给出解决方案
编制需求分析的文档:输出《需求规格说明书》
需求分析与评审:主要对功能的正确性、完整性和清晰性等给与评价。

1、需求的分类

软件需求包括功能需求、非功能需求、设计约束三方面。

1
2
3
功能需求:系统必须完成的事,为了向用户提供有用的功能,产品必须执行的动作。
非功能需求:产品必须具备的属性或者品质,如性能、响应时间、可靠性、容错性、扩展性等。
设计约束:也叫限制条件、补充规约,比如必须采用国内自主知识版权的数据库等。

除了上面三种需求之外,在其他维度,还有业务需求、用户需求、系统需求。

1
2
3
业务需求:客户对系统、产品高层次的目标要求。
用户需求:用户使用产品必须要完成上面任务,通过访谈、调查,从用户角度出发的需求。
系统需求:从系统角度的需求,包括用特性说明的功能需求、质量属性、非功能需求及设计约束。

2、需求工程

创建和维护系统需求文档的所有活动,包括需求开发和需求管理两大工作。

(1)需求开发

包括需求捕获、需求分析、编写规格说明书和需求验证四个阶段。
需求开发是目标,是主线,是努力掌握客户对系统的需求。

(2)需求管理

包括需求基线、处理需求变更、需求跟踪等。
需求管理是支持,是保障,是对需求的变化进行管理的过程。

2、需求分析方法

根据分析方法发展的历史,分为

1
2
3
4
结构化分析方法
软系统方法
面向对象分析方法
面向问题域的分析

二、如何进行系统设计

系统设计与其说是在设计,不如说是在选择和妥协。
妥协,就是在各个系统目标之间找到一个平衡点。系统目标包括但不限于功能、性能、健壮性、开发周期、交付日期等,但这些目标往往都是矛盾的。
没有一个设计者会完全重新开始设计一个系统,他们总参考多个与目标系统相类似的系统,再从中进行甄别、取舍和补充来作为新系统的设计。
要成为优秀的设计者,了解、掌握、消化、总结前人和自己以前的设计成果是最好的、也是唯一的方法。

优秀的系统设计一般在以下几个方面都很出色:

1
2
3
组建的独立性。做到高内聚、低耦合。
例外的识别和处理。
防错和容错。

也有一些技术能够改进系统设计,这些方法包括:

1
2
3
4
降低复杂性
通过合约进行设计
原型化设计
错误树分析等

三、软件设计的任务与活动

软件设计时把软件需求变成软件表示的过程。
软件表示先是总体框架,然后在进一步细化,并在框架中填入细节。
1、从工程管理角度,软件设计可以分为两个步骤:
(1)概要设计:也称为高层设计
将软件需求转化为数据结构和软件的系统结构。
(2)详细设计:也称为底层设计
对结构表示进行细化,得到详细的数据结构与算法。
2、主要的设计方法比较
结构化设计的时代,主要设计方法包括Jackson方法和Parnas方法。结构化方法侧重于“模块相对独立且功能单一,使模块间联系弱、模块内联系强”;
Jackson方法是从数据结构导出模块结构。
Parnas方法是将可能引起变化的因素隐藏在有关模块内部,是这些因素变化时的影响范围受到限制。
近年来,对象技术凭借数据的高效封装和良好的消息机制,实现了高内聚、低耦合,成为现代软件设计的主流方法。