第2章软件过程与方法1第3章需求与分析建模1计算机科学与技术学院软件工程软件工程第三章需求与分析建模乔立民qlm@hit.edu.cn2010年4月21日第2章软件过程与方法2第3章需求与分析建模2主要内容3.1软件需求3.2需求工程3.3需求获取3.4需求分析与建模3.4.1需求分析3.4.2面向对象需求分析3.4.3结构化需求分析第2章软件过程与方法3第3章需求与分析建模3需求工程的总体流程需求管理需求获取需求分析规格说明需求验证会议纪要讨论纪要分析模型需求规格说明书审核通过的规格说明书活动产出物需求开发第2章软件过程与方法4第3章需求与分析建模4需求分析的本质需求分析(RequirementAnalysis):对收集到的需求进行提炼、分析和审查,为最终用户所看到的系统建立概念化的分析模型–分析需求可行性–细化需求–建立需求分析模型•功能活动•分析问题类和类之间关系•系统和类行为•数据流本质:客户现实需求软件需求模型(SRS)抽象、映射、转换第2章软件过程与方法5第3章需求与分析建模5分析模型的目标描述客户需要什么(软件的信息、功能和行为)为软件设计奠定基础(结构、接口、构件设计)定义在软件完成后可以被确认的一组需求系统描述设计模型分析模型第2章软件过程与方法6第3章需求与分析建模6分析的经验原则模型应关注在问题域或业务域内可见的需求,抽象的级别应该相对高一些。不需要陷入细节,即不要试图解释系统将如何工作分析模型的每个元素都应该能增加对软件需求的整体理解,并提出对信息域、功能和系统行为的深入理解关于基础结构和其他非功能的模型应推延到设计阶段再考虑最小化整个系统内的关联确认分析模型为所有共利益者都带来价值(客户、设计人员、测试人员)尽可能保持模型简洁第2章软件过程与方法7第3章需求与分析建模7地理特征区域点线城市湿地山脉草原海洋水坝建筑桥梁机场水上陆上码头公路输油管铁路输电线河流物质精神世界需求分析的基本思想:抽象抽象:透过现象看本质–抓住事物的本质,捕获问题空间的“一般/特殊”关系是认识、构造问题的一般途径。第2章软件过程与方法8第3章需求与分析建模8整个问题问题的深度问题的广度问题的深度问题的广度子问题1子问题2子问题3问题的深度问题的广度子问题3子问题2子问题1按问题深度分而治之按问题广度分而治之需求分析的基本思想:划分划分:分而治之–分离问题,捕获问题空间的“整体/部分”关系是降低问题复杂性的基本途径。第2章软件过程与方法9第3章需求与分析建模9需求分析的基本思想:投影投影:从不同视角看问题–捕获并建立问题空间的多维视图是描述问题的基本手段。第2章软件过程与方法10第3章需求与分析建模10需求分析的基本思想:建模建模:规格严格、功夫到家–采用规范的描述方法,将模糊的、不确定的用户需求表达为清晰的、严格的模型,作为进一步设计与实现的基础。–模型的作用:•增强对需求的理解•检测不一致性、模糊性、错误和遗漏•在项目的参与者之间更高效的交流两种模型形态:–形式化的数学模型(formalmathematicalmodel)–非形式化的图形化模型(informalgraphicalmodel)第2章软件过程与方法11第3章需求与分析建模11需求分析方法两种主要需求分析方法:–结构化分析与设计方法(StructuredAnalysisandDesignTechnique,SADT)–面向对象分析与设计方法(Object-OrientedAnalysisandDesign,OOAD)问题域需求分析概要设计详细设计编码测试计算机自然语言传统的编程语言分析与设计的鸿沟问题域面向对象分析面向对象设计面向对象编程面向对象测试计算机自然语言面向对象的编程语言第2章软件过程与方法12第3章需求与分析建模12分析模型的元素分析模型用例图用例文本活动图(泳道图)基于场景的元素数据流图控制流图处理说明面向信息流的元素类图分析包CRC卡协作图基于类的元素顺序图状态图行为元素第2章软件过程与方法13第3章需求与分析建模13主要内容3.1软件需求3.2需求工程3.3需求获取3.4需求分析与建模3.4.1需求分析3.4.2面向对象需求分析3.4.3结构化需求分析第2章软件过程与方法14第3章需求与分析建模14面向对象的分析理解由问题陈述所描述的真实世界的系统,并把它的功能抽象成模型分析模型描述对象三个方面:–对象的静态结构(领域模型)–对象之间的交互(交互模型)–对象的生存期(状态模型)第2章软件过程与方法15第3章需求与分析建模15面向对象的分析面向对象的分析模型由三个独立的模型构成:–功能模型:从用户的角度获取功能需求,由用例模型表示(已在上堂课学习过);–静态结构模型(领域模型):是对领域内的概念类或现实世界中对象的可视化表示;–动态行为模型:描述对象之间的交互行为,由顺序图和协作图表示。建立与实现技术无关的系统逻辑结构第2章软件过程与方法16第3章需求与分析建模16面向对象的分析()面向对象的分析OOA面向对象的设计OOD面向对象的实现OOP面向对象的测试Testing需求模型从用户的角度获取功能需求用例模型分析模型建立系统的概念模型,细化系统行为1静态结构模型:领域模型、类图2动态行为模型:顺序图、状态图、协作图()第2章软件过程与方法17第3章需求与分析建模17面向对象的分析用例领域模型(类图)顺序图协作图第2章软件过程与方法18第3章需求与分析建模18面向对象分析的过程第一阶段:建立静态模型(领域建模)1.从用例模型入手,寻找概念类2.细化概念类,识别边界类、控制类和实体类3.添加关联和属性第二阶段:建立动态模型1.从用例和活动图入手,建立系统顺序图2.建立分析对象的顺序图3.确定分析类的操作第2章软件过程与方法19第3章需求与分析建模19领域模型的作用销售过程1.顾客到达...2....3.收银员输入商品ID.4....用例文本Operation:enterItem(…)Post-conditions:-...操作契约Saledate...SalesLineItemquantity1..*1......经历状态变化的领域对象、属性和关联领域模型Use-CaseModel设计模型:RegisterenterItem(itemID,quantity):ProductCatalogspec=getProductSpec(itemID)addLineItem(spec,quantity):Sale...领域中的概念会给某些设计中软件类的名称带来启示概念类、术语、概念、属性、关联收银员:…商品ID:…...词汇表领域模型中某些术语的细化需求业务建模设计制品关系样例第2章软件过程与方法20第3章需求与分析建模20领域建模发现和描述对象(或概念)是面向对象的核心领域模型又称为概念对象模型,领域模型展示重要的领域概念或对象领域模型描述的是真实世界的概念,而非软件对象的概念领域模型不是数据模型第2章软件过程与方法21第3章需求与分析建模21领域建模通过领域建模能够降低与OO建模之间的表示差异PaymentamountSaledatetimePays-forPaymentamount:MoneygetBalance():MoneySaledate:DatestartTime:TimegetTotal():Money...Pays-for领域模型涉众对领域内重要概念的看法设计模型面向对象开发者在创建软件类时受到真实世界领域的启发因此,涉众所设想的领域与其在软件的表示之间的表示差异被降低1111领域模型中的Payment是概念,但在设计模型中的Payment是软件类。它们不是一回事,但前者对后者的名称和定义具有启发作用。这减少了表示差异这是对象技术的主要思想之一启发了对象及其名称现实世界概念世界软件世界第2章软件过程与方法22第3章需求与分析建模221.寻找概念类方法1:重用和修改现有的模型–参考已有系统或书籍资料等方法2:使用分类列表–业务交易—交易项目–角色—地点–记录—物理对象方法3:确定名词短语–分析用例文本第2章软件过程与方法23第3章需求与分析建模23寻找概念类——确定名词短语用例名称:处理销售参与者与关注点:收银员:希望准确、快速地输入,而且没有支付错误,因为如果少收货款,将从其工资中扣除。……前置条件:收银员必须经过确认和认证成功保证(或后置条件):存储销售信息。准确计算税金。更新账务和库存信息。主成功场景(或基本流程):1.顾客携带所购商品或服务到收银台通过POS机付款。2.收银员开始一次新的销售交易。3.收银员输入商品条码扩展(或替代流程):3a.无效商品ID(在系统中未发现):系统提示错误并拒绝输入该ID。收银员响应该错误特殊需求:使用大尺寸平面显示器触摸屏,文本信息可见距离为1米。。。发生频率:可能会不断地发生未解决问题:提成处理规则不确定收银员换班时如何处理……第2章软件过程与方法24第3章需求与分析建模24选择概念类的标准1.固定信息2.必要的服务3.多属性4.公共属性5.公共操作6.基本需求+状态,+行为,独立对象状态,-行为–系统需要它的状态数据,其他对象的属性–否则,摈弃+行为,-状态,信息遗漏-行为,-状态,摈弃第2章软件过程与方法25第3章需求与分析建模25选择概念类示例用例描述:1.顾客携带商品到销售终端POS前.2.收银员开始一个新的销售处理.3.收银员输入物品项标识.4.系统记录销售的物品项列表并且显示物品描述、价格和总价.收银员重复步骤3-4,直至输入所有物品项.5.系统显示最后的总价.6.收银员告诉顾客总价,要求顾客支付账款.7.顾客付款,系统结账.8.系统记录整个销售处理,更新产品库存目录.9.系统打印收据.10.顾客离开.确定对象:顾客,商品,POS,收银员,销售处理,物品项列表,物品描述,账款,产品目录摈弃对象:物品项标识:只有状态没有行为价格:只有状态没有行为总价:只有状态没有行为收据:既无状态也无行为概念类:顾客,商品,POS,收银员,销售处理,物品项列表,物品描述,账款,产品目录a)b)c)第2章软件过程与方法26第3章需求与分析建模26概念类StoreRegisterSaleItemCashPaymentSalesLineItemCashierCustomerProductCatalogProductDescriptionLedger第2章软件过程与方法27第3章需求与分析建模272.细化概念类(分析类)概念类是概念层次上的内容,用于描述系统中较高层次的对象概念类直接与应用逻辑相关,而不关注于技术实现的问题概念类的类型–实体类:表示系统存储和管理的持久性信息–边界类:表示参与者与系统之间的交互–控制类:负责用例实现entityLoancreateDate:DateboundaryLoansearchTitle()lend()…controlLendItemControlgetItems()lendItem()…第2章软件过程与方法28第3章需求与分析建模28边界类(BoundaryClass)边界类:–描述外部的参与者与系统之间的交互–目的:将用例的内部逻辑与外部环境进行隔离,使得外界的变化不会影响到内部的逻辑部分。–类型:用户界面、系统接口、设备接口对用户界面来说:–描述用户与系统的交互信息(传入哪些信息/指令,传出哪些信息/指令),而不是用户界面的显示形式(如按钮、菜单等);对系统接口/设备接口来说:–描述通信协议,但不必说明协议如何实现的。第2章软件过程与方法29第3章需求与分析建模29边界类(BoundaryClass)“学生注册课程”的界面学生课程注册第2章软件过程与方法30第3章需求与分析建模30控制类(ControlClass)–描述一个用例所具有的事件流的控制行为;–实现了对用例行为的封装,将用例的执行逻辑与边界和实体进行隔离,使得边界类和实体类具有较好的通用性