版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本课程的安排
CoursePlanning授课时间:54学时考核方式(平时+作业)20分+(闭卷考试)80分讲授的内容
Contents内容周数(共18周)第一章软件与软件工程3第二章软件需求分析4第三章软件设计4第四章编码实现1第五章软件测试3第六章软件工程管理3第1章软件与软件工程
Chapter1Introduction本章要讲的主要内容是:软件(Software)软件危机(SoftwareCrisis)软件工程(SoftwareEngineering)软件工程与计算机科学的关系(RelationshipbetweenSEandCS)1.1软件
Software软件的概念与特征软件的发展历程软件的分类软件开发的案例分析软件的概念与特征软件的定义软件是程序和所有使程序正确运行所需要的相关文档和配置信息。Software=Program+Data+Document软件的特征软件是无形的(intangible)
软件副本制作简单软件无磨损软件的发展历程早期面向批处理有限的分布自定义软件第二阶段多用户实时数据库软件产品第三阶段分布式系统嵌入“智能”低成本硬件消费者的影响第四阶段强大的桌面系统面向对象技术专家系统人工神经网络并行计算网路计算机195019601970198019902000软件的分类基于不同工程对象划分基于软件规模的划分基于不同工程对象划分通用软件产品Generic-由软件开发机构制作,市场上公开销售,独立使用。
(developedtobesoldtoarangeofdifferentcustomers)数据库软件、字处理软件、绘图软件、工程管理工具。定制软件产品Bespoke(custom)-受特定客户委托,由软件承包商专门制作。
(developedforasinglecustomeraccordingtotheirspecification)基于软件规模的划分微小型软件-一般都在2000行以内的程序长度。在开发过程中,不讲究开发方法和开发实施的步骤,没有相应的软件编写文档。中型软件-通常程序长度在5000~10000行之间,一般需要5~10人、持续一至两年时间开发,以团队方式采用统一的标准开发模式。大型软件-采用软件工程指导下的软件开发方法和遵循相应的开发规范,建立软件开发过程的文档,由上百、千人参加形成的庞大开发团队,不同领域的人员相互沟通合作。软件开发的案例分析系统软件-是一组为其他程序服务的程序。实时软件-管理、分析、控制现实世界中发生的事件的程序。商业软件-商业信息处理是最大的软件应用领域。工程和科学计算软件-这类软件的特点是一般具有数值计算。嵌入式软件-智能产品应用于所有的领域,嵌入式软件作用于这些智能产品,执行有限但专一的功能。个人计算机软件-用于个人的文字、图片、财务、娱乐等等方面的软件系统。人工智能软件-人工智能(AI)软件利用非数值计算解决复杂问题。请给出相应的实例!软件的未来与工业化作坊式生产软件工业化CMMI认证1.2软件工程软件工程的概念软件工程的范畴软件工程的开发原则软件工程面临的挑战软件工程师的未来问题分解的特征软件开发过程中存在的问题(1)软件需求急剧增长;(2)软件开发成本和进度估计
不准确;(3)软件产品不满足用户需
求;(4)软件难以维护;(5)软件价格昂贵;软件工程的概念中心思想:把软件当作一种工业产品,要求采用工程化的原理与方法对软件进行计划、开发和维护。目的:实现按预期的进度和经费完成软件生产计划,提高软件的生产率和可靠性。软件工程框架软件工程的范畴软件工程开发的原则 分解 信息隐蔽 模块化 标准化软件工程面临的挑战遗留系统交付上的挑战多样性的挑战软件工程师的未来软件工程人员应当遵守以下八条准则:(1)公众感(PUBLIC):软件工程师始终与公众利益保持一致。(2)客户和雇主(CLIENTANDEMPLOYER):满足客户和雇主的最大利益。(3)产品(PRODUCT):保证产品达到尽可能高的行业标准。(4)判断力(JUDGEMENT):具有公正和独立的职业判断力。(5)管理(MANAGEMENT):提倡合乎道德的软件开发和维护的管理办法。(6)职业感(PROFESSION):弘扬职业正义感和容易感,尊重社会公正利益。(7)同事(COLLEAGUES):公平对待和协助每一位同事。(8)自己(SELF):毕生学习专业知识,合乎职业道德的职业活动方式。1.3软件过程模型软件生存周期软件开发模型瀑布模型进化式模型演化模型形式化开发软件生存周期软件生存周期的概念:一个软件从计划起,到废弃不用止。软件生存周期包括:计划、开发、运行。软件开发模型概念软件开发模型的概念:
为整个软件生存期建立的模型。
软件开发模型分类:瀑布模型进化式开发模型演化模型形式化开发模型软件开发模型1瀑布模型ThewaterfallmodelRequirementsdefinition1瀑布模型ThewaterfallmodelImplementationAndunittestIntegrationSystemtestingOperationmaintenance需求定义系统和软件设计实现和单元测试集成和系统测试运行和维护软件生存周期瀑布模型
的优点阶段间的顺序性
和依赖性推迟实现的观点质量保证的观点瀑布模型的问题
Waterfallmodelproblems将项目生硬地分解成确切的阶段。Inflexiblepartitioningoftheprojectintodistinctstages
对用户需求变更的相应困难。
Thismakesitdifficulttorespondtochangingcustomerrequirements需求了解的好的时候,采用瀑布模型。
Thismodelisonlyappropriatewhentherequirementsarewell-understood
2快速原型开发模型
PrototypeModel基本思想:先开发出一个原型系统给用户使用,通过用户反馈意见来不断修改系统直到最后成熟。让描述、开发、有效性验证活动并行执行。原型模型原型模型的优点原型化模型突出一个“快”字。软件开发人员向用户提供一个“样品”,用户向开发人员迅速作出“反馈”。建立原型系统的方法原型系统仅包括未来系统的主要功能,以及系统重要的接口。开发原型系统尽可能使用能缩短开发周期的语言和工具。3演化模型-增量模型
EvolutionaryModel
增量模型的基本思想每个增量提供系统功能的一个子集,一个增量完成并交付,部分系统功能可以提前交付使用。对增量中服务的分配取决于服务优先次序。最高优先权的服务首先被交付。
第一个增量往往是核心的产品。开发者能通过对系统的经验帮助理解后面的增量需求和目前增量后续版本的需求变更。Incrementaldevelopmentadvantages
增量式开发过程的优点客户无需等到整个系统的实现。客户可以将早期的增量作为原型,从中获得对后面系统增量的需求经验。项目总体性失败的风险比较低。最高优先权的服务接受最多的测试。Example使用增量式开发的字处理软件在第一个增量中发布基本的文件管理、编辑和文档生成功能;在第二个增量中发布更加完善的编辑和文档生成能力;第三个增量中实现拼写和文法检查功能;第四个增量完成高级的页面布局功能。4演化模型-螺旋模型
EvolutionaryModel螺旋模型的基本思想每一个螺旋周期(Spiralmodelsectors)包含四个部分:(1)确定目标,选择方案,设定约束条件,选定完成本周期所定目标的策略。(2)分析该策略可能存在的风险。(3)在排除风险后,实现本螺旋周期的目标。(4)评价前一步的结果,并且计划下一轮的工作。螺旋模型的特点每一阶段考虑技术风险。依赖于风险评估。5形式化方法模型转换模型(TransformationalModel)-是结合形式化软件开发方法和程序自动生成技术的一种软件开发模型。转换模型净室模型
CleanroomModel是一种形式化的增量开发模型。基本思想:力求在分析阶段就消除错误,确保正确,然后在无缺陷或“洁净”的状态下实现软件的制作。“盒”(Box)-每一增量是一个形式化方式表示。净室模型6基于组件的开发过程Advantages优势减少需要开发的软件数量降低软件开发成本降低风险软件快速交付小结软件软件工程软件过程模型小结瀑布模型原型模型增量模型螺旋模型形式化开发模型组件开发模型新的开发模型RUP统一开发过程敏捷开发极限编程RAD快速的应用开发设计模式思考题1调查目前软件公司对软件开发过程中存在的主要问题。现代软件的分类。都知道哪些软件开发的方法?软件工程有意义吗?以上问题请于本周调查,下次课提问。思考题2为以下各系统提出合适的软件过程模型,阐述理由:(1)汽车防锁死刹车控制系统(2)一个支持软件维护的虚拟现实系统(3)大学记账系统,准备替换一个已存在的系统(4)一个位于火车站的交互式火车车次查询系统
第2章软件需求分析
RequirementsAnalysis 需求分析的任务和分类; 需求获取的相关技术; 软件需求分析的描述模型; 需求分析的方法; 软件需求分析文档; 软件的案例需求分析。项目相关人员涉及对项目有利益关系的人员,包括:(1)发现系统的潜在最终用户;(2)考虑系统打算支持的业务过程描述以及与这些过程相关的人员;(3)可能会受到系统引入的影响的人员;(4)使用系统的客户;(5)开发和维护系统的工程师和维护人员;(6)可能给系统添加需求的监管机构和认证机构等。因此,项目相关人员可能是系统最终用户和机构管理人员、工程人员、业务专家、工会代表等等。Autoteller银行自动柜员机系统(ATM)的项目相关人员当前银行客户其他银行代表硬件和软件维护工程师市场开发部银行管理者柜台职员数据库管理员信息安全管理员需求的定义需求应该是对系统应提供的服务和所受到的约束的描述。需求来自于用户,同时也是经过了开发人员抽象之后的需求。Typesofrequirements需求种类Userrequirements用户需求Statementsinnaturallanguageplusdiagramsoftheservicesthesystemprovidesanditsoperationalconstraints.Writtenforcustomers
是用自然语言加图表的形式给出的关于系统需要提供哪些服务以及系统操作受到哪些约束的声明。Typesofrequirements需求种类Systemrequirements系统需求Astructureddocumentsettingoutdetaileddescriptionsofthesystemservices.Writtenasacontractbetweenclientandcontractor
详细给出系统将要提供的服务以及系统所受的约束。UserrequirementsClientmanagersSystemend-usersClientengineersContractormanagersSystemarchitectsSystemrequirementsSystemend-usersClientengineersSystemarchitectsSoftwaredevelopers客户管理者系统最终用户客户工程师承包商管理者系统体系结构工程师系统最终用户客户工程师系统体系结构工程师软件开发人员用户需求系统需求用户需求和系统需求描述用户需求描述系统需求描述可以帮助学生选取课程产生课表选取课程、生成课表、修改课表、打印课表等系统需求的描述方面Functionalrequirements
功能性需求Non-functionalrequirements
非功能性需求Domainrequirements
领域需求
Functionalrequirements
功能性需求Thesearestatementsofservicesthesystemshouldprovide,howthesystemshouldreacttoparticularinputsandhowthesystemshouldbehaveinparticularsituations.
包括对系统提供的服务、如何对输入做出反应以及系统在特定条件下的行为描述。Non-functionalrequirements
非功能性需求Non-functionalrequirementsrelatetoemergentsystempropertiessuchasreliability,responsetimeandstoreoccupancy.
是指不直接与系统具体功能相关的一类需求,与系统的总体特性有关,如可靠性、反应时间和存储空间。Domainrequirements
领域需求
Thesearerequirementsthatcomefromtheapplicationdomainofthesystemandreflectcharacteristicsofthatdomain.
来自系统应用领域的需求,反应该领域的特点。Typesofnon-functionalrequirementsProductrequirements产品需求Requirementswhichspecifythatthedeliveredproductmustbehaveinaparticularwaye.g.executionspeed,reliability,etc.
描述产品行为的需求,包括运行速度、可靠性等。Typesofnon-functionalrequirementsOrganisationalrequirements机构需求Rcessstandardsused,implementationrequirements,etc.
起源于客户所在的机构和开发者所在的机构中政策和规定。Typesofnon-functionalrequirementsExternalrequirements外部需求Reroperabilityrequirements,legislativerequirements,etc.
包括系统外部因素和开发过程。Non-functionalrequirementtypes非功能性需求非功能需求产品需求机构需求外部需求效率需求可靠性需求可移植性需求互操作需求道德需求可用性需求性能需求空间需求交付需求实现需求标准需求立法需求隐私需求安全性需求需求分析的任务(1)通过对问题及其环境的理解、分析和综合,建立分析模型(AnalysisModel)。(2)在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”(SoftwarerequirementSpecification,SRS)把用户的需求表达出来。需求分析的步骤需求的内容
(1)功能描述
(2)性能描述
(3)环境需求
(4)界面需求
(5)用户或人的因素
(6)文档需求
(7)数据需求
(8)资源需求
(9)安全保密
(10)软件成本消耗与开发进度
(11)质量保证需求的特征
1.完整性
2.正确性
3.可行性
4.必要性
5.划分优先级
6.无二义性
7.可验证性需求获取技术需求获取面临的挑战主要是对问题空间的理解、人与人之间的通信,以及需求的不断变化。需求分析中出现的问题
1.交流障碍
2.问题的复杂性
3.不完整性和不一致性需求获取的基本原则
1.深入浅出
2.以流程为主线需求获取的常用技术跟班作业开调查会请专人介绍询问设计调查表,请用户填写查阅记录需求分析建模用例建模数据建模过程建模用例建模用例是系统开发中用来描述系统需求,从用户的角度描述系统的场景,概括有关参与者和用例信息的一个图形化模型,描述了系统、子系统和类的一致的功能集合,表示了角色和用例之间的关系,表现为系统和一个或多个外部交互者(角色)得消息交互动作序列。主要包括系统、用例、角色和关联。UseCase用例图一个用例可描述软件系统和一个外部角色(Actor)之间的一次交互。角色-可以使人、软件、硬件或其他与系统交互的实体。组成:系统、用例、角色、关联UseCase用例图组成用例名系统用例角色关联Libraryuse-cases图书馆的用例用例之间的关系扩展关系若一个用例中加入一些新的动作后构成一个新的用例。用例之间的关系使用关系当一个用例使用另一个用例时,这两个用例构成使用关系。用例之间的关系组合关系用例之间存在类似的行为,或相互之间存在必要的关系,可以将相关的用例以封装方式加以组合。数据建模系统需求分析建模就是定义系统处理的数据的逻辑结构。比较广泛采用的数据建模技术是实体-关系建模,它描述了数据实体以及实体之间的关系和相关的属性。基本图形两个实体学生和教师的关系实体(Entity)需要一个概念来抽象地表示一组类似事物的所有实例,称这个概念为实体。是需要收集数据和存储数据的人、地点、对象、事件或概念的类。可以归类为:人Persons:代理、承包商、客户、部门、分部、雇员、导师、学生、供应商;地点Places:销售地区、建筑物、房间、分支办公室、校园;对象Objects:图书、机器、部件、产品、原材料、软件许可证、软件包、工具、汽车模型、汽车;事件Events:奖励、取消、分类、飞行、开发票、订单、注册、续借、获取、预定、销售、旅行;概念Concepts:帐号、时间段、债劵、课程、基金、资格、股票。E-R图描述各种数据之间的关系。组成:长方形-数据对象(实体)菱形-数据之间的关系
Example状态转换图(STD)描述软件状态的变迁。矩形-系统状态;箭头-状态的转变方向。STDExample对象-行为图过程建模数据流图从数据传递和加工的角度出发,刻画数据流从输入到输出的移动和变换过程,它能够清晰地反映系统必须完成的逻辑功能。DFD数据流图的组成圆框-加工箭头-数据流向方框-数据的源点和终点双杠或单杠-数据文件或数据库数据文件Example数据字典(DD)数据的三种情况:数据项-只含一个数据或数据元素;数据流-由多个相关数据项组成;数据文件或数据库。数据项数据项名数量别名购书量取值正整数备注数据流数据流名发票别名购书发票组成学名+姓名+{书号+单价+数量+总价}+书费合计备注数据文件文件名各班学生用书表别名组成{系编号+专业和班编号+年级+{书号}}组织按系、专业和班编号从小到大排列备注加工说明结构化语言自然语言加上结构化的形式。判定表或判定树适用于表达含有复杂判断的加工逻辑。例判定表条件/规则1234推销金额>10,000≤10,000>10,000≤10,000预收货款>50%>50%≤50%≤50%动作:奖金率8%6%5%4%月薪<1000元奖金额500300300200例
判定树exercise某校的课酬计算方案为:基本课酬20元;班级人数超过60人,增加基本课酬的10%;班级人数超过80人,增加基本课酬的20%;教师为副教授,增加基本课酬的10%;为教授,增加基本课酬的20%;见习助教,减少基本课酬的10%。请用判定表描述上述问题的加工逻辑。条件123456789101112人数<=60T人数>60T人数<80FFFF教授TT副教授T见习助教T20(1+10%)●●●20(1+20%)●●20(1-10%)●需求分析建模结构化分析模型结构化分析方法SA(StructuredAnalysis)结构化分析:是使用DFD、DD、结构化语言、判定表和判定树等工具,来建立结构化说明书(SRS)。自顶向下、逐步细化
Top-DownStepwiseRefinement从系统的基本模型(把整个系统看成一个加工)开始,逐层地对系统进行分解。酶分解一次,系统的加工数量就增多一些,每个加工的功能也更具体一些。继续分解,直到所有的加工都足够简单,不必再分解为止。三层的数据流图(1)顶层的数据流图(2)第二层DFD图(3)第三层DFD图DFD图的基本要求父图和子图平衡;区分局部文件和局部外部项;分解的步子应均匀,不应过快,可分解为2~4个子加工,最多不超过7个;遵守加工编号。Example-DFD顶层数据流图Example-DFD-第二层数据流图Example-DFD-第三层数据流图需求分析的建模面向对象分析模型面向对象分析方法定义用例领域分析类/对象建模(1)确定分析模型中的类/对象(2)定义类的结构与层次(3)定义主题或子系统建立对象-关系模型-对象层次模型建立对象-行为模型-序列图定义用例确定系统角色(1)使用系统主要功能的人(2)借助系统完成日常工作的人(3)维护、管理系统、保证系统正常工作的人(4)涉及的设备(5)外围系统(6)其他感兴趣的人
发现一组系统的用例(1)角色需要从系统中获得哪些功能(2)发生的事件需要通知系统(3)角色需要读取、产生、删除、修改或存储的信息(4)输出、输入的信息(5)当前存在的问题类/对象建模(1)确定类/对象(2)定义类的结构与层次(3)定义主题或子系统(1)确定类/对象(1)必要的信息(2)需要的服务(3)多个属性(4)公共的属性(5)公共的操作(6)必要的需求考察系统的使用实例;将名词或名词短语汇总;分析特征,确定哪些应包含在分析模型中。类/对象图类或对象名属性操作学生学号班级上课考试李平:学生学号:020118班级:计02上课考试(2)定义类的结构与层次一般-特殊(泛化Generalization)对类进行分类。
整体-部分(聚合Aggregation)类的组成关系。物料材料在制品国产材料进口材料显像管显像管荫罩屏锥对象模型的关系表示泛化关系-一般到特殊
聚合关系-整体到部分汽车小汽车客车大卡车学校管理部门教师学生(3)定义主题或子系统类模型的某个子集相互协作共同完成一组内在功能时,可以将其定义为主题或子系统。人教师学生大学生中学生小学生电话话筒话机按键连接线人电话对象模型技术对象模型对象-关系模型对象-行为模型三个模型之间的关系对象-关系模型关系存在于任意两个相关联的类之间,可以通过检查对系统的范围或用例的陈述中的动词或动词短语导出。(1)找出存在的关系网络,用线连接;(2)连线上表示基数。UserclasshierarchyObjectaggregation
课程的聚合对象对象-关系图规格部门流水线工序不良品材料在制品实时数据指标数据1:11:m1:11:11:11:m1:11:m1:11:10:m1:m1:11:11:m1:11:11:m0:11:11:11:01:m1:1对象-行为模型对象行为模型用于描述系统的动态行为,即系统如何应对外部事件。(1)对用例理解系统的交互序列;(2)找出驱动交互序列的事件;(3)为每个用例创建事件轨迹;(4)为对象创建状态转换图。
状态转换图事件轨迹图状态转换图描述系统状态和事件,事件引发系统在状态间的转换。产生半分钟数据班数据半小时数据日数据翻屏显示光电采集满半分钟工控机处理班数据处理日数据处理实时数据状态转换图Microwaveovenmodel一个简单的微波炉状态机模型事件轨迹图事件轨迹图用于描述一个事件在各个对象之间的流动情况,可以显示整个系统的状态变化。光电管光电管光电管光电管物品经过阻态信号半分钟到传累计值半小时到显示数据Issueofelectronicitems
电子科目的发放需求分析的文档Introduction引言Glossary术语Userrequirementsdefinition用户需求定义Systemarchitecture系统体系结构Systemrequirementsspecification系统需求描述Systemmodels系统模型Systemevolution系统进化Appendices附录Index索引小结需求分析的任务需求获取的技术需求分析文档结构化分析方法面向对象分析方法要求掌握的内容结构化分析方法面向对象分析方法数据流图数据字典用例图对象模型-ERD状态图序列图本次课堂练习每名学生编写需求分析文档;文档中要有数据流图、数据字典;还有用例图、ERD、序列图。需求文档按所给的需求分析标准文档形式。第3章软件设计设计原则结构化设计方法面向对象的设计方法系统详细设计软件设计的任务软件设计的任务-
把分析阶段产生的软件需求说明转换成用适当的手段表示的软件设计文档。软件设计包括的内容:软件系统的体系结构设计; 系统接口设计; 数据结构设计; 软件过程设计; 系统界面设计。软件设计的概念模块-是一个拥有明确定义的输入、输出和特性的程序实体。抽象(Abstraction)-软件设计是在不同抽象级别考虑和处理问题的过程。过程抽象、数据抽象细化(Refinement)-分解过程。信息隐蔽(InformationHiding)-模块内部的数据和过程,应该对不需要了解这些数据与过程的模块隐藏起来。模块化设计分解任务P,分解为P1、P2两个子任务
P=P1+P2
C为问题复杂度
C(P1+P2)>C(P1)+C(P2)
E为完成任务所需的工作量
E(P1+P2)>E(P1)+E(P2)
分解模块独立性
(ModuleIndependence)模块独立性-把软件换份为模块时遵循的标准。度量-内聚、耦合内聚-模块内部各个成分之间的联系。(块内联系或模块强度)耦合-模块与模块之间的联系。(块间联系)内聚(Cohesion)偶然性内聚-块内各组成成分在功能上互不相关。逻辑性内聚-有若干个逻辑功能相似的成分组成。时间性内聚-由相同的执行时间连接在一起。过程性内聚-一组任务必须按照某一特定次序执行。通信性内聚-都使用同一种输入数据,或产生同一种输出数据。顺序性内聚-各组成部分顺序执行。功能性内聚-用于完成单一功能。耦合(Coupling)非直接耦合-模块之间没有直接的信息传递。数据耦合-模块之间传递的是简单变量。特征耦合-模块之间交换的是数据结构。控制耦合-模块之间传递的是控制信号。外部耦合-一组模块访问同一个全局变量。公共耦合-一组模块访问同一个全局数据结构。内容耦合-一个模块直接调用另一个模块的数据或直接转移到另一个模块内部。系统结构化根据系统的分布情况可以将系统分解为一系列基本子系统,每一个子系统都是一个独立的软件单元,同时识别出子系统之间的通信。ATMATMATMATM账户服务器远程处理监控器客户账户数据库控制模型根据控制系统的各个部分之间控制关系,对系统进行有效地分解子系统,可以形成集中管理、分散控制的分解模型。模块分解对整体软件系统的结构进行分解,可以将软件系统形成层次分解的模块结构,确定模块的类型以及模块之间的调用关系。主程序程序1程序2程序3程序1.1程序1.2程序2.1程序3.1程序3.2体系结构的分类容器模型客户机/服务器模型分层模型容器模型客户机/服务器模型分层模型设计方法结构化设计方法用DFD图表示的系统分析模型转换为数据结构的设计方法。SC图组成符号:
数据流图的类型变换型事务型SD结构化设计方法复审DFD图,可进行修改或细化。鉴别DFD图的类型。按照SD方法规定的一组规则,将DFD图转换为初始SC图。
按照设计优化原则改进初始SC图,获得最终SC图。变换映射划分DFD图的边界;建立初始SC图的框架;分解SC图的各个分支。例子
EXAMPLE第一步划分界限第二步完成第一级分解第三步完成第二级分解,细化SC图的各个分支中心加工分支的分解传入分支的分解传出分支的分解事务映射在DFD图上确定事务中心、接受部分、发送部分;将DFD图的三个部分分别映射为事务控制模块、接受模块、动作发送模块;分解和细化接受分支和发送分支,完成初始的SC图。结构化设计的优化原则分割、合并、变动模块大小的指导原则保持高扇入(Fan-in)、低扇出(Fan-out)的原则作用域应在控制域范围内的原则Example-DFD到SC的转化本系统修改放在磁带中的一个主文件上,对文件做修改的信息放在卡片上,该系统读入一叠卡片,按卡片上的修改信息对磁带中的纪录作相应修改,然后产生新的主文件。顶层数据流图第二层数据流图第三层数据流图SC软件结构图过程设计的原则清晰第一的设计风格结构化的控制结构逐步细化的实现方法Anobject-orienteddesignprocess
面向对象设计过程Definethecontextandmodesofuseofthesystem
了解并定义上下文和系统的使用模式。Designthesystemarchitecture
设计系统体系结构。Identifytheprincipalsystemobjects
识别出系统中的主要对象。Developdesignmodels
开发设计模型。Specifyobjectinterfaces
描述对象接口。系统上下文和使用模型系统上下文模型是一个静态模型,描述环境中的其他系统;系统使用模型是一个动态模型,描述系统如何与环境交互的。Subsystemsintheweathermappingsystem气象制图系统中的子系统Use-casesfortheweatherstation气象台的用例启动关机报告校准测试Use-casedescription
报告用例的描述报告用例的描述系统气象台用例报告参与者气象数据采集系统,气象台数据气象台发送气象数据,包括温度、气压、风速、降雨量等激励请求传输数据响应整理过的数据发送给数据采集系统注释每个一小时接到一个报告请求体系结构设计可以结合体系结构模型构造体系结构。识别对象类(1)对系统的自然语言描述作文法分析。对象和属性是名词,操作和服务是动词。(2)使用应用领域中的真实实体、职务、事件、交互、位置、机构单元等。(3)使用行为方法,对每个行为了解谁发起的和哪些实体参与了这个行为。(4)使用基于脚本的分析识别出系统使用的各个脚本,并以此对其进行分析。识别出对象、属性和操作。对象和对象类对象是由状态和在此状态上的一组操作构成的一个实体。状态由一组对象属性来表示。操作提供给其他对象相应的服务。对象通信通过向其他对象请求服务来实现。WeatherstationobjectclassesDesignmodels设计模型Staticmodelsdescribethestaticstructureofthesystemintermsofobjectclassesandrelationships
静态模型通过对象类及其之间的关系来描述系统的静态结构。Dynamicmodelsdescribethedynamicinteractionsbetweenobjects.
动态模型描述系统的动态结构和系统对象之间的交互。ExamplesofdesignmodelsSub-systemmodels子系统模型说明对象的逻辑分组,每个分组构成一个子系统。静态模型Sequencemodels序列模型说明对象交互的序列。动态模型Statemachinemodels状态机模型说明单个对象如何相应事件来改变它们的状态。Othermodels
用例模型说明系统中的交互,对象模型描述对象类,泛化或继承模型说明类是如何通过对其他对象的泛化得到的,聚合模型说明对象集合是如何关联的。WeatherstationsubsystemsWeatherstationarchitecture
气象台体系结构DatacollectionsequenceWeatherstationstatediagram对象接口描述
Weatherstationinterface数据设计数据库设计图书(图书号,书名,作者,出版社,出版日期,单价,借出标志)
读者(借书证号,姓名,性别,身份证,联系电话,密码)借还书(借还时间,借还标志)图书数据模型设计图书号书名单价作者出版社出版日期借出标志图书借还日期借还标志借还书读者号姓名证件号电话地址读者单位号单位地址单位电话单位架位号架位地址书库1234索引的建立主键-能唯一标识该结点或该条记录。外键-能对该结点与其他结点联系的标识。借还书(借还时间、借还标志)外键-图书、读者每一个数据文件结构序号字段或属性英文标识类型长度初始值是否主键备注1姓名name字符型20空否23过程设计为软件中的每个模块确定相应的算法及内部数据结构,获得目标系统具体实现的精确描述,为编码工作做好准备。 (1)图形设计工具 (2)表格工具 (3)语言工具程序流程图(a)(b)(c)(d)(e)图3-51程序流程图中的基本符号(a)一般处理框(b)输入/输出框(c)判定框(d)流程线(e)起止线功能模型设计输入内容-用户对信息系统的录入。输出内容-信息系统对外的显示或打印。系统响应-信息系统对用户操作的处理过程。功能点列表序号功能名称输入内容系统响应输出内容备注1录入基本信息录入学校、学院基本信息对录入的数据进行检查、保存基本信息表2查询3浏览用户界面设计确认用户输入的信息响应的信息出错处理和显示信息提供帮助和提示处理窗口的滚动建立功能与界面、数据库表的关联建立应用程序与界面的分离用户界面设计的特点特性描述窗口多窗口允许不同信息显示图标图标表示相应的信息菜单菜单选择指点如鼠标选择或指点图形同一显示中有文字和图形界面设计原则原则描述用户熟悉使用用户的术语和概念一致性界面一致和相似性意外最小化不要让用户吃惊可恢复性允许用户从错误中恢复用户指南有上下文感知能力用户差异性为不同用户提供合适的交互能力设计方式比较自顶向下设计由底向上设计易于修改和扩展整体测试较易通过需要进行详细的可行性论证可能导致较大的重新设计整体测试中可能在模块接口间发现不一致等问题如果在可行性上出现问题,可以较早发现软件设计说明书范围数据设计体系结构设计接口设计模块的过程设计其他小结软件设计过程体系结构设计接口设计数据结构设计算法设计用户界面设计本次要求完成设计文档设计文档中必须完成:功能点列表数据文件表界面设计图形表示(包含菜单、出错处理、结果响应等窗口的描述)。对主要的函数给出流程图描述。第4章编码实现编码风格编码语言的选择编码风格评判项目结果名次编码要求清晰性效率开发时间程序输出内存数语句数程序可读性最佳1-22334输出可读性最佳1-21552-3占内存最少44122-3语句数最少53212-3开发时间最短35441编码风格使用标准的控制结构有限制的使用GOTO语句实现源程序的文档化满足运行工程学的输入输出风格使用标准的控制结构单入口、单出口标准结构ifcthens;Ifcthens1elses2;CaseIofa:s1;b:s2;…n:sn;endcaseWhilecdos;fori:=mtondos;Repeatsuntilc;有限制的使用GOTO-1用GOTO语句实现提前退出循环;Whilec1dobegin…ifc2thengoto20;…ifc3thengoto30;…end;20:…Goto40;30:…40:exit1:=false;exit2:=false;While(c1)and(notexit1)and(notexit2)doBegin…ifc2thenexit1:=true;…ifc3thenexit2:=true;…EndIf(exit1)thengoto20;If(exit2)thengoto30;20:…Goto40;30:….40:有限制的使用GOTO-2GOTO语句用于出错处理
booleanpush(item,index,stack,errflag){interrflag,index;floatitem,stack[100];if(index>=100)goto10;errflag=0;index=index+1;stack[index]=item;return(errflag);10:errflag=1;return(errflag);}有限制的使用GOTO-3使用GOTO语句减少重复程序段。ifpthena;b;elseb;endifwhileqloopa;b;endloop
ifpthenL1:a;…endifb;Ifqthengotol1;实现源程序的文档化有意义的变量名适当的注释标准的书写格式名字名字-非形式的、简练的、容易记忆的。一个变量的作用于越大,名字所携带的信息越多。全局变量-使用具有说明性的名字;并加以注释。局部变量-用短名字;Npending=0;//currentlengthofinputquene全局变量采用大写开头的变量名。如:Globle常量用大写字母拼写。如:CONSTANTS变量的类型也应体现:如:strTo,strFrom
字符串名字保持一致性
classUserQueue{intnoOfItemsInQ,frontOfTheQueue,queueCapacity;public:intnoOfUserInQueue(){…}}(1)同一个词queue分别用了Q、Queue、queue(2)在类型UserQueue访问queue.queueCapacity多余可改为:classUserQueue{intnitems,front,capacity;public:intnusers(){…}}queue.capacity++;n=queue.nusers();名字函数采用动作性的动词,后面可以跟着名词。
now=date.getTime();putchar(‘/n’);表达式和语句用缩行显示程序的结构
for(n=0;n<100;field[n++]=‘\0’);*i=‘\0’;return(’\n’);改为:
for(n=0;n<100;n++)field[n]=‘\0’;*i=‘\0’;return(’\n’);表达式和语句使用表达式的自然形式。避免含有否定运算的条件表达式。可以改变关系运算方向,变成肯定的。如
if(!block_id<acblks)||!(block_id>=unblocks))改为if((block_id>=actblks)||(block_id<unblocks))表达式和语句用加括号的方式排除二义性。特别是C语言,关系运算符比逻辑运算符优先级高。
if(x&MASK==BITS)可能理解为:
if(x&(MASK==BITS))应为:
if((x&MASK)==BITS)表达式和语句Leap_year=y%4==0&&y%100!=0||y%400==0比较容易理解的应为:
leap_year=((year%4==0)&&(y%100!=0))||(year%400==0);表达式和语句分解复杂的表达式*x+=(*xp=(2*k<(n-m)?c[k+1]:d[k--]));分解为:
if(2*k<n-m)*xp=c[k+1];else*xp=d[k--];*x+=*xp;一致性和习惯用法使用一致的缩排和加括号风格;
if(month==FEB){intday;nday=28;if(year%4==0)nday=29;if(day>nday)legal=FALSE;}最好采用习惯用法;
for(i=0;i<n;i++)array[i]=1.0;使用字符形式的常量,不要用整数。
if(c>=65&&c<=90)…..应为:
if(c>=‘A’&&c<=‘Z’)….利用语言去计算大小。如:
fgets(buf,sizeof(buf),stdin);注释不要大谈明显的东西。给函数和全局数据加注释。满足运行工程学的输入输出风格输入方面:(1)对输入数据进行有效性检验;(2)输入格式力求简单、一致;(3)使用结束标志终止输入;(4)提示“请输入”,给出范围和边界值;(5)对多个输入组合进行检查。
输出方面:(1)对输出数据加以说明;(2)良好的报表和报告形式;(3)在线帮助;(4)对可能产生重大后果的给与提示;(5)防止用户意外非正常操作,具有防弹功能;(6)区别不同用户,适合用户的习惯和水平;(7)系统能够自动恢复。编码语言的选择选择编码语言的标准:(1)应用领域(2)算法和计算复杂性(3)数据结构的复杂性(4)效率的考虑第5章软件测试
SoftwareTestingObjectiveofTestingTestingMethodsTestingandDebuggingProcessofTestingVerification:
"Arewebuildingtheproductright"Thesoftwareshouldconformtoitsspecification
检查软件是否符合它的描述。检查系统是否满足它所定义的功能和非功能的需要。检验与验证
VerificationvsvalidationValidation:
"Arewebuildingtherightproduct"Thesoftwareshoulddowhattheuserreallyrequires
软件是否满足用户的最终需要。
VerificationvsvalidationV&VprocessSoftwareInspections软件检查
Analyseandchecksystemrepresentationssuchas
requirementsdocumentation,designdisgramsandtheprogramsourcecode.SoftwareTesting软件测试
Involvesexecutinganimplementationofthesoftwarewithtestdataandexaminingtheoutputsofthesoftwareanditsoperationalbehaviour.StaticanddynamicV&VTheV-modelofdevelopmentSoftwareinspections
软件检查InvolvepeopleexaminingthesourcerepresentationwiththeaimofdiscoveringanomaliesanddefectsDonotrequireexecutionofasystemsomaybeusedbeforeimplementation
软件检查不需要运行程序,可在程序完成之前进行验证。
TheinspectionprocessStaticanalysischecks程序检查内容缺陷分类检查内容数据缺陷所有程序变量在使用前初始化、所有常量命名数组上界、字符串有定界符、缓冲区溢出控制缺陷条件语句的条件正确吗、每一循环能终止、复合语句括起来吗、Case包含了所有情况吗Case中是否应包含了break输入输出缺陷所有输入变量都使用了吗、输出变量在输出前赋值了吗、有未料到的输入引起系统崩溃接口缺陷所有的函数和方法调用都使用了正确数量的参数、形式参类型匹配吗、参数顺序对吗存储管理缺陷一个链接改变时其他链接都改变吗、在动态分配空间时,空间分配正确吗、对不用的空间是否释放异常管理缺陷所有可能的错误状态都已经考虑吗测试的基本概念
TestingConceptTesting:Tofinderrorsinprograms
发现程序的错误Debugging:Locateandmodifyerrors
定位和纠正错误Verificationandvalidationisconcernedwithestablishingtheexistenceofdefectsinaprogram
确定在程序中存在错误Debuggingisconcernedwithlocatingandrepairingtheseerrors
查找错误并修复错误Testinganddebugging测试和纠错的流程
TestingandDebuggingProcessTestingTestingResultsDebuggingThedefecttestingprocess测试的种类
TypesofTesting办公桌检查程序测试静态分析(程序不执行)动态测试(程序执行)静态分析器分析(自动方式)代码评审(人工方式)代码会审走查黑盒测试(测试程序功能)白盒测试(测试程序结构)测试方法
TestingMethods黑盒测试方法(Black-Box)
(1)等价分类法(EquivalencePartitioning)
(2)边界值分析法(BoundaryValueAnalysis)
(3)错误猜测法(ErrorGuessing)白盒测试方法(White-Box)
(1)路经测试法(PathTesting)
(2)逻辑覆盖法(LogicCoverageTesting)Black-boxtestingEquivalencepartitioning
等价分类法InputdataandoutputresultsoftenfallintodifferentclasseswhereallmembersofaclassarerelatedEachoftheseclassesisanequivalencepartitionwheretheprogrambehavesinanequivalentwayforeachclassmember等价分类法
EquivalencePartitioning基本思想:把输入数据的可能值划分若干等价类,使每类中的任何一个测试用例,都能代表同一等价类中的其他测试用例。即:从某一等价类中任选一个测试用例未能发现程序的错误,就可以合理认为在该类中的其他测试用例也不会发现错误。EquivalencepartitioningPartitionsysteminputsandoutputsinto‘equivalencesets’Ifinputisa5-digitintegerbetween10,000and99,999,
equivalencepartitionsare<10,000,10,000-99,999and>10,000EquivalencepartitioningChoosetestcasesattheboundaryofthesesets00000,09999,10000,99999,10001EquivalencepartitioningEquivalencepartitionsSearchroutine-inputpartitions等价分类法
EquivalencePartitioning注意:(1)有效输入值的有效等价类;无效输入值得无效等价类;(2)每一无效等价类至少有一个测试用例;若干有效等价类合用同一个测试用例。Example-例9.1某工厂公开招工,规定报名者年龄应在16周岁至35周岁之间(到2002年3月30日止),不符合要求的显示“年龄不合格”出错信息。用等价分类法设计测试用例。第一步划分等价类输入数据有效等价类无效等价类出生年月(1)6位数字字符(2)非数字字符(3)少于6个数字字符(4)多于6个数字字符对应数据(5)在196702~198603之间(6)<196702(7)>198603月份对应数值(8)在1~12之间(9)等于“0”(10)>12第二步设计有效等价类的测试用例测试数据期望结果测试范围197011输入有效(1)(5)(8)第三步设计无效等价类的测试用例测试数据期望结果测试用例May,70输入无效(2)
输入无效(3)1968011输入无效(4)195512年龄不合格(6)198606
年龄不合格(7)196800
输入无效(9)197222输入无效(10)边界值分析法
BoundaryValueAnalysis对数组容量、循环次数、输入数据和输出数据的边界值进行测试。if(196702<=value(birthdate)<=198603)thenread(birthdate)elsewrite”invalidage”错误猜测法
ErrorGuessing猜测北侧程序可能容易出错的地方来设计测试用例。出生年月为0漏送出生年月年月次序颠倒White-boxtesting白盒测试组件代码白盒测试方法逻辑覆盖法(LogicCoverageTesting)
语句覆盖-每条语句至少执行一次;判定覆盖-每一判定的每一分支至少执行一次;条件覆盖-每一判定中的每个条件,分别按真、假至少执行一次;判定/条件覆盖-同时满足判定覆盖和条件覆盖的要求;条件组合覆盖-判定中所有条件的各种组合,每一条件组合至少执行一次。路径测试法(PathTesting)
点测试、边测试、路径测试
逻辑覆盖-语句覆盖A∧B=T逻辑覆盖-判定覆盖A∧B=TA∧B=F逻辑覆盖-条件覆盖A=TA=FB=TB=F逻辑覆盖-判定/条件覆盖A∧B=TA∧B=FA=TA=FB=TB=F逻辑覆盖-条件组合覆盖A=T∧B=TA=T∧B=FA=F∧B=TA=F∧B=Fexercise如果不是与,而是或,又会如何?覆盖标准满足条件测试用例语句覆盖L1、L2A=1,B=0判定覆盖TFA=1,B=0A=2,B=0条件覆盖A==1为T,A==1为FB==0为T,B==0为FA=1,B=0A=2,B=1判定/条件覆盖TFA==1为T,A==1为FB==0为T,B==0为FA=1,B=0A=2,B=1条件组合覆盖A==1为T,B==0为TA==1为T,B==0为FA==1为F,B==0为TA==1为F,B==0为FA=1,B=0A=1,B=1A=2,B=0A=2,B=1Exercise(a>1)AND(b==0)(a==2)AND(x>1)L1L213524TFTF覆盖标准满足条件测试用例语句覆盖L1、L2a=2,b=0,x=2判定覆盖(a>1)AND(b==0)=T(a>1)AND(b==0)=F(a==2)AND(x>1)=T(a==2)AND(x>1)=Fa=2,b=0,x=2a=1,b=0,x=1条件覆盖a>1为T,a>1为Fb==0为T,b==0为Fa==2为T,a==2为Fx>1为T,x>1为Fa=2,b=0,x=2a=1,b=1,x=1判定/条件覆盖(a>1)AND(b==0)=T(a>1)AND(b==0)=F(a==2)AND(x>1)=T(a==2)AND(x>1)=Fa>1为T,a>1为Fb==0为T,b==0为Fa==2为T,a==2为Fx>1为T,x>1为Fa=2,b=0,x=2a=1,b=1,x=1覆盖标准满足条件测试用例条件组合覆盖a>1为T,b==0为T,a==2为T,x>1为T,a>1为T,b==0为T,a==2为T,x>1为Fa>1为T,b==0为T,a==2为F,x>1为T,a>1为T,b==0为T,a==2为F,x>1为Fa>1为T,b==0为F,a==2为T,x>1为Ta>1为T,b==0为F,a==2为T,x>1为Fa>1为T,b==0为F,a==2为F,x>1为Ta>1为T,b==0为F,a==2为F,x>1为Fa>1为
F,b==0为T,a==2为T,x>1为T,a>1为F,b==0为T,a==2为T,x>1为Fa>1为F,b==0为T,a==2为F,x>1为T,a>1为F,b==0为T,a==2为F,x>1为Fa>1为F,b==0为F,a==2为T,x>1为Ta>1为F,b==0为F,a==2为T,x>1为Fa>1为F,b==0为F,a==2为F,x>1为Ta>1为F,b==0为F,a==2为F,x>1为F路径测试
PathtestingTheobjectiveofpathtestingistoensurethatthesetoftestcasesissuchthateachpaththroughtheprogramisexecutedatleastonce
程序中的每一条路径至少执行一次。Describestheprogramcontrolflow.Usedasabasisforcomputingthecyclomaticcomplexity环域复杂度
Cyclomaticcomplexity=Numberofedges-Numberofnodes+2环域复杂度=边数-点数+2程序图
Programflowgraphs路径测试法-程序图路径测试法测试路径覆盖点/边覆盖标准acd1,2,3,4点覆盖acd,bea,b,c,d,e边覆盖acd,beae,bcd1,2,3,4a,b,c,d,e路径覆盖Binarysearchflowgraph二分法查找请先画出流程图1,2,8,91,2,3,8,91,2,3,4,6,7,21,2,3,4,5,7,21,2,3,4,6,7,2,8
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 塔罗牌线下活动方案策划(3篇)
- 内科呼吸科肺部感染预防措施
- 奶牛的饲养与管理
- 精神科安全管理及护理技能
- 修理汽车应急预案(3篇)
- 内装雨季施工方案(3篇)
- 养车新店活动策划方案(3篇)
- 净化厂施工方案(3篇)
- 器材安装施工方案(3篇)
- 如何制定活动方案策划(3篇)
- 2026年世界肾脏日主题“人人享有肾脏健康:关爱生命守护地球”宣传全文
- 西昌市2026年面向全国公开考调在编在职教师(30人)考试参考题库及答案解析
- 2025年度中国邮政集团有限公司安徽省分公司春季招聘笔试参考题库附带答案详解
- 2025年通辽职业学院单招综合素质考试试题及答案解析
- 干砌石护坡施工方案
- 2026北京东城区初三(上)期末数学试题含答案
- 2026年莱芜职业技术学院综合评价招生《素质测试》模拟题及答案
- 儿科新入职护士考核制度
- 2025年医师定期考核试题库及答案
- 2026年南京交通职业技术学院单招职业技能测试题库带答案详解(完整版)
- 教科版科学三下开学第一课《科学家这样做-童第周》
评论
0/150
提交评论