软件系统的目的是为了解决问题。
定义问题的过程包括:
1 | 1、理解真实世界中的问题和用户的需要。 |
一、问题分析
1、在问题定义上达成共识
用标准化的格式将问题写出来。
2、理解问题的本质
通常用因果鱼骨图和帕累托图两种方式。
(1)因果鱼骨图
1 | 将问题简明扼要的写在右侧方框中。 |
(2)帕累托图
采用直方图的形式,将问题的相对频率或大小从高到低排列,聚焦重要的问题。
1 | 明确问题。 |
3、确认项目干系人和用户
1 | 系统的用户是谁? |
4、定义系统的边界
解决方案系统和现实世界之间的边界。在系统边界中,信息以输入和输出的形式流入系统,并由系统流向系统外的用户。
(1)上下文范围图
数据流图中的顶层图,它反映领域信息,能够清晰的显示出系统和相邻系统的职责,能够从宏观层面了解系统。
(2)用例模型
以参与者的角度描述“和系统进行交互的事物”。
1 | 谁会对系统提供信息? |
5、确定系统实现的约束
从约束源开始考虑。
进度、投资收益、人员、设备预算、环境、操作系统、数据库、主机和客户机系统、技术问题、行政问题、已有软件、公司总体战略和程序、工具和语言的选择、人员和其他资源限制等。
二、问题定义
1、目标
1 | 优势:目标不仅仅是解决问题,还要提供业务上的优势。 |
2、功能需求
系统必须做的事,功能需求源于业务需求。
3、非功能需求
系统必须具备的属性。
功能需求通常以动词为特征,非功能需求以副词为特征。
非功能需求主要包括:
1 | 观感需求 |