版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 软件工程- 原理、方法与应用(第三版)主要内容绪论上篇-传统软件工程软件生存周期与软件过程结构化分析与设计中篇-面向对象软件工程面向对象与UML需求工程与需求分析面向对象分析面向对象设计编码与测试下篇-软件工程的近期进展、管理与环境软件维护软件复用软件工程管理软件质量管理软件工程环境软件工程高级课题第一章 绪论软件和软件危机软件工程学的范畴软件工程的发展软件工程的应用软件工程的教学软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需的数据,以及有关描述程序操作和使用的文档(R. S. Pressman)软件=程序(包括数据)+文档程序是为了解决某个特定问题而用程序设计语言
2、描述的适合计算机处理的语句序列数据是使程序能正常操纵信息的数据结构文档是与程序开发,维护和使用有关的图文材料1. 软件和软件危机 -软件的定义软件与硬件的不同软件开发不同于硬件设计软件生产与硬件制造不同软件维护不同于硬件维修软件是逻辑的,而不是物理的软件开发与人关系密切软件开发成本大软件生产是简单的拷贝软件不会磨损和老化软件受环境影响大软件维护易产生新的问题1. 软件和软件危机 -软件的特征1. 软件和软件危机 -软件危机软件危机的表现对软件开发成本和进度的估算很不准确用户很不满意质量很不可靠没有适当的文档软件成本比重上升供不应求:软件开发生产率跟不上计算机应用迅速深入的趋势 硬件/软件成本变
3、化趋势硬件软件100% 0%195519701985软件技术进步落后于需求增长软件危机的原因客观:软件本身特点-逻辑部件-规模庞大、复杂度高主观:不正确的开发方法-忽视需求分析-个人化方式:软件开发=程序编写-轻视软件维护1. 软件和软件危机 -软件危机解决途径组织管理-工程项目管理方法技术措施-软件开发技术与方法-软件工具促使了软件工程的诞生按工程化的原理和方法组织软件开发是软件开发中的问题一个主要出路1. 软件和软件危机 -软件危机2. 软件工程学的研究范畴软件开发技术软件工程管理软件工程学软件工程学的研究范畴软件方法软件工具软件工程环境软件管理学软件经济学软件产权保护软件开发方法为软件开
4、发提供了 “如何做” 的技术个性化方法-结构化方法-面向对象方法-软件复用软件工具为软件开发提供了自动的或半自动的软件支撑环境单个工具-工具箱、集成工具-环境软件工程管理目的:为了按进度及预算完成软件计划内容:成本估算、进度安排、人员组织、质量保证等2. 软件工程学的研究范畴三种编程范型过程式编程范型程序由一组被动数据和一组能动过程组成程序=数据结构+算法着眼于程序的过程和基本控制结构,粒度最小面向对象编程范型数据及其操作被封装在对象中程序=对象+消息着眼于程序中的对象,粒度比较大基于构件技术的编程范型构件是通用的、可复用的标准化对象类程序=构件+架构着眼于适合整个领域的类对象,粒度更大3.
5、软件工程的发展过程式和面向对象的编程范型存款取款利息结算帐户余额帐户余额利息结算存 款取 款银行储蓄处理业务三代软件工程传统软件工程结构化分析 结构化设计 面向过程的编码 软件测试 面向对象软件工程OO分析与对象抽取 对象详细设计 面向对象的编码 和测试 基于构件的软件工程领域分析和测试计划定制 领域设计 建立可复用构件库 查找并集成构件 3. 软件工程的发展4. 软件工程的应用软件工程指导中小型软件软件工程指导大型软件软件工程的成就解决软件开发中的部分问题(非本质)软件生产率稳步增长软件工程发展的展望开发伴随软件复用,开发为了软件复用软件就是服务5. 软件工程的教学正确处理好4个关系三代软件
6、工程的相互关系软件工程技术和软件工程管理的关系形式化方法和非形式化方法的关系小程序设计和大程序设计的关系教学中加强实践训练小结软件工程自1968年提出以来,在过去30余年中,已发展成为用于指导软件生产工程化,覆盖软件开发方法学、软件工程管理、软件工具与环境等内容的一门新学科。随着程序设计从结构化程序设计发展到面向对象程序设计,软件工程也由传统的软件工程演变为面向 对象的软件工程,现正向更新一代的基于构件的软件工程迈进。长期的实践,软件工程积累了许多行之有效的原理与方法,已经为产业界广泛接受与应用。 第二章 软件生存周期与软件过程软件生存周期传统的软件过程软件演化模型形式化方法模型统一过程和敏捷
7、过程软件可行性研究1. 软件生存周期 软件生存周期(Software Life Cycle):一个软件项目从问题提出开始,直到软件产品最终退役(废弃不用)为止。软件生存周期分为三个时期:计划、开发和维护整个软件生存周期划分为多个相对独立的较小阶段,给每个阶段赋予确定而有限的任务,从而降低了整个软件工程的难度,提高了软件开发生产率典型的软件生存周期需求分析软件分析软件设计编码(测试)交付测试使用维护典型的软件生存周期软件生存周期的主要活动需求分析明确需要解决的问题(从用户的视角)建立需求模型:功能、性能、约束、接口等软件分析从开发人员的视角对软件进行分析建立分析模型:软件的逻辑模型软件设计确定软
8、件的总体结构和各部件的数据结构和操作建立软件设计模型:考虑实现技术和平台编码用程序设计语言将设计文档翻译成源程序建立软件实现模型:包含现有软件构件包软件测试发现程序中的错误、提高软件质量单元测试、集成测试、确认测试、系统测试运行维护软件过程与软件生存周期软件过程围绕软件开发所进行的一系列活动软件过程模型把软件生存周期中软件开发活动的有序流程用一个合理的框架来规范描述。软件过程模型是一种软件过程的抽象表示法,它从一个特定的角度表现一个开发过程。软件生存周期中的阶段和软件过程中的活动是基本一致的。2. 传统的软件过程传统的过程模型瀑布模型waterfall model基于软件生存周期的线性开发模型
9、快速原型模型rapid prototype model基于原型的迭代化开发模型瀑布模型图2.2 瀑布模型的阶段与文档需求分析需求规格说明软件分析与总体设计软件结构图模块说明系统测试确认测试综合测试程序清单详细设计编 码用户要求单元测试W.Royce于1970年提出线性开发模型强调软件文档每一个阶段必须完成规定的文档每一个阶段都要复审完成的文档瀑布模型特点阶段的顺序性和依赖性推迟实现的观点质量保证的观点存在问题不适合需求模糊的系统开发初始阶段很难彻底弄清软件需求快速原型模型需求原型开发最终系统设计原型评价最终系统实现用户反馈快速原型模型特点“逼真”的原型可以使用户迅速作出反馈循环回溯和迭代:非线
10、性模型使用快速开发工具种类渐进型:对原型补充和修改获得最终系统抛弃型:原型废弃不用应防止的偏向舍不得抛弃,从而影响软件质量3. 软件演化模型演化开发模型:使所开发的软件在迭代中逐步完善增量模型(incremental model)螺旋模型(spiral model)构件集成模型(component integration model) 增量模型把软件看作一系列相互联系的增量,每次迭代完成一个增量构件1:需求设计实现和集成交付客户构件2:需求设计实现和集成交付客户构件3:需求设计实现和集成交付客户构件n:需求设计实现和集成交付客户规格说明组设计组实现和集成组增量模型增量小而可用的软件第一个增量通
11、常是软件的核心特点在前面增量的基础上开发后面的增量每个增量的开发可用瀑布或快速原型模型每个增量开发的顺序性和总体的迭代性相结合螺旋模型螺旋模型特点瀑布模型(顺序性、边开发边复审)+快速原型(迭代性)风险分析-发现、控制风险一个螺旋式周期 计划:确定目标,选择方案,选定完成目标的策略 风险分析:从风险角度分析该策略 开发:启动一个开发活动 评审:评价前一步的结果,计划下一轮的工作 面向对象的基本概念对象Object类Class继承Inheritance消息Message 面向对象对象+类+继承+消息通信构件集成模型构件集成模型构件在某个领域内具有通用性,可以复用的软件部件将可以复用的构件存储起来
12、,形成构件库特点面向对象基于构件库融合螺旋模型特征支持软件开发的迭代方法 软件复用4. 形式化方法模型形式化方法模型:基于程序变换和验证技术的软件开发转换模型(transformational model)净室模型(cleanroommodel) 转换模型形式化规格说明与需求比较后修正变换2变换1变换n测试形式化开发记录系统需求目标系统转换模型开发过程确定形式化需求规格说明书进行自动的程序变换针对形式化开发记录进行测试特点形式化软件开发方法 形式化需求规格说明 变换技术程序自动生成技术 确保正确 净室模型需求收集盒结构规约形式化设计统计性使用测试正确性证明代码生成与检查测试计划认证需求收集盒结
13、构规约形式化设计统计性使用测试正确性证明代码生成与检查测试计划认证需求收集盒结构规约形式化设计统计性使用测试正确性证明代码生成与检查测试计划认证增量1增量2增量n净室模型净室思想在分析和设计阶段消除错误在“洁净”状态下实现软件制作形式化盒结构表示分析和设计正确性验证增量模型把软件看成一系列的增量软件过程模型的特点汇总开发模型特 点适用场合瀑布模型线性模型,每一阶段必须完成规定的文档需求明确的中、小型软件开发快速原型模型用户介入早,通过迭代完善用户需求,原型废弃不用需求模糊的小型软件开发增量模型每次迭代完成一个增量,可用于OO开发容易分块的大型软件开发螺旋模型典型迭代模型,重视风险分析,可用于O
14、O开发具有不确定性大型软件开发构件集成模型软件开发与构件开发平行进行领域工程、行业的中型软件开发转换模型形式化的规格说明,自动的程序变换系统理想化模型,尚无成熟工具支持净室模型形式化的增量开发模型,在洁净状态下实现软件制作开发团队熟悉形式化方法,中小型软件开发5. 统一过程和敏捷过程统一过程Rational Unified Process(RUP)描述了软件开发中各个环节应该做什么、怎么做、什么时候做以及为什么要做,描述了一组以某种顺序完成的活动敏捷过程Agile Development是一种以人为核心、迭代、循序渐进的开发方法,其软件开发过程称为“敏捷过程” RUPRational Unif
15、ied Process 将软件开发分为四个阶段:先启 定义整个项目的范围精化 制定项目计划、描述功能、建立体系架构框架构建 构造软件产品迁移 将软件产品移交到最终用户手中敏捷过程敏捷开发的价值观个人和交互胜过过程和工具 可以运行的软件胜过面面俱到的文档 客户合作胜过合同谈判 响应变化胜过遵循计划敏捷开发的12条原则尽早、不断地提交有价值的软件 允许改变需求,利用变化来为客户创造优势尽快、不断地提交可运行的软件在业务人员和开发人员必须天天都在一起工作以积极向上的员工为中心建立项目组,提供环境和支持,并信任他们的工作在团队内部重视面对面的交流依据可运行软件来评估项目的进展提倡可持续的开发时刻关注技
16、术上的精益求精和好的设计,以增强敏捷能力简单是最根本的最好的构架、需求和设计出于自组织团队每隔一定时间,要反省如何才能更有效地工作,然后作相应调整 极限编程eXtreme Programming是一种轻量级的、敏捷的软件开发方法4个价值观交流、简单、反馈、勇气4个方面改善加强交流、从简单做起、寻求反馈、勇于实事就是12个核心实践完整团队、计划对策、测试、简单设计、结对编程、小软件版本、设计改进、持续集成、代码共有、编码标准、系统比喻、可持续的速度6. 软件可行性研究目的研究项目是否可能实现和值得进行回答 Why to do?研究的内容经济可行性技术可行性运行可行性法律可行性可行性研究的步骤对当
17、前系统进行调查和研究弄清当前系统导出新系统逻辑模型导出新系统的解决方案设计不同的解决方案提出推荐的方案本项目的开发价值推荐这个方案的理由编写可行性认证报告系统概述可行性分析结论意见软件风险分析风险识别项目风险技术风险商业风险风险预测风险发生的可能性风险发生后的后果风险的驾驭和监控小结随着软件工程的发展,许多学者先后提出了瀑布模型、快速原型模型、增量模型、螺旋模型、转换模型、净室模型和构件集成等多种过程模型,各种软件开发模型各有优缺点在选定软件开发过程时,开发者不仅应该了解开发过程的特点,还应该结合待开发系统的特点一起考虑。如有必要,也可以同时组合多种模型或创建新的模型。 第三章 结构化分析与设
18、计概述结构化系统分析结构化系统设计模块化设计概述 -结构化分析与设计的由来结构化分析与设计最初系由结构化程序设计扩展而来 瀑布模型的首次实践 SA与SD的流程 结构化分析(工具:DFD、PSPEC) 分析模型(分层DFD图)+ SRS结构化设计(工具:SC图) 映射 初始设计模型(初始SC图)初始设计模型(初始SC图) 优化 最终设计模型(最终SC图)基本任务与指导思想 结构化分析 建立分析模型 编写需求说明 结构化设计 软件设计 = 总体设计 + 详细设计 SC图须分两步完成 概述 -结构化分析与设计的由来结构化分析与设计最初系由结构化程序设计扩展而来 瀑布模型的首次实践 SA与SD的流程
19、结构化分析(工具:DFD、PSPEC) 分析模型(分层DFD图)+ SRS结构化设计(工具:SC图) 映射 初始设计模型(初始SC图)初始设计模型(初始SC图) 优化 最终设计模型(最终SC图)基本任务与指导思想 结构化分析 建立分析模型 编写需求说明 结构化设计 软件设计 = 总体设计 + 详细设计 SC图须分两步完成 概述 -SA模型的组成与描述 加工说明数据对象说明STD图DFD图E-R图DD控制说明(CSPEC)SA模型的描述工具:DFD、DD和PSPEC:这是早期SA模型的基本组成部分;CFD、CSPEC和STD:是早期SA模型的扩展成分,适应实时软件的建模需要;E-R图:适用于描述
20、具有复杂数据结构的软件数据模型;结构化分析模型的描述工具数据流图(DFD)指明数据在系统中移动时如何被变换,描述对数据流进行变换的功能和子功能。组成符号圆框代表加工;箭头代表数据的流向,数据名称总是标在箭头的边上;方框表示数据的源点和终点;双杠(或单杠)表示数据文件或数据库 数据字典(DD)对软件中的每个数据规定一个定义条目。加工说明(PSPEC)对数据流图中出现的每个加工/处理的功能描述主要工具:结构化语言,判定树或判定表概述 -SD模型的组成与描述 过程设计接口设计体系结构设计数据设计SD模型的组成包含数据设计、体系结构设计、接口设计与过程设计。体系结构设计是用来确定软件结构的,其描述工具
21、为结构图,简称SC图。过程设计主要指模块内部的详细设计 结构化设计模型的描述工具SC图的组成符号矩形框来表示模块,带箭头的连线表示模块间的调用,并在调用线的两旁标出传入和传出模块的数据流 ABCDABCABC(a)简单调用 (b)选择调用 (c)循环调用 SC图中模块调用关系的表示2. 结构化系统分析 T.DeMarco的定义 结构化分析就是使用DFD、DD、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化说明书的目标文档 结构化分析的基本步骤 由顶向下对系统进行功能分解,画出分层DFD图由后向前定义系统的数据和加工,编制DD和PSPEC最终写出SRS 2. 结构化系统分析 -画分
22、层数据流图 教材购销系统的顶层DFD 学生教材购销系统书库保管员2. 结构化系统分析 -画分层数据流图 教材购销系统的第二层DFD 领书单 进书通知 进书通知 购书单缺书单 1销售 2采购书库保管员学生F1教材存量表 F2缺书登记表 2. 结构化系统分析 -画分层数据流图 教材购销系统的第三层DFD采购子系统 .修改教材库存和待购量.按书号汇总缺书 .按出版社统计缺书销售书库保管员F2缺书登记表 F1教材存量表 F5待购教材表 F6教材一览表 进书通知 进书通知 缺书单 从数据的终点开始定义数据和加工数据定义DD例如:发票发票 学号姓名书号单价数量总价书费合计加工策略PSPEC分层DFD图产生
23、了系统的全部数据和加工,通过对这些数据和加工的定义,常常对分析员提出一些新问题,促使新的调查和思考,并可能导致对DFD的修改。画DFD,定义加工和数据,再画,再定义,如此循环,直至产生一个为用户和分析员一致同意的文档SRS。 2. 结构化系统分析 -确定数据定义与加工策略 复审人员用户和系统分析员共同进行复审,并吸收设计人员参加 复审的重点 尽量多地发现文档中存在的矛盾、冗余与遗漏 ,尽可能确保DFD、DD、加工说明等文档的完整性、一改性和易读性,2. 结构化系统分析 -需求分析的复审 3.结构化系统设计 SD概述面向数据流设计和面向数据设计 面向数据流:数据流是考虑一切问题的出发点面向数据:
24、以数据结构作为分析与设计的基础 从分析模型导出设计模型 结构化设计的描述工具:SC图 从分析模型导出设计模型PSPEC数据对象描述CFDDFDE-RDDCSPEC过程设计 接口设计体系结构设计数据设计数据流图的类型数据流图的类型 变换(transform)型结构 传入路径变换中心传出路径事务(transaction)型结构一条接受路径一个事务中心若干条动作路径 变换结构的DFD变换中心传入传出信息传入流传出流 变换流时间事务型结构DFD事务中心接受路径动作路径同时存在两类结构T传入变换传出事务中心SD方法的步骤 SD方法的步骤复审DFD图,必要时可再次进行修改或细化鉴别DFD图所表示的软件系统
25、的结构特征,确定它所代表的软件结构是属于变换型还是事务型按照SD方法规定的一组规则,把DFD图为初始的SC图 变换映射变换型DFD图 初始SC图 事务映射 事务型DFD图 初始SC图按照优化设计的指导原则改进初始的SC图,获得最终SC图变换映射划分DFD图的边界 建立初始SC图的框架顶层都只含一个用于控制的主模块 第一层包括传入、传出和中心变换三个模块 分解SC图的各个分支 分解实质上是“映射” 例子划分DFDPEDCBAWRUVQabcdeprwuv传入部分变换中心传出部分第一级分解MEMTMCMAc,ec,eu,wu,w传入分支的分解GetEAtoBReadDDtoEReadABtoCGe
26、tBGetC MAc,ecebbcaabddb传出分支的分解 WriteW UtoV Write V PutU MEw,uwuuvv变换中心的分解 MT R P Qepc,prrw,u初始SC图 MC MT Q P R MEWriteW PutU Uto VWriteV A toBReadA GetB DtoERead D BtoC GetC Get E MA事务映射在DFD图上确定边界事务中心接受部分(包括接受路径)发送部分(包括全部动作路径) 画出SC图框架 DFD图的三个部分分别映射为事务控制模块,接受模块和动作发送模块 分解和细化接受分支和发送分支 例子划分DFD传入 T变换传出接受部
27、分事务中心动作部分第一层分解发送事务控制接收顶层第一层混合结构C1AC3BC2DLFGEKJabb1b2b3c1c2c3defghjklm优化结构设计的指导规则 对模块划分的指导规则 提高内聚,降低耦合后简化模块接口少用全局性数据和控制型信息保持高扇入/低扇出的原则 扇入高则上级模块多,能够增加模块的利用率扇出低则表示下级模块少,可以减少模块调用和控制的复杂度 扇入和扇出MM M的扇入M的扇出例子:扇出计算实发工资取得工资数据编外人员扣款编外人员工资编外人员税收薪金制工资额计时制工资额常规扣款税收扣款煎饼形结构不可取!例子:扇出常规扣款编外人员实发工资 计算实发工资取得工资数据计时工人实发工资
28、计薪工人实发工资编外人员扣款编外人员税收编外人员工资税收扣款计时制工资额薪金制工资额塔型结构4. 模块设计模块设计也称详细设计目的为SC图中的每个模块确定算法和数据结构,用选定的表达工具给出清晰的描述 主要任务 编写软件的“模块设计说明书” 模块设计的原则与方法 清晰第一的设计风格 结构化的控制结构 仅用这三种控制结构来构成程序 每个控制结构只应有一个入口和一个出口 逐步细化的实现方法 常用的表达工具 流程图NS图 伪代码PDL语言N-S图 S1 S2顺序 C T FS1 S2 选择While C S S Until C 循环小结讨论传统软件工程的系统开发技术,重点放在基于瀑布模型的结构化分析
29、与设计和模块设计上,但不涉及同为传统软件工程的快速原型开发等内容。全章以实例(从“教材销售”到“教材购销”)为主线,依次展示了结构化分析、结构化设计和模块设计的常用技术。第四章 面向对象与UML面向对象概述UML简介静态建模动态建模物理架构建模UML工具1. 面向对象概述对象:代表客观世界中实际或抽象的事物 客观世界是由各种对象组成的 数据以及在其上的操作的封装体 类:一组相似的对象的共性抽象类是一组客观对象的抽象实现抽象数据类型的工具 类与对象的关系抽象与具体的关系组成类的每个对象都是该类的实例 实例是类的具体事物 类是各个实例的综合抽象 面向对象概述 -面向对象的基本特征面向对象的基本特征
30、抽象在某个重要的或想关注的方面来表示某个物体或概念 忽略主题中与当前目标无关的方面 封装把操作和数据包围起来,对数据的访问只通过已定义的接口来完成 继承类之间的“is a”或“is like”关系 类层次,定义一个新类,可以从现有的类中派生出来 子类可以从父类继承方法和属性 多态 不同类的对象可以对同一消息作出响应,执行不同的处理 面向对象符合人类习惯的思维方式 OO开发的优点提高软件系统的可复用性 提高软件系统的可扩展性 提高软件系统的可维护性 面向对象概述 -面向对象开发的优点2. UML简介Unified Modeling Language近10多年来OOSE最重要的成果贡献者:Grad
31、y Booch, Ivar Jacobson,Jim Rumbaugh中文网站http:/www. umlUML的组成UML的模型元素表示模型中的某个概念类、对象、构件、用例、结点(node)、接口(interface)、包(package)和注释(note) 表示模型元素之间的关系关联、泛化、依赖、实现、聚合和组合 UML的元模型结构元元模型层元模型层模型层用户模型层用户模型元模型模型元元模型UML的组成图静态图用例图、类图、对象图、构件图和部署图 动态图状态图、时序图、协作图和活动图 视图用例视图从用户的角度看到的系统应有的外部功能 逻辑视图描述系统的静态结构和对象间的动态协作关系 进程视
32、图展示系统的动态行为及其并发性 构件视图展示系统实现的结构和行为特征 部署视图显示系统的实现环境和构件被部署到物理结构中的映射 UML的特点统一标准面向对象表达能力强大可视化UML的应用用于描述系统开发的不同类型于不同阶段从需求分析到软件设计到软件测试及维护可视化问题描述,帮助理解问题帮助建立各阶段的文档获取和交流有关应用问题求解的知识辅助构建系统3. 静态建模静态建模用例图、类图和对象图用例模型用例图表示从最终用户的角度描述系统功能类和对象模型类图和对象图表示用例图与用例模型用例图的组成符号系统名称系统边界用例名用例参与者关联建立用例图保险商务系统签定保险单销售统计客户统计客户保险销售员用例
33、之间的关系扩展关系根据指定的条件,一个用例中有可能加入另一个用例的动作 包含关系一个用例的行为包含另一个用例的行为 扩展签保险单签汽车购买合同使用使用签保险单签汽车保险单签房屋保险单类图Class Diagram学生姓名:string学号:string书书名:string价格:real 1 购买 0.* 属于对象图Object Diagram王平:学生姓名:王平学号:020106英语:书书名:英语价格:26.5数学:书书名:数学价格:21.8类图表示类间关系关联关系 (Association) 类之间存在的语义上的关系普通关联、递归关联、多重关联等聚集关系(Aggregation) 特殊的关联
34、:整体-部分组合关系(Composition)特殊的聚集:整体强烈拥有部分泛化关系(Generalization) 继承依赖关系(Dependency) 对一个类/对象的修改会影响另一个类/对象关联关系1.*工人管理老板0.1员工递归关联 机器工人产品三重关联 聚集和组合成员课题组个人聚集关系窗口标题外框显示区组合关系泛化关系交通工具abstract船车轿车卡车客车依赖关系类B类A约束与派生约束和派生机制能应用与任何模型元素 用花括号括起放在模型元素旁边 典型的属性约束是该属性的取值范围 派生属性可由其它属性通过某种方式计算得到,通常在派生属性前面加一个“/”表示 关联关系可以被约束,也可以被
35、派生 包图子系统A子系统D子系统B子系统C子系统E子系统F4. 动态建模消息(Message)状态图(State Diagram)时序图(Sequence Diagram)协作图(Collaboration Diagram)活动图(Activity Diagram)消息同步消息异步消息简单消息状态图State Diagram超时到达下楼上楼到达上楼到达在底楼向上移动向底楼移动向下移动空闲状态图之间发送消息Off()play()stop()On()CD机Off()/stop()stop()Off()On()stop()play()On()Off()遥控器关开关 开/停止开/播放play()时序图
36、(Sequence Diagram)打印机忙保存文件打印机就绪打印文件打印文件打印文件计算机打印服务器打印队列打印机协作图(Collaboration Diagram)打印机忙2.2:保存文件打印机就绪2.1:打印文件1:打印文件计算机打印队列打印服务器打印机活动图Activity Diagram购买处理顾客 销售部门 处理销售支付货款库存处理发送商品收取商品水未开水开了打开信号接通电源加热显示灯亮水壶断电5. 物理架构建模逻辑架构和物理架构逻辑架构物理架构构件图配置图构件图Component Diagram部署图Deployment Diagram6. UML 工具Rational Rose
37、StarUML Rational RoseStarUML小结面向对象开发按人的思维方式来理解和解决问题,将问题空间的概念直接映射到解空间。面向对象的基本特征是抽象、封装、继承和多态。 作为一种著名的建模语言,UML用图从不同的视角为系统建模,形成为不同的视图;每个视图代表系统完整描述中的一个抽象,显示这个系统中的一个特定的方面;每个视图由一组图构成,其中包含了强调系统中某一方面的信息。 第5章 需求工程与需求分析软件需求过程需求分析与建模需求获取的常用方法需求模型软件需求描述需求管理需求建模示例1. 软件需求工程软件需求的定义一个软件系统必须遵循的条件或具备的能力 系统的外部行为 系统的内部特
38、性 软件需求三个层次 业务需求用户需求功能需求 软件需求的层次关系业务需求项目愿景与范围用户需求质量属性用例模型文档功能需求非功能需求和约束条件软件需求规格说明软件需求的特性功能性可用性可靠性性能可支持性设计约束需求工程的由来代码编写-生存周期-需求工程软件需求工程可以定义为应用有效的技术和方法,合适的工具和符号,来确定、管理和描述目标系统及其外部行为特征的学科 2. 需求分析与建模需求分析的步骤需求分析是迭代过程需求获取需求建模规格说明需求验证3. 需求获取的常用方法常规的需求获取方法联合分析小组 用户代表、领域专家和系统分析员客户访谈 充分准备,寻找共同语言 循循序渐进、逐步逼近 问题分析
39、与确认 多个来回3. 需求获取的常用方法用快速原型法获取需求利用各种分析技术和方法,生成一个简化的需求规格说明;对需求规格说明进行必要的检查和修改后,确定原型的软件结构、用户界面和数据结构等;在现有的工具和环境的帮助下快速生成可运行的软件原型并进行测试、改进;将原型提交给用户评估并征求用户的修改意见;重复上述过程,直到原型得到用户的认可。 4. 需求模型需求模型概述结构化需求模型面向对象需求模型面向对象的需求建模画用例图写用例规约描述补充规约编写术语表结构化需求模型数据字典数据流图判定树判定表PDL加工说明数据定义.E-R图行为模型状态转换图控制流图和控制说明功能模型数据模型面向对象需求模型用
40、例规约参与者用例图用例模型补充规约术语表全局性功能、非功能需求用例建模确定参与者存在于系统外部、与系统交互的人、硬件、其他系统通过回答问题确定参与者系统开发完成之后,有哪些人会使用这个系统? 系统需要从哪些人或其他系统中获得数据? 系统会为哪些人或其他系统提供数据? 系统会与哪些其他系统相关联? 系统是由谁来维护和管理的? 用例建模确定用例考察每个参与者与系统的交互和需要系统提供的服务通过回答问题确定用例参与者为什么要使用该系统? 参与者是否会在系统中创建、修改、删除、访问、存储数据?如果是的话,参与者又是如何来完成这些操作的? 参与者是否会将外部的某些事件通知给该系统? 系统是否会将内部的某
41、些事件通知该参与者?用例建模绘制和检查用例图按UML标准画用例图检查用例图细化每个用例的用例规约内容包括:简要说明事件流特殊需求前置条件和后置条件用例模型的检查功能需求的完备性模型是否易于理解是否存在不一致性避免二义性语义用例建模示例选课系统问题陈述 开发一个学生选课系统。通过这个系统,学生可以选课和查看成绩报告单,教授可以选择所教的课和记录学生的成绩。学校保留原有的“课程目录”数据库系统来维护课程信息,但该系统的性能是有限的。所以新系统必须确保能及时访问旧系统上的数据。但新系统只能读取旧系统的课程信息,不能更新。每学期开始时,学生请求查看本学期开设的课程目录。有关课程的信息,包括教授名和所开
42、设的系等,将帮助学生做出决定。系统允许学生每学期选择4门课,如果学生没有选到主要的课程,还有两门备选课程可选。每门课的学生人数限3到10人。不满3人的课程将被取消。另外,每个学期有一段时间让学生更改课程表。学生可在该时段内访问系统并添加/删除课程。某个学生的选课一旦结束,选课系统即将此学生本学期的账单信息送到财务系统。如果在选课时某门课已经人满,学生在提交信息前必须被告知。学期结束,学生可进入系统查看自己的成绩。成绩属于隐秘信息,系统必须提供额外的安全措施阻止未授权的访问。教授必须能访问系统查询他们主讲课程。他们也需要知道是哪些学生选择了自己的课程。另外,教授也能登记学生的成绩。用例建模示例确
43、定参与者确定用例学生要注册课程;教授要选择课程来教;注册管理人员要维护关于教授和学生的所有信息;财务系统要从注册系统获得学生的费用情况;课程目录系统维护课程信息。无论是学生,教授还是注册员都需要登陆到系统;学生需要使用系统来选课,也能查看自己的成绩;教授需要使用系统来选择课程,也能记录学生的成绩;注册员必须维护学生、教授的所有信息,并在适当时候关闭注册系统;当选择课程的过程完成后,收费系统必须获得收费信息;学生和教授选择课程,需要启动课程目录系统。用例建模示例选课系统用例图用例建模示例选课用例规约1简要说明本用例允许学生选本学期提供的课程。在学期开始的添加/删除时期,学生可以修改或删除选择的课
44、程。课程目录系统提供了当前学期开设的所有课程的列表。2事件流2.1基本事件流用例开始于学生选择选课,或修改已存在的课程表。1)系统要求学生指出要执行的操作(创建,修改或删除课程表)2)一旦学生提供了所需要的信息,以下的一条子事件流将被执行 如果选择的是“创建课程表”,创建课程表子事件流将被执行 如果选择的是“修改课程表”,修改课程表子事件流将被执行 如果选择的是“删除课程表”,删除课程表子事件流将被执行2.2备选事件流 。3特殊需求无4前置条件本用例开始前学生必须已经登录进系统。5后置条件如果用例成功,学生的课程表被创建,修改,删除。否则系统状态不变。 描述补充规约示例选课系统的补充规约1目标
45、 本文档的目的是定义选课系统的需求。本补充规约列出了不便于在用例模型的用例中获取的系统需求。它和用例模型一起记录关于系统的一整套需求。2范围 本补充规约适用于选课系统,除定义了在许多用例中所共有的功能性需求以外,还定义了系统的非功能性需求,例如:可靠性、可用性、性能和可支持性等。(功能性需求在用例规约中定义。)3参考无4功能多个用户必须能同时执行操作。如果某个学生所建的课程表中包含人数已满的课程,必须通知这位学生。5可行性 桌面用户界面应与 Windows 98/2000/XP 兼容。6可靠性 选课系统在每周7天,每天24小时内都应是可用的。宕机的时间应少于 10%。7性能。术语表示例选课系统
46、的术语表1.简介这份文档是用来对一些术语进行定义的,同时将用例说明或其他文档中读者不太熟悉的术语进行解释性的描述。通常来说,这份文档对一些数据信息进行一些定义,从而使得用例规约和其他的文档显得简洁易懂。2. 定义这份术语表包含了选课系统中核心概念的定义。课程:大学提供的某一门课。开设课程:某一课程的具体安排情况,包括一周上课的天数、时间和教授。课程目录:大学所开设的所有课程的完整目录。教员:所有在此大学内任教的教授。财务系统:用来处理收费信息的系统。成绩:学生某门课程的成绩。5. 软件需求描述软件需求规格说明书Software Requirement Specification引言信息描述功能
47、描述行为描述质量保证接口描述其他6. 需求管理需求管理的特定实践需求管理的流程需求确认需求跟踪6. 需求管理需求变更控制需求变更的利弊需求变更的流程需求变更状态转换需求管理工具IBM Rational RequisiteProTelelogic DOORSregBorland CaliberRM7. 需求建模示例网上购物系统当今,网上购物已成为一种时尚。本示例作为WEB 应用的一例,主要为普通购物用户和管理员服务。普通购物用户在使用本系统的购物功能前,必须先注册账号。在注册页面中填写个人信息,如使用本系统的账号名和密码,联系地址等。在提交表单、完成注册后,系统将保存信息,以方便管理员管理用户信
48、息、联系用户。如果用户已经在系统中注册过,可以在登录页面输入账号名和密码。如果密码正确,用户就可以购物,否则只能做一般的页面浏览。进入系统后,用户也可选择维护自己的信息,比如修改账号名,密码,联系地址等。如果直接进行购物,系统可让用户首先浏览商品信息,使之对商品的数量、种类有一个大概的了解。如果用户对某件商品感兴趣,就可以选择特定商品查看其详细信息,接着选择将商品加入购物车,或继续查看其他商品。当购物结束时,用户首先要浏览一下已经存在于购物车中的商品项目,包括数量、单价及总价。这时用户可以更改任何已存在购物车中的商品数量。如果确定要购买购物车内的商品,系统即生成一份订购商品的订单(包括所有商品
49、的名字,单价,小计,总价),然后由用户填写包括用户姓名、家庭地址、信用卡号码、电子邮件地址等信息,并提交订单。以后,系统自动将用户信息、信用卡信息和购物总价发送到银联系统,由银联系统验证信用卡信息并执行扣款,并将银联系统操作成功与否的信息返回到系统。系统根据银联系统的操作结果,向用户发送E-MAIL,提示用户操作成功与否的消息。如果扣款成功,就与物流系统接口,安排给用户派送购买的商品。管理员进入系统时,首先要输入口令。如果检查通过,就可以对系统中的信息进行维护和管理,包括: 管理用户信息。当有些用户有不正常操作时,如填写订单时使用不存在的信用卡号,可以将此用户账号冻结,也可以启用用户账号。但管
50、理员无权修改客户信息; 管理系统中的商品信息,例如有新的商品时,管理员可向系统中添加此商品。当商品的价格或规格发生浮动时,管理员也可以对它们作修改,使用户及时了解商品的最新情况。若某件商品没有存货或不再出售时,管理员可删除系统中的此项商品记录。 管理客户定单。及时获得客户的资料(资料中有电子邮件地址),以便与客户联系。要求系统对数据库的存取速度要尽量快,并保证系统在配置完成以后一天24小时都可用。还要求系统有较高的安全性,当生成订单时,用户的信用卡号码要在网上传输,所以必须提供额外的安全措施。用例模型用例模型用例规约补充规约术语表小结需求分析由需求获取、需求建模、规格说明和需求验证四个步骤组成
51、建立需求模型是需求分析的核心,它通过各种图形及符号,可视化地从各个侧面描述系统需求需求规格说明书以各方共同认可的文档形式表述出来,是软件设计、系统验收的可靠依据面向对象的用例模型,由用例模型、补充规约和术语表一起组成随着人们对需求重要性的认识逐渐深入,软件需求管理应运而生 第6章 面向对象分析软件分析概述面向对象分析建模面向对象分析示例1. 软件分析概述软件需求与软件分析软件需求:用户角度,注重软件外在表现软件分析:开发者角度,注重软件内部逻辑结构面向对象软件分析面向对象分析模型面向对象软件分析OOA的主要任务理解用户需求全面地理解和分析用户需求明确所开发的软件系统的职责形成文件并规范地加以表
52、述 进行分析,提取类和对象,并结合分析进行建模 OOA的模型需求模型类/对象模型对象-关系模型对象-行为模型面向对象分析模型属性、操作、协作者对象-行为模型对象-关系模型类/对象模型以用例模型为主体的需求模型面向对象分析OOA的优点(1)同时加强了对问题域和软件系统的理解;(2)改进包括用户在内的与软件分析有关的各类人员之间的交流;(3)对需求的变化具有较强的适应性;(4)很好地支持软件复用;(5)确保从需求模型到设计模型的一致性。 分析模型的特点全面覆盖软件的功能需求 分析模型与软件的实现无关 分析模型的表述方法与所采用的分析技术有关 OOA的共同特征共同特征 类和类层次的表示建立对象-关系
53、模型建立对象-行为模型 OOA建模步骤 需求理解定义类和对象标识对象的属性和操作标识类的结构和层次建立对象-关系模型建立对象-行为模型评审OOA模型OOA模型在软件开发中的地位 软件需求模型软件成品分析模型设计模型实现模型OOAOODOOPOOT2. 面向对象分析建模基于用例的面向对象分析方法 回顾需求阶段产生的用例规约,补充必要的详细信息;研究用例的事件流,将用例的职责分配给若干分析类;基于这些职责分配以及分析类之间的协作,即可开始为分析类间的关系建模了一旦分析了用例,就需要查看确定的类,确保它们被详尽地描述并确保分析模型各个部分之间的一致 识别与确定分析类三种分析类边界类 用户界面系统接口
54、硬件接口控制类封装用例所特有的控制行为实体类系统存储的信息及其相关行为三种分析类查找分析类为每对参与者/用例确定一个边界类 查找分析类为每个用例设置一个控制类 查找分析类确定相关的各个实体(包括属性与方法) 课程目录课程表学生建立对象行为模型 绘制出选课用例创建课表事件流的时序图 建立对象行为模型 绘制出选课用例创建课表事件流的协作图 建立对象行为模型 为分析类分配职责 建立对象行为模型 绘制状态图用例行为比较复杂,并且分散到不同的事件序列中,这时就需要为这个类创建一个状态图 针对一个类的状态变化研究该类的动态行为 建立对象关系模型 分析类的属性分析类本身具有的信息分析类的关联通过关联可以找到
55、其他分析类链与关联的对应关系分析类图表现分析类及其关系VOPC分析类的合并 每个分析类都代表一个明确定义的概念,具有不相重叠的职责 链与关联的对应关系选课用例的参与类图 分析类的合并 3. 面向对象分析示例 -注册用例3. 面向对象分析示例 -注册用例3. 面向对象分析示例 -注册用例3. 面向对象分析示例 -维护个人信息3. 面向对象分析示例 -维护个人信息3. 面向对象分析示例 -维护个人信息3. 面向对象分析示例 -维护购物车 3. 面向对象分析示例 -维护购物车 3. 面向对象分析示例 -维护购物车 3. 面向对象分析示例 -从购物车中删除商品 3. 面向对象分析示例 -修改购物车中的
56、商品信息 3. 面向对象分析示例 -生成订单 3. 面向对象分析示例 -生成订单 3. 面向对象分析示例 -生成订单 3. 面向对象分析示例 -管理订单 3. 面向对象分析示例 -管理订单 3. 面向对象分析示例 -管理订单 3. 面向对象分析示例 -管理订单 3. 面向对象分析示例 -管理订单 3. 面向对象分析示例 -管理订单 3. 面向对象分析示例 -管理订单 小结软件分析将软件需求阶段产生的需求模型转变为软件分析模型。分析模型其实就是从软件开发者的角度,在静态组成结构和动态行为两个方面来描述的待开发的软件系统。面向对象分析利用面向对象的技术来分析问题、建立问题域的静态模型和动态模型,并
57、用UML等工具来表示这一需求对应的类对象模型、对象-关系模型和对象-行为模型等,从而完成对问题域建模,形成面向对象的分析模型。软件分析通常从用例分析开始,建立系统需求的静态结构模型和动态行为模型。第7章 面向对象设计软件设计概述面向对象设计建模系统架构设计系统元素设计面向对象设计示例1. 软件设计概述软件设计的概念模块与构件抽象与细化信息隐藏软件复用软件设计的任务把分析阶段产生的分析模型转换为用适当手段表示的软件设计模型 软件设计一般都包括数据设计、体系结构设计、接口设计和过程设计等 模块化设计(modular design)分解(decomposition)模块独立性(module inde
58、pendence)自顶向下(topdown design)自底向上(bottomup design)分解(decomposition)C (P1+P2)C (P1)+C (P2)E (P1+P2)E (P1)+E (P2) C为问题的复杂度,E为解题需要的工作量 模块数接口成本最小成本区M软件开发工作量总成本模块成本模块独立性(module independence)内聚(cohesion)模块内部各成分之间耦合(coupling)一个模块与其它模块之间模块的独立性高 块内联系强 块间联系弱 内聚 弱 强低内聚中内聚高内聚 内聚 cohesion.偶然性内聚 coincidental cohe
59、sion.逻辑性内聚 logical cohesion.时间性内聚 temporal cohesion.过程性内聚 procedural cohesion.通讯性内聚 communicational cohesion.顺序性内聚 sequential cohesion.功能性内聚 functional cohesion逻辑性模块 读入分数平均/最高?计算平均分计算最高分输出结果耦合 coupling1.非直接耦合no direct coupling2.数据耦合data coupling3.特征耦合 stamp coupling4.控制耦合control coupling 5.外部耦合 exte
60、rnal coupling6.公共耦合 common coupling7.内容耦合 content coupling弱耦合数据耦合非直接耦合模块2模块1模块4模块3特征耦合(参数表传递数据结构)公共耦合2. 面向对象设计建模面向对象设计模型系统架构层类和对象层消息层责任层 面向对象设计的任务系统架构设计系统元素设计模式的应用模式是解决某一类问题的方法论,也是对通用问题的通用解决方案 软件模式可以分为架构模式、设计模式和习惯用法三种 OOA模型转换到OOD模型责任设计消息设计类及对象设计系统架构设计属性、操作、协作者对象-行为模型对象-关系模型类/对象模型用例模型3. 系统架构设计系统高层结构设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版工程清包合同:工程设计变更与施工方案调整
- 2024某企业与咨询公司之间的管理咨询服务合同
- 2025年度香菇食品产品线扩展与市场拓展合同3篇
- 二零二五版智慧交通系统开发与技术支持协议2篇
- 二零二五版二手房买卖合同公证与节能环保改造服务协议2篇
- 2025年度跨国企业集团财务合并报表编制合同3篇
- 2024年销售代理协议(意向)3篇
- 个性化活动策划方案协议2024规格版A版
- 2024版地暖安装工程承包合同书
- 2024版企业业务外包人员协议模板版B版
- 前列腺增生药物治疗
- 人工智能知识图谱(归纳导图)
- 滴滴补贴方案
- 民宿建筑设计方案
- 干部基本信息审核认定表
- 2023年11月外交学院(中国外交培训学院)2024年度公开招聘24名工作人员笔试历年高频考点-难、易错点荟萃附答案带详解
- 春节行车安全常识普及
- 电机维护保养专题培训课件
- 汽车租赁行业利润分析
- 春节拜年的由来习俗来历故事
- 2021火灾高危单位消防安全评估导则
评论
0/150
提交评论