1、软件工程导论软件工程导论 之之docin/sundae_mengdocin/sundae_meng2n开发软件系统前,须了解用户的期望和要求 软件需求 需求分析过程n需求分析的重要性 软件开发的基础和前提 最终目标软件系统验收的标准 避免或者尽早剔除早期的错误docin/sundae_meng3n需求分析的复杂性和面临的困难 片面,不完全 模糊,不准确 不一致,歧义 需求复杂和庞大n因此必须使用系统的方法、借助于一系列行之有效的技术和工具进行软件需求分析docin/sundae_meng4n需求分析的任务和过程n需求获取技术n需求分析和描述技术n软件需求规格说明书及其评审docin/sunda
2、e_meng5n什么是用户需求 待开发软件系统的功能、性能、设计约束和其它要求n用户需求例子图书馆管理系统 功能需求:办理读者借书证,性能需求:查询操作延迟时间不超过1秒钟,设计约束:前台运行在windows OS下,其它要求:开发时间6个月,docin/sundae_meng6n需求分析的任务 通过对应用问题及其环境的理解和分析,准确、一致和完全地刻划用户需求,形成软件需求规格说明书(SRS:Software Requirement Specification)n需求分析过程 获取和理解用户需求 描述和分析用户需求 对用户需求进行评审docin/sundae_meng7获取和理解需求获取和理
3、解需求描述和分析需求描述和分析需求评审用户需求评审用户需求需求获取需求获取技术技术建模、抽象、建模、抽象、多视点、问题多视点、问题分解、原型分解、原型需求评需求评审原则审原则docin/sundae_meng8n 任务 获取并理解用户需求,清除用户需求的不一致性,模糊性和歧义性,帮助用户发现潜在的需求n 原则 和用户进行交流和合作 将对原始问题理解与软件开发经验结合,发现.docin/sundae_meng9n 任务 对用户需求进行建模,生成SRS和初步用户手册 SRS:用户需求(功能,行为,性能等)用户手册:如何操作和使用目标软件,界面描述和使用初步构想,目的n 原则 确保SRS的完整性、一
4、致性和准确性 鼓励用户参与SRS以及用户手册的制定 尽可能做到SRS结构清晰,措辞准确和简洁docin/sundae_meng10n 任务 多方人员一起对SRS进行复核和评审,以确保用户手册和SRS全面、准确、一致地反映用户需求n 原则 支持各方(用户,需求分析人员、设计人员)共同参与评审工作docin/sundae_meng11n需求分析的任务和过程n需求获取技术n需求分析和描述技术n软件需求规格说明书及其评审docin/sundae_meng12 问问题题域域 用用户户 需需求求分分析析员员 交交流流 docin/sundae_meng13docin/sundae_meng14 docin
5、/sundae_meng15n加强联系n促进交流n增进合作docin/sundae_meng16读者管理读者管理书库管理书库管理读者借阅管读者借阅管理理docin/sundae_meng17用用户户项项目目负负责责人人需需求求分分析析人人员员设设计计员员1.建立联合小组 参与者:用户、需求分析人员、设计人员。docin/sundae_meng182.会议讨论 明确问题、范围、环境等,逐步了解用户需求 会议应有记录,整理形成文档3.分成三小组 读者管理、图书管理和读者借阅子系统4.总结各方成果形成结论性的SRSdocin/sundae_meng19n需求分析的任务和过程n需求获取技术n需求分析和
6、描述技术n软件需求规格说明书及其评审docin/sundae_meng20n问题分解n抽象n建模n多视点n快速原型docin/sundae_meng21整个问题整个问题子问题子问题1 1子问题子问题3 3子问题子问题2 2n什么是问题分解 将大问题分解为小问题,通过小问题解决来实现大问题的解决 问题分解有助于降低解决问题的复杂度;获取和分析问题本身所固有的整体-部分关系 图书馆系统n读者管理n图书管理n借阅管理docin/sundae_meng22n什么是抽象?抽象有助于控制问题复杂度,抓住问题的本质,获取一般和特殊关系docin/sundae_meng23n读者抽象(提取成份)名字 性别 单
7、位 类别 照片 Email 电话n读者抽象(抛弃成份)身高 年龄 docin/sundae_meng24n什么是需求模型 模型是对现实的简化,包含有广泛影响的要素,忽略不相关的次要因素 需求模型详细、准确地描述了用户对目标软件系统的功能、行为、性能、设计约束等方面的要求n为什么需要建模 建模可缩小和简化所用户需求的分析和描述,从多个视点、多个不同的抽象层次来描述用户需求,从而更好促进软件的开发docin/sundae_meng25n注意 需求建模不要涉及软件设计和实现细节n需求建模方法 面向数据流的方法 面向对象的方法docin/sundae_meng26 n什么是多视点分析 从多个角度、不同
8、层面上分析和描述用户需求n为什么需要多视点分析 人的认识具有片面性(瞎子摸象)多视点可以帮助我们全面把握用户的需求docin/sundae_meng27n传统软件开发存在的问题 需求分析员与用户之间没有一种直观交流媒介 用户需求不断变化 如何适应这样一种变化 如何更为直观地评价用户需求n 什么是软件系统的原型 对软件系统的主要功能和行为的直观描述(操作模式、过程和界面)n什么是快速原型方法 通过构建用户需求的原型来分析和描述用户需求docin/sundae_meng28docin/sundae_meng29n需求分析的任务和过程n需求获取技术n需求分析和描述技术n软件需求规格说明书及其评审do
9、cin/sundae_meng30n软件需求规格说明书n软件需求规格说明书评审docin/sundae_meng31n需求规格说明书的内容 功能与行为需求描述,例如,办理读者借书证,验证读者借书证号码是否存在 性能需求描述,例如查询响应时间不超过1秒钟 设计约束,例如运行在windows 2000操作系统下 其他,要求在6个月内完成docin/sundae_meng32n在将需求规格说明书递交给软件设计之前,必须对它进行评审n评审要求用户、需求分析员和设计员共同参与docin/sundae_meng33n正确性n无歧义性n完全性n可验证性n一致性n可理解和可修改性n可追踪性docin/sundae_meng34n需求分析的任务和过程n需求获取技术n需求描述和分析技术n软件需求规格说明书以及评审docin/sundae_meng35n你认为课堂上讲的这些需求分析技术是否有效和可行?如不可行你认为应怎样进行需求分析?n如果你是一名软件项目经理,你如何组织和开展需求分析工作(包括人员组织、方法和技术的采用、结果等)n需求分析对软件开发的意义何在,有何作用?n请认真理解和领会各种需求分析技术,分析各种技术的特点以及在需求分析和描述中的作用?docin/sundae_meng36