需求分析是软件计划阶段的重要活动,也是软件生存周期中的一个重要环节,该阶段是分析系统在功能上需要“实现什么”,而不是考虑如何去“实现”。需求分析的目标是把用户对待开发软件提出的“要求”或“需要”进行分析与整理,确认后形成描述完整、清晰与规范的文档,确定软件需要实现哪些功能,完成哪些工作。此外,软件的一些非功能性需求(如软件性能、可靠性、响应时间、可扩展性等),软件设计的约束条件,运行时与其他软件的关系等也是软件需求分析的目标。
1.确定开发模型采用瀑布模型还是增量开发模型,还是螺旋模型等。
2.迭代需求过程,占80%,软件成功之关键
3.模式和方法论需要自己积累,没有最好只有更好
4.需求分析四要素,需求分析模式
5.需求分析的工具:
(WRUP实际模型)
6.熟练制作需求中的产物两个:[UML和需求文档]都属于需求文档,界面原型
难点:
需求分析4要素以及迭代方式
掌握需求分析的三辅助线模型
一、需求阶段
1.1 需求的起点是项目评估(Q质量,C成本,T时间),诞生过程:签订合同前和合同后。可行性分析【开会,资源,难点】->项目评估报告,->立项->资源计划->技术重点难点
第一次需求及设计(评估及非功能)->第二次需求及设计(领域边界(粒度),项目层次,功能子功能,模块子模块)->第三次需求及设计(功能)->第四次需求及设计(界面)
二、需求要素
环境和前提
系统子系统:模块子模块
R&P
界面原型
三、需求原则及建模角度
1.沟通+建模+成文
2.文不如表,表不如图,图不如实(原型)直观原则
3.置顶而下,逐层细分(海平面原则)
4.业务=R&P
5.拥抱变化不断重构
建模角度:
用例图 *
状态图
时序图和协作图 *
活动图
类图*
四、需求分析的概要层次:
包含多个用户目标,描述系统时有如下三方面得到:
*显示用户目标运行的语境
*显示相关目标生命周期顺序
*为底层用例提供一个目标表
海平面:
方向解释法
上下法:升一层,或降一层
XYZ:Y:与其它功能模块比较独立的需求
X:需要贯穿所有模块的
Z:非功能模块,安全性,健壮性,性能
需求的重要性和设计过程注意事项:
1.需求是连接客户和设计的桥梁
2.需求是需要有一个分析过程的。不要直接给设计原始需求。
3.需求的时候,不要去想设计
4.需求的时候,功能对象和界面对象分开来
5.做功能需求的时候闭上眼睛,不要去看去想界面
五、第一次需求获取信息
不是上来就问业务,也不是上来就问流程。
需求的第一步需要了解客户的预期运行环境,客户预期效果,以及客户可能提供的资源等信息。
同时,要对这个需求甚至这个项目进行评估,包括质量评估,投入人力及各类资源的评估,还有周期的评估。
1.技术可行性分析(实现)
2.资源计划
3.非功能需求,性能等方面
评估几个方面:
评估项目风险
评估项目资源
评估项目周期
不要轻易承诺(让我回去和项目组内讨论一下,稍后给您准确答复,千万不要说OK)
言必行,行必果
五、第二次需求分析获取信息
业务是什么?资源加计划
沟通的主要内容:
业务场景的描述和理解
流程的描述和理解
对象的描述和理解
不要一条道走到黑
注意层次,由顶向下,逐渐细分
将包分的不可再分的时候在横向来问
六、第三次需求分析获取信息
界面原型
用户期待界面
用户操作习惯
用户的输入
工具: axure Blend
七、需求成文及UML组织
需求成文的表现形式
1.UML图
2.Word文档
3.视频
4.复合
需求成文四大要素
1.系统运营的环境和前提
2.模块,子模块,系统子系统
2.1分清层次,从第一层开始
3.资源和计划(R&P)
3.1分清层次,制定向下抽象
3.2 从三个角度来建模
3.2.1 场景和业务的描述(用例图Use Case Diagram)
3.2.2 流程的描述(时序图Sequence Dag)
3.2.3 类,对象的描述(类图 Class Diagram)
界面原型(可选)
UML组织工作
1.编号,用例是可追溯的
2.UML需求的三轴线
3.资源文件夹组织