软件工程课程(-512张)课件

PPT
  • 阅读 36 次
  • 下载 0 次
  • 页数 510 页
  • 大小 2.798 MB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档80.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
在线阅读已结束,您可下载此文档阅读剩下的510 已有0人下载 下载文档80.00 元
/ 510
  • 收藏
  • 违规举报
  • © 版权认领
下载文档80.00 元 加入VIP免费下载
文本内容

【文档说明】软件工程课程(-512张)课件.ppt,共(510)页,2.798 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-45032.html

以下为本文档部分文字说明:

24.11.20221课名:软件工程24.11.20222第一章软件工程概述24.11.20223§1.1软件工程的背景和历史1968年由NATO(北大西洋公约组织)在德国Garmish召开的学术会议上,FeitzBauer首先提

出了“软件工程”概念。24.11.20224软件工程与编程前者是一门学科,一种科学理论来指导软件系统开发,标准化,自动化的过程考虑如何分解一个系统,以便各人分工开发;考虑如何说明每个部分的规格要求;怎样才能易于维护单纯的代码编写是软件工程发展的前身是软件工程中

占据很少时间和空间的一部分24.11.20225计算机学科的发展计算机科学(CS)计算机科学(CS)计算机工程(CE)软件工程(SE)信息系统(IS)计算学科(computingdiscipline)24.11.2022660年代以来工厂管理病人监护工资统发图书馆管理机票预定学籍管理早

期第二阶段第三阶段第四阶段面向批处理多用户分布式系统强大的桌面系统有限的分布实时嵌入“智能”面向对象技术自定义软件数据库低成本硬件专家系统软件产品消费者的影响人工神经网络并行计算网络计算机195019601970198019902000Evolut

ionofsoftware#24.11.20228为什么发展如此之快不准确的时间和金钱的估算软件质量的低下相对硬件产品开发软件开发费用的增加维护、增强软件系统的必要性硬件价格大幅度下降24.11.20229软件技术面临的问题•规模•复

杂性•生产率Windows95有1000万行代码Windows2000有5000万行代码例:Exchange2000和Windows2000开发人员结构Exchange2000Windows2000项目经理25人约250人

开发人员140人约1700人测试人员350人约3200人24.11.202211《人月神话》焦油坑史前史中,没有别的场景比巨兽在焦油坑中垂死挣扎的场面更令人震撼。上帝见证着恐龙、猛犸象、剑齿虎在焦油中挣扎。它们挣扎得越是猛烈,焦油纠缠得越紧,没有

任何猛兽足够强壮或具有足够的技巧,能够挣脱束缚,它们最后都沉到了坑底。24.11.202212软件危机的主要特征软件开发周期大大超过规定日期;软件开发成本严重超标;软件质量难于保证。24.11.2022

13软件工程的定义FritzBauer在NATO会议上给出的定义:“软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而确立和使用的健全的工程原理(方法)。”24.11.202214软件工程的

定义(2)IEEE【IEE83】给出的软件工程定义:“软件工程是开发、运行、维护和修复软件的系统方法。”24.11.202215软件工程的定义(3)IEEE【IEE93】给出了一个更加综合的定义:“将系统化的、规范的、可

度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。”软件工程是一门交叉学科软件工程的主要研究内容软件开发技术:软件开发方法学软件开发过程软件工具和软件工程环境软件工程管理:软件管理学软件经济学软件心理学软件工程所包含的内容不是一成不变的,随着人们对软件系统的研制开发和生产

的理解。应用发展的眼光看待它。24.11.202217软件工程—一种层次化技术工具方法过程质量焦点Softwareengineeringlayers软件工程三个要素:方法、工具、过程24.11.202218软件工程与一般工程的差异软件是逻辑产品而不是实物产品软件的功能

依赖于硬件和软件的运行环境以及人们对它的操作软件设计的复杂性软件特征:功能的多样性实现的多样性能见度低软件结构合理性差智力密集及知识产权保护24.11.202219软件工程知识结构2001年5月ISO/IECJTC1(ISO和IEC的第一联合技术委员会)发布了《SWEBOK指南V0.

95(试用版)》SWEBOK把软件工程学科的主体知识分为10个知识领域。24.11.202220软件工程知识结构软件需求软件设计软件构造软件测试软件维护软件配置管理软件工程管理软件工程过程软件工程工具和方法软件质量24.11.2

02221“软件工程”课程与其它软件专业课的区别(1)立足于系统的整体。(2)讲授系统分析、系统设计、测试及维护的理论和方法。(3)构筑一个软件系统,实践软件开发全过程。24.11.202222“软件工程”课程教学的目标转变对软件的认识:

上升程序系统转变思维定式:上升程序员系统工程师(系统分析员)24.11.202223软件产品的标准化软件开发过程的标准化24.11.202224软件的工业化生产过程应具备的特点:明确的工作步骤详细具体的规范化文档明确的质量评价标准

“一个好的工业,应有一套良好的标准来配套”24.11.202225软件工程技术的两个特点强调规范化强调文档化24.11.202226§1.2软件和软件生命期模型(SoftwareLifeCycle)软件产品或软件系统从设计、投入使用到被淘汰的全过程。24.11.202227软

件生存期的阶段划分(1)可行性研究与计划(2)需求分析(3)总体设计(4)详细设计(5)实现(6)集成测试(7)确认测试(8)使用和维护成长期(开发期)怀孕期(计划期)成年期(运行期)24.11.202228新的国际标准定义的软件生存过程(1995ISO/IEC

12207)软件生存期过程支持过程组织过程主要过程获取过程供应过程开发过程运行过程维护过程文档编制过程配置管理过程质量保证过程验证过程确认过程联合评审过程审核过程问题解决过程管理过程基础设施过程改进过程培训过程24.11.202229软件工作的范围只考虑编写程序涉及整个软件生存周期

扩展到24.11.202230软件开发模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。软件开发模型也常称为:软件过程模型软件生存周期模型软件工程范型软件开发模型可行性研究与计划需求分析设计编码运行维护测试

定义阶段开发阶段维护阶段瀑布模型(WaterfallModel)24.11.202232开发软件不仅仅是编程开发维护设计编写模块测试联合测试分析24.11.202233按照传统瀑布模型开发软件的特点1.阶段间具有顺序性和依赖性。2.推迟实现的观点。3.每个阶段必须完成规定的文档;每个阶段结束前完成

文档审查,及早改正错误。24.11.202234原型模型(快速原型模型)原型范型用户测试运行原型建造/修改原型听取用户意见采用原型模型的软件生存周期分析定义系统需求生成原型系统设计程序设计编码测试运行和维护原型化含原型化的软件生存期24.11.202236§1.3软件质量的评价

成功的标准:用户在用用户可很容易做完要做的事失败的根本原因:开发人员写出的东西达不到用户要求(人的问题.技术问题)24.11.202237质量与生产率质量是软件需求方最关心的问题,用户即使不图物美价廉,也要求个货真价实质量与生产率之间有着内在的联系,高生产率必须以质量合格为前提

质量与生产率的提高就指望程序员与程序经理非得在质量与生产率之间分个主次不可,那么应该是质量第一,生产率第二24.11.202238质量与生产率(2)质量直接体现在软件的每段程序中,高质量自然是开发人员的技术追求

,也是职业道德的要求高质量对所有的用户都有价值,而高生产率只对开发方有意义如果一开始就追求高生产率,容易使人急功近利,留下隐患24.11.202239不贪污的官就是好官吗“运行正确”的程序就是高质量的程序吗?也许运行速度很低并且浪费内存;也许代码写得一塌糊涂24.

11.202240软件的质量因素软件的质量因素很多,如正确性、精确性、可靠性、容错性、性能、效率、易用性、可理解性、简洁性、可复用性、可扩充性、兼容性等等(还可以列出十几个)一般说来倾向于可维护性、可靠性、可理解性和效率24.11.202241软件质量因素分类和武学分类正确性与精确性

易用性可理解性与简洁性性能与效率可复用性与可扩充性少林派、武当派华山派昆仑派峨嵋派崆峒派24.11.202242正确性与精确性机器不会主动欺骗人,软件运行不正确或者不精确一般都是人造成的需求分析错了,那么对客户而言这个软件也存在错误如果

软件没有100%地按需求规格执行,那么这个软件也存在错误程序员要为“正确”、“精确”四个字竭尽全力24.11.202243性能与效率用户都希望软件的运行速度高些(高性能),并且占用资源少些(高效率)旧社会地主就是这么对待长

工的:干活要快点,吃得要少点通过优化算法、数据结构和代码组织来提高软件系统的性能与效率优化的关键工作是找出限制性能与效率的“瓶颈”24.11.202244易用性导致软件易用性差的根本原因是开发人员犯了“错位”的毛病:他以为只要自己用起来方便

,用户也一定会满意当用户真的感到软件很好用时,一股温暖的感觉油然而生,于是就用“友好”来评价易用性24.11.202245可理解性与简洁性(Note1)开发人员只有在自己思路清晰时才可能写出让别人能理解的程序编程时还要注意不可滥用技巧,应该用自然的方式编程

简洁是一种美如果把学术文章写得很简洁,让人很容易理解,它往往中不了24.11.202246可复用性与可扩充性一种方式是原封不动地使用现成的软件构件一种方式是对现成的软构件进行必要的扩充后再使用可复用性好的程序一般也具有良好的可扩充性24.11.202247可行性研

究与计划需求分析设计编码运行维护测试测试已经开始返回上级,再…..瀑布模型的质量保障体系24.11.202248小结(Note2)软件的高质量主要是设计出来的不是“管”出来的更不能依赖质量检查。24.11.202249第二章

可行性研究与计划24.11.202250系统流程图(Note3)输入单据磁盘文件处理输出单据24.11.202251数据流程图数据源点和终点变换数据的加工文件数据逻辑关系符号:与、或、异或24.11.202252§2.1可行性

研究基本概念可行性研究的任务:可行性研究的主要任务是“了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划。”24.11.202253可行性研究的内容(1)技术可行性(2)经济可行性(3

)操作可行性(4)社会可行性(法律可行性)(5)抉择24.11.202254技术可行性(Note4)度量一个特定技术信息系统解决方案的实用性及技术资源的可用性考虑的问题开发风险分析资源分析相关技术的发展(现有技术能否实现新系统,技术难点、建议采用技术的先进性)24.11.202255经

济可行性度量系统解决方案的性能价格比考虑的问题成本/效益分析有形成本、效益无形成本、效益价值和成本的关系质量与价值、成本的关系价值/成本的均衡24.11.202256经济可行性考虑的问题(Note5)成本和效益的估算•开发成本

的估算•开发效益的估算•运行成本的估算•运行效益的估算24.11.202257成本分析代码行技术(page19)任务估算技术(page20)总成本、总人力相对误差在内Putnam估算模型(page21)COCOMO

模型比较复杂20%24.11.202258效益分析系统的经济效益=使用新系统增加收入+使用心系统可以节省的运行费用总的效益和软件生存周期有关货币的时间价值(page23)投资回收期(page23)投资回收率(pa

ge23)纯收入(page23)投资回收率24.11.202259系统开发和每年运行费用举例1.系统开发费用(一次).2名系统分析员(450小时/名,45美元/小时)$40,500.5名系统开发人员(275小时/名,36美元/小时)$49,500.1名数据库管理员(30小时

/名,42美元/小时)$1,260.2名技术写作者(120小时/名,25美元/小时)$6,000.1名秘书(160小时/名,15美元/小时)$2,40024.11.202260系统开发和每年运行费用举例

.1名数据通讯专家(60小时/名,42美元/小时)$2,4002名在转换期间数据输入人员$49,500(40小时/名,12美元/小时)24.11.202261系统开发和每年运行费用举例培训:三天的开发人员内部培训课程$7,00030个用户,三天的内部培训课程$10,000物资:复

印$500磁盘、纸张等消耗品$65024.11.202262系统开发和每年运行费用举例购买硬件、软件:20台工作站Windows软件$1,00020台工作站内存升级$8,000网络软件$17,50020台工作站办公软件产品$20,000系统开发总费用$161,67024.

11.202263系统开发和每年运行费用举例2.年运行费用(每年)人员:维护程序员/分析员(250小时/年,42美元/小时)$10,500网络管理员(300小时/年,50美元/小时)$15,000购买硬件、软件升级:硬件$5,000软件$6,000物资和杂项$3,500每年

总运行费用$40,00024.11.202264操作可行性•用户使用可能性•时间进度可行性•组织和文化上的可行性24.11.202265社会可行性(法律可行性)•开发项目是否会在社会上或政治上引起侵权、破坏或其它责任问题24.1

1.202266可行性研究计划的完成可行性研究计划24.11.202267§2.3可行性研究的步骤(page15)(1)复查确认系统目标、规模(2)研究正使用系统工作流程(3)导出新系统高层逻辑模型(4)重新定义问题(5)导出和评价供选择的方案(6)推荐可行的方案(7)草拟开发计

划(8)编写可行性研究报告,送审24.11.202268第三章需求分析和规格说明24.11.202269§3.1为什么需要需求分析开发人员往往急于求成希望对开发进行指导希望开发人员对用户的要求理解希望用户理解开发人员测试部门有理可依24.11.20

2270需求分析的任务准确地定义未来系统的目标,确定为了满足用户的需求系统必须做什么。用<需求规格说明书>规范的形式准确地表达用户的需求。24.11.202271什么是用户需求思考、涉及的几个问题如何识别、获取需求?你能够采

取何种手段与用户进行交流沟通?何为需求建模?你如何理解模型与建模?24.11.202272软件需求分析的几个阶段•问题分析•问题评估和方案综合•建模•规约•复审系统分析员的主要焦点是“做什么(what)”,不是“怎样做(how)”24.

11.202273需求获取面临的挑战(Note6)客户说不清楚需求需求易变性问题的复杂性和对问题空间理解的不完备性与不一致性24.11.202274§3.2需求获取的常用方法(Note7)•建立分析小组领域专家:主角系统分

析员:导演•客户访谈•问题分析与确认某出版社系统调查表编号提出问题1您在哪个部门工作?2出版业务流程是什么?3您每日都处理那些文件、数据、报表?4工作中手工处理特别麻烦的事情是什么?5工作中手工处理什么问题解决不了?影响效率的问题有哪些?6您认为提高工作效率,节省工作

时间,减轻工作强度可采取哪些办法?某出版社系统调查表编号提出问题7您的部门需要成本核算和统计的内容有哪些?8您的部门采用计算机管理工作情况如何?9如何改进业务流程使之更合理?10哪些问题是目前传统手工方法根本无法解决的?11出版社

计算机管理信息系统需要解决什么问题?24.11.202277听一个故事(Note8)主人公:Contoso制药公司的高级管理长官GerhardContoso公司的信息系统开发小组的新管理员Cynthia内容:客户的需求观24.11.202278谁是客户客户

是指直接或间接从产品中获得利益的个人或组织软件客户包括提出要求、支付款项、选择、具体说明或使用软件产品的项目风险承担者(stakeholder)或是获得产品所产生的结果的人。24.11.202279客户与开发人员之间的合作关系(No

te10)高质量的需求来源于客户与开发人员之间有效的交流与合作通常,开发人员与客户或客户代理人成为一种对立关系24.11.202280软件客户需求权利书(1)(Note11)客户有如下权利:1.要求分析

人员使用符合客户语言习惯的表达。2.要求分析人员了解客户系统的业务及目标。3.要求分析人员组织需求获取期间所介绍的信息,并编写软件需求规格说明。4.要求开发人员对需求过程中所产生的工作结果进行解释说明。5.要求开发人员在整个交流过程中保持和维护一种合作的职业态度。24.11.202281软件客

户需求权利书(2)(Note12)6.要求开发人员对产品的实现及需求都要提供建议,拿出主意。7.描述产品使其具有易用、好用的特性。8.可以调整需求,允许重用已有的软件组件。9.当需要对需求进行变更时,对成本、影响、得失(trade-off)有个真实可信的评估。10.获得满足客户

功能和质量要求的系统,并且这些要求是开发人员同意的。24.11.202282软件客户需求义务书(1)(Note13)客户有下列义务:1.给分析人员讲解业务及说明业务方面的术语等专业问题。2.抽出时间清楚地说明需求并不断完善。3.当说明系统需求时,力求准

确详细。4.需要时要及时对需求做出决策。5.要尊重开发人员的成本估算和对需求的可行性分析。24.11.202283软件客户需求义务书(2)(Note14)6.对单项需求、系统特性或使用实例划分优先级。7.评审需求文档和原型。

8.一旦知道要对项目需求进行变更,要马上与开发人员联系。9.在要求需求变更时,应遵照开发组织确定的工作过程来处理。10.尊重需求工程中开发人员采用的流程(过程)。24.11.202284“签约”意味着什么(Note15)

客户与开发人员关系中的重要部分客户代表经常把“签约”看作是毫无意义的更为重要的是签名是建立在一个需求协议的基线上与你的重要客户一起讨论权利书和义务书,以达成协议,并付诸实践24.11.202285高质量的需求过程带来的好处(Note16)开发后期和整

个维护阶段的重做的工作大大减少强调需求质量并不能引起某些人的重视,他们错误地认为在需求上消耗多少时间就会导致产品开发推迟多少时间将选定系统的需求明确地分配到各软件子系统,强调采用产品工程的系统方法。这样能简化硬软件的

集成24.11.202286优秀需求具有的特性(Note17)1.完整性2.正确性3.可行性4.必要性5.划分优先级6.无二义性7.可验证性24.11.202287§3.3需求获取的内容1.用户需求分类(1)功能性需求:定义了系统做什么(描述系

统必须支持的功能和过程)(2)非功能性需求(技术需求):定义了系统工作时的特性(描述操作环境和性能目标)24.11.202288两类需求包括的内容(1)功能(2)性能(3)环境(4)界面(5)用户或人的因素(6

)文档(7)数据(8)资源(9)安全保密(10)软件成本消耗与开发进度(11)质量保证24.11.202289(1)功能需求•系统做什么?•系统何时做什么?•系统何时及如何修改或升级?24.11.202290(

2)性能需求软件开发的技术性指标例如:•存储容量限制•执行速度、相应时间•吞吐量24.11.202291(3)环境需求•硬件设备:机型、外设、接口、地点、分布、温度、湿度、磁场干扰等•软件:操作系统网络数据库24.11.202292(4

)界面需求•有来自其它系统的输入吗?•到自其它系统的输出吗?•对数据格式有规定吗?•对数据存储介质有规定吗?24.11.202293(5)用户或人的因素•用户类型?•各种用户熟练程度?•需受何种训练?•用户理解、使用系统的难度?•用户错误操作

系统的可能性?24.11.202294(6)文档需求•需哪些文档?•文档针对哪些读者?24.11.202295(7)数据需求•输入、输出数据的格式?•接收、发送数据的频率?•数据的准确性和精度?•数据流量?•数据需保持的时间?24.11.202296(8)资源需求•软件运行时所需的数据、软件。内

存空间等资源。•软件开发、维护所需的人力、支撑软件、开发设备等。24.11.202297(9)安全保密要求•需对访问系统或系统信息加以控制吗?•如何隔离用户之间的数据?•用户程序如何与其它程序和操作系统隔离?•系统备份要求?24.11

.202298(10)软件成本消耗与开发进度需求•开发有规定的时间表吗?•软硬件投资有无限制?24.11.202299(11)质量保证•系统的可靠性要求?•系统必须监测和隔离错误吗?•规定系统平均出错时间?•出错后,重启系统允许的时间?•系统变

化如何反映到设计中?•维护是否包括对系统的改进?•系统的可移植性?24.11.2022100怎样写需求分析报告作报告时要先从宏观上讲一、二、三、四、五,再从细节上讲A、B、C、D、E。需求分析不象侦探推理那样从蛛丝马

迹着手。应该先了解宏观的问题,再了解细节的问题如图S={D1,D2,D3,„Dn}Di={P1,P2,P3,„Pm}Pj={F1,F2,F3,„Fk}24.11.2022101怎样写需求分析报告24.11.2022102§3.4需求的开发和管理整个软件需求工程研究领域划分为需求开发和需

求管理两部分更合适需求工程域的层次分解示意图24.11.2022103需求开发(Note18)问题获取(elicitation)分析(analysis)编写规格说明(specification)验证(verificatio

n)24.11.2022104知识技能(Note19)绝大部分的软件开发人员都没有接受过高效需求工程所需技能的正规培训培训需求分析人员所有的开发人员都应接受一个基本的需求工程培训培训软件需求的用户代表和管理人员参与软件开发的用户代表应接受为期一天左右,关于需求工程的

培训,开发管理者和客户管理者也应参加让开发人员了解应用领域的基本概念组织一些简短的关于客户业务活动、术语、目标等方面的讨论会以帮助开发人员对应用领域有个基本了解24.11.2022105需求获取(1)(Note20)确定需求开发过程编写项目视图和

范围文档项目视图将用户群分类并归纳各自特点选择每类用户的产品代表建立起典型用户的核心队伍把同类产品或你的产品的先前版本用户代表召集起来,从他们那里收集目前产品的功能需求和非功能需求24.11.2022106需求获取(2)(Note21)让用户代表确定使用实例召开应用程序开发

联系会议分析用户工作流程观察用户执行业务任务的过程确定质量属性和其它非功能需求在功能需求之外再考虑一下非功能的质量特点通过检查当前系统的问题报告来进一步完善可查看需求是否有足够的灵活性以允许重用一些已有的软件组件24.11.2022107需

求分析(Note22)绘制系统关联图。建立数据字典。为需求建立模型。建立用户接口原型。确定需求优先级。24.11.2022108需求规格说明(SRS)(Note23)采用原始模板在你的组织中要为编写软件需求文档定义一种标准

模板指明需求的来源为每项需求注上标号制定一种惯例来为每项需求提供一个独立的可识别的标号或记号记录业务规范业务规范创建需求跟踪能力矩阵24.11.2022109需求验证(Note24)对需求文档进行正式审查以需求为依据编写测试用例编写用户手册在需求开发早期即可起草一份用户手册确定合

格的标准让用户描述什么样的产品才算满足他们的要求和适合他们使用的24.11.2022110需求管理(Note25)确定一个选择、分析和决策需求变更的过程建立变更控制委员会评估每项选择的需求变更跟踪所有受需求变

更影响的工作产品建立需求基准版本和需求控制版本文档维护需求变更的历史记录记录跟踪每项需求的状态建立一个数据库衡量需求稳定性记录基准需求的数量和变更数量使用需求管理工具商业化的需求管理工具24.11.2022111项目管理(Note26)选择一种合

适的软件开发方法生存周期项目开发计划的进度安排将会不断改变发生需求变更时协商项目约定编写文档和管理与需求相关的风险跟踪需求工程所耗的工作量24.11.2022112分析编写文档评审,商议基准需求说明需求变更过程管理客户需求市场当前基线修正后基线市场,客

户,管理项目环境需求开发与需求管理之间的界限(Note27)24.11.2022113§3.5改进需求过程(Note28)软件开发过程的改进有以下两个主要目标:解决在以前项目或目前项目中遇到的问题。防止和避免你可能在将来的项目中要遇到的问题。24.11.2022114四条改进软件的原则(No

te29)改进过程应该是革命性的、彻底的、连续的、反复的人们和组织机构都只有在他们获得激励时才愿意变更过程变更是面向目标的将改进活动看作一些小项目24.11.2022115过程改进周期(Note30)评价当前采用的方法指定活动改进计划创建、实验和实施新过程评价结果图:软件

开发过程改进的周期发现和建议活动计划新的过程,实验结果,获得经验实施情况怎样活动计划的效果如何新过程是否达到预期目标?计划下一步的改进周期24.11.2022116§3.6软件需求与风险管理(Note31)听一个故事:同样在Contoso制

药公司主人公“化学制品跟踪系统”的项目管理人员Dave首席程序员Helen首席测试员Ramesh内容需求工程的风险为何物?24.11.2022117软件风险管理的要素(Note32)风险管理就是使用某些

工具和步骤把项目风险限制在一个可接受的范围内。风险管理提供了一种标准的方法来指出风险并把风险因素编成文档,评估其潜在的威胁,以及确定减少这些风险评价(riskassessment)风险避免(riskavoidance)风险控制(riskcontrol)24.11

.2022118编写项目风险文档(Note33)24.11.2022119与需求有关的风险下面介绍的风险因素是按需求工程中获取、分析、编写规格说明、验证和管理汇总起来的,并推荐了一些方法用于降低风险发生的可能性或减轻风险发生给项目带来的影响。这张清单

仅仅是一个起点,在你做项目逐渐积累经验过程中,加入你的风险因素清单和减轻风险的策略。使用这里提供的条目来帮助你识别需求风险并采用条件—结果的格式来书写风险说明。24.11.2022120需求获取(Note34)1)产品视图与范围2)需求开发所需时间

3)需求规格说明的完整性和正确性4)对革新产品的需求5)明确非功能需求6)客户赞同产品需求7)未加说明的需求8)把已有的产品作为需求基线9)给出期望的解决办法24.11.2022121需求分析(Note35)1)划分需求优先级2)带来技术困难的特性3)不熟悉的技术

、方法、语言、工具或硬件平台24.11.2022122需求规格说明(Note36)1)需求理解2)时间压力对TBD的影响3)具有二义性的术语4)需求说明中包括了设计24.11.2022123需求验证(Note37)1)未经验证的需求

2)审查的有效性24.11.2022124需求管理(Note38)1)变更需求2)需求变更过程3)未实现的需求4)扩充项目范围24.11.2022125建立项目视图与范围(Note39)一个项目可能包括一些与软件没有直接关系的需求,例如:硬件的购买、产品

的安装、维护或广告。但在此,我们只关心与软件产品有关系的业务需求。24.11.2022126通过业务需求确定项目视图(Note40)项目视图可以把项目参与者定位到一个共同和明确的方向上项目视图描述了产品所涉及

的各个方面和在一个完美环境中最终所具有的功能市场需求文档&视图和范围的文档来自各个渠道的业务需求可能会发生冲突24.11.2022127项目视图和范围文档的模板(Note41)a.业务需求a.1背景a.2业务机遇a.3业务目标a.4客户或市场需求a

.5提供给客户的价值a.6业务风险b.项目视图的解决方案b.1项目视图陈述b.2主要特性b.3假设和依赖环境c.范围和局限性c.1首次发行的范围c.2随后发行的范围c.3局限性和专用性d.业务环境d.1客户概貌d.2项目优先级e.产品成功

的因素24.11.2022130模型(model)模型:现实世界某些重要方面的表示。有时我们使用术语“抽象”来表示模型,因为我们从现实世界中抽象出对我们特别有用的东西。24.11.2022131抽象(模型化)•源于实验科学,主要要素为数据采集方法和假设的形式说明,模型的

构造与预测实验分析结果分析.•在为可能的算法数据结构和系统结构等构造模型时使用此过程.•抽象的结果是概念符号模型24.11.2022132§3.4需求分析的步骤当前系统目标系统物理模型逻辑模型逻辑模型物理模型模型化抽象化具体化实例化怎么做做什么当前系统目标系统需求定义24.11.2022133

逻辑模型和物理模型模型是对对象系统的形式化的特征抽象,概括性或近似地表示构造模型的过程是一个抽象、分析的过程。对象系统模型系统抽象(映射)模型应用模型构造的过程逻辑模型物理模型(本质模型、概念模型)(实施模型、技术模型)现行系统目标系统描述重要的业务功能,无

论系统是如何实施的。描述现实系统是如何在物理上实现的。描述新系统的主要业务功能和用户新的需求,无论系统应如何实施。描述新系统是如何实施的(包括技术)。24.11.2022135分析阶段中常用的模型(逻辑模型)•数据流图(DFD)•实体―联系图(ERD)•类图•实例图•时序图•状态图•协作

图•事件列表•数据流定义•数据元素定义•„„24.11.2022136数据流图(DFD,DataFlowDiagram)(Note42)描述逻辑模型的图形工具,表示数据在系统内的变化。DFD可以用来表示一个系统或软件在任何层次上的抽象。较大型软件系统DFD分成多层(子图、父图概念),可以

表示数据流和功能的进一步的细节。24.11.2022137数据流程图的表示(page29-32)数据源点和终点变换数据的加工文件数据逻辑关系符号:与、或、异或24.11.2022138画数据流图(page32-33)规则:由外向里画画系统的输

出、输入化系统的内部画加工的内部24.11.2022139应该注意的几个问题(page33-34)适当地命名画数据流而不是控制流先考虑稳定状态忽略琐碎的枝节随时准备重画24.11.202

2140分层数据流图对于大型系统,往往使用一张数据流图画出所有数据流和加工是不可能的自顶向下逐层分解不要一下子引入过多细节,应该逐步增加细节例子(page35):图3.13(a)画出了…..。图3说明“产生新文件”……。显然……。24.11.2022141由顶向下画

分层数据流图(page37)描绘中应该注意的问题:编号父图和子图的平衡局部文件分解的程度24.11.2022142实例——运动会管理系统自学3.3.5节(Page40)24.11.2022143数据流图的改进检查数据流图的正确性数据守恒

(page41-42)文件的使用(page42)父图和子图的平衡(page42-43)提高数据流图的易理解性简化加工间的联系(page43)分解的均匀(page43)适当地命名(page43-44)重新分解(page44)

24.11.2022144数据实体关联图(Note43)与数据流图描绘了系统中发生的过程一样,实体联系图(entity-relationshipdiagram,ERD)描绘了系统的数据关系分析实体联系图有助于对业务或系统数据组成

的理解和交互,并暗示产品将有必要包含一个数据库。实体(entity)是物理数据项(包括人)或者数据项的集合,这对所分析的业务或所要构造的系统是很重要的24.11.2022145化学制品仓库存货清单化学制品容器存储执行化学制品请求1MM1“化学制品跟踪系统”的实体联系图24.11.20

22146需求建模实例酒店管理系统的局部DFD已预订的入住预订请求预订预订确认未预订的入住已预订的入住请求未预订的入住请求客人数据客房数据预订确认信息客人信息夜审结算信息财务系统时钟24.11.2022147需求建模实例:某金融贸易系统用例图(

UML)风险分析交易估计进行交易进行交易接待员酒店系统财务系统24.11.2022148需求建模实例:用例图举例(UML)签定一份保险单客户保险销售人员销售统计客户统计需求建模实例:UML类图实例(Note44)客人姓名地址身份证号码护照号码„„预订……入住住宿编号

付款方式„„退房……客房状态日期人数……设置状态……客房……服务日期数量设置……读取……服务类别名称价格设置……10..*10..*0..*0..11..*10..*1*24.11.2022150需求建模实例:描述客房状态的状态图(Note45)取

消预定已预订空闲占用维修事件创建24.11.2022151需求建模实例:接电话的顺序图(UML)受话者交换机远程交换机受话者拿起话筒听通话声拨号码......铃响信号铃响铃响停止信号拿起话筒铃响停止<10deabc{b-a<1}{e-d<5}

{c-b<10}路径24.11.2022152需求建模实例:UML协作图举例计算机队列打印服务器打印机打印文件打印机忙保存打印文件打印机空闲打印文件24.11.2022153§3.5数据词典(DD,DataDictionary)DD是对所有与系统相关的数据元素的一

个有组织的列表,以及精确的、严格的定义,使得用户和系统分析员对于输入、输出、存储成分和中间计算有共同的理解24.11.2022154词典与数据流图之间关系(page44)数据流图描述了系统的“分解”;依靠“词典”来说明各个成分的含义;数据流图中所有名字的

定义就构成一本词典;数据流图和词典结合在一起构成了“需求说明书”数据流图中出现的每一个数据流名、每一个文件名和每一个加工名在词典中都应该有一个条目给出这个名字的定义。24.11.2022155词典条目

的各种类型(page.45)四个类型条目数据流文件数据项(指不在分解的数据单位)加工词典条目的实例(page46-47)结合上次自习的内容自行学习本节24.11.2022156需求建模实例:数据字典条目的定义预订请求=客人数据+住宿期限+客房类别客人数据=客

人姓名+地址+身份证号码+[护照号码]+支付方式身份证号码=十进制15{数字}18护照号码=字母+8{数字}8字母=“A”„“Z”十进制数字=“0”„“9”24.11.2022157需求建模实例:数据字典条目的定义F1:航班信息文件

={航空公司名称+航班号+起点+终点+日期+起飞时间+降落时间}航空公司名称=2{字母}4航班号=3{十进制数字}3字母=“A”„“Z”十进制数字=“0”„“9”起点=终点=1{汉字}10起飞时间=降落时间=时+分24.11.2022158

需求建模实例:数据字典条目的定义时=“00”„“23”分=“00”„“59”日期=年+月+日年=[2000|2001|2002|2004]月=“01”„“12”日=“01”„“31”24.11.2022159§3.6小说明数据流图中每一个基本加工(即

不再进一步被分解的加工)都必须有一个“小说明”小说明中应精确描述用户要求一个加工“做什么”加工的激发条件加工逻辑加工优先级加工执行频率出错处理24.11.2022160结构化的语言(page51)构成方式语态词汇举例24.11.202

2161判定表与判定树(page54-56)有些问题不易用单纯的语言表达判定表组成:条件桩条件条目操作桩操作条目判定树24.11.2022162§3.7模型的作用•在建模过程中了解系统•通过抽象降低复杂性•有助于回忆所有的细节•有助于开发小组间的交流•有助

于与用户的交流•为系统的维护提供文档24.11.2022163需求分析建模方法分析建模方法结构化分析(传统建模方法)面向对象分析24.11.2022164模型的作用计算机世界现实世界影射计算机世界现实世界结构化开发方法结构化分析结构化设计结构化编程OOAOODOOP面向对象开发方法模型的作用2

4.11.2022166结构化分析模型的组成结构数据流图(DFD)E-R图状态变迁图(STD图)加工说明控制说明数据对象说明数据字典(DD)24.11.2022167面向对象分析模型的组成结构对象-关系模型类/对象模型对象-行为模型使用实例(UseCase)操作、24

.11.2022168重点小结24.11.2022169§3.8结构化分析方法(StructuredAnalisys,SA)基于数据流技术的分析方法需求获取应遵循的三条基本原则:•分解•抽象•投影24.11.2022170分析模型的元素数据字典(DD):模型核

心(中心库)E-R图(ERD):数据流图(DFD)指明数据在系统中移动时如何被变换;描述对数据流进行变换的功能;DFD中每个功能的描述包含在加工规约(小说明)。状态变迁图(STD)指明作为外部事

件的结果,系统将如何动作。24.11.2022171E-R图是数据建模的基础客人入住客房状态客房服务服务类别姓名地址身份证号码护照号码电话……客房号床位数房间类别价格1……住宿编号住宿时间支付方式……日期,客人数状态(已

预定/占用/维修中)……日期,数量……名称,价格……24.11.2022172将分析模型转换为软件设计数据字典数据流图E-R图状态变迁图加工规约控制规约数据对描述象数据设计体系结构设计接口设计过程设计分析模型设计模型24.11.2022173§3.9实例考务处理系统

功能(1)对考生送来的报名单进行检查;(2)对合格的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷站;(3)对阅卷站送来的成绩单进行检查,并根据考试中心制定的合格标准审定合格者;(4)制作考生通知单(含成绩及合

格/不合格标志)送给考生;(5)按地区进行成绩分类统计和试题难度分析,产生统计分析表。24.11.2022174实例考务处理系统功能考务处理系统的分层DFD如下:24.11.2022175顶层数据流图考生考务处理系统考试中心阅卷站不合格

报名单报名单准考证考生通知单成绩清单合格标准错误成绩清单考生名单统计分析表24.11.20221760层数据流图登记报名单报名单准考证1统计成绩2不合格报名单考生通知单成统计分析表考生名册绩清单合格标准考生名单成绩清单错误24.11.202217

7一层数据流图(a)检查报名单报名单准考证1.1编准考证号1.2不合格报名单考生名册考生名单合格报名单登记考生1.324.11.2022178一层数据流图(b)检查成绩清单2.1审定合格者2.2考生名册正确成绩清单制作通

知单2.3分析统计成绩2.4分析试题难度2.5试题得分清单考生通知单难度分析表合格标准分类统计表成绩清单错误成绩清单经审定的成绩清单S2132.22.12.33.13.2顶层(不编号)0层1层24.11.202218

0数据字典举例F1:航班信息文件={航空公司名称+航班号+起点+终点+日期+起飞时间+降落时间}航空公司名称=2{字母}4航班号=3{十进制数字}3字母=“A”„“Z”十进制数字=“0”„“9”起点=终点=1{汉字}10起飞时间=降落时间=时+分24.1

1.2022181再来看看——结构化分析模型的组成结构数据流图(DFD)E-R图状态变迁图(STD图)加工说明控制说明数据对象说明数据字典(DD)24.11.2022182§3.11需求分析的其他工作(page63)确定设计限制确定验收标准编写“初步用户手册”复查需求说明书24.1

1.2022183补充知识UML语言和图24.11.2022184UML简介(NoteL1)UML定义由信息系统三位专家GradyBooch,JamesRumbaugh和IvarJacobonOMG组织采奶作为业界标准24.11.20

22185UML的开发历程(NoteL2)Booch’91其它方法OMT-1OOSEBooch’93OMT-2UML0.8UML0.9&0.91UML1.0UML1.1UML同行专家意见OMG认证10/9

510/96&9/96OMG审核,1/97OMG修正,9/97OMG采用,11/97UML1.324.11.2022186UML架构(NoteL3)UML由图和元模型组成元元模型层元模型层模型层用户模

型层24.11.2022187UML的模型、视图、图与系统架构的建模(NoteL4)用例视图逻辑视图并发视图组件视图展开视图24.11.2022188UML与面相对象的软件分析与设计(OOA&D)(NoteL5)标准的表示方法与软件开发的成功经验集成24.11.20221

89UML的应用领域(NoteL6)UML被用来为系统建模,它可应用的范围非常广泛在不同系统中的应用信息系统技术系统嵌入式实时系统分布式系统商业系统24.11.2022190在软件开发不同阶段的应用(NoteL7)需求分析分析设计构造测

试24.11.2022191静态建模:用例和用例图(NoteL8)用例模型的基本组成:用例、角色和系统用例图:风险分析交易估计进行交易进行交易接待员酒店系统财务系统24.11.2022192发现角色(NoteL9)通过回答下泪问题,可以帮助建模者发现角色使用系统主要功能的人是谁?需要借

助于系统完成日常工作的人是谁?谁来维护、管理系统,保证系统正常工作系统控制的硬件设备有哪些?系统需要与哪些其它系统交互?对系统产生的结果感兴趣的人或事是哪些?24.11.2022193发现用例(NoteL10)询问以下问题角色需要从系统中获得哪种功能?角色需要做什么?角色需要读

取、产生、删除、修改或存储系统中的信息吗?系统中发生的事件需要通知角色吗?如果用系统的新功能处理角色的日常工作是简化了还是提高了工作效率?24.11.2022194UML中的用例(NoteL11)24.11.2022195用例之间的关系(NoteL12)24.11

.2022196描述用例(NoteL13)24.11.2022197测试用例(NoteL14)用例可用于测试系统的正确性和有效性。正确性表明系统的实现符合规格说明。有效性保证开发的系统是用户真正需要的系统24.11.2022198实现用例(NoteL15)UML中实现用例的基本

思想是用协作表示用例,而协作又被细化为用若干个图。协作的实现用脚本描述。24.11.2022199第四章设计方法24.11.2022200主要内容(Note46)▲什么是结构化设计▲结构化设计方法的主要思想▲结构化设计的重要组成部分▲结构化设计的方法24.11.2022201结构化设计的

工作原理(Note47)结构化设计目标结构化设计的优点利用模块结构减少开发和维护软件的费用24.11.2022202软件设计分为两个阶段:(1)概要设计(总体设计)(Page66)确定软件的结构以及各组成成分(子系统或模块)之间的相互关系。(2)详细设计确定模块内部的算法和数据结构,产生描述

各模块程序过程的详细文档。24.11.2022203模块模块是鱼油一定功能的可以用名词调用的程序语句集合,如:独立的汇编程序COBOL的段和节Pascal过程FORTRAN的子程序汇编的宏24.11.2022204控制结构

(程序结构)控制结构是软件模块间关系的表示24.11.2022205控制结构图示:24.11.2022206控制结构的层次规则只有一个顶层(0层)模块0层外任一模块都会在它的邻层存在一模块与它有关同层模块间不发生联系24.11.2022207软件结构度量术语深度宽度扇出扇入(模块的层数

)(同一层最大模块数)(一个模块直接调用的模块数)(调用一个给定模块的模块个数)24.11.2022208模块化(Modularity)模块化是好的软件设计的一个基本准则从整体上把握问题,隐蔽细节复杂问题较小问题分

解可减小解题所需的总的工作分解24.11.2022209抽象(Abstraction)抽象原则应用举例WindowsNT一体化的I/O系统设计文件管理网络管理设备管理高速缓冲存储器OS对虚拟文件的字节流,虚拟文件可为任何设备和实体抽象

24.11.2022210例:将问题(P1+P2)分解为P1,P2设函数C(x)定义问题x的复杂程度函数E(x)确定解决问题x需要的工作量对问题P1和P2,如:C(P1)>C(P2)显然:E(P1)>E(P2)有规律:C(P1+P2)

>C(P1)+C(P2)E(P1+P2)>E(P1)+E(P2)"各个击破"理论24.11.2022211模块度(Note48)成本或工作量模块数量软件总成本集成成本成本/模块M最小成本区域24.11.2022212结构化设计的适用范围(Note49)尤其适用于采用结构

化程序设计实现的系统结构化设计并不是一种广泛适用的系统设计技术什么人来完成设计呢?结构化设计的结果24.11.2022213SA与SD的关系(Note50)结构化分析的结果结构化设计的工具数据流图初始结构图生存周

期字典的数据部分设计数据字典伪码实现方面伪码实体关系图数据库设计事务框图分层、细化事务模型24.11.2022214SD来源于SA来源:结构化分析来源:结构化分析来源:结构化分析数据流图字典项伪码实体关系图事务框图环境的限制质量的标准转化分析细化设计进入实现阶段初始结构框图2

4.11.2022215概要设计的基本概念将系统划分成模块(Page66)决定每个模块的功能(Page66)决定模块的调用关系(Page66)决定模块的界面,即模块间传递的数据(Page66)24.11.2022216结构化设计(SD方法)概要相对独立、单一功能的模

块(page67)块间联系和块内联系(page67)描述方法(page68)步骤(page69)24.11.2022217结构图(SCStructureChart)结构图主要成分(page68)模块——用方框表示,方框中写有模块的名字,一个模块的名字应适当地反映这个模块的功

能,这就在某种程度上反映了块内联系;调用——从一个模块指向另一个模块的箭头表示前一模块中含有对后一模块的调用;数据——调用箭头边上的小箭头表示调用时从一个模块传入送给另一个模块的数据,小箭头也指出了传送的方向。24.1

1.2022218结构图(SCStructureChart)SD方法在概要设计中的主要表达工具约定:编辑学生记录读学生记录学生数据无此学生学号不加区分的数据数据信息控制信息24.11.2022219SC中的四种模块传入模块(a)(b)AA传出模块BB变换模块

(c)CD协调模块E(d)EFF24.11.2022220SC中的选择调用ACBDA根据内部判断决定是否调用BA按另一判定结果选择调用C或D24.11.2022221SC中的循环调用ABCA根据内在的循环重复调用B、C等模块24.11.2022

222结构图(SC)举例医院管理系统门诊管理药房管理药库管理病房管理财务管理处方挂号处理挂号费总计挂号单挂号费总计出库处理进药管理病历管理处方管理常规处理24.11.2022223酒店管理信息系统功能结构图HMIS收银管理子系统收银管理子系统收银管理子系

统客人登记预定登记客房处理历史记录客房查询预定查询餐桌安排菜单作业营业结帐汇总打印各类查询初始设置客帐处理退房处理夜审处理客帐查询报表打印24.11.2022224大型零售商场管理信息系统功能结构图TMMIS系统维护POS系统零售实时系统商品进货管理商品批

发管理商品库存管理商品及商品帐管理顾客管理连锁店管理财务管理人事工资管理计划统计管理经理查询24.11.2022225信息隐蔽(InformationHiding)模块所包含的信息,不允许其它不需要这些信息的模块访问,独立的模块间仅仅交换为完成系统功能而必须交换的信息。

24.11.2022226块间联系块间联系大小:方式、作用、数量联系方式(Page71)用过程语句调用、直接引用共用信息的作用(Page73)公用信息的数量(Page74)表格4.1(pa

ge75)24.11.2022227块内联系偶然型(Page76)逻辑型(Page76)瞬时型(Page77)通讯型(Page77)顺序型(Page78)功能型(Page78)24.11.2022228偶然内聚(巧合内聚)ABCM

MOVEOTORREADFILEFMOVESTOT模块M中的三个语句没有任何联系缺点:可理解性差,可修改性差例:24.11.2022229逻辑内聚把几种相关功能(逻辑上相似的功能)组合在一模块内,每次调用由传给模块的参数确定

执行哪种功能。24.11.2022230逻辑内聚模块ABCEFGABCEFGA1B1C1EFG模块内部逻辑E、F、G逻辑功能相似,组成新模块EFG缺点:增强了耦合程度(控制耦合)不易修改,效率低公用代码段公用代码段24.11.2022231时间内聚(经典内聚)模块完成的功能

必须在同一时间内执行,这些功能只因时间因素关联在一起。例如:初始化系统模块、系统结束模块、紧急故障处理模块等均是时间性聚合模块.24.11.2022232过程内聚(顺序性组合)模块内各处理成分相关,且必须以特定次序执行24.11.2022233过程内聚模块读入成绩单审查成绩

单统计成绩打印成绩读入并审查成绩单统计并打印成绩单24.11.2022234通信内聚模块内各部分使用相同的输入数据,或产生相同的输出结果24.11.2022235通信内聚模块例产生工资报表计算平均工资职工工资记录职工工资报表平均工资产生职工工资报表并计算平均

工资模块24.11.2022236信息内聚模块完成多个功能,各功能都在同一数据结构上操作,每一功能有唯一入口。24.11.2022237信息内聚模块符号表查找登录删除修改几个加工同时引用一个共同的数据24.11.2022238功能内聚模块仅包括为完成某个功能所必须的所有成分。模块所

有成分共同完成一个功能,缺一不可内聚性最强24.11.2022239块间联系无直接关系型数据耦合标记耦合控制耦合外部耦合公共耦合内容耦合24.11.2022240(1)无直接耦合两个模块没有直接关系(模块1和模块2),模块独立性最强。模块

1模块2模块3模块4241(2)数据耦合一模块调用另一模块时,被调用模块的输入、输出都是简单的数据(若干参数)。属松散耦合。242数据耦合举例开发票计算水费单价数量金额243(3)标记耦合(复合型耦合)如两个模块通过传递数据结构(不是简单数据,而是

记录、数组等)加以联系,或都与一个数据结构有关系,则称这两个模块间存在标记偶合。244标记耦合举例计算水电费计算水费计算电费住户情况水费电费住户情况“住户情况”是一个数据结构,图中模块都与此数据结构有关.“计算水费”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间也是标记

偶合.245将标记耦合修改为数据耦合举例计算水电费计算水费计算电费本月用水量本月用电量水费电费246(4)控制耦合一模块向下属模块传递的信息(开关量、标志等控制被调用模块决策的变量)控制了被调用模块的内部逻辑。247控制耦合举例

A计算平均分或最高分B平均/最高(控制信号)成绩读入分数输出结果计算平均分计算最高分平均/最高?B248控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖(1)将被调用模块内的判定上移到调用模块中进行(2)被

调用模块分解成若干单一功能模块去除模块间控制耦合的方法249改控制耦合为数据耦合举例A计算平均分B1平均成绩最高成绩计算最高分B2250(5)外部耦合一组模块均与同一外部环境关联(例如,I/O模块与特定的设备、格式和通信协议相关联),它们之间便存在外部耦合。外部偶合必不可少,但这种模块数目应

尽量少。251(6)公共耦合(公共数据区耦合)一组模块引用同一个公用数据区(也称全局数据区、公共数据环境)。公共数据区指:全局数据结构共享通讯区内存公共覆盖区等252公共耦合举例A公共数据区CB模块A、B、C间存在错综复杂的

联系253(1)软件可理解性降低(2)诊断错误困难(3)软件可维护性差,(4)软件可靠性差(公共数据区及全程变量无保护措施)慎用公共数据区和全程变量!!!公共耦合存在的问题254(7)内容耦合一模块直接访

问另一模块的内部信息(程序代码或数据)最不好的耦合形式!!!ABAB模块代码重叠Entry1……Entry1……多入口模块24.11.2022255系统结构的形态(Note52)形态(morphology)所指的是系统结构所表现出来的形状。深度、宽度、扇出

和扇入Page68”描述方式”模块、调用、数据一个模块在结构图中只能出现一次输入模块在作,输出模块在右,计算模块居中24.11.2022256系统结构的影响范围和控制范围系统中某一层上模块中的判定或者条件语句(例如If语句)在系统中会产生多种后

果,根据该判定的结果去执行或不执行其他层的某个处理或数据。该处理就是“条件依赖”于某个判定判定的“影响范围”是指包含“条件依赖”于改判定的处理的全部模块一个模块的“控制范围”是指模块本身和它的全体子模块24.11.202225

7影响范围和控制范围影响范围应该是这个判定所在模块的控制范围的一个子集但是实际上,在系统中控制范围和影响范围的关系常常并非如此。影响范围和控制范围(note53)TopAYBB1X影响范围TopABB1B2XTopYABXAYBB

1B2X判定图1.影响范围在控制范围之外图2.影响范围在控制范围之内,但判定位置太高图3.影响范围在控制范围之内,正确实现图4.理想的影响范围和控制范围24.11.2022259耦合、内聚与模块独立性关系耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。但耦合是直接的主导因

素,内聚则辅助耦合共同对模块独立性进行衡量。24.11.2022260设计技巧24.11.2022261面向数据流的设计方法SD以数据流图为基础,它定义了把DFD变换成软件结构的不同映射方法映射DFD(问

题结构)软件系统的结构(程序结构)24.11.2022262系统结构特征可归纳为两种典型形式变换型结构事务型结构数据流图可分为两种类型:变换型数据流事务型数据流变换中心输入输出变换型结构事务中心接受路径动作路径事务型结构由输入、变换中心和输出

三部分组成具有在多种事务中选择执行某类事物的能力基本模型特征24.11.2022264基本模型变换型数据流结构事务型数据流结构传入变换传出变换中心传入部分传出部分事务分析事务中心动作1动作2动作3接受接受部分2

4.11.2022265变换型数据流举例输入信息物理输入格式检查处理显示正确信息结果物理输出数据变换中心逻辑输入逻辑输出传入部分传出部分特点:具有明确的传入、变换(或称主加工)和传出界面的DFD24.11.2022266事务型数据流图举例IMLNOABCD

FEGH24.11.2022267大型系统DFD中,变换型和事务型结构往往共存:T事务中心传入变换传出24.11.2022268面向数据流设计方法的设计步骤(1)精化DFD(2)确定DFD类型(3)把DFD映射到系统模块结构设计出模块结构的上层

(4)基于DFD逐步分解高层模块设计出下层模块(5)根据模块独立性原理,精化模块结构(6)模块接口描述面向数据流方法的设计过程精化数据流图区分事务中心和数据接收路径映射成变换结构流类型区分输入和输出分支映射成事务结构用启发式设计规则精化软件结构导出接口描述和全程数据结构复查详细设计“

事务”“变换”事务分析变换分析24.11.2022270SD方法的两种映射过渡方法变换型DFD事务型DFD初始SC初始SC变换分析事务分析24.11.2022271初始的SC主模块输入模块主加工模块输入模块事务控制模块接受模块动作发送模块动

作1模块动作2模块动作3模块由变换分析产生由事务分析产生24.11.2022272(1)变换分析设计方法步骤:(1)区分传入、变换中心、传出部分,在DFD上标明分界线BCADEQPRWUVabcedrpuwv变换中心传入部分传出部分24

.11.2022274变换分析设计方法步骤:(2)第一级分解(建立初始SC框架)设计顶层和第一层模块第一级分解的方法MCMTMAME24.11.2022276第一级分解后的SCMCMTMAME第一层顶层c,ec,eu,wu,w传入模块传出模块中心变换模块24.11.2022277

变换分析设计方法步骤:(3)第二级分解(分解SC各分支)自顶向下分解,设计出每个分支的中、下层模块24.11.2022278传入分支的分解(1)MACBAbacEDdec,e24.11.2022279传入分支的分解(2)MAGetCbacReadDdec,eBtoCbcdeabGetEG

etBDtoEAtoBReadD24.11.2022280传出分支的分解MEWWriteVuuw,uvvvPutUUtoVMEUWriteWwwuw,uV(1)(2)24.11.2022281中心加工分支的分解MTPQRec,pru,

wpr24.11.2022282(2)事务分析设计方法任何情况下都可使用变换分析方法设计软件结构,但如数据流具有明显的事务特点时(有一个明显的事务中心),以采用事务分析方法为宜。24.11.2022283事务分析设计方法

步骤:(1)在DFD上确定事务中心、接收部分和发送部分。(2)画出SC框架,把DFD上的三部分分别映射为事务控制模块、接收模块和动作发送模块。(3)分解细化接收分支和发送分支,完成初始SC。用户命令交互子系统DFD读用户

命令密码命令密码显示信息系统参数数据用户命令读系统数据配置信息显示信息和状态命令分析处理读密码命令类型开/关命令建立配置文件原配置数据激活/非活动系统与文件中密码比较格式化配置数据配置命令检验信息过程重试信息

四位数字检验信息检验信息A/D信息格式化配置数据格式化配置数据24.11.2022285初始的SC主模块输入模块主加工模块输入模块事务控制模块接受模块动作发送模块动作1模块动作2模块动作3模块由变换分析产生由事务分析产生24.11.2022286事务分析的映射方法总控调度C路径B路径A路径

A路径B路径C路径接收路径24.11.2022287用户命令交互子系统初始的SC用户执行模块读用户命令命令处理密码处理控制器现用/非现用系统系统设置控制器用户命令交互子系统DFD读用户命令密码命令密码显示信息系统参数数据用户命令读系

统数据配置信息显示信息和状态命令分析处理读密码命令类型开/关命令建立配置文件原配置数据激活/非活动系统与文件中密码比较格式化配置数据配置命令检验信息过程重试信息四位数字检验信息检验信息A/D信息格式化配置数据格式化配置数据24.11.2022289用户命令

交互子系统的SC用户执行模块读用户命令命令处理密码处理控制器现用/非现用系统系统设置控制器读系统数据建立配置文件显示信息与状态用户命令交互子系统DFD读用户命令密码命令密码显示信息系统参数数据用户命令读系统数据配置信息显示信息

和状态命令分析处理读密码命令类型开/关命令建立配置文件原配置数据激活/非活动系统与文件中密码比较格式化配置数据配置命令检验信息过程重试信息四位数字检验信息检验信息A/D信息格式化配置数据格式化配置数据24.

11.2022291用户命令交互子系统的SC用户执行模块读用户命令命令处理密码处理控制器现用/非现用系统系统设置控制器读系统数据建立配置文件显示信息与状态读密码用文件比较密码密码输出控制器产生无效信息24.11.2022292事务流设计举例IMLNABCDFEG事务中心24

.11.2022293事务流设计举例取A总控ALMNGDBCFE(主模块)事务加工模块24.11.2022294动作分支的典型结构PT2T1TiA2D2A1D1A3AjDk事务层操作层细节层处理层主模块事务加工模块操作模块细节模块24.11.20

22295事务流设计举例取A总控ALMNGDBCFE动作1动作n….细节模块1细节模块2….(操作模块)(细节模块)24.11.2022296事务型数据流图举例IMLNOABCDFEGH24.11.2022297事务流设计举例(另一种画法)输入AXX系统变换控制ALMAGDBCFE输出E、F、G

E、F、GE、F、G输出HOE、F、GHHN24.11.2022298(3)混合流设计举例3412675810911变换中心传入传出事务型24.11.2022299混合流设计举例T事务中心传入变换传出接收部分发送部分24.11.2022300混合流设计举例ABT1变换中

心传入传出T2T3abb1b2b3c1c2c3degfjLm事务流子系统BCCDDEEHHKFJKLLMhk24.11.2022301混合流设计举例输入DXX系统变换控制输出K输入Cdc输出LCDDEFJEHHKKLcddkkkLL输出M

LMmmL事务子系统24.11.2022302体系结构设计优化24.11.2022303体系结构设计优化将初始SC根据模块独立性原则进行精化,对模块进行合并、分解修改、调整,得到高内聚、低耦合模块,得到易于实现、易于测试和易于维护的软件结构,产生设计文档的最终SC。24.11.20223

04改进软件结构设计的指导原则(软件结构设计的启发式规则)(1)模块功能的完善化(2)消除重复功能(3)将模块的影响限制在模块的控制范围内(4)深度、宽度、扇出和扇入适中(5)模块大小适中(6)降低模块接口的复杂性(7)模块功能可预测(8)

避免模块的病态连接(9)根据设计约束和可移植性要对软件打包24.11.2022305(1)模块功能的完善化完整的模块应包括三部分:(1)执行规定功能部分(2)出错处理部分(3)需返回给调用者数据时,返回是否正确结束标志。24.11.2022306(2)消除重

复功能Q1CQ2CQ1Q2C改进前Q1、Q2功能相似XYQ’XYXY重复部分改进方法1:将Q1、Q2合并为Q’不可取改进方法2:将Q1、Q2的公共部分分离出来24.11.2022307(3)将模块的影响限制在模块的控制范围

内CHDEGXFAILJKB模块C的控制范围:C、D、E、F、G、H如果模块C作出的决策影响了模块L,L超出了C的控制范围24.11.2022308(4)减少高扇出争取高扇入编外人员工资取得工资数据计时制工资

额薪金制工资额编外人员税款编外人员扣款常规扣款税收扣款计算实发工资避免平铺结构24.11.2022309增加中间层降低扇出编外人员工资取得工资数据计时制工资额薪金制工资额编外人员税款编外人员扣款常规扣款税收扣款计算实发工资计时工人实发工资计薪工人实发工资编外人员实发工资24.11.20223

10(5)模块大小适中模块过大:可理解程度下降模块过小:开销大于有效操作系统接口复杂24.11.2022311(6)降低模块接口的复杂性接口传递信息应简单且和模块功能一致。24.11.2022312(7)模块功能可预测模块看成黑盒

子,相同输入产生相同输出,其功能为可预测的。模块带有内部状态其功能可能是不可预测的。难理解、难测试、难维护。24.11.2022313防止模块功能过分局限功能单一的模块具有高内聚。但如任意限制局部数据结构的大小,过分限制控制流中可做的选择或外部接口的模式,模块功能就过分局限,使

用范围过分狭窄,缺乏灵活性和可扩充性。24.11.2022314(8)避免模块的病态连接防止指向模块中间的分支或引用(针对内容耦合)24.11.2022315(9)根据设计约束和可移植性需求对软件打包打包指用来为特定环境组

装软件的技术24.11.2022316小结:结构化设计24.11.2022317结构化设计的质量标准(Note51)结构图耦合度聚合度信息隐蔽的目的:提高模块的独立性,减少修改或维护时的影响面。24.11.

2022318结构图(note51a)ACBDABZX.YACBD1重复调用和一次调用条件调用24.11.2022319耦合度(Note51b)结构化设计方法的重要成果是把影响耦合度的因素归结为如下原则:连

系方式的类型:用过程语句调用低于直接调用接口的复杂性:接口间传递信息的数量连系的作用:传送信息流的类型,数据型、控制型或混合型耦合时间:按执行时间、装入时间、连接时间及编译时间来区分。24.11.2022320连系的作用(Note51c)混合型的例子:当一个模块修改另一个模块的代码

时,对修改者来说修改的代码是当作数据来处理的。而对被修改者来说,则是一种对“控制”的变动。控制型的例子:模块A通过用作控制信号的开关量实际上控制着模块B的工作。24.11.2022321控制型耦合转变为数据型耦合(Note51d)一般来说,控制

型耦合是不必要的,可以通过分裂模块等方法把控制型耦合转变成数据型耦合。A取阴历取阳历A取阳历日期或取阴历日期日期类型选择阴历日期阳历日期24.11.2022322用三个封装级别表示的软件结构原始代码行0级程序模型(子程序或过程)1

级2级类/对象结构24.11.2022323结构设计(或1级)标准,用以管理每一对封装级别的元素之间的相互关系内聚结构化设计0级结构体(代码行)1级结构体(程序)TO:FROM:0级结构体(代码行)1级结构体(程序)输出端耦合性内聚是指度量一个给定的程序

内的多行代码的单一功能性,以确定是否达到该程序所要实现的目的。耦合性用来度量程序之间联系的次数和强度24.11.2022324上表的扩展:包括2级封装(所有的类)内聚结构化设计0级结构体(代码行)1级结构体(程序)TO:FROM:0级结构体(代码行)1级结构

体(程序)输出端耦合性—2级结构体(类)——类的耦合2级结构体(类)类的内聚类的内聚是模仿了一个程序的内聚。类的耦合性是一种度量类之间联系的次数和强度的方法。24.11.2022325无耦合-没有依赖关系松散耦合-有少量依赖关系紧密耦合-

有很多依赖关系图形表示耦合关系24.11.2022326耦合强度依赖的因素:•一模块对另一模块的引用•一模块向另一模块传递的数据量•一模块施加到另一模块的控制的数量•模块间接口的复杂程度24.11.20223

27模块间耦合的类型(page74)低无直接耦合耦数据耦合合标记耦合性控制耦合外部耦合公共耦合高内容耦合模块独立性弱(低耦合)强(中耦合)(较强耦合)(强耦合)24.11.2022328聚合度(Note51e

)七层聚合类型偶然型逻辑型瞬时型通讯型顺序型功能型24.11.2022329详细设计的基本概念(page108)详细设计工具:(1)图形工具流程图盒图问题分析图(2)表格工具(3)语言工具24.11.2022330结构化程序设计(SP)方

法结构定理在结构定理的基础之上,Dijkstra主张避免GOTO语句,而仅仅使用三种基本结构反复嵌套来构造程序。自顶向下逐步加细24.11.2022331SP方法实用的描述方式流程图(FC)盒图(NS)问题分析图(PAD)程序设计语言(PDL)24.11.2022332

系统流程图(FC)早于DFD的一种建模工具。以图形方式说明系统中的控制流和数据流。Dijkstra主张避免使用GOTO语句,而仅仅使用顺序、选择和循环等三种基本结构来表示系统流程图示例初始处理数据检查、库存询问、库存分配定货处理帐单处理启动定货销售工作结束定货或

询问显示数据顾客文卷库存文卷库存文卷接受的定货文卷临时定货文件显示选择查问库存的初始显示输入查询输入错询问回答检查定货单说明定货单发票询问定货24.11.2022334本章结束软件设计24.11.2022335补充内容24.11.2022336面向对象的方法论方法论是如何对复杂系统进行

“抽象”的工作,以及如何建立抽象模型。24.11.2022337面向对象分析建模(OOA)面向对象分析方法确实不同于结构化分析方法吗?Fichman,R.GandC.F.Kemerer,在“Object-orientedConventionalAnalysisandDesignMethodol

ogies”中阐述:我们的结论是面向对象分析方法表现了相对面向过程的方法学(如结构化分析)的根本性变化,而且相对面向数据的方法学仅仅是增量性的变化。面向过程的方法学在建模过程中的关注点不是对象的内在性质,从而导致了和面向对象的三个基本原理相正交的问题域模型。24.11.2022338

面向对象分析方法面向对象分析方法使得软件工程师能够通过对象、属性和操作(作为主要的建模成分)的表示来对问题建模。•建立分析模型5个基本原则:(1)建模信息域;(2)描述模块功能;(3)表示模型行为;(4)分解以模型显示更多细节;(5)早期模型表示问题的本质,而后期模型提供实

现细节。24.11.2022339OOA的意图是定义所有和被求解的问题相关的类(及同类关联的关系和行为),为了达到这个目标,必须完成以下任务24.11.2022340OOA的意图(1)必须在客户和软件工程师之间沟通了解基本的用户需求;(2

)必须标识类(定义属性和方法);(3)必须刻划类层次;(4)表示对象对象关系(对象连接);(5)必须建模对象行为;(6)任务(1)到(5)递进地反复使用,直至完成建模24.11.2022341流行的几种面向对象方法•

Booch方法•Coad-Yourdon方法•Rumbaugh方法(简称OMT)(ObjectModelingTechnology)•Jacobson方法(简称OOSE)•由Rumbaugh、Booch

、Jacobson提出的统一建模语言(UnifyModeingLanguage简称UML)24.11.2022342不同面向对象分析方法的相似步骤:(1)使用基本需求作为指南选择类和对象;(2)为对象标识属性和操作;(3)定义组织类的结构和层次;(

4)建造对象-关系模型的;(5)建造对象-行为模型。24.11.2022343统一的OOA方法•由Rumbaugh、Booch、Jacobson提出的统一建模语言(UnifyModeingLanguage简称UML)UML是一种定义

良好,易于表达,功能强大且普遍实用的建模语言。24.11.2022344UML的开发历程Booch’91其它方法OMT-1OOSEBooch’93OMT-2UML0.8UML0.9&0.91UML1.0UML1.1UML同行专家意见OMG认证10

/9510/96&9/96OMG审核,1/97OMG修正,9/97OMG采用,11/97UML1.324.11.2022345OMT(对象建模技术ObjectModelingTechnology)对象建模技术将使用三种不同的模型从不同侧面来描述现实世界

,即使用对象模型,动态模型和功能模型三种模型。OMT是一种自底向上和自顶向下相结合的方法。OMT的第一步是从问题的陈述入手,构造系统模型,这是一种自底向上的归纳过程;系统模型建立后的工作就是分解,这

是一种基于服务(Service)的分解。这种从具体到抽象、再从抽象到具体的分析、设计过程符合人类的思维规律,使得需求分析更为彻底,系统可维护性也得以改善。24.11.2022346OMT对象模型技术对象模型动态模型功能模型基本模型:三个模型分别从不同角度分析系统24.11.2022347OMT

将开发过程划分为四个阶段1.分析:分析人员从问题陈述入手开始,建立一个表示现实世界重要性质的应用领域模型。2.系统设计:系统设计阶段要求做出有关整个系统结构的高层决策,在这一阶段中,目标系统应该根据分析模型和所设置的系统整体结构划分为若干子系统。系统设计人员必须确定哪能些性能需要优化,

选择处理问题的策略,做出初步的资源分配。24.11.2022348OMT将开发过程划分为四个阶段3.对象设计:设计模型是在分析模型的基础上添加实现细节来完成的,在增加工这细节时,设计人员应该遵守在系统设计阶段确定的策略4.实现:对象设计阶段所产生的对象类和联系最后都必须

翻译成具体的程序设计语言,数据库或硬件实现,在开发过程中,程序设计应该是相对简单机械的部分,因为所有最困难的决策已经在设计阶段做出,目标语言在某种程度上可能影响设计决定,但设计决不应该依赖程序设计语言的细节,虽然目标语言在某种程序上可能影响设计决策24.11

.2022349分析模型•对象模型:描述静态结构,定义做事情的实体•功能模型:描述处理(数据变换),指明系统应“做什么”•动态模型:描述交互过程,规定什么时候做24.11.2022350OMT模型系统分析和设计过程概观图产生需求结构及对象设计建立模型问题

描述对象模型、动态模型、功能模型详细的对象模型详细的动态模型详细的功能模型分析阶段设计阶段24.11.2022351实例:饮料自动售货机系统设置一个饮料自动售货机可以放置五种不同或部分相同的饮料,可由厂商根据销售状况自动调配,并可随时重新设置售价,但售货机最多仅能放置

50罐饮料,其按钮设计在各种饮料样本的下方,若经金额计算器累计金额足够,则选择键灯会亮;若某一种饮料已销售完毕,则售完灯会亮。24.11.2022352实例:饮料自动售货机系统销售顾客将硬币投入售货机,经累加金额足额的饮料选择键灯亮,等顾客按键选择。顾客按键后饮料由取物楼掉出,并自动结算及找

钱。取消交易顾客可在按下选择键前任何一个时刻,拉动退币杆取消交易收回硬币。24.11.2022353步骤(1)找出对象及其关联(2)赋予类及关联的属性数据(3)组织类的结构OMT的对象图24.11.2022354找出饮料自动

售货机系统中的对象设置一个饮料自动售货机可以放置五种不同或部分相同的饮料,可由厂商根据销售状况自动调配,并可随时重新设置售价,但售货机最多仅能放置50罐饮料,其按钮设计在各种饮料样本的下方,若经金额计算器累

计金额足够,则选择键灯会亮;若某一种饮料已销售完毕,则售完灯会亮。24.11.2022355找出饮料自动售货机系统中的对象销售顾客将硬币投入售货机,经累加金额足额的饮料选择键灯亮,等顾客按键选择。顾客按键后饮料由取物楼掉出,并自动结算及找钱。取消交易顾客可在按下选择键前任何一个时刻,拉动

退币杆取消交易收回硬币。24.11.2022356对象模型描述系统内部对象结构,包括对象本身的定义、对象的属性、操作,以及对象与其它对象之间的关系。对象模型是OMT方法论中最重要的部分,动态模型、功能模型都将依次而建立对象模型以对象图形式呈现,对象图由类构

成。饮料自动售货机系统对象图贩卖机饮料号码价格投币-接受饮料掉出金额显示按纽退币杆售完显示存量计算器饮料号码存量递减售完显示重置选择钮选择钮状态灯亮灯熄售完灯亮按钮顾客姓名硬币投币-置入拿取饮料退币杆退币杆状态拉动金额计算器金额累加找零

重置购买选取被拉动属于属于属于属于24.11.2022358建立数据字典为所有模型实体准备一个数据字典,精确描述每一个对象类,包括:•成员•约束•关联、属性、操作24.11.2022359动态模型用来描述系统与时间相关的动态行为即系统的控制

逻辑,表现对象彼此间经过相互作用后,随时间改变的不同运算顺序。动态模型以“事件”(Events)和“状态”(States)为其模型的主要概念。动态模型以状态图形式呈现24.11.2022360动态模型•事

件:瞬时发生的行为;引起对象状态转换的控制信息。事件类和属性举例:飞机起飞(航线、航班号、城市)按动鼠标按钮(按钮、位置)„„..24.11.2022361动态模型状态:对象属性和对象关联的抽象形式状态的特征表示方法举例:状态:闹铃响描述:闹铃响表示预

定时间到产生本状态的事件序列:设置闹钟(预定时间)不包括清除闹铃的任何后续操作当前时间=预定时间表征本状态的条件:闹铃=开,从预定时间起没有按键的情况下,目标时间当前时间目标时间=20秒24.11.2022362动态模型本状态接受的各种时间:事件动作下一个状态当前时间=

目标时间+20重新设置闹钟正常按下按钮(任意按钮)重新设置闹钟正常24.11.2022363动态模型表示方法•状态图状态和事件的网络,侧重描述每一类对象的动态行为24.11.2022364状态图状态1Do:活动1状态2.…...事件1[条件1]/动作1结束事件初始事件空闲可视菜单左边按钮

按下/显示弹出菜单左边按钮弹起/擦除弹出菜单光标移动/高亮菜单项弹出菜单动作24.11.2022365举例:饮料自动售货机系统的状态图投入硬币(有效的)按下选择饮料键Do:显示售货机在备用所有灯都关闭Do:显示金额总数Do:显示金额已够饮料选择灯亮取出饮料结算找零扣减存量完成交易饮

料“售完”灯亮投入硬币金额(1元、5元、10元)金额不足再投币存量为零无效的硬币取消取消回到备用状态回到备用状态时序图举例:打电话的时序挂断电话电话切断挂断电话通话通话停止振铃停止振铃响应电话电话振铃铃声拨号(3)拨号(7拨号(3)拨号(2)电话忙音结束拨号(8)电话忙音开

始拿起听筒电话线接电话者打电话者举例:饮料自动售货机系统的时序图存量为零找零扣减存量灯亮余额饮料结算选择键#选择按纽灯亮金额总够显示总额总额累加投入硬币金额计算器存量计算器顾客售货机选择键售完灯24.11.202

2368功能模型用来描述系统中数据的变换。传统DFD+控制流对象A对象B过程1过程2数据存储区控制流数据流24.11.2022369基于三个模型的分析步骤•需求陈述•对象建模•动态建模•功能建模•添加操作反

复建模24.11.2022370OMT支持整个软件生命周期:需求分析、系统设计、系统实现、测试与维护。24.11.2022371OMT支持整个软件生命周期:1.分析阶段:理解应用问题,建立对象模型、动态模型和功能模型,说明对象关联、控制流及数据变换。2.系统设计阶段:确定系统框架,考虑并发任务、通

讯机制和数据存储策略。3.对象设计阶段:从实现的角度细化分析对象模型、动态模型和功能模型4.实现阶段:具体代码实现24.11.2022372OMT方法的特点:•开发重点在分析阶段•强调数据结构而不是功能•形式化描述能力强•开发步骤的衔接良好•重复性的开发过程24.11.20223

73Yourdon的OOA方法以类与对象图及对象状态图为辅助工具,建立问题域的五层模型.OOA模型被划分为五个层次(五个视图)24.11.2022374分析阶段由五个活动组成:(1)标识类及对象(2)标识结构(3)标识主题(4)定义属性及实例连接(5)定义服务及消息连接五个步骤常根据需要交叉

进行OOA的结构类的边界Class&objectlayer(类及对象层)Attributelayer(属性层)Servicelayer(服务层)Structurelayer(结构层)Subjectlayer(主题层)实例的边界实例连接消息连接主题服

务属性24.11.2022376步骤1:识别类与对象(1)发现对象主要策略:考虑问题域•人员•组织•物品•设备•事件•表格结构考虑系统边界•人员•设备•外系统考虑系统责任24.11.2022377重点问题域描述中的名词,往往是候选的及对象;根据问题域结

构可提取候选的类及对象;24.11.2022378重点与系统发生作用的其它系统和必要的设备可作为候选的类及对象;如:打印机等(分析阶段可不把与实现有关的计算机部件作为候选的类及对象)24.11.2022379重点系统必须观测、记忆的

与时间有关的事件可作为候选的类及对象;如:建立帐户的日期打开一个帐户等与系统发生交互的人及系统必须保留其信息的人,可作为候选的类及对象;如:柜员、储户等这些人所属的组织单位,可作为候选的类及对象;如:总行、分行等24.11.20

22380重点系统必须记忆、且不在问题域约束中的顺序操作过程(为了指导人机交互)可作为候选的类及对象;如:柜员事务、远程事务等。其中属性是操作过程名,操作特权及操作步骤的描述;系统需了解掌握的物理位置、办公地点等可作为候选的类及对象;如:ATM机器、帐户

等24.11.2022381(2)审查和筛选舍弃无用的类对象的精简•只有一个属性的对象•只有一个服务的对象推迟到OOD考虑的对象24.11.2022382帐册供货员销售事件商品特价商品计量商品商品一览表超市销售管理系统(对象

层)24.11.2022383步骤2:定义属性与服务•定义属性•定义服务对象的状态与状态转换图例:栈的状态/服务对照表24.11.2022384例:栈状态转换图空半满满创建压入(未满)弹出(未空)压入(报错)弹出(报错)弹

出(已空)压入弹出压入(已满)24.11.2022385定义服务对象行为分类发现服务的策略审查与调整识别对象的主动行为服务的详细说明(服务解释、消息协议、消息发送、约束条件、服务流程图)超市销售管理系统(特征层)帐册前班节

余销售事件表收入累计上交款本班节余接班计帐报帐交班帐目目册供货员缺货登记表缺货登记供货销售事件收款人购物清单应收款„„销售计划入帐商品编号名称单价架上数量下限售出补充价格更新特价商品开始日期结束日期计量商品*单价计量单位计价方式*售出*

补充*价格更新本班收款员开始时间结束时间商品一览表商品目录检索种类增删24.11.2022387建立数据字典为所有模型实体准备一个数据字典,精确描述每一个对象类,包括:•成员•约束•关联、属性、操作24.11.202

2388对象字典举例:类名父类提供的服务需要的服务帐户………………ATM………………银行………………出纳员………………24.11.2022389步骤3:定义结构与连接•初步确定关联•对应于描述性动词或动词短语•需求陈述中隐含•根据问题域知识得出•

筛选•完善24.11.2022390步骤3:定义结构与连接•分析标识对象之间的关系•对象之间的分类关系:一般-特殊结构•对象之间的组成关系:整体-部分结构•对象之间的静态联系:实例连接•对象之间的动态关系:消息连接24.11.2022391从一般类发现特殊类公司职员股东姓名身分证号码……股份„„职

员工资„„公司职员姓名身分证号码股份工资…………………………??24.11.2022392从特殊类发现一般类公司职员股东姓名身分证号码……股份„„职员工资„„………………股东姓名身分证号码股份„„……职员姓名身分证号码工资„„……?24.11.2022393收款机类成为

可供本领域其它系统复用的领域构件收款机ABC现钞收款机DEF现钞收款机ABCDEFXYZZXY为支持复用建立结构取消没有特殊属性的特殊类大学生研究生研究方向指导教师……学生姓名学号班级„„……研究生研究方向指导

教师……学生姓名学号班级„„……24.11.2022395通过增加属性简化一般-特殊结构人员„„……男人„„……女人„„……„„……美国人„„……日本人„„……人员性别国籍„„……中国人24.11.202

2396两种结构的变通冷藏车„„……汽车„„……制冷设备„„……冷藏车„„……汽车„„……制冷设备„„……仅用一般-特殊结构两种结构同用冷藏车„„……汽车„„……制冷设备„„……仅用整体-部分结构24.11.2022397用整体-部分结构实现复用车床„„……机床„„

……刨床„„……起重机„„……电动机„„……钻床„„……送料车„„……24.11.2022398筛选:删除下列关联•已删去的类间的关联•无关或实现关联•瞬时事件•三元关联•派生关联24.11.2022399步骤4:定义服务及消息连接分析和认识对象之间在行为上的往来

关系24.11.2022400顺序系统中的消息传递主动对象Aa被动对象Bb被动对象Cc被动对象Dd1d2运行开始运行结束服务执行消息发送控制点返回示意24.11.2022401并发系统中的消息传递主动对象A主

动对象B被动对象D任务Task1线程Ta控制线程之间的消息连接控制点返回示意被动对象C被动对象E控制线程内部的消息连接任务Task2线程Tb24.11.2022402多个控制线程之间的消息与顺序系统中消息的

不同之处(1)并发执行的控制线程之间传送的消息的不同用途:•向接收者发出访问请求•向接收者提交数据•向接收者发布通知或事件信息•向接收者传递同步控制信号(2)消息的同步与异步(3)接收者对消息的不同响应方式(4)发送者对消息处理结果的不同期待方式(5)消息的接收者是否唯一•定向消息•广播消息2

4.11.2022403OOA对消息的表示—消息连接消息连接是OOA(或OOD)模型中对对象之间行为依赖关系的表示识别和表示的主要问题:•对象之间是否存在消息?•消息是同一线程内部的还是不同线程之间的?•每一种消息是从

发送者哪个服务发出的?由接收者哪个服务响应处理的?•消息是同步还是异步?•发送者是否等待消息的处理结果?24.11.2022404如何建立消息连接(1)建立控制线程内部的消息连接基本策略:“服务模拟”“执行路线追踪”具体做法:•人为地模拟

当前服务的执行,通过考虑需要请求其它对象的服务来发现新消息。•分析该消息的发送者与接收者在执行时是否属于同一控制线程24.11.2022405(2)建立控制线程之间的消息连接对每个控制线程考虑:•它在执行时是否需要请求其它控制线程中的对象为它提供服务?由哪个对象发出?由哪个对象中的服务

处理?•它在执行时是否要向其它控制线程中的对象提供或索取数据?•它在执行时是否将产生对其它控制线程的执行有影响的事件?•各个控制线程的并发执行是否要传递同步控制信号•一个控制线程在何种条件下中止执行?中止后在何种条件下由其它控制线程用何法唤醒?24.11.2022406(3)对象分布问题及对消息

的影响•每台处理机上分布的一组对象中至少应有一个主动对象;•同一台处理机上的对象之间的消息通信既可能是一个控制线程内部的,也可能是不同控制线程之间的。(关系层,完整的类图)帐册前班节余销售事件表收入累计上交款本班节余接班计帐报帐交班帐目目册供货员缺货登记表缺货登记供货销售事件

收款人购物清单应收款„„销售计划入帐商品编号名称单价架上数量下限售出补充价格更新特价商品开始日期结束日期计量商品*单价计量单位计价方式*售出*补充*价格更新1m商品一览表商品目录检索种类增删1m本班收款员开始时间结束时间24.11.202240

8步骤5:标识主题(主体)Coad/Yourdon方法中主题的概念:主题是把一组具有较强联系的类组织在一起而得到的类的集合。24.11.2022409主题概念及其用途•主题层是在OOA基本模型(类图)之上建立一个能帮助人们从不同的认识层次来理解系统的补充模型;•主题一种比类和对象抽象层

次更高、粒度更大的概念,用以建立系统的高层抽象视图;•主题有助于指导系统设计者或用户等理解一个大的系统模型,有助于组织一个大项目的工作。24.11.2022410主题概念的特点•是由一组类构成的集合•一个主题内部的对象类应具有某种意义上的

内在联系•描述系统中相对独立的组成部分(如一个子系统)•描述系统中某一方面的事物(如人员、设备)•解决系统中某一方面的问题(如输入输出)•主题的划分有一定的灵活性和随意性24.11.2022411如何划分主题•把

每个结构作为一个主题;(选取结构中最上层的类作为一主题)•通过实例连接互相联系的类可划分到一个主题;•把不属于任何结构,也没有实例连接的类作为一个主题。24.11.2022412如何精练主题从问题域和接口复

杂性两方面入手:•使用问题域精练主题,即用整体/部分结构对问题域进行划分,而不是按功能分解方法划分.•按高内聚低偶合原则,通过使主题间依赖性和交互性最小原则保留能反映子问题域的主题.•主题数目>7个左右,则进一步精练主题.24.11.202

2413何时引入主题依赖于模型自身复杂性•小系统:不需引入主题;•中等系统:先标识类及对象,然后引入主题;•大系统:先标识主题,对问题域进行划分,分给不同的任务组24.11.2022414主题层次的控制•中小型系统可只设一

层主题,最多不超过两层;•大型系统可只设两层主题,最多不超过三层。(关系层,完整的类图)帐册前班节余销售事件表收入累计上交款本班节余接班计帐报帐交班帐目目册供货员缺货登记表缺货登记供货销售事件收款人购物清单应收款„„销售计划入帐商品编号名称单价架上数量

下限售出补充价格更新特价商品开始日期结束日期计量商品*单价计量单位计价方式*售出*补充*价格更新1m商品一览表商品目录检索种类增删1m本班收款员开始时间结束时间11113333222224.11.20

22416第五章人机界面设计24.11.2022417概念人机界面(HumanComputerInterface,简称HCI)通常也称为用户界面界面设计主要包括三个方面:•设计软件构件之间的接口•设计模块和其他非人的信息生产者和消费者的界面•设计人(如用户)和计算机间的界面24.1

1.2022418界面的设计原则•分析用户类型•应用程序和界面分离•一致性•尽量减少用户工作•提供反馈•出错处理和帮助功能•增加可视化图形表示24.11.2022419黄金规则在有关界面设计的著作中,TheoMandel创造了三条黄金原则:•置用户

于控制之下•减少用户的记忆负担•保持界面一致24.11.2022420黄金规则:置用户于控制之下Mandel定义的一组允许用户操作控制的原则:•以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式•提供灵活的交互•允许用户交互可以被中断和撤消•当技能级别增加时可以使交互流水化并

允许定制交互•使用户隔离内部技术细节•设计应允许用户和出现在屏幕上的对象直接交互24.11.2022421黄金规则:减少用户的记忆负担Mandel定义了一组设计原则,使界面能够减少用户记忆负担:•减少对短期记忆的要求•建立有意义的缺省•定

义直觉性的捷径•界面的视觉布局应该基于真实世界的隐喻•以不断进展的方式揭示信息24.11.2022422界面举例MSN24.11.2022423界面举例红心大战缺省值24.11.2022424黄金规则:保持界面一致用户应以一致的方式展示和获取信息•所

有可视信息的组织均按照均按照贯穿所有屏幕显示所保持的设计标准•输入机制被约束到有限的集合,在整个应用中被一致地使用•从任务到任务的导航机制被一致地定义和实现24.11.2022425帮助保持界面一致性的设计原则•允

许用户将当前任务放入有意义的语境•在应用系列内保持一致性•如过去的交互模型已建立起了用户期望,除非有迫不得已的理由,不要改变它24.11.2022426用户友好性设计用户友好性一般属软件的性能特性,它独立于所有具体功能,却影响着所有功能的重用性。用户友好性应体现在与用户有接口的软件特性上。

用户友好性的根本目的是为了软件可重用性、可维护性。24.11.2022427用户友好性的标志•可操作性•健壮性•易学习性•可扩展性24.11.2022428界面设计模型•软件工程师创建的设计模型(designmodel)•人员工程师创建的用户模型(use

rmodel)•终端用户对未来系统的假想(sysytemperception或user’smodel)•系统实现后得到的系统映象(sysytemimage)四种模型可能相差甚远,界面设计人员的任务就是消除这些差距,导出一致的界面表示设计用户界面要考虑四种模型:24.11.2022429

用户界面设计过程用户界面设计过程包括四种不同的框架:•用户、任务和环境分析及建模•界面设计•界面构造•界面确认24.11.2022430用户分析•偶然型•生疏型•熟练型•专家型•新手•对系统有了解的中级用户•对系统有了解的经常用户用户类型:24.11.202

2431影响用户行为特性的因素•人-机匹配性•人的固有技能•人的固有弱点•用户的知识经验•用户对系统的期望和态度24.11.2022432用户对计算机系统的要求•让用户灵活地使用•适应不同类型用户•系统的行为及效果对用户透明•用户对系统的期望和态度•提

供联机帮助功能•人机交互尽可能和人际通信相似24.11.2022433用户技能方面的使用需求•应让系统去适应用户•使用易于理解、掌握的准自然语言•一致性的系统设计•用户对系统的期望和态度•能通过系统学习•系统提供演示及范例24.11.2022434用户

习性方面的使用需求•系统应让用户有耐心•系统应很好地对付人的易犯错误•系统应对不同用户提供不同交互方式24.11.2022435用户经验、知识方面的使用需求•系统应能让未经专门训练的用户使用•系统能对不同经验用户做出不同反应•提供同一系统的一致性,建立标准化人

-机界面•系统必须适应用户在应用领域的知识变化,提供动态的自适应的设计24.11.2022436用户对系统的期望方面的要求•用户界面应提供形象、生动、美观的布局显示和操作环境•系统处理问题应尽可能简单,提供学习机制•系统应对不同用户提供不同交互方式24.1

1.2022437人-机界面的交互方式菜单界面按显示形象分类:•正文菜单•图标菜单•正文图标混合菜单按屏幕位置和操作风格分类:•固定•浮动•下拉式•嵌入式菜单举例图标式菜单菜单条弹出式菜单弹出式帮助文本

24.11.2022439菜单举例下拉式菜单、瀑布式菜单瀑布式菜单24.11.2022440菜单举例24.11.2022441菜单举例24.11.2022442菜单举例24.11.2022443对话对话形式:(1)必须回答式(2)无需回答式(3)警告式对话实现方式:(1)标

准对话(2)定做式对话24.11.2022444界面其他元素3.功能键4.图符界面5.填表界面6.命令语言界面7.查询语言界面8.自然语言界面24.11.2022445控制界面的设计(1)用控制对话选择操作命令(2)用菜单界面进行控

制(3)用功能键定义操作命令(4)用图标表示对象或命令24.11.2022446界面设计过程的步骤•建立任务的目标和意图•为每个目标和意图制定特定的动作序列•按在界面上执行的方式对动作序列进行规约•指明系统状态,即执行动作时的界面表现•定义控制机

制,即用户可用的改变系统状态的设备和动作•指明控制机制如何影响系统状态•指明用户如何通过界面上的信息解释系统状态24.11.2022447定义界面对象和动作为创建描述图符的图形设计和放置、描述性屏幕文字的定义、窗口的规约和命名、菜单项的规约的屏幕布局提供基础。响应时间、命令和

动作结构、错误处理和帮助设施等设计问题应该在精化设计模型时考虑。24.11.2022448导航方式线性层次24.11.2022449导航方式网络式混合式24.11.2022450数据输入界面设计数据输入的规则明确的输入明确的动作明确的

取消确认删除提供反馈允许编辑提供复原(Undo)自由格式提示输入的范围24.11.2022451数据显示界面设计数据显示的规则•只显示必要的数据•在一起使用的数据显示在一起•显示出的数据应与用

户执行的任务有关•每一屏数据的数量不应超过整个屏幕面积的30%屏幕布局规则•尽量少用代码和缩写•多个显示画面,应建立统一格式•提供明了的标题、标栏及其它提示信息•遵循用户习惯•采用颜色、字符大小、下划线、不同字体等方式强化重要数据24.11.2022452界面举例24.11.2022453界面举

例24.11.2022454界面举例24.11.2022455界面举例24.11.2022456第五章软件测试24.11.2022457编程阶段的基本概念(page126)编程的定义编程的目标什么是程序可读性24.11.2022458程

序设计语言(page127)程序设计语言的种类BASICCOBOLFORTRANPASCALCLISP其他语言24.11.2022459选择语言(page130)项目的应用领域算法和计算复杂性软件

的执行环境性能因素数据结构的复杂性软件开发人员的水平24.11.2022460SP方法和编程(page130)SP方法帮助产生简单清晰的程序程序内部文档(Note)序言性注释描述性注释编程风格变量名的选择表达式的书写24.11.2022461程序的效率(Note54)效率主要

指处理机时间和存储器容量两个方面。可从三个方面讨论效率问题:程序运行时间存储器效率输入/输出的效率24.11.2022462第六章软件测试24.11.2022463基本概念软件开发过程必须伴有质量保证活动。软件测试是软件质量保证的关键元素,代表

了规约、设计和编码的最终检查。24.11.2022464动态测试方法(1)选取定义域有效值,或定义域外无效值.(2)对已选取值决定预期的结果(3)用选取值执行程序(4)执行结果与(2)结果相比,不吻和程序有错.24.11.2022465测试用例设计选择测试用例是软

件测试员最重要的一项工作。测试用例的属性:属性描述name测试用例的名称location可执行的完全路径名input输入数据或命令oracle与测试输入相比较的期待测试结果log测试生产的输出24.11.2022466软件测试信息流软件配置测试测试配置测试工具结果分析排错

可靠性分析测试结果错误预期结果出错率改正的软件预测的可靠性需求规格说明书软件设计说明书被测源程序测试计划测试用例(测试数据)测试驱动程序24.11.2022467测试活动和相关工作产品项目协议对象设计客户开发人员用户集

成策略系统分解功能性需求非功能性需求单元测试集成测试结构测试功能测试性能测试用户手册验收测试安装测试现场测试日常操作24.11.2022468测试设计中需要考虑的22种测试类型•黑盒测试•白盒测试•单元测试•累计综合测试•集成测试

•功能测试•系统测试•端到端测试•健全测试•衰竭测试•接受测试•负载测试•强迫测试•性能测试•可用性测试•安装/卸载测试•恢复测试•兼容测试•安全测试•比较测试•Alpha测试•Beta测试24.11.2022469测试的

方法与技术软件测试的策略和方法静态测试方法动态测试方法人工测试方法计算机辅助静态分析方法白盒测试方法黑盒测试方法24.11.2022470动态黑盒测试—闭着眼睛测试软件软件输入不深入代码细节的测试方法称为动态黑盒测试。软件测试员充当客户来

使用它。输出24.11.2022471动态白盒测试—带上X光眼镜测试??????????????3581322.293419985680302829734315250*(1+0.015)*((1+0.015)^360-1)/0.01525

0*(1+0.015)*((1+0.015)^360-1)/0.015假如知道一个盒子包含一台计算机,而另一个盒子是人用纸笔计算,就会选择不同的测试用例了解软件的运作方式会影响测试手段24.11.2022472黑盒测试又称:功能测试数据驱动测试基于规格说明书的测试24.

11.2022473白盒测试又称:开盒测试结构测试玻璃盒测试基于覆盖的测试.根据被测程序的逻辑结构设计测试用例;力求提高测试覆盖率;24.11.2022474黑盒测试与白盒测试比较黑盒测试是从用户观点,按规格说明书要求的输入数据与输出数据的对应关系设计测试用例,是根据程序外部特征进行测试。白盒测

试是根据程序内部逻辑结构进行测试。24.11.2022475黑盒测试与白盒测试优缺点比较黑盒测试白盒测试优点缺点性质①适用于各阶段测试②从产品功能角度测试③容易入手生成测试数据①可构成测试数据使特定程序部分得到测试②有一定的充分性度量手段③可或较多工具支持①某些代码得不到测试②如果规格说明有误

,则无法发现③不易进行充分性测试①不易生成测试数据(通常)②无法对未实现规格说明的部分进行测试③工作量大,通常只用于单元测试,有应用局限是一种确认技术,回答“我们在构造一个正确的系统吗?”是一种验证技术,回答“我们在正确地构造一个系统吗?”24

.11.2022476黑盒测试与白盒测试不论黑盒还是白盒测试都不能进行穷尽测试,所以软件测试不可能发现程序中存在的所有错误,因此需精心设计测试方案,力争尽可能少的次数,测出尽可能多的错误.24.11.2022477黑盒测试与白盒测试能发现的错误CBAD-只能用黑盒测试发

现的错误A-只能用白盒测试发现的错误-两种方法都能发现的错误-两种方法都不能发现的错误BCD24.11.2022478白盒测试的测试用例设计逻辑覆盖法(1)语句覆盖(2)判定覆盖(3)条件覆盖(4)判定/条件覆盖(5)条件组合覆盖(6)路径覆盖(7)点覆

盖(8)边覆盖24.11.2022479举例:例:PROCEDURESAMPAL(A,B:REAL;VARX:REAL);BEGINIF(A>1)AND(B=0)THENX:=X/AIF(A=2)OR(X>1)THENX:=X+1EN

D;24.11.2022480举例:开始(A>1)AND(B=0)(A=2)OR(X>1)返回X=X/AX=X+1FFTTabdce24.11.2022481(1)语句覆盖使程序中每个语句至少执行一次24.11.2022482语句覆盖开始(A>1)

AND(B=0)(A=2)OR(X>1)返回X=X/AX=X+1FFTTabdce24.11.2022483语句覆盖只需设计一个测试用例:输入数据:A=2,B=0,X=4即达到了语句覆盖;语句覆盖是最弱的逻辑覆盖24.11.2022484(2)判定覆盖(分支覆盖)使每个判定的真假分支都

至少执行一次24.11.2022485判定覆盖(分支覆盖)开始(A>1)AND(B=0)(A=2)OR(X>1)返回X=X/AX=X+1FFTTabdce24.11.2022486例:可设计两组测试用例:A=3,B=0,X=3可覆盖c、d分支A=2,B=1,X=1可覆盖b、

e分支两组测试用例可覆盖所有判定的真假分支判定覆盖仍是弱的逻辑覆盖24.11.2022487(3)条件覆盖使每个判定的每个条件的可能取值至少执行一次24.11.2022488条件覆盖第一判定表达式:设条件A>1取真记为T1假T1条件B=0

取真记为T2假T2第二判定表达式:设条件A=2取真记为T3假T3条件X>1取真记为T4假T424.11.2022489条件覆盖开始(A>1)AND(B=0)(A=2)OR(X>1)返回X=X/AX=X+1FFTTabdce满足条件:T1,T1,T2,T2T3,T3T4,T424.11.202

2490测试用例通过满足的覆盖ABX路径条件分支103abeT1,T2,T3,T4b,e211abeT1,T2,T3,T4b,e两个测试用例覆盖了四个条件八种可能取值。未覆盖c、d分支,不满足判定覆盖的要求.条件覆盖不

一定包含判定覆盖判定覆盖也不一定包含条件覆盖24.11.2022491(4)判定/条件覆盖选取足够多的测试用例,使判断中的每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次.24.11

.2022492判定/条件覆盖开始(A>1)AND(B=0)(A=2)OR(X>1)返回X=X/AX=X+1FFTTabdce满足条件:T1,T1,T2,T2T3,T3T4,T4测试用例通过满足的覆盖ABX路径条件分支204aceT1,T2,

T3,T4c,e211abdT1,T2,T3,T4b,d能同时满足判定、条件两种覆盖标准。取值。测试用例通过满足的覆盖ABX路径条件分支203aceT1,T2,T3,T4c,e211abeT1,T2,T3,T4b,e103ab

eT1,T2,T3,T4b,e111abdT1,T2,T3,T4b,d24.11.2022495(5)条件组合覆盖所有可能的条件取值组合至少执行一次A>1,B=0A>1,B≠0A≯1,B=0A≯1,B≠0A=2,X>1A

=2,X≯1A≠2,X>1A≠2,X≯1测试用例通过满足的覆盖ABX路径条件分支204aceT1,T2,T3,T4c,e211abeT1,T2,T3,T4b,e102abdT1,T2,T3,T4b,

d111abdT1,T2,T3,T4b,d24.11.2022497(6)路径覆盖覆盖每一个可能的路径测试用例通过满足的覆盖ABX路径条件分支111abdT1,T2,T3,T4b,d112abeT1,T2,T3,T4b,e301acdT1,T2,T3,T4c,d204aceT1,T2,T3,T4

c,e24.11.2022498基本路径测试法通过分析由控制构造的环路的复杂性,导出基本路径集合,从而设计测试用例,保证这些路径至少通过一次。24.11.2022499黑盒测试的测试用例设计等价类划分法把所有可能的输入数据(有效的和无效的)划分成若干个等价的子集(称为等

价类),使得每个子集中的一个典型值在测试中的作用与这一子集中所有其它值的作用相同.可从每个子集中选取一组数据来测试程序24.11.2022500例:某报表处理系统要求用户输入处理报表的日期,日期限制在2001年1月至2005年12月,即系统

只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。系统日期规定由年、月的6位数字字符组成,前四位代表年,后两位代表月。如何用等价类划分法设计测试用例,来测试程序的日期检查功能?24.11.2022501如何划分等价类?•有效等价类(合理等价类)•无效等价类(不合理等价

类)划分等价类的标准:•覆盖•不相交•代表性24.11.2022502划分等价类的规则(page157)(1)如果输入条件规定了取值范围,可定义一个有效等价类和两个无效等价类。例输入值是学生成绩,范围是0~1000100有效等价类1≤成绩≤100无效等价类成绩>100无效等价类成绩<0~24.11

.2022503划分等价类的规则:(2)如果输入条件代表集合的某个元素,则可定义一个有效等价类和一个无效等价类。24.11.2022504划分等价类的规则(3)如规定了输入数据的一组值,且程序对不同输入值做不同处理,则每个允许的输入值是一个

有效等价类,并有一个无效等价类(所有不允许的输入值的集合)。例:输入条件说明学历可为:专科、本科、硕士、博士四种之一,则分别取这四种这四个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类24.11.2022505用等价类划分法设计测试用例步骤(1)形成等价类表,每

一等价类规定一个唯一的编号;(2)设计一测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一步骤,直到所有有效等价类均被测试用例所覆盖;(3)设计一新测试用例,使其只覆盖一个无效等价类,重复这一步骤直到所有无效等价类均被覆盖;24.11.2022506划分等价类的规则

(4)如果规定了输入数据必须遵循的规则,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。(5)如已划分的等价类各元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类。24.11.2022507第一步:等价类划分输

入等价类有效等价类无效等价类报表日期的类型及长度3位数字字符(1)有非数字字符(4)少于6个数字字符(5)多于6个数字字符(6)年份范围在2001~2005之间(2)小于2001(7)大于2005(8)月份范围在1~12之间(3)“报表日期”输入条件的等价类

表小于1(9)大于12(10)24.11.2022508第二步为有效等价类设计测试用例对表中编号为1,2,3的3个有效等价类用一个测试用例覆盖:测试数据期望结果覆盖范围200105等价类(1)(2)(3)输入有效24.11.202

2509第三步:为每一个无效等价类设至少设计一个测试用例测试数据期望结果覆盖范围001MAY等价类(4)输入无效20015等价类(5)输入无效2001005等价类(6)输入无效200005等价类(7)输入无效200805等价类(8)输入无效2

00100等价类(9)输入无效200113等价类(10)输入无效不能出现相同的测试用例本例的10个等价类至少需要8个测试用例例:对招干考试系统“输入学生成绩”子模块设计测试用例招干考试分三个专业,准考证号第一位为专业代号,如:1-行政专

业,2-法律专业,3-财经专业.行政专业准考证号码为:110001~111215法律专业准考证号码为:210001~212006财经专业准考证号码为:310001~314015例:准考证号码的等价类划分有效等价类:(1)110001~111215(2)210001~21

2006(3)310001~314015无效等价类:(4)-~110000(5)111216~210000(6)212007~31000(7)314016~+例:计算给定月份中天数的方法接口(java):ClassMyGregorianCalender{……public

staticingetNumDaysInMonth(intmonth,intyear){…}……}getNumDaysInMonth()方法有两个参数,月和年,年份的有效输入是从0到maxInt.

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?