华南理工大学《软件工程》复习要点第一章概述1.1软件:程序+相关文档和配置信息通用软件,定制产品软件工程—计算机科学/系统工程软件过程:1.软件描述2.软件开发3.软件有效性验证4.软件进化软件过程模型:1.工作流模型2.数据流或活动模型3.角色/动作模型(从特定角度提出软件过程的简化描述)1.瀑布模型开发方法2.进化式开发方法3.形式化转换4.基于可复用的组件的系统组合软件成本软件工程方法统一建模语言UMLCASE工具1.2职业道德1.机密2.工作能力3.知识产权4.计算机滥用第三章软件过程软件描述软件设计和实现软件有效性验证软件进化3.1软件过程模型瀑布模型:需求定义和分析;系统和软件设计;实现和单元测试;集成和系统测试;运行和维护进化式开发:探索式开发;抛弃式原型。存在的三个问题:过程不可见,系统结构通常较差,特殊工具和技术的使用形式化系统开发:用形式化数学转换来将系统描述转换成一个可执行程序。与瀑布模型之间的本质区别:1.软件需求描述被精炼成一个用数学符号表达的详细的形式化描述2.设计、实现和单元测试的开发过程被一个转换的开发过程所替代,在这个转换的开发过程中,形式化描述经过一系列转换变成一个可执行程序。面向复用的开发:1.组件分析2.需求修改3.使用复用的系统设计4.开发和集成3.2过程反复混合模型增量式开发;螺旋式开发。增量式开发:瀑布模型的优势在于其简单的管理模型以及设计和实现的分离,这使得系统是鲁棒的、容易修改的。进化式开发允许需求和设计决策的延迟,但是也导致了软件的较差结构和难以理解和维护。增量式开发是一个结合这两个模型的优点的综合方法。目的:减少返工好处:1.客户无需等到整个系统的实现。(就可以使用)2.客户可以将早期的增量作为原型,从中获得对后面系统增量的需求经验。3.项目总体失败的风险比较低。4.重要的系统服务肯定接受了最多的测试,客户不太可能遇到失败。螺旋式开发:每个回路被分成四个部分1.目标设置风险评估和规避开发和有效性验证规划特点:明确的风险考虑3.3软件描述//非重点需求工程过程有四个主要阶段:1.可行性研究需求导出和分析需求描述需求有效性验证3.4.软件设计和实现//非重点多次反复的过程,设计过程中的活动是交替进行的。设计过程中的一些特别的活动包括:1.体系结构设计抽象描述接口设计组件设计数据结构设计算法设计设计方法——结构化方法结构化方法所支持的模型:1.数据流模型2.实体-关系模型3.结构化模型4.面向对象方法调试过程:错位定位,设计错误修复,程序错误修复,程序重测3.5软件有效性验证//非重点测试过程:1.单元测试模块测试子系统测试系统测试接受测试(α测试)当一个系统要作为软件产品在市场上销售时,所要进行的测试称为β测试。3.6软件进化//非重点3.7软件描述======================================================================第四章项目管理管理活动项目规划项目计划:项目调度条形图,活动网状图管理风险项目/产品/业务======================================================================第五章软件需求分类。用户需求系统需求软件设计描述;5.1功能需求和非功能需求(领域需求)5.2用户需求不可能适用任何现实的模型来描述,而是用自然语言、图表和直观的图形来叙述。用户描述必须遵守的原则:按照设计好的一个标准的格式书写,使用一致的语言,加亮文本突出关键性的需求,尽量避免使用计算机专业术语。5.3系统需求结构化语言描述,PDL描述,借口描述。5.4软件需求文档引言一般描述,专门需求附录索引第七章系统模型上下文模型行为模型:数据流模型,状态机模型数据模型对象模型:继承模型,对象聚合,对象行为建模CASE工作平台第八章软件原型系统开发软件过程中的原型开发:进化式原型开发抛弃式原型开发快速原型技术:适用动态高级语言数据库程序设计组件和应用集成用户界面原型开发======================================================================第十章体系结构的设计开发的体系结构模型可能包括:静态结构模型,动态过程模型,接口模型,关系模型10.1系统构成容器模型客户机/服务器模型抽象机模型10.2控制模型集中式控制:调用-返回模型;管理者模型基于事件的控制:事件驱动系统:广播模型;中断驱动模型10.3模块化分解面向对象模型数据流模型10.4领域相关的体系结构类模型—编译器模型:词法分析器,符号表,语法分析器,语法树,语义分析器代码生成器参考体系结构—OSI参考模型======================================================================第十二章面向对象的设计面向对象的分析面向对象的设计面向对象的程序设计12.1对象和对象类操作,方法。泛化分层结构(画图)并发对象服务器主动对象12.2面向对象设计过程系统上下文和使用模型它们的补充模型:1.系统上下文是一个静态模型,描述环境中的其他系统。2.系统使用模型是一个动态模型,描述系统实际上是如何与环境交互的。体系结构的设计实例:气象台体系软件三个层:接口,数据采集,仪器。对象识别设计模型:静态模型,动态模型;子系统模型,序列模型,状态机模型;接口对象描述12.3设计进化第十九章检验和有效性验证有效性验证:我们是否在建立一个正确的产品?检验:我们是否在正确的建立一个产品?V&V过程软件检查(静态)软件测试(动态)缺陷测试,统计性测试系统需要的信任程度依赖于系统的设计目标、系统用户对它的期望和目前的市场环境。测试和调试的区别:前者是证明一个软件系统中存在缺陷的过程,后者是一个对缺陷定位和修改的过程。19.1检验和有效性验证规划V&V过程的规划应该在开发过程的早期就开始着手。软件测试计划的结构:需求跟踪测试项目测试时间安排测试记录程序硬件和软件需求约束19.2软件检查程序检查:数据缺陷,控制缺陷,输入/输出缺陷,接口缺陷,存储管理缺陷,异常管理缺陷19.3自动静态分析控制流分析数据使用分析接口分析信息流分析路径分析19.4净室软件开发方法形式化描述增量式的开发结构化程序设计静态检验系统统计性测试使用净室过程作为大型系统开发时,需要:描述团队,开发团队,认证团队======================================================================第二十章软件测试20.1缺陷测试目标是找出潜伏的缺陷。(让系统暴露其不正确的一面)软件测试的一个特性就是要证明有错,而不是证明没错。黑盒测试(功能性测试):适用于由功能构成的和由对象构成的系统。等价划分:找出程序必须处理的所有输入类型,然后做等价划分。边界?结构化测试(白盒测试):适用于相对较小的程序,从函数所用的算法可以找出等价划分。路径测试:属于一种结构化测试策略。实例:二分搜索流图20.2集成测试这里的测试是要发现组件交互中的问题。测试根据系统描述来做,在一些系统组件一完成就开始进行。自顶向下:桩到桩的测试。自底向上:不需要系统体系结构设计的完成就可以进行。比较:1.体系结构的有效性2.系统演示3.测试的执行4.测试的观察)接口测试接口类型:1.参数接口2.共享内存接口3.程序接口4.消息传递接口错误:接口误用,接口误解,计时错误测试的一般准则测试强度:在超过设计极限负荷的情况下,连续用例继续测试直至失败为止。对于基于网络的分布式系统特别有用。20.3面向对象的测试测试的四个层次:1.测试与对象关联的单个操作2.测试单个对象类3.测试对象群4.测试面向对象系统对象类调试:1.对象中所有操作被单独隔离测试2.对象所有属性的设置和访问的测试。3.对象的所有可能状态的测试。集成测试的3个可用的方法:1.用例或基于场景的测试2.线程测试3.对象交互测试======================================================================阅读以下两章,适当掌握。第二十二章人员管理22.4人员能力成熟度模型(能够分辨几个模型)其中的一部分是软件过程成熟度模型(CMM)P-CMM有5个层级的模型。初始级可重复级:补偿培训绩效管理人员配备沟通工作环境已定义级:分享的文化基于能力的实践职业开发能力开发人力规划知识和技能分析已管理级:机构生产力定位机构能力管理基于团队的实践团队建设指导优化级:持续的人力改革培训个人能力开发