1、软件工程第五章 面向对象 分析与设计5.1 需求获取需求获取5.2 面向对象分析面向对象分析5.3 面向对象设计面向对象设计5.4 系统设计系统设计 5.5 对象设计对象设计15.1 需求获取n 需求获取的目标是确定用户 “需要 ”什么样的软件产品,就是说, 新的软件必须能够做什么 。n 没有专业的系统分析人员,用户很难了解到需要开发什么相关信息和功能;另一方面,没有与用户的交流,系统分析人员也很难弄清客户真正需要什么。n 发现用户需求的过程称为 需求获取 。一旦提出了最初的需求,进一步推敲、细化和扩充的过程称为 分析 。2n 需求获取的第一步是 理解应用领域 ,即目标软件的应用环境。如银行、
2、电信公司、书店等。n 一旦系统分析人员对该领域有了充分了解,就可以 建立一个业务模型 ,描述用户的业务过程,确定用户的初始需求。然后通过迭代,更深入了解应用领域,回过头来推敲业务模型。n 这种迭代过程直到双方对需求的理解达到共识。n 需求获取的结果是 导出用户可理解的系统规格说明 。3开发用户需求的典型过程1. 识别用户需求2. 访谈用户代表 识别各种需要与要求 使用工具帮助表达用户需求 绘制 GUI草图 确定硬件环境3. 用标准文档格式撰写客户需求4. 核查用户需求请用户评审用户批准后5. 构建详细需求(分析建模)45.1.1 与用户交互1) 需求的来源n 不同类型应用能从人员处获取需求的比
3、例 :相对低的 相对高的从人群获取需求的大概百分比应用的类型高度受限的不受限制的导弹制导系统航班控制系统公司财务系统增强版制造控制系统公司财务系统Encounter视频游戏军事战略决策支持系统5n 所谓限制,是指受客观物理规律的限制。如导弹制导系统更多地受物理运动定律的限制,而非人的决策。视频游戏的大部分需求依赖人,因为它是一个相像出来的产品。n 应用受到的限制越少,能从人们那里获得的需求比例越大。2) 识别利益相关者( stakeholder)n 对项目承担风险和享有利益的人即为利益相关者。他们是应用的 “客户 ”。如公司高层、项目经理、最终用户、系统开发人员等。6n 不同利益相关者之间的利
4、益冲突会导致需求不一致。如果需求冲突不能调和,项目就会陷入困境,最后往往会被取消。n 即使所有利益相关者的需求一致,也可能由于实现代价高昂,需求不能得到完全满足。3) 了解客户的需求n 一般客户希望得到一个产品,他们需要系统开发人员帮助,明确自己的需要。n 例如,有一个客户愿望框架: “Encounter是一个角色扮演游戏,它能模拟被扮演人物的全部或部分活动,应对人们具有相当吸引力。 ”7n 完整的客户要求应当记录在需求文档的 “概述 ”部分。但需求中还有一些问题需要由系统分析人员与客户商量,以明确这些需求。n 例如游戏是否只允许玩家扮演一个角色还是可以同时控制多个人物?当两个人相遇时会发生什
5、么事情?游戏是否可以联网对战等。4) 访谈和文档记录n 大部分需求获取是人与人沟通的活动,这些活动经过精心组织,以准确获得最好的效果。n 准备和访谈客户的过程如下:8访谈之前n 列出访谈的 “客户 ”对象,并划分客户优先级最有可能决定项目成败的人n 安排访谈日程,设定开始和结束时间系统开发人员至少有两人参加访谈准备录音设备访谈中n 注意倾听不要处于被动状态:启发和鼓励理解客户的需要并探索要求采用用例?或数据流图?状态图?9记录全部访谈内容n 安排补充会议访谈之后n 根据标准模版撰写软件需求规格说明( SRS),打客户需求草稿n 通过电子邮件征求客户意见n 对于不同类型的应用,用例方法是一种获取和表达需求的有效方法。n 某些需求需要通过数据流图或状态图与用户沟通。10