一、软件需求分析
基本任务:
系统必须做什么?
确定系统必须完成哪些工作,也就是对目标系统尽可能提出完整、准确、清晰、具体的要求。
写软件需求规格说明书,以书面形式准确地描述软件需求。
为什么要进行需求分析?通常对软件系统有哪些需求?
1.需求分析是软件开发的基础和前提;
2.需求分析是最终目标软件系统验收的标准;
3.需求分析能避免或者尽早剔除早期的错误。
(1)功能需求:系统必须完成的功能
(2)性能需求:系统的响应能力
(3)可靠性和可用性需求:系统的可靠性以及用户可以使用系统的程度。
(4)出错处理需求:说明系统对环境错误应该怎样响应。
(5)接口需求:描述应用系统与它的环境通信的格式。如:用户接口需求,硬件接口需求,软件接口需求,通信接口需求。
(6)约束:描述设计或实现应用系统时应遵守的限制条件。
(7)逆向需求:说明软件系统不应该做什么。
(8)将来可能提出的要求:列出根据分析得到的将来可能会提出的要求,易于后期进行扩充和修改。
需求分析阶段的任务有哪四个?
①确定系统的综合要求
②分析系统的数据要求
③导出系统的逻辑模型
④修正系统开发计划
二、与用户沟通的方法
获取用户需求的主要方法有哪些?
①现场观察、“窥探”
②访问/访谈、“包打听”
③问卷调查、“套取”
④会议研讨、“头脑风暴”
⑤原型评估、“界面(样品)迭代”
⑥场景分析、“模仿”
⑦其它、“文献考古”、“用例分析”
三、实体-联系图
数据对象:是对软件必须理解的复合信息的表示。在ER图中用矩形框代表实体。
联系:数据对象彼此之间相互连接的方式称为联系,也称为关系。联系可分为以下三类:
(1)一对一联系(1∶1)
(2)一对多联系(1∶N)
(3)多对多联系(M∶N)
属性:属性定义了数据对象的性质。 在ER图中用椭圆形或圆角矩形表示实体(或联系)的属性。
练习题:
设某汽车运输公司数据库中有三个实体集。一是“车队”实体集,属性有车队号、车队名等;二是“车辆”实体集,属性有牌照号、厂家、出厂日期等;三是“司机”实体集,属性有司机编号、姓名、电话等。
设车队与司机之间存在“聘用”联系,每个车队可聘用若干司机,但每个司机只能应聘于一个车队,车队聘用司机有个聘期;车队与车辆之间存在“拥有”联系,每个车队可拥有若干车辆,但每辆车只能属于一个车队;司机与车辆之间存在着“使用”联系,司机使用车辆有使用日期和公里数两个属性,每个司机可使用多辆汽车,每辆汽车可被多个司机使用。
四、状态转换图
-
状态
在一张状态图中只能有一个初态,而终态则可以有0至多个。 -
事件
事件就是引起系统状态转换的控制信息。 -
符号
在状态图中,初态用实心圆表示,终态用一对同心圆(内圆为实心圆)表示。中间状态用圆角矩形表示,可以用两条水平横线把它分成上、中、下3个部分。
以做薯条为例,画出土豆变化的状态转换图。
五、验证软件需求
(1) 一致性 所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。
(2) 完整性 需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。
(3) 现实性 指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。对硬件技术的进步可以做些预测,对软件技术的进步则很难做出预测,只能从现有技术水平出发判断需求的现实性。
(4) 有效性 必须证明需求是正确有效的,确实能解决用户面对的问题。
六、总结
需求分析是软件工程中最重要的一个环节。
需求分析的主要工作是做调查研究,详细、准确的解决系统做什么的问题。
需求分析的结果要产生一份详尽的需求规格说明书,包括系统详细的数据流图和数据字典。