软件开发成本和进度估计不准确ppt课件_第1页
软件开发成本和进度估计不准确ppt课件_第2页
软件开发成本和进度估计不准确ppt课件_第3页
软件开发成本和进度估计不准确ppt课件_第4页
软件开发成本和进度估计不准确ppt课件_第5页
已阅读5页,还剩325页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.,1,本课程的安排CoursePlanning,授课时间:54学时考核方式(平时+作业)20分+(闭卷考试)80分,.,2,讲授的内容Contents,.,3,第1章软件与软件工程Chapter1Introduction,本章要讲的主要内容是:软件(Software)软件危机(SoftwareCrisis)软件工程(SoftwareEngineering)软件工程与计算机科学的关系(RelationshipbetweenSEandCS),.,4,1.1软件Software,软件的概念与特征软件的发展历程软件的分类软件开发的案例分析,.,5,软件的概念与特征,软件的定义软件是程序和所有使程序正确运行所需要的相关文档和配置信息。Software=Program+Data+Document,软件的特征软件是无形的(intangible)软件副本制作简单软件无磨损,.,6,软件的发展历程,.,7,软件的分类,基于不同工程对象划分基于软件规模的划分,.,8,基于不同工程对象划分,通用软件产品Generic-由软件开发机构制作,市场上公开销售,独立使用。(developedtobesoldtoarangeofdifferentcustomers)数据库软件、字处理软件、绘图软件、工程管理工具。定制软件产品Bespoke(custom)-受特定客户委托,由软件承包商专门制作。(developedforasinglecustomeraccordingtotheirspecification),.,9,基于软件规模的划分,微小型软件-一般都在2000行以内的程序长度。在开发过程中,不讲究开发方法和开发实施的步骤,没有相应的软件编写文档。中型软件-通常程序长度在500010000行之间,一般需要510人、持续一至两年时间开发,以团队方式采用统一的标准开发模式。大型软件-采用软件工程指导下的软件开发方法和遵循相应的开发规范,建立软件开发过程的文档,由上百、千人参加形成的庞大开发团队,不同领域的人员相互沟通合作。,.,10,软件开发的案例分析,系统软件-是一组为其他程序服务的程序。实时软件-管理、分析、控制现实世界中发生的事件的程序。商业软件-商业信息处理是最大的软件应用领域。工程和科学计算软件-这类软件的特点是一般具有数值计算。嵌入式软件-智能产品应用于所有的领域,嵌入式软件作用于这些智能产品,执行有限但专一的功能。个人计算机软件-用于个人的文字、图片、财务、娱乐等等方面的软件系统。人工智能软件-人工智能(AI)软件利用非数值计算解决复杂问题。,请给出相应的实例!,.,11,软件的未来与工业化,作坊式生产软件工业化CMMI认证,.,12,1.2软件工程,软件工程的概念软件工程的范畴软件工程的开发原则软件工程面临的挑战软件工程师的未来,.,13,问题分解的特征,.,14,软件开发过程中存在的问题,(1)软件需求急剧增长;(2)软件开发成本和进度估计不准确;(3)软件产品不满足用户需求;(4)软件难以维护;(5)软件价格昂贵;,.,15,软件工程的概念,中心思想:把软件当作一种工业产品,要求采用工程化的原理与方法对软件进行计划、开发和维护。目的:实现按预期的进度和经费完成软件生产计划,提高软件的生产率和可靠性。,.,16,软件工程框架,.,17,软件工程的范畴,.,18,软件工程开发的原则,分解信息隐蔽模块化标准化,.,19,软件工程面临的挑战,遗留系统交付上的挑战多样性的挑战,.,20,软件工程师的未来,软件工程人员应当遵守以下八条准则:(1)公众感(PUBLIC):软件工程师始终与公众利益保持一致。(2)客户和雇主(CLIENTANDEMPLOYER):满足客户和雇主的最大利益。(3)产品(PRODUCT):保证产品达到尽可能高的行业标准。(4)判断力(JUDGEMENT):具有公正和独立的职业判断力。(5)管理(MANAGEMENT):提倡合乎道德的软件开发和维护的管理办法。(6)职业感(PROFESSION):弘扬职业正义感和容易感,尊重社会公正利益。(7)同事(COLLEAGUES):公平对待和协助每一位同事。(8)自己(SELF):毕生学习专业知识,合乎职业道德的职业活动方式。,.,21,1.3软件过程模型,软件生存周期软件开发模型瀑布模型进化式模型演化模型形式化开发,.,22,软件生存周期,软件生存周期的概念:一个软件从计划起,到废弃不用止。软件生存周期包括:计划、开发、运行。,.,23,软件开发模型概念,软件开发模型的概念:为整个软件生存期建立的模型。,软件开发模型分类:瀑布模型进化式开发模型演化模型形式化开发模型,.,24,软件开发模型,1瀑布模型Thewaterfallmodel,.,25,瀑布模型的优点,阶段间的顺序性和依赖性推迟实现的观点质量保证的观点,.,26,瀑布模型的问题Waterfallmodelproblems,将项目生硬地分解成确切的阶段。Inflexiblepartitioningoftheprojectintodistinctstages对用户需求变更的相应困难。Thismakesitdifficulttorespondtochangingcustomerrequirements需求了解的好的时候,采用瀑布模型。Thismodelisonlyappropriatewhentherequirementsarewell-understood,.,27,2快速原型开发模型PrototypeModel,基本思想:先开发出一个原型系统给用户使用,通过用户反馈意见来不断修改系统直到最后成熟。让描述、开发、有效性验证活动并行执行。,.,28,原型模型,.,29,原型模型的优点,原型化模型突出一个“快”字。软件开发人员向用户提供一个“样品”,用户向开发人员迅速作出“反馈”。,.,30,建立原型系统的方法,原型系统仅包括未来系统的主要功能,以及系统重要的接口。开发原型系统尽可能使用能缩短开发周期的语言和工具。,.,31,3演化模型-增量模型EvolutionaryModel,.,32,增量模型的基本思想,每个增量提供系统功能的一个子集,一个增量完成并交付,部分系统功能可以提前交付使用。对增量中服务的分配取决于服务优先次序。最高优先权的服务首先被交付。第一个增量往往是核心的产品。开发者能通过对系统的经验帮助理解后面的增量需求和目前增量后续版本的需求变更。,.,33,Incrementaldevelopmentadvantages增量式开发过程的优点,客户无需等到整个系统的实现。客户可以将早期的增量作为原型,从中获得对后面系统增量的需求经验。项目总体性失败的风险比较低。最高优先权的服务接受最多的测试。,.,34,Example,使用增量式开发的字处理软件在第一个增量中发布基本的文件管理、编辑和文档生成功能;在第二个增量中发布更加完善的编辑和文档生成能力;第三个增量中实现拼写和文法检查功能;第四个增量完成高级的页面布局功能。,.,35,4演化模型-螺旋模型EvolutionaryModel,.,36,螺旋模型的基本思想,每一个螺旋周期(Spiralmodelsectors)包含四个部分:(1)确定目标,选择方案,设定约束条件,选定完成本周期所定目标的策略。(2)分析该策略可能存在的风险。(3)在排除风险后,实现本螺旋周期的目标。(4)评价前一步的结果,并且计划下一轮的工作。,.,37,螺旋模型的特点,每一阶段考虑技术风险。依赖于风险评估。,.,38,5形式化方法模型,转换模型(TransformationalModel)-是结合形式化软件开发方法和程序自动生成技术的一种软件开发模型。,.,39,转换模型,.,40,净室模型CleanroomModel,是一种形式化的增量开发模型。基本思想:力求在分析阶段就消除错误,确保正确,然后在无缺陷或“洁净”的状态下实现软件的制作。“盒”(Box)-每一增量是一个形式化方式表示。,.,41,净室模型,.,42,6基于组件的开发过程,.,43,Advantages优势,减少需要开发的软件数量降低软件开发成本降低风险软件快速交付,.,44,小结,软件软件工程软件过程模型,.,45,小结,瀑布模型原型模型增量模型螺旋模型形式化开发模型组件开发模型,新的开发模型RUP统一开发过程敏捷开发极限编程RAD快速的应用开发设计模式,.,46,思考题1,调查目前软件公司对软件开发过程中存在的主要问题。现代软件的分类。都知道哪些软件开发的方法?软件工程有意义吗?以上问题请于本周调查,下次课提问。,.,47,思考题2,为以下各系统提出合适的软件过程模型,阐述理由:(1)汽车防锁死刹车控制系统(2)一个支持软件维护的虚拟现实系统(3)大学记账系统,准备替换一个已存在的系统(4)一个位于火车站的交互式火车车次查询系统,.,48,第2章软件需求分析RequirementsAnalysis,需求分析的任务和分类;需求获取的相关技术;软件需求分析的描述模型;需求分析的方法;软件需求分析文档;软件的案例需求分析。,.,49,项目相关人员,涉及对项目有利益关系的人员,包括:(1)发现系统的潜在最终用户;(2)考虑系统打算支持的业务过程描述以及与这些过程相关的人员;(3)可能会受到系统引入的影响的人员;(4)使用系统的客户;(5)开发和维护系统的工程师和维护人员;(6)可能给系统添加需求的监管机构和认证机构等。因此,项目相关人员可能是系统最终用户和机构管理人员、工程人员、业务专家、工会代表等等。,.,50,Autoteller银行自动柜员机系统(ATM)的项目相关人员,当前银行客户其他银行代表硬件和软件维护工程师市场开发部银行管理者柜台职员数据库管理员信息安全管理员,.,51,需求的定义,需求应该是对系统应提供的服务和所受到的约束的描述。需求来自于用户,同时也是经过了开发人员抽象之后的需求。,.,52,Typesofrequirements需求种类,Userrequirements用户需求Statementsinnaturallanguageplusdiagramsoftheservicesthesystemprovidesanditsoperationalconstraints.Writtenforcustomers是用自然语言加图表的形式给出的关于系统需要提供哪些服务以及系统操作受到哪些约束的声明。,.,53,Typesofrequirements需求种类,Systemrequirements系统需求Astructureddocumentsettingoutdetaileddescriptionsofthesystemservices.Writtenasacontractbetweenclientandcontractor详细给出系统将要提供的服务以及系统所受的约束。,.,54,Userrequirements,ClientmanagersSystemend-usersClientengineersContractormanagersSystemarchitects,Systemrequirements,Systemend-usersClientengineersSystemarchitectsSoftwaredevelopers,客户管理者系统最终用户客户工程师承包商管理者系统体系结构工程师,系统最终用户客户工程师系统体系结构工程师软件开发人员,用户需求,系统需求,.,55,用户需求和系统需求描述,.,56,系统需求的描述方面,Functionalrequirements功能性需求Non-functionalrequirements非功能性需求Domainrequirements领域需求,.,57,Functionalrequirements功能性需求,Thesearestatementsofservicesthesystemshouldprovide,howthesystemshouldreacttoparticularinputsandhowthesystemshouldbehaveinparticularsituations.包括对系统提供的服务、如何对输入做出反应以及系统在特定条件下的行为描述。,.,58,Non-functionalrequirements非功能性需求,Non-functionalrequirementsrelatetoemergentsystempropertiessuchasreliability,responsetimeandstoreoccupancy.是指不直接与系统具体功能相关的一类需求,与系统的总体特性有关,如可靠性、反应时间和存储空间。,.,59,Domainrequirements领域需求,Thesearerequirementsthatcomefromtheapplicationdomainofthesystemandreflectcharacteristicsofthatdomain.来自系统应用领域的需求,反应该领域的特点。,.,60,Typesofnon-functionalrequirements,Productrequirements产品需求Requirementswhichspecifythatthedeliveredproductmustbehaveinaparticularwaye.g.executionspeed,reliability,etc.描述产品行为的需求,包括运行速度、可靠性等。,.,61,Typesofnon-functionalrequirements,Organisationalrequirements机构需求Rcessstandardsused,implementationrequirements,etc.起源于客户所在的机构和开发者所在的机构中政策和规定。,.,62,Typesofnon-functionalrequirements,Externalrequirements外部需求Reroperabilityrequirements,legislativerequirements,etc.包括系统外部因素和开发过程。,.,63,Non-functionalrequirementtypes,.,64,非功能性需求,.,65,需求分析的任务,(1)通过对问题及其环境的理解、分析和综合,建立分析模型(AnalysisModel)。(2)在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”(SoftwarerequirementSpecification,SRS)把用户的需求表达出来。,.,66,需求分析的步骤,.,67,需求的内容,(1)功能描述(2)性能描述(3)环境需求(4)界面需求(5)用户或人的因素(6)文档需求(7)数据需求(8)资源需求(9)安全保密(10)软件成本消耗与开发进度(11)质量保证,.,68,需求的特征,1.完整性2.正确性3.可行性4.必要性5.划分优先级6.无二义性7.可验证性,.,69,需求获取技术,需求获取面临的挑战主要是对问题空间的理解、人与人之间的通信,以及需求的不断变化。,.,70,需求分析中出现的问题,1交流障碍2问题的复杂性3不完整性和不一致性,.,71,需求获取的基本原则,1深入浅出2以流程为主线,.,72,需求获取的常用技术,跟班作业开调查会请专人介绍询问设计调查表,请用户填写查阅记录,.,73,需求分析建模,用例建模数据建模过程建模,.,74,用例建模,用例是系统开发中用来描述系统需求,从用户的角度描述系统的场景,概括有关参与者和用例信息的一个图形化模型,描述了系统、子系统和类的一致的功能集合,表示了角色和用例之间的关系,表现为系统和一个或多个外部交互者(角色)得消息交互动作序列。主要包括系统、用例、角色和关联。,.,75,UseCase用例图,一个用例可描述软件系统和一个外部角色(Actor)之间的一次交互。角色-可以使人、软件、硬件或其他与系统交互的实体。组成:系统、用例、角色、关联,.,76,UseCase用例图组成,用例名,系统,用例,角色,关联,.,77,Libraryuse-cases图书馆的用例,.,78,用例之间的关系,扩展关系若一个用例中加入一些新的动作后构成一个新的用例。,.,79,用例之间的关系,使用关系当一个用例使用另一个用例时,这两个用例构成使用关系。,.,80,用例之间的关系,组合关系用例之间存在类似的行为,或相互之间存在必要的关系,可以将相关的用例以封装方式加以组合。,.,81,数据建模,系统需求分析建模就是定义系统处理的数据的逻辑结构。比较广泛采用的数据建模技术是实体-关系建模,它描述了数据实体以及实体之间的关系和相关的属性。,.,82,基本图形,.,83,两个实体学生和教师的关系,.,84,实体(Entity),需要一个概念来抽象地表示一组类似事物的所有实例,称这个概念为实体。是需要收集数据和存储数据的人、地点、对象、事件或概念的类。可以归类为:人Persons:代理、承包商、客户、部门、分部、雇员、导师、学生、供应商;地点Places:销售地区、建筑物、房间、分支办公室、校园;对象Objects:图书、机器、部件、产品、原材料、软件许可证、软件包、工具、汽车模型、汽车;事件Events:奖励、取消、分类、飞行、开发票、订单、注册、续借、获取、预定、销售、旅行;概念Concepts:帐号、时间段、债劵、课程、基金、资格、股票。,.,85,E-R图,描述各种数据之间的关系。组成:长方形-数据对象(实体)菱形-数据之间的关系,.,86,Example,.,87,状态转换图(STD),描述软件状态的变迁。矩形-系统状态;箭头-状态的转变方向。,.,88,STDExample,.,89,.,90,对象-行为图,.,91,过程建模,数据流图从数据传递和加工的角度出发,刻画数据流从输入到输出的移动和变换过程,它能够清晰地反映系统必须完成的逻辑功能。,.,92,DFD数据流图的组成,圆框-加工箭头-数据流向方框-数据的源点和终点双杠或单杠-数据文件或数据库,数据文件,.,93,Example,.,94,数据字典(DD),数据的三种情况:数据项-只含一个数据或数据元素;数据流-由多个相关数据项组成;数据文件或数据库。,.,95,数据项,.,96,数据流,.,97,数据文件,.,98,加工说明,结构化语言自然语言加上结构化的形式。判定表或判定树适用于表达含有复杂判断的加工逻辑。,.,99,例判定表,.,100,例判定树,.,101,exercise,某校的课酬计算方案为:基本课酬20元;班级人数超过60人,增加基本课酬的10%;班级人数超过80人,增加基本课酬的20%;教师为副教授,增加基本课酬的10%;为教授,增加基本课酬的20%;见习助教,减少基本课酬的10%。请用判定表描述上述问题的加工逻辑。,.,102,.,103,需求分析建模,结构化分析模型,.,104,结构化分析方法,SA(StructuredAnalysis)结构化分析:是使用DFD、DD、结构化语言、判定表和判定树等工具,来建立结构化说明书(SRS)。,.,105,自顶向下、逐步细化Top-DownStepwiseRefinement,从系统的基本模型(把整个系统看成一个加工)开始,逐层地对系统进行分解。酶分解一次,系统的加工数量就增多一些,每个加工的功能也更具体一些。继续分解,直到所有的加工都足够简单,不必再分解为止。,.,106,三层的数据流图,(1)顶层的数据流图,.,107,(2)第二层DFD图,.,108,(3)第三层DFD图,.,109,DFD图的基本要求,父图和子图平衡;区分局部文件和局部外部项;分解的步子应均匀,不应过快,可分解为24个子加工,最多不超过7个;遵守加工编号。,.,110,Example-DFD,顶层数据流图,.,111,Example-DFD-第二层数据流图,.,112,Example-DFD-第三层数据流图,.,113,需求分析的建模,面向对象分析模型,.,114,面向对象分析方法,定义用例领域分析类/对象建模(1)确定分析模型中的类/对象(2)定义类的结构与层次(3)定义主题或子系统建立对象-关系模型-对象层次模型建立对象-行为模型-序列图,.,115,定义用例,确定系统角色(1)使用系统主要功能的人(2)借助系统完成日常工作的人(3)维护、管理系统、保证系统正常工作的人(4)涉及的设备(5)外围系统(6)其他感兴趣的人,发现一组系统的用例(1)角色需要从系统中获得哪些功能(2)发生的事件需要通知系统(3)角色需要读取、产生、删除、修改或存储的信息(4)输出、输入的信息(5)当前存在的问题,.,116,类/对象建模,(1)确定类/对象(2)定义类的结构与层次(3)定义主题或子系统,.,117,(1)确定类/对象,(1)必要的信息(2)需要的服务(3)多个属性(4)公共的属性(5)公共的操作(6)必要的需求,考察系统的使用实例;将名词或名词短语汇总;分析特征,确定哪些应包含在分析模型中。,.,118,类/对象图,.,119,(2)定义类的结构与层次,一般-特殊(泛化Generalization)对类进行分类。,整体-部分(聚合Aggregation)类的组成关系。,.,120,对象模型的关系表示,泛化关系-一般到特殊聚合关系-整体到部分,.,121,(3)定义主题或子系统,类模型的某个子集相互协作共同完成一组内在功能时,可以将其定义为主题或子系统。,.,122,对象模型技术,对象模型,对象-关系模型,对象-行为模型,三个模型之间的关系,.,123,对象-关系模型,关系存在于任意两个相关联的类之间,可以通过检查对系统的范围或用例的陈述中的动词或动词短语导出。(1)找出存在的关系网络,用线连接;(2)连线上表示基数。,.,124,Userclasshierarchy,.,125,Objectaggregation课程的聚合对象,.,126,对象-关系图,.,127,对象-行为模型,对象行为模型用于描述系统的动态行为,即系统如何应对外部事件。(1)对用例理解系统的交互序列;(2)找出驱动交互序列的事件;(3)为每个用例创建事件轨迹;(4)为对象创建状态转换图。,状态转换图事件轨迹图,.,128,状态转换图,描述系统状态和事件,事件引发系统在状态间的转换。,.,129,Microwaveovenmodel,.,130,一个简单的微波炉状态机模型,.,131,事件轨迹图,事件轨迹图用于描述一个事件在各个对象之间的流动情况,可以显示整个系统的状态变化。,.,132,Issueofelectronicitems电子科目的发放,.,133,需求分析的文档,Introduction引言Glossary术语Userrequirementsdefinition用户需求定义Systemarchitecture系统体系结构Systemrequirementsspecification系统需求描述Systemmodels系统模型Systemevolution系统进化Appendices附录Index索引,.,134,小结,需求分析的任务需求获取的技术需求分析文档结构化分析方法面向对象分析方法,.,135,要求掌握的内容,结构化分析方法面向对象分析方法数据流图数据字典用例图对象模型-ERD状态图序列图,.,136,本次课堂练习,每名学生编写需求分析文档;文档中要有数据流图、数据字典;还有用例图、ERD、序列图。需求文档按所给的需求分析标准文档形式。,.,137,第3章软件设计,设计原则结构化设计方法面向对象的设计方法系统详细设计,.,138,软件设计的任务,软件设计的任务-把分析阶段产生的软件需求说明转换成用适当的手段表示的软件设计文档。,软件设计包括的内容:软件系统的体系结构设计;系统接口设计;数据结构设计;软件过程设计;系统界面设计。,.,139,软件设计的概念,模块-是一个拥有明确定义的输入、输出和特性的程序实体。抽象(Abstraction)-软件设计是在不同抽象级别考虑和处理问题的过程。过程抽象、数据抽象细化(Refinement)-分解过程。信息隐蔽(InformationHiding)-模块内部的数据和过程,应该对不需要了解这些数据与过程的模块隐藏起来。,.,140,模块化设计,分解任务P,分解为P1、P2两个子任务P=P1+P2C为问题复杂度C(P1+P2)C(P1)+C(P2)E为完成任务所需的工作量E(P1+P2)E(P1)+E(P2),.,141,分解,.,142,模块独立性(ModuleIndependence),模块独立性-把软件换份为模块时遵循的标准。度量-内聚、耦合内聚-模块内部各个成分之间的联系。(块内联系或模块强度)耦合-模块与模块之间的联系。(块间联系),.,143,内聚(Cohesion),.,144,偶然性内聚-块内各组成成分在功能上互不相关。逻辑性内聚-有若干个逻辑功能相似的成分组成。时间性内聚-由相同的执行时间连接在一起。过程性内聚-一组任务必须按照某一特定次序执行。通信性内聚-都使用同一种输入数据,或产生同一种输出数据。顺序性内聚-各组成部分顺序执行。功能性内聚-用于完成单一功能。,.,145,耦合(Coupling),.,146,非直接耦合-模块之间没有直接的信息传递。数据耦合-模块之间传递的是简单变量。特征耦合-模块之间交换的是数据结构。控制耦合-模块之间传递的是控制信号。外部耦合-一组模块访问同一个全局变量。公共耦合-一组模块访问同一个全局数据结构。内容耦合-一个模块直接调用另一个模块的数据或直接转移到另一个模块内部。,.,147,系统结构化,根据系统的分布情况可以将系统分解为一系列基本子系统,每一个子系统都是一个独立的软件单元,同时识别出子系统之间的通信。,.,148,控制模型,根据控制系统的各个部分之间控制关系,对系统进行有效地分解子系统,可以形成集中管理、分散控制的分解模型。,.,149,模块分解,对整体软件系统的结构进行分解,可以将软件系统形成层次分解的模块结构,确定模块的类型以及模块之间的调用关系。,.,150,体系结构的分类,容器模型客户机/服务器模型分层模型,.,151,容器模型,.,152,客户机/服务器模型,.,153,分层模型,.,154,设计方法,.,155,结构化设计方法,用DFD图表示的系统分析模型转换为数据结构的设计方法。,SC图组成符号:,.,156,数据流图的类型,变换型事务型,.,157,SD结构化设计方法,复审DFD图,可进行修改或细化。鉴别DFD图的类型。按照SD方法规定的一组规则,将DFD图转换为初始SC图。按照设计优化原则改进初始SC图,获得最终SC图。,.,158,变换映射,划分DFD图的边界;建立初始SC图的框架;分解SC图的各个分支。,.,159,例子EXAMPLE,第一步划分界限,.,160,第二步完成第一级分解,第三步完成第二级分解,细化SC图的各个分支,中心加工分支的分解,传入分支的分解,传出分支的分解,.,161,事务映射,在DFD图上确定事务中心、接受部分、发送部分;将DFD图的三个部分分别映射为事务控制模块、接受模块、动作发送模块;分解和细化接受分支和发送分支,完成初始的SC图。,.,162,.,163,结构化设计的优化原则,分割、合并、变动模块大小的指导原则保持高扇入(Fan-in)、低扇出(Fan-out)的原则作用域应在控制域范围内的原则,.,164,Example-DFD到SC的转化,本系统修改放在磁带中的一个主文件上,对文件做修改的信息放在卡片上,该系统读入一叠卡片,按卡片上的修改信息对磁带中的纪录作相应修改,然后产生新的主文件。,.,165,顶层数据流图,.,166,第二层数据流图,.,167,第三层数据流图,.,168,SC软件结构图,.,169,过程设计的原则,清晰第一的设计风格结构化的控制结构逐步细化的实现方法,.,170,Anobject-orienteddesignprocess面向对象设计过程,Definethecontextandmodesofuseofthesystem了解并定义上下文和系统的使用模式。Designthesystemarchitecture设计系统体系结构。Identifytheprincipalsystemobjects识别出系统中的主要对象。Developdesignmodels开发设计模型。Specifyobjectinterfaces描述对象接口。,.,171,系统上下文和使用模型,系统上下文模型是一个静态模型,描述环境中的其他系统;系统使用模型是一个动态模型,描述系统如何与环境交互的。,.,172,Subsystemsintheweathermappingsystem,.,173,气象制图系统中的子系统,.,174,Use-casesfortheweatherstation气象台的用例,启动,关机,报告,校准,测试,.,175,Use-casedescription报告用例的描述,.,176,报告用例的描述,.,177,体系结构设计,可以结合体系结构模型构造体系结构。,.,178,识别对象类,(1)对系统的自然语言描述作文法分析。对象和属性是名词,操作和服务是动词。(2)使用应用领域中的真实实体、职务、事件、交互、位置、机构单元等。(3)使用行为方法,对每个行为了解谁发起的和哪些实体参与了这个行为。(4)使用基于脚本的分析识别出系统使用的各个脚本,并以此对其进行分析。识别出对象、属性和操作。,.,179,对象和对象类,对象是由状态和在此状态上的一组操作构成的一个实体。状态由一组对象属性来表示。操作提供给其他对象相应的服务。对象通信通过向其他对象请求服务来实现。,.,180,Weatherstationobjectclasses,.,181,Designmodels设计模型,Staticmodelsdescribethestaticstructureofthesystemintermsofobjectclassesandrelationships静态模型通过对象类及其之间的关系来描述系统的静态结构。Dynamicmodelsdescribethedynamicinteractionsbetweenobjects.动态模型描述系统的动态结构和系统对象之间的交互。,.,182,Examplesofdesignmodels,Sub-systemmodels子系统模型说明对象的逻辑分组,每个分组构成一个子系统。静态模型Sequencemodels序列模型说明对象交互的序列。动态模型Statemachinemodels状态机模型说明单个对象如何相应事件来改变它们的状态。Othermodels用例模型说明系统中的交互,对象模型描述对象类,泛化或继承模型说明类是如何通过对其他对象的泛化得到的,聚合模型说明对象集合是如何关联的。,.,183,Weatherstationsubsystems,.,184,Weatherstationarchitecture气象台体系结构,.,185,Datacollectionsequence,.,186,Weatherstationstatediagram,.,187,对象接口描述Weatherstationinterface,.,188,数据设计,.,189,数据库设计,图书(图书号,书名,作者,出版社,出版日期,单价,借出标志)读者(借书证号,姓名,性别,身份证,联系电话,密码)借还书(借还时间,借还标志),.,190,图书数据模型设计,.,191,索引的建立,主键-能唯一标识该结点或该条记录。外键-能对该结点与其他结点联系的标识。借还书(借还时间、借还标志)外键-图书、读者,.,192,每一个数据文件结构,.,193,过程设计,为软件中的每个模块确定相应的算法及内部数据结构,获得目标系统具体实现的精确描述,为编码工作做好准备。(1)图形设计工具(2)表格工具(3)语言工具,.,194,程序流程图,.,195,功能模型设计,输入内容-用户对信息系统的录入。输出内容-信息系统对外的显示或打印。系统响应-信息系统对用户操作的处理过程。,.,196,功能点列表,.,197,用户界面设计,确认用户输入的信息响应的信息出错处理和显示信息提供帮助和提示处理窗口的滚动建立功能与界面、数据库表的关联建立应用程序与界面的分离,.,198,用户界面设计的特点,.,199,界面设计原则,.,200,设计方式比较,.,201,软件设计说明书,范围数据设计体系结构设计接口设计模块的过程设计其他,.,202,小结,软件设计过程体系结构设计接口设计数据结构设计算法设计用户界面设计,.,203,本次要求,完成设计文档设计文档中必须完成:功能点列表数据文件表界面设计图形表示(包含菜单、出错处理、结果响应等窗口的描述)。对主要的函数给出流程图描述。,.,204,第4章编码实现,编码风格编码语言的选择,.,205,编码风格,.,206,编码风格,使用标准的控制结构有限制的使用GOTO语句实现源程序的文档化满足运行工程学的输入输出风格,.,207,使用标准的控制结构,单入口、单出口标准结构ifcthens;Ifcthens1elses2;CaseIofa:s1;b:s2;n:sn;endcase,Whilecdos;fori:=mtondos;Repeatsuntilc;,.,208,有限制的使用GOTO-1,用GOTO语句实现提前退出循环;Whilec1dobeginifc2thengoto20;ifc3thengoto30;end;20:Goto40;30:40:,exit1:=false;exit2:=false;While(c1)and(notexit1)and(notexit2)doBeginifc2thenexit1:=true;ifc3thenexit2:=true;EndIf(exit1)thengoto20;If(exit2)thengoto30;20:Goto40;30:.40:,.,209,有限制的使用GOTO-2,GOTO语句用于出错处理booleanpush(item,index,stack,errflag)interrflag,index;floatitem,stack100;if(index=100)goto10;errflag=0;index=index+1;stackindex=item;return(errflag);10:errflag=1;return(errflag);,.,210,有限制的使用GOTO-3,使用GOTO语句减少重复程序段。ifpthena;b;elseb;endifwhileqloopa;b;endloop,ifpthenL1:a;endifb;Ifqthengotol1;,.,211,实现源程序的文档化,有意义的变量名适当的注释标准的书写格式,.,212,名字,名字-非形式的、简练的、容易记忆的。一个变量的作用于越大,名字所携带的信息越多。全局变量-使用具有说明性的名字;并加以注释。局部变量-用短名字;,Npending=0;/currentlengthofinputquene全局变量采用大写开头的变量名。如:Globle常量用大写字母拼写。如:CONSTANTS变量的类型也应体现:如:strTo,strFrom字符串,.,213,名字,保持一致性classUserQueueintnoOfItemsInQ,frontOfTheQueue,queueCapacity;public:intnoOfUserInQueue(),(1)同一个词queue分别用了Q、Queue、queue(2)在类型UserQueue访问queue.queueCapacity多余可改为:classUserQueueintnitems,front,capacity;public:intnusers()queue.capacity+;n=queue.nusers();,.,214,名字,函数采用动作性的动词,后面可以跟着名词。now=date.getTime();putchar(/n);,.,215,表达式和语句,用缩行显示程序的结构for(n=0;n100;fieldn+=0);*i=0;return(n);改为:for(n=0;n=actblks)|(block_idunblocks),.,217,表达式和语句,用加括号的方式排除二义性。特别是C语言,关系运算符比逻辑运算符优先级高。if(x分解为:if(2*knday)legal=FALSE;最好采用习惯用法;for(i=0;i=65,.,221,注释,不要大谈明显的东西。给函数和全局数据加注释。,.,222,满足运行工程学的输入输出风格,输入方面:(1)对输入数据进行有效性检验;(2)输入格式力求简单、一致;(3)使用结束标志终止输入;(4)提示“请输入”,给出范围和边界值;(5)对多个输入组合进行检查。,输出方面:(1)对输出数据加以说明;(2)良好的报表和报告形式;(3)在线帮助;(4)对可能产生重大后果的给与提示;(5)防止用户意外非正常操作,具有防弹功能;(6)区别不同用户,适合用户的习惯和水平;(7)系统能够自动恢复。,.,223,编码语言的选择,选择编码语言的标准:(1)应用领域(2)算法和计算复杂性(3)数据结构的复杂性(4)效率的考虑,.,224,第5章软件测试SoftwareTesting,ObjectiveofTestingTestingMethodsTestingandDebuggingProcessofTesting,.,225,Verification:ArewebuildingtheproductrightThesoftwareshouldconformtoitsspecification检查软件是否符合它的描述。检查系统是否满足它所定义的功能和非功能的需要。,检验与验证Verificationvsvalidation,.,226,Validation:ArewebuildingtherightproductThesoftwareshoulddowhattheuserreallyrequires软件是否满足用户的最终需要。,Verificationvsvalidation,.,227,V&Vprocess,SoftwareInspections软件检查Analyseandchecksystemrepresentationssuchasrequirementsdocumentation,designdisgramsandtheprogramsourcecode.SoftwareTesting软件测试Involvesexecutinganimplementationofthesoftwarewithtestdataandexaminingtheoutputsofthesoftwareanditsoperationalbehaviour.,.,228,StaticanddynamicV&V,.,229,TheV-modelofdevelopment,.,230,Softwareinspections软件检查,InvolvepeopleexaminingthesourcerepresentationwiththeaimofdiscoveringanomaliesanddefectsDonotrequireexecutionofasystemsomaybeusedbeforeimplementation软件检查不需要运行程序,可在程序完成之前进行验证。,.,231,Theinspectionprocess,.,232,Staticanalysischecks,.,233,程序检查内容,.,234,测试的基本概念TestingConcept,Testing:Tofinderrorsinprograms发现程序的错误Debugging:Locateandmodifyerrors定位和纠正错误,.,235,Verificationandvalidationisconcernedwithestablishingtheexistenceofdefectsinaprogram确定在程序中存在错误Debuggingisconcernedwithlocatingandrepairingtheseerrors查找错误并修复错误,Testinganddebugging,.,236,测试和纠错的流程TestingandDebuggingProcess,Testing,TestingResults,Debugging,.,237,Thedefecttestingprocess,.,238,测试的种类TypesofTesting,办公桌检查,.,239,测试方法TestingMethods,黑盒测试方法(Black-Box)(1)等价分类法(EquivalencePartitioning)(2)边界值分析法(BoundaryValueAnalysis)(3)错误猜测法(ErrorGuessing)白盒测试方法(White-Box)(1)路经测试法(PathTesting)(2)逻辑覆盖法(LogicCoverageTesting),.,240,Black-boxtesting,.,241,Equivalencepartitioning等价分类法,InputdataandoutputresultsoftenfallintodifferentclasseswhereallmembersofaclassarerelatedEachoftheseclassesisanequivalencepartitionwheretheprogrambehavesinanequivalentwayforeachclassmember,.,242,等价分类法EquivalencePartitioning,基本思想:把输入数据的可能值划分若干等价类,使每类中的任何一个测试用例,都能代表同一等价类中的其他测试用例。即:从某一等价类中任选一个测试用例未能发现程序的错误,就可以合理认为在该类中的其他测试用例也不会发现错误。,.,243,Equivalencepartitioning,.,244,PartitionsysteminputsandoutputsintoequivalencesetsIfinputisa5-digitintegerbetween10,000and99,999

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论