软件工程复习重点

软件工程复习重点

ID:63373985

大小:1.48 MB

页数:60页

时间:2023-10-19

上传者:灯火阑珊2019
软件工程复习重点_第1页
软件工程复习重点_第2页
软件工程复习重点_第3页
软件工程复习重点_第4页
软件工程复习重点_第5页
软件工程复习重点_第6页
软件工程复习重点_第7页
软件工程复习重点_第8页
软件工程复习重点_第9页
软件工程复习重点_第10页
资源描述:

《软件工程复习重点》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

三大块内容:软件危机与软件工程传统软件开发方法面向对象方法一、软件危机与软件工程:软件、软件危机、软件生存期、软件开发模型、软件管理1、软件:软件是能够完成预定功能和性能的可执行的计算机程序+使程序正常运行所需要的数据+描述软件开发过程及其管理、程序的操作和使用的有关文档。文档:分开发、管理、用户、维护文档,作用是记录及解决不可视性、通信与交流、管理与维护、用户服务2、软件危机a)表现:软件成本高、难于控制开发进度、软件工作量估计困难、软件质量低、软件修改维护困难b)原因:需求问题(描述不精确、理解不一致)、管理问题、方法和工具问题、软件本身的特点3、软件生存期:a)三个时期:定义时期(软件计划、需求分析)—>开发时期(软件设计、编码实现、测试)—>使用和维护时期(维护)b)六个阶段:软件计划需求分析设计编码测试使用与维护c)生命周期方法特点:顺序性、依赖性,推迟程序的物理实现、质量保证的观点(利于尽早发现错误,如阶段文档、评审)4、软件开发模型a)瀑布模型:文档驱动i.阶段划分、分而治之、控制开发过程的复杂性ii.自顶向下、由抽象到具体,顺序进行优点:规范管理开发过程、文档驱动缺点:初期系统的需求难以完全确定、文档驱动、周期长b)原型模型:i.针对:软件开发初期需求难以确定ii.基本思想:快速建立原型,完善用户需求iii.优点:用户参与、快速iv.缺点:快速弱功能、对开发环境要求高c)螺旋模型(风险驱动)d)增量模型(模块、功能驱动)e)迭代模型f)喷泉模型5、软件管理a)区别于其他工业产品生产管理的特点b)主要内容:开发计划与进度管理、文档管理、人员组织管理、成本管理、质量管理传统软件工程方法:a)软件计划i.问题定义ii.可行性研究 1.经济可行性2.技术可行性3.法律可行性a)需求分析i.结构化分析SAii.面向数据流的分析方法1.DFD四个组成部分(表示方法、命名)2.DFD作图:需求描述DFD3.层次分解法(保持父图和其子图的平衡)4.数据字典(符号)b)软件设计i.总体设计1.模块独立性:高内聚2.作用域是控制域的子集3.单入单出4.规模、深度、宽度、扇入、扇出适当ii.传统设计方法1.面向数据流的设计方法(数据流图)a)结构化设计SD-对应有SD结构化需求分析、SP结构化实现b)DFD软件结构(层次图)i.变换设计ii.事务设计c)优缺点2.面向数据结构的设计方法a)Jackson方法b)Jackson图i.三种元素间的逻辑关系:顺序、选择、重复ii.可描述两种数据结构:数据结构、程序结构c)思想:数据结构与程序处理过程相互转换d)步骤:I/ODS对应关系ProgramStructure细化求精e)优缺点:i.数据入手ii.简化数据处理程序的设计iii.模块与独立性原则没有给予应有的重视iv.求提供对复杂系统设计过程的支持3.Parnas方法iii.详细设计1.结构化程序设计SPa)高效率---良结构b)三种基本控制结构、单入单出2.过程设计的工具c)实现/编码i.语言1.功能等价2.描述问题方便性有差异a)例如:OOPL---非OOPLii.程序设计风格 a)软件测试i.目标ii.方法1.正确性证明2.静态测试3.动态测试a)黑盒(功能)测试i.等价类划分ii.边界值分析iii.错误推测b)白盒(结构)测试i.语句覆盖ii.判定覆盖iii.条件覆盖iv.判定—条件覆盖v.条件组合覆盖iii.步骤b)软件维护i.四种类型1.校正性2.适应性3.完善性4.预防性ii.提高可维护性的措施面向对象方法(Object-orientedMethod)a)OOM与CM对比:区别—优点i.思维方式iv.稳定性ii.可重用性v.可维护性iii.大型软件b)OOSE方法i.三个阶段、五个模型、ii.USECASE第二章.传统软件工程方法:软件计划具体任务:项目定义、可行性分析、软件计划其中:可行性分析:1、可行性研究实质:可行性研究试一次大大压缩和简化了的系统分析和设计过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计过程。2、主要内容:a)经济可行性:资金有无落实、成本一效益分析b)技术可行性:开发的风险、资源的有效性、技术方案c)操作可行性:用户组织内的管理制度、人员素质、操作方式等是否可行。d)法律及社会可行性e)开发方案的选择:折衷手段权衡。 3、可行性研究的主要步骤:a)复查系统规模b)研究正在使用的旧系统c)导出高层逻辑模型d)重新定义问题e)导出多种解法f)推荐行动方针g)草拟开发计划h)书写文档并提交审查系统流程图(物理建模工具):会读、读懂。同号名梆猊用翻存幅表示任何节至二联郡有常巨荒近垂.三里和包存牖牛一-»处理能骸触摄或飕@1帧工嵇电如sm.姐in为漫处基躺凝瑜出.炯朴存ME皿版件翻身信LJ殖摘出标断甘鼬.『个广义的稗翔邸爸的瓠CJ显示CRT羯㈱豳的际麟.可用节人.萼也也可吃稳人又追日0蹑指出懒豳另一部分烹卜聆月T邛慈通常桐F上AIBK人工输•燃解胞腺理如转表轨0指出黜另一班自由颓困转杀人工触人工则处理,如却在工慌支事二招□飒腓便就跷制眼硒也<助髓麻野甦港,砂腕.祖方巳41^0壮城侬睫婕.烘通青所打绵H炯衍则照烟入蠕数据流图:概述?描绘系统的逻辑模型的工具?DFD:DataFlowDiagram?描绘信息流和数据从输入移动到输出的过程中所经受的变换数据从哪里来,到哪里去,经过怎样的处理,保存在哪里?没有任何具体的物理部件,只是描绘数据在软件中流动和被处理的逻辑过程。是系统逻辑功能的图形表示。?是分析员和用户沟通的工具是后期设计的出发点数据源点/终点处理数据存储数据流 A数据A和R同时输入才能B。丁尸工变换成数据C二T4■故据A变换成B和CC其、数据A或B,或R和B同B£T」时输入变换成C,%数据A变换成B诫C.或B一T》匚和匚.A只有翻据A或只有数据B:T—SC但不能A.B同时)输入@4一"时变换成C具4数据A变换成B或C.但不一*,飞能变换城B和CDFD的绘制一般采用自顶向下、逐步细化的方法,主要步骤如下:•明确系统界面。识别出那些不受系统控制但又影响系统运行的外部环境。•绘制基本系统模型。基本系统模型由若干源点、终点和一个基本处理组成,表明系统对数据加工变换的基本功能。•逐层细化基本系统模型得到功能级DFD和详细DFD。下面即分层数据流图。假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于每个需要再次定货的零件应该列出下述数据;零件编号零件名称、定货数量、目前价格、主要供应者和次要供应者。零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货。从问题描述中提取数据流图的四种成分。首先考虑数据的源点和终点:?“采购部每天需要一张定货报表”?“通过放在仓库中的CRT终端把事务报告给定货系统” 可知:采购员是终点仓库管理员是源点接下来考虑处理:?“采购部每天需要一张定货报表”-采购部需要报表?“零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。”--事务的后果是改变库存量可知:产生报表是一个处理处理事务是另一个处理最后考虑数据流和数据存储:?系统把定货报表送给采购部----定货报表?事务需要从仓库送到系统中----事务----需把事务数据存储起来产生报表和处理事务在时间上不匹配,当某种零件的库存数量少于库存量临界值时就应该再次定货,而每天打印一次定货报表-----需把定货信息存储起来可知:定货报表、事务是数据流(数据流如报表包含零件编号零件名称、定货数量、目前价格、主要供应者和次要供应者等信息。事务包含零件编号、事务类型、数量等。)库存清单、定货信息是数据存储基本系统模型:功能数据流图:注意符号 小雷存清单m定货信良进一步分解处理事务:[才帚请,定附/或*侑息,I信息命名1)为数据流(或数据存储)命名?名字应代表整个数据流(或数据存储)的内容,而不是仅仅反映它的某些成分?不要使用空洞的、缺乏具体含义的名字(如“数据”、“信息”、“输入”之类)?如果在为某个数据流(或数据存储)起名字时遇到了困难,则很可能是因为对数据流图分解不恰当造成的2)为处理命名?通常先为数据流命名,然后再为与之相关联的处理命名,体现了人类习惯的“由表及里”的思考过程?名字应该反映整个处理的功能?名字最好由一个具体的及物动词,加上一个具体的宾语组成。?通常名字中仅包括一个动词?如果在为某个处理命名时遇到困难,则很可能是发现了分解不当的迹象,应考虑重新分解应注意的问题1)是数据流不是控制流画数据流不是控制流;数据流图反映系统“做什么”,不反映“如何做”,因此箭头上的数据流名称只能是名词或名词短语,整个图中不反映加工的执行顺序。2)一般不画物质流数据流反映的是能用计算机处理的数据,并不是实物,因此系统的数据流图上一般不要 画物质流。3)加工的画法每个加工至少有一个输入数据数据流图的用途:1)建立新系统逻辑模型的工具2)作为与用户和开发人员交流信息的工具3)作为分析、设计乃至维护的依据数据字典:概念?数据字典是关于数据的信息的集合?DD:DataDictionary?是对DFD中包含的所有元素的定义的集合?在分析、设计和维护过程中供查阅用内容1)数据流2)数据流分量(即数据元素)3)数据存储4)处理(IPO图或PDL更加方便)一一是对上述四类元素的定义具体信息?名字一一数据、控制项、数据存储或外部实体的主要名称(例如作?别名一一该元素等价的其他名字,尽量减少?使用地点与方式一一使用数据或控制项的处理的列表,以及使用这些对象的方式为处理的输入,从处理输出,作为数据存储,作为外部实体)?内容描述一一描述数据或控制项内容的符号?补充信息一一关于数据类型、预置值、限制等的其他信息复杂数据一般由数据项按顺序,选择,重复,可选的方式组成.进行描述时,使用下列符号:符号含义举例r被定义为1+与r=a+bJ或卜或x=®b],x=[a]b]{…}或重复x={a}tx=3{a}8(-)可选x=(a)基本数据元素ka** 5、数据字典的实现名字;定货报表别名]定货信息搐逑:每天一次送蛤果购员的需要定货的零件表定义।定寅报表二器件编号+零件名棘+定货数■*目前饰格,主K供应者+次要供应者ttX:看出到打印机名字,W号翳为描述:唯一地标识库存清单中一个特定零件的关健域定义t零件博号=81字符阳位置:定黄报哀定货信息库存清单事务猴;翻髓描述:某个零件一次定货的数■定义;定货效±1{数字)5位置i定货报表定货信息软件项目的量化估算成本估算&工作量估算工程进度安排行成本估算阶段成本估算甘特图:历史悠久、应用广泛的进度计划工具进度安排的任务网络图优点:简单,能动态地反映开发进展缺点:难以反映多个任务间的逻辑关系 第三章.传统软件工程方法:需求分析需求分析1目标和任务2需求获取技术3需求内容4需求建模方法需求分析任务问题分析需求描述需求评审需求建模方法1.面向数据流的分析方法2.面向对象的分析方法3.面向数据结构的分析方法需求工程的任务需求开发包含四个过程:需求获取、需求整理与分析、需求定义、需求验证。需求分析的具体任务:需求获取、确定和分析需求、开发原型系统、编写SRS需求验证、变更管理、修正计划软件需求及需求的分类软件需求:以一种清晰、简洁、一致且无二义性的方式,描述用户对目标软件系统在功能、行为、性能、设计约束等方面的期望,是在开发过程中对系统的约束。(表达做什么而不描述如何做。)RequirementistheBasicsofQuality,软件需求的作用:①分理解现实中的业务问题,并作为软件设计的基础;②为软件项目的成本、时间、风险估计提供准确的依据;③少开发工作量,避免将时间与资源浪费在设计与实现错误的需求上;④通提供需求文档和需求基线,来有效的管理系统演化与变更;⑤为顾客与开发团队之间正式合同的一部分;⑥最终的验收测试提供标准和依据需求的分类: 业务需求业务需求指导需求获取用户需求转化用户需求为系统需求系统需求前四个为原始问题空间、后面系统需求为解决方案空间。业务需求(BusinessRequirements:)客户对于系统的高层次目标要求(highlevelobjectives),定义了项目的远景和范畴(visionandscope)1、业务:属于哪类业务范畴?应完成什么功能?为何目的?2、客户:软件为谁服务?目标客户是谁?3、特性:区别于其他竞争产品的特性是什么?4、价值:价值体现在那些方面?5、优先级:功能特性的优先级次序是什么?用户需求(UserRequirements):从用户角度描述的系统功能需求与非功能需求,通常只涉及系统的外部行为而不涉及内部特性。系统需求(SystemRequirements,SR:)系统应该提供的功能或服务,通常涉及用户或外部系统与该系统之间的交互,不考虑系统内部的实现细节系统需求的类型分:功能性需求:描述了系统与其实现环境之间的交互。环境包括用户和任何其他与该系统进行交互的外部系统。功能需求可以以不同的详细程度反复编写和细化功能需求描述应该完整而且一致和准确完整性意味着用户所需的所有的服务应该全部给出描述一致性意味着需求描述不能前后矛盾准确性是指需求不能出现模糊和二义性的地方非功能性需求:描述了不直接关联到系统功能行为的系统的方方面面。从各个角度对系统的约束和限制,反映了客户对软件系统质量和性能的额外要求,如响应时间、数据精度、可靠性等。可用性(Usability):是一种用户可以学会的操作、输入准备、解释一个系统或者构件输出的状况。可靠性(Reliability):是系统或构件在给定时间内、指定条件下,完成其要求功能的能力。性能(Peformance)需求要考虑系统的定量属性,比如响应时间,吞吐量、有效性和准确性。可支持性(Supportability):需求关注于在进行部署后系统的变化状况,比如包括可适配性、可维护性、可移植性等。 需求获取技术略需求分析:分析方法结构化分析方法SA核心思想是模块化,自顶向下逐步求精对系统进行分析。使用多个需求分析视图,建立系统的数据、功能和行为模型数据流图DFD加工说明PSPEC数据字典DD状态迁移图STD关联图E-R图面向对象分析方法OOA核心思想是利用OO的概念和方法对软件需求建造模型,以使用户需求逐步精确化、一致化、完全化。结构化分析建模(与SA区分),就是面向数据流的分析方法结构化分析方法是一种传统的系统建模技术,它提出来一组提高软件结构合理性的准则。结构化分析:使用数据流程图、数据字典、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化说明书的目标文档-需求规格说明书。结构化分析方法的要点是:面对数据流的分解和抽象;把复杂问题自顶向下逐层分解 结构化分析建模①数据模型I加工蠲格说明数据对象播逃控制热格说明②功能模型一③行为模型分折模型其中,只要求数据流图和数据字典。DFD是描绘系统逻辑模型的常用图形工具。它描绘了信息流和数据从输入端移动到输出端的过程中所经受的变换。在DFD中没有具体的物理元素,只是描述信息在系统中的流动、处理和存储的逻辑过程,表明系统必须完成的基本逻辑功能。DFD中只有四种元素,不包括任何有关物理实现的细节,所以,绝大多数用户可以理解和评价它。DFD是分析和设计的工具。模型图形工具描述附加文档核心数据字典使用或产生的所有数据对象①数据建模实体关系图数据对象间关系数据对象描述②功能建模数据添图数据移动怎样被转换变换数据流的功能加工规格说明③行为建模状态转换图系统行为模式(状态)不同状态间转换的方式控制规格说明实体关系图一E-R图数据流图--DFD图状态转换图一STD图 DFD组成成分:(2)命名数据流(数据存储)表格、单卷名称代表性数据名称使r理解的名称错误命名控制流实物加工/处理顶层:软件项目名动宾结构错设命名意义空洞的动词(计算,处理,加工)(3)层次分解法父图一子图平衡父图一子图不平衡(4)加工分解原则 a)1加工<7子加工b)按问题的逻辑特性分解c)尽量少分解层次d)分解均匀模型中还需要描述数据是如何被加工处理的:1、结构化语言2、判定表3、判定树判定表:13-471$~gnCC_CYYYLL‘性别IMMMMiM姐他一SE—sE«一A类保的P0>生成.itftsB的在上用的星号优点便于表示层次结构,结构的自顶向下分解,直观,可读性好数据入手简化数据处理程序的设计既能表示数据结构,也能表示程序结构缺点没有表示条件,不易直接把图翻译成程序,斜线不易打印模块与独立性原则没有给予应有的重视 求提供对复杂系统设计过程的支持改进的Jackson图选舞结构注;顺序结构中的B、C.D中任--个都不能是选拧山现或宣黑出现的元素可选结构表示A或者是元素B或者不出现重复结构Jackson方法1.画数据结构的Jackson图2.找输入一输出数据结构的对应关系3.以输出数据结构为基础,导出程序结构的Jackson图有关系的数据单元--合画一个处理框输入数据结构中余下的数据单元--各画一个输出数据结构中余下的数据单元--各画一个4.列出所有操作、条件5.伪码表不程序【例】统计正文文件空格数一个正文文件由若干个记录组成,每个记录是一个字符串,要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数.要求的输出数据格式是;每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数. 数据结构的Jackson图1层3层5层输出致据结构愉入数据结构I星2层3层」层程序结构的Jackson图5«空格.2)空榭kkii11衰格体I空陪叁敷】■■由1MN,1(1)文件结束1(2)字符串结束6(3)字符是空格sum空将政totalsum空格总敷pointer当项位置分配了所有操作、条件后的程序结构图 JACKSON的伪码表示程序(1)顺序结构AseqBCDAend(2)选择结构AselectconditionlBAorcondition2CAorcondition3DAend(3)重复结构Aiteruntil(或while)conditionBAend伪码表示程序处理过程筑计空格打开文件京八字栉申程序体ilur"Mil文件总束处题字将串Kq印字符串变q印出字符串印字普昂EdMinn-I)piiatcr!=I分析字符申until手卷♦嫡束分析字符、由出字符是空格处―*iuut=+um*EpoinRn=puiuirrtL处0空修闻4分析字符前字符不是空赣处通非空格yqpuinkr:^p-uiiileF+1处■非空将『词分析宇格ml分析学粉审md印空格Zl印出空格我目印空格敏的dtiimkumi=+■tiE该人字椅*处现字秘ed程序体w4印总H*(*q印出空格息薮即息效。地美南文件停止峡计生格vM 第六章.传统软件工程方法:实现与测试编码软件测试基础测试用例设计软件测试步骤与策略调试软件可靠性一、编码语言:1、语言的元计算模型等价一功能等价程序设计语言的特点及其对软件的影响:机器求解问题的基本工具:思维方式、解题方式、人机通信的方式、理解程序的难以程度选择程序设计语言的理想标准:模块化机制、语言特点、开发工具、独立编译机制、标准化选择程序设计语言的实用标准:系统用户的要求、工程规模、程序员的知识、软件的应用领域程序设计风格:“好”程序的标准源程序代码的逻辑简明清晰、易读易懂遵循原则:程序内部的文档、数据说明、语句构造尽量简单而直接、输入输出规则、效率效率:效率主要指处理机时间和存储器容量两个方面 关于效率的三条原则第一,效率是性能要求,应该在需求分析阶段确定效率方面的要求;第二,效率是靠好设计来提高的;第三,程序的效率和程序的简单度是一致的,不要牺牲程序的清晰性和可读性来不必要地提高效率三个方面程序的运行时间存储器效率输入输出效率二、软件测试基础测试目标:为了发现程序中的错误而执行程序的过程测试用例:一组用于测试的输入数据和预期得出的正确输出测试方案:测试用例和用例预定要检验的功能、测试环境的规划、测试工具的选择。测试计划:要进行的测试的组织、资源、风险、原则和进度安排等进行规定和约束测试阶段的信息流软件测试方法分:静态测试(人工检查代码,不在机器上运行)和动态测试(白盒与黑盒)。穷尽测试:(不可能,只能选少量”最有效”做到完备):包含所有可能情况的测试黑盒测试一一功能测试目的:功能是否正常使用?输入一正确输出?保持外部信息的完整性?时机:测试的后期,如:集成测试、确认测试 白盒测试关注软件内部逻辑结构(controlstructure)测试每条逻辑通路检查断点(breakpoint)状态测试方案对程序逻辑的覆盖程度决定测试的完全性程度时机:测试的早期,例如:单元测试成本高,通常对结构比较复杂的模块进行白盒测试三、测试用例设计黑盒法一一依据对程序的需求和说明等价划分法边界值分析法错误推测法白盒法逻辑覆盖控制结构测试用例是为某个特殊目标而编制的一组测试输入、执行条件、执行步骤以及预期结果等等。例如,系统登录界面:测试目标:输入正确的用户名和正确的密码是否有正确的反应.测试环境或条件:idndoirs操作系统和XXX软件,等等输入数据:正确的用户名和正确的密码」步骤:打开系统,输入正确的用户名,输入正确的密码,点击”登录”,显示登录成功,用户进入系统期望结果:登录成功黑盒测试技术a.黑盒(功能)测试i.等价类划分ii.边界值分析iii.错误推测 白盒测试技术白盒测试技术是基于程序的内部实现结构和逻辑寻找软件中的缺陷覆盖准则可以作为测试停止或/和选取测试数据的标准软件测试的步骤与策略一工分计码统求设编ST单元测试/一集成测试<-确认测试.-系统测试平行运行关系重大的软件产品在验收之后往往要经过一段平行运行时间的考验.___ 第七章.传统软件工程方法:维护。软件维护的概念和内容软件维护的过程软件的可维护性软件再工程过程一、软件维护的概念和内容定义:就是在软件已经交付使用之后,因为下列原因而修改软件的过程。软件中的bug需要修复——改正性维护软件在使用过程中,新的需求不断出现——完善性维护商业环境在不断地变化、计算机硬件和软件环境的升级需要更新现有的系统—适应性维护软件的性能和可靠性需要进一步改进——预防性维护类型:校正性维护/纠错性维护(correctivemaintenace)适应性维护(adaptivemaintenance)完善性维护(perfectivemaintenance)预防性维护(preventivemaintenace)维护的代价:表面上看来合理的改错或修改不能完全满足用户的要求,就会引起用户的不满。由于维护时对软件的改动,哪怕是很小的改动,在软件中也会引入潜在的隐患或错误,使得整个软件的质量降低,特别是不可再现错误。在开发工作期间,由于工作需要必须把软件工程师调去从事维护工作,就会对开发工作造成不良影响。软件维护会使生产率大幅度下降维护中的问题阅读和理解问题人员问题文档资料软件的修改软件维护相对于软件系统开发工作来说则毫无吸引力二、软件维护过程软件维护过程定义:本质上是修改和压缩了的软件定义和开发过程。建立维护组织提出维护申请报告及评价 维护实施保存维护记录评价维护活动三、可维护性软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩的容易程度可维护性的决定因素可理解性可测试性可修改性可靠性可移植性可使用性效率。提高可维护性的措施需求分析■编码清晰、易读、结构好编码规则.风格T易修改SP设计口通用性高的PL结构层次清晰.独立性测试强.修改局部化测试充分灵活的数据逻辑结构才产「一适应处理的变化乂归维护的副作用修改软件后导致新错误的发生编码的副作用数据的副作用文档资料的副作用完善的设计文档资料可以减少数据的副作用。利用文档资料对数据及其用途所作的详细描述,提供了数据项、记录、文件及其他结构与软件模块间相关的参照表,是维护期间对数据结构进行修改的主要依据。第七章软件管理软件管理内容 开发计划与进度管理成本估算与控制人员管理、组织管理匚二日.右质量管理文档管理软件管理原则软件生存期按阶段确认质量检查自顶向下SP/OOP职责分明人员少而精不断充实软件管理特点知识密集,非实物性单品生产,开发过程不确定开发周期长内容复杂,正确性难保证劳动密集,自动化程度低软件用法繁琐,维护困难,费用高指定软件开发计划三要素:规模人员交付日期进度安排与控制软件开发进度安排,实际上就是对软件开发中各个阶段所需要的工作量,结合项目的起始时间,体现在一张编制的进度表里(甘特图)。软件开发的进度往往与人的因素有关,对人的依赖性很大。进度控制是对计划执行情况的监督、调整和修改。成本管理与控制工时数成本管理开发设备的购置、使用管理 人员管理、组织管理人员管理高技术、高知识,个人作用突出多层次一一合理配备各类人员知识更新快流动性大一一保持人员相对稳定,吸引优秀人才组织管理集中式一一易决断、易管理,难发挥多数人的积极性非集中式一一发挥大家主观能动性、难管理质量管理软件生产分阶段规范化合理分工度量软件质量的标准 文档管理文档分类f用户文档(功能描述安装文档Y使用「册参考手册L操作员指南r基础文档I系统文档J过程文档L支持文档文档管理工具第八章--面向对象方法学引论面向对象方法学概述面向对象的概念面向对象建模一、面向对象方法学概述OO和PO的本质区别是:对象是一元的还是过程是一元OOM四要素:1对象2类3继承4方法与消息 OOM的特点尽可能模拟人类习惯的思维方式问题域与求解域在结构上尽可能一致以数据或信息为主线,把数据和处理结合构成统一体一—对象软件系外-系列离散的咽卷且>集合程序画)一系列工作在数据上的函数集合统)相互协作又彼此独立的对象的集合二、面向对象的概念对象:对象是一个程序模块,该模块由一组操作构成的集合对象是对问题域中某个东西的抽象,这种抽象反应了系统保存有关这个东西的信息或与它交互的能力。对象是一台自动机对象特点数据为中心主动的数据封装并行性模块独立性好继承的优点共享程序代码和数据结构减少了冗余信息修改方便扩充:调用基类方法并增加代码改变:改写同名方法新增:定义新方法软件重用OOM的主要优点与人类习惯的思维方法一致CM 面向过程设计,以算法为核心,送数据到函数数据与操作分离,不易理解OOM以object为核心,强调对现实概念的模拟而不强调算法“面向对象方法学的基本原则,是按照人们习惯的思维方式建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统”数据和操作封装成统一体,送消息到对象稳定性好Cm结构依赖于功能,不稳定功能需求变,易引起软件结构整体修改Oom软件系统结构根据问题域模型建立以object模拟实体,实体相对稳定,故系统也相应稳定需求变化不会引起结构的整体变化,只需局部性修改可重用性好CM过程(函数)是重用层建立标准函数库来重用软构件标准函数缺乏“柔性”,难以适应不同场合的不同需要功能内聚的模块不是自含和独立的OOM类是重用层object具有较强的自含性和独立性object和class提供了理想的模块化机制和可重用的软件成分继承性为OOM提供了比CM更广泛、更规范、更简单的重用机制可维护性好CM开发出来的软件难维护OOM稳定性好:功能需求变化不牵动全局,只需局部修改容易修改Class独立性强Inheritance和多态性(polymorphism)容易理解容易测试、调试较易开发大型软件产品,对系统的复杂性具有较强的处理能力CM组织开发人员的方法不恰当强调自顶向下功能分解,限制了可重用性,重复工作,生产率低 GUI的交互式系统、好的SD将控制集中在高层模块,因而对于复杂系统、控制要求突出的系统,不能适应需求的变动OOM把一个大型产品看作是一系列本质上相互独立的小产品来处理降低了开发的技术难度,而且也使得对开发工作的管理变得容易自底向上分析和设计,自顶向下实现(继承),可重用性好OOM并不是减少了开发时间,而是通过提高可重用性、可维护性,进行扩充和修改的容易程度等,从长远角度改进了软件的质量OO建模方法Booch的面向对象开发方法OOA和OOD法对象建模技术(OMT)Rumbaugh方法(OMT)税面向对象的建模与设计”三个模型步骤:分析(面向对象)系统设计(传统方法)对象设计(面向对象)实现[特点:I概念严谨,阐述清楚过程具体,可操作性强包含了许多非oo的内容■提出若干扩充概念,偏于复杂,面向对象软件工程(OOSE) Jacobson方法(OOSE)三耕对氟实体对象界面对象控制时*三堆的分析模型四维的世计粳型行为“通过用例描述用户需求值感用交互图描述对象之同的交互四例驱动的睡统一建模语言UML对象模型技术(OMT)动态模型(控制结构)对象模型(OM)结构:归纳关系组合关系关联关系(看书!)动态模型(DM)于事件共享而互相关联的一组状态图的集合表示系统瞬时的控制性质 三要素事件(event):引发object状态改变的控制信息(瞬时)状态(status):即object的attributes所处的情形(可持续)行为(action):Object要达到某种status所做的操作(耗时)功能模型(FM)表明系统应该做什么数据流图IPO图OOM的工作重点在分析阶段,确定objects三模型关系FM:做什么(What)DM:何时做(When)OM:操作的实体(Who)面向对象程序设计语言(OOPL)优点一致的表达方式可重用性好可维护性好类型检查按编译时进行类型检查的严格程度,分为强类型(每个变量(属性)必须准确属于某个类)弱类型(仅要求每个变量(属性)隶属于一个对象)开发软件产品■■(强类型编译型语言QI弱类型解释型语言O快速开新型面向对象分析(OOA)1提取用户需求一理解表达验证2.建立三个模型一OMFMDM OOA的五个层次CategoryIClass-&-ObjectjStructure•Attribute!MethodIggg类与对象层结构层一金不类的边界目一实例的边界泛化与特化结构整体和部分结构主题层属性层实例连接属性服务层服务消息连接3.OM的五个层次Coad&Yourdon,1991相当于把五张透明胶片(transparencies)叠在一起,每一层显示更多的细节 OOA大体顺序寻找类-&-对象、识别结构《识别主题《定义属性Class-&-Object形容词->Attribute动词->Method列出候选Cla§s・&-Object某银行拟开发一个自动取款机系统,它是一个由自动取款机、中央计算机、分行计管机及柜员终端组成的网络系统.ATM和中央计算机由总行购买.息行拥有多台ATM,分别设在全圭各主要街道上.分行负责提供分行计算机和柜员终端.柜员终话设在分行营业厅及分行下属的各个橘蓄所内.该系统的找性开发威杰由各分行分摊。4艮行柜员使用柜员终造处理储户白交的储蓄事务。储户可以用使金或支票向自己拥有的某个超内存款或开新帐户.储户也可以从自己的帐户中取款。通常.一个储户可能拥有多个帐户。柜员负责把储户提交的存款或取款事务输进柜员终孤,接收储户交来的现金或支票,或付给储户现金。柜员终站与相应的分行H算机通信,分行计算机具体处理针对某个帐户的事务并且维护帐户。拥有银行行户的储户有权申请领取现金兑换卡。使用现金兑换卡可以通过ATM访问自己的帐户。目前仅限于用现金兑换卡在ATM上提取现金,或杳询有关自己帐户的信息(如帐户余额).将来可能还要求使用ATM办理转帐、存款等事务. 列出候选Qass・&-Object所谓现金兑换卡就是一张特制的磁玉,卜而有分行代码和卡号。分行代码唯一标识总行下属的一个分行,卡号确定了这张卡可以访问哪些帐户。通常,一条卡可以访问储户的若干个帐户,但是不一定能访问这今储户的全部帐户。每张现金兑换卡仅属于一个储户所有,但是,同一张卡可能有多个副主.因此必须考虑同时在若干台ATM上使用同样的现金兑换卡的可能性.也就是说.系统应该能够处理并发的访问。当用户把现金兑换卡插入ATM之后,ATM就与用电交互,以获得有关这次事务的信息,并与中央计算机交换关于事务的信息.首先,ATM要求用户榆入室妇,接下来ATZ把从这张卡上读到的信息以及用户输入的密码传给中央计算机,请求中央计算机核对这些信息并处理这次事务。中央计算机根据卡上的分行代码确定这次事务与分行的对应关系,并且委托相应的分行il算机胶证用户密码。如果用户输入的密码正确,ATM就要求用户选择事务券型(取款、查询等)。当用户选择取款时,AIM请求用户输入取款额。最后,AIM从现金出口吐出现金,并且打印帐单交给用户。(1)确定Class・&-Object第2步:去粗J仅精例:从aim需求分析中提出的名词集合避经孤)谢络、遹5X02。■6X卡可丁诉丁丽0娄垢取款额、xwrxWW、筛选时依下列标准删除:外冗余■无关♦笼统不属性争操作既可为名词乂可为动诃的诃,应慎里考虑呆实现 (2)确定关联=结构层收集RequirementStatement中的动词词组根据问题域知以得出关联筛选删除删除的class之间的关联与问题无关/在实现阶段考虑的关联反映瞬时事件的关联三元关联=二元关联冗余的关联在,亲正名、分解、补漏、标明阶数(3)划分主题L总行注意:⑴按时港域而不是按功能分解2分行②主题问的依赖和交互尽可能少3.ATM (4)确立属性Attribute不表示objects之间的关系,只表示其本质性质,不要与链属性、限定词混淆行不考虑纯用于实现的attributes(即单纯的内部状态)需求陈述中与已确定的objects有关的名词、形容词可能是选择的线索(5)识别继承关系两种建立继承关系的方式自底向上(Bottom-up)归纳induction将具有相同属性的ckme响上归纳出父类自顶向卜(Top-down)演绎deduction将现有classes向卜细化出子类(但分析阶段避免过度细化)^^irWn;d__iA__A_;|AT1VI|;,柜区或瑞I帼善新jl柜巨言务I; (6)反复修改若某class中具有儿个独立的功能,则考虑分解为几个classes对于某class中具有自己特有属性的部分,可考虑将之列为独立存在的class,且是原有class的组成合并无须分别考虑的若干classes修改建立OM合并1*日期柜员事苏远程事齐柜员:金嵌;类型组成组成y更价启动姓名发放拥有分储户姓名地址卡号现金兑换卡分仃代行 5.建立DM6.建立FMDFD+TPO+Pseudocode7.定义服务DFD中的process对应methodOOA的重要性OOA的工作重点在分析阶段,确定objects生命周期的各阶段可以“无缝”连接OOA与Prototyping结合使用效果好面向对象设计(OOD)OOAOOD需求陈述>需求系统实现方案(问题域模型)(求解域模型)两个阶段:系统设计对象设计界限模糊,不严格划分 子系统设计I可题域/系统(ApplicationDomain)人机交互子系统(Human-ComputerInterfiice,HCI)任务管理f系统(TaskManagement)数据管理子系统(DataManagement)SD设计准则:模块化抽象信息隐藏模块独立性OOD设计准则:模块化件II块一类/对象)抽象(过程抽象数据抽象参数化抽象)信息隐藏(隐藏=对象封装)弱耦合(交互耦合尽量松继承耦合尽量紧)强内聚(服务内聚类内聚一般-特殊内聚)可重用(代码重用设计重用分析重用)可重用两方面含义:尽量使用已有的类创建新类时应考虑将来的可重用性 OOA/OOD:自底向上+自顶向下向上•OOAOOD(抽象)由底对象式软件系统,类库抽象类1卜特殊类I对象由顶实现(斛)向下面向对象实现步骤:OOA->OOD->OOP->OOT面向对象分析->面向对象设计-面向对象编码->面向对象测试 OO软件开发模型一喷泉模型维护期进一步开发面向对象设计阶段面向对象分析阶段运行状态集成和测试阶段编码阶段需求陈述阶段面向对象开发技术OOA/OOD:依据生命周期,按部就班的方法,便以执行线索途径寻找对象。OMT:建立在实体/关系模型基础上,并延伸到类、继承和操作。OOSE面向对象的软件工程,该方法建立在系列模式基础上,是一个操作性很强方法。面向对象软件工程(OOSE)模型及关系需求模型RRM:RequirementModel)分析模型(AM:AnalysisModel)设计模型(DM:DesignModel) 实现模型(IM:ImplementationModel)测试模型(TM:TestModel)RM&AM*需求分析DM&IMTM

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
最近更新
更多
大家都在看
近期热门
关闭