1.软件需求
1.1.需求分类
1)业务需求:反应企业或客户对系统高层次的目标要求。
2)用户需求:描述用户的具体目标,或用户要求系统必须能完成的任务。即描述了用户能使用系统来做什么?
3)系统需求:从系统角度说明软件的需求,包括功能需求、非功能需求和设计约束等。
a.功能需求,也称行为需求,规定了开发人员必须在软件中实现的功能。用户利用这些功能来完成任务,满足业务需求。
b.非功能需求,系统必须具备的属性或品质。,有细分为软件质量属性(可靠性、可维护性、效率等)和其他非功能属性。
c.设计约束,也成为限制条件或补充条约,通常是对系统的一些约束说明,例如必须采用国产数据库、必须运行在unix系统下等。
1.2.需求开发
获取-分析-定义-验证
定义阶段:产生需求规格说明书
验证阶段:客户签字之后产生需求基线
1.2.1.需求获取
是一个确定和理解不同的项目干系人的需求和约束的过程。
常见的需求获取方法:
1)用户访谈:1对1-3,有代表性用户。其形式包括结构化和非结构化两种
2)问卷调查:用户多,无法一一访谈。
3)采样:从种群中系统地选出有代表性样本集的过程。样本数量=0.25*(可信度因子/错误率)^2
4)情节串联板:一系列图片,通过图片来讲故事
5)联合需求计划JRP:通过联合各个关键用户代表、系统分析师、开发团队代表一起,通过有组织的会议来讨论需求。
6)需求记录技术:任务卡片、场景说明、用户故事、Volere白卡
1.2.2.需求分析
一个好的需求应具有无二义性、完整性、一致性、可测试性、确定性、可跟踪性、正确性、必要性等特性,因此需求分析人员把杂乱无章的用户要求和期望转化为用户需求,这就是需求分析的工作。
任务:
1)绘制系统上下文范围关系图
2)创建用户界面原型
3)分析需求的可行性
4)确定需求的优先级
5)为需求建立模型
6)创建数据字典
7)使用QFD质量功能部署
结构化需求分析
特点:
1)自顶向下
2)逐步分解
3)面向数据
三大模型:
1)功能模型,数据流图
2)行为模型,状态转换图
3)数据模型,E-R图
数据流图DFD
基本图形元素:
1)外部实体,指存在于系统之外的人员或组织,它指出系统所需数据的发源地和系统所产生数据的归宿地。
2)加工,描述了输入数据流到输出数据流的转换。有三种错误:
a.有输入没输出-黑洞
b.有输出没输入-奇迹
c.输入不足以产生输出-灰洞
3)数据存储,用来存储数据
4)数据流,由一组固定成分的数据组成,表示数据的流向。在DFD中,数据流的流向必须经过加工。
数据字典DD
数据字典是为数据流图中的每个数据流、文件、加工以及组成数据流或文件的数据项做出说明。
数据字典有四个类目:数据流、数据项、基本加工、数据存储
加工逻辑也成为小说明,常用的加工逻辑描述方法有结构化语言、判定表和判定树3种。
1.2.3.需求定义
输出软件规格说明书 SRS:是需求开发活动的产物,编制该文档的目的是使项目干系人与开发团队对系统的初始规定有一个共同的理解,使之成为整个开发工作的基础。SRS是软件开发过程中最重要的文档之一,对于任何规模和性质的软件项目都不应该缺少。
需求定义方法
1)严格定义也称预先定义,需求的严格定义建立在以下基础之上:所有需求都是能够被预先定义的。开发人员和用户之间能够准确而清晰地交流。采用图形或文字可以充分体现最终系统。
2)原型方法,迭代的循环开发方式,需要注意的问题:并非所有的需求都能在系统开发前被准确的说明。项目干系人之间通常都存在交流上的困难,原型提供了克服困难的一个手段。特点:需要实际的、可供用户参与的系统模型。有合适的系统开发环境。反复是完全需要和值得提倡的,需求一旦确定,就应该遵从严格的方法。
1.2.4.需求验证
也称为需求确认,目的是与用户一起确认需求无误,对需求规格说明书SRS进行评审和测试,包括两个步骤:
需求评审:正式评审和非正式评审
需求测试:设计概念测试用例
需求验证通过后,要请用户签字确认,作为验收标准之一,此时,这个需求规格说明书就是需求基线,不可以再随意更新,如果需要更改必须走需求变更流程。
1.3.需求管理
定义需求基线:通过了评审的需求说明书就是需求基线。
1.3.1.需求变更和风险
带有风险的做法:无足够的用户参与、忽略了用户分类、用户需求的不断增加、模棱两可的需求、不必要的特性、过于精简的SRS、不准确的估算。
产生变更的原因:外部环境的变化、需求和设计做的不够完整、新技术的出现、公司机构重组造成业务流程的变化。
变更控制委员会CCB:也称为配置控制委员会,其任务是对建议的配置项变更做出评价、审批,一级监督已经批准变更的实施。
1.3.2.需求跟踪
双向变更:
1)正向追踪:用户的需求是否都实现了
2)反向追踪:软件实现的是否都是用户要求的
可以用需求跟踪矩阵来实现。
2.处理流程设计
2.1.流程表示工具
程序流程图PFD:任何复杂的程序流程图都应该由顺序、选择和循环结构组合或嵌套组成。IPO图:用来描述构成软件系统的每个模块的输入输出和数据加工。
N-S图:盒图,容易表示嵌套和层次关系,并具有强烈的结构化特征。但当问题很复杂时,N-S可能很大,不适合复杂程序设计。
问题分析图PAD:是一种支持结构化程序设计的工具。PAD具有清晰的逻辑结构、标准化的图形等优点,更重要的是,它引导设计人员使用结构化程序设计方法,从而提高程序质量。
2.2.业务流程重组BPR
对企业业务流程进行根本性的再思考和彻底性的再设计。
BPR设计原则、系统规划和步骤:
2.3.业务流程管理BPM
是一种以规范化的构造端到端的卓越业务流程为中心,以持续的提高组织业务绩效为目的系统化方法。
BPM与BPR的区别在于BPM不需要对所有的流程进行再造,根据现有流程的具体情况,对流程进行规范化设计。
三个层次:规范化流程、优化流程、再造流程
3.系统设计
主要目的:为系统制订蓝图,在各种技术和实施方法种权衡利弊,精心设计,合理地使用各种资源,最终勾画出新系统的详细设计方法。
设计方法:结构化设计方法,面相对象设计方法。
主要内容:概要设计、详细设计
概要设计基本任务:系统总体结构设计,是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图。
详细设计基本任务:模块内详细算法设计、模块内数据结构设计、数据库的物理设计、其他设计(代码、输入输出格式、用户界面)、编写详细设计说明书、评审。
系统设计基本原理:抽象化、自顶向下、逐步求精、信息隐蔽、模块独立(高内聚、低耦合)
系统设计原则:保持模块大小适中;尽可能减少调用的深度;多扇入,少扇出;单入口,多出口;模块的作用域应该在模块之内;功能应该是可预测的。
3.1.模块独立
衡量模块独立程度的标准有两个:耦合性和内聚性。
内聚程度:
耦合程度:
4.人机界面设计
三大黄金原则:
1)置于用户控制下
2)减少用户记忆负担
3)保持界面一致性