南京工业大学计算机系2009级软件工程考点整理.doc_第1页
南京工业大学计算机系2009级软件工程考点整理.doc_第2页
南京工业大学计算机系2009级软件工程考点整理.doc_第3页
南京工业大学计算机系2009级软件工程考点整理.doc_第4页
南京工业大学计算机系2009级软件工程考点整理.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

软件工程第1 章 导论1.软件工程:目前已成为一门知道软件系统开发和维护的新兴工程科学,它运用计算机科学,工程科学,数学,管理学和社会学等原理和方法指导软件系统的开发过程,以实现高质量,有效的软件系统。2.软件特征:软件是设计开发的;软件不会磨损;大多数软件是根据客户的要求定制的。(ppt:复杂性,特一致性,可变性,不可见性)3.软件的类型:从功能角度分为系统软件和应用软件,从服务对象的角度分为通用软件和定制软件。4.*软件质量:软件质量是软件产品或服务的特性和特征的整体,它取决于软件满足给定需求的能力。5.软件危机主要表现在:1)软件开发无计划性;2)软件需求不充分;3)软件开发过程无规范;4)软件产品无评测手段。6.*IEEE关于软件过程的定义为:软件过程是:1)将系统性的,规范化的,可定量的方法应用于软件的开发,运行和维护,即将过程化应用到软件上;2)对1)中所述方法的研究。(软件工程三要素:方法,工具和过程)。软件过程 :定义:软件过程是软件工作人员为了获得软件产品,在软件工具的支持下实施的一系列的软件工程活动,软件过程活动也就是软件生命周期内的活动。通用的过程框架可适用于绝大多数的软件项目,一般包含以下框架活动:1)软件定义2)软件设计和实现3)软件验证4)软件演化。软件过程的抽象称为过程模型,主要包括:瀑布模型,演化式开发,形式开发,基于组件的开发,螺旋模型,增量模型等。*瀑布模型:将过程活动分为需求分析,设计 ,编码,测试和维护几个阶段,与软件生存期相吻合,故亦称软件生存期模型。瀑布模型的阶段划分清晰,每一阶段经过评审方可进入下一阶段,有较高的文档要求,过程可见性好。*形式化开发:采用数学模型形式定义系统,然后将形式化模型转化为可执行系统。如军事,航天等领域的系统可采用形式化开发。*螺旋模型将软件工程活动定义为坐标轴上四个象限的活动,分别是计划,风险分析,工程实现和评审,以螺旋方式迭代。螺旋模型式对瀑布模型的一种改进,螺旋迭代方式可以克服瀑布模型缺乏柔性的缺点。重要的区别是风险分析活动,风险分析活动降低了阶段活动的风险。.软件工程方法:定义:通常把在软件生命周期全过程中使用的一整套技术的集合称为方法。系统,典型的软件工程方法主要有结构化方法和面向对象的方法。结构化分析方法,主要是利用数据流图来模拟数据处理过程,是一种面向数据流的开发方法,其基本原则是功能的分解和抽象。(SA)结构化设计的实质是将DFD转变成系统结构模型的过程,软件系统结构是指软件模块间的关系。(SD)面向对象方法的软件工程方法是面向对象方法在软件工程领域的全面应用,涉及面向对象分析(OOA),面向对象设计(OOD),面向对象编程(OOP),面向对象测试(OOT)和面向对象维护(OOSM)。.CASE(计算机辅助软件工程)工具是指用于软件过程活动中支持软件开发,维护,管理的不同类型的程序。可被分为三类:工具,工作台和集成的软件开发环境,三者区别:工具往往完成软件过程活动中的单一任务;工作台支持软件过程某个阶段的活动;集成的软件开发环境则是支持所有或核心活动的集成工具。.软件工程知识体系:SWEBOK。第2章 软件过程1.软件过程:是指软件生存周期所涉及的一系列相关过程,是软件从需求获取,需求分析,设计,实现,测试,发布到维护的过程。软件过程活动通常有:需求分析和定义,系统设计,程序设计,编码,单元测试,集成测试,系统测试,系统交付,维护等。软件过程可概括为三类:基本过程类,支持过程类和组织过程类。基本过程类包括需求获取和定义过程,设计过程,实现过程,验证过程和维护过程;支持过程类包括文档过程,配置管理过程,质量保证过程,联合评审过程,审计过程等;组织过程类包括基础设施过程,改进过程以及培训过程。2.软件过程模型是对软件开发过程的抽象。*瀑布模型:当前活动接受上一项活动的工作结果,实施完成所需的工作内容,前后有因果关系。(某公司计划开发二维 CAD 软件)适用:在开发的早期阶段软件需求被完整确定;挑战:实际的项目开发很少是线性的过程,客户很难明确地描述软件需求;缺点:各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;开发过程中很难响应客户的变更要求;早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果;*演化式开发模型:包含着并行的,循环的需求分析,开发和验证等活动。(北京市交通设施设计与漫游系统)适用:生命周期较短、中小规模的系统。当然在大型系统中,视具体情况部分采用演化式开发也是可行的。 优点:在及时响应用户需求改变方面比瀑布模型更为有效,软件改变的代价较小 缺点:系统的结构通常不好;软件过程可见性不好;开发过程通常需要特殊的工具和技术支持;*形式化变换模型:某些安全性,可靠性要求很高的软件系统,可采用形式转化模型来开发。(空中交通控制系统)适用:特别适合于那些对安全性、可靠性和保密性要求极高的软件系统,这些系统需要在投入运行前进行验证;优点:由于数学方法具有严密性和准确性,形式化方法开发过程所交付的软件系统具有较少的缺陷和较高的安全性;缺点:开发人员需要具备一定技能并经过特殊训练;形式化描述和转换是一项费时费力的工作;现实应用的系统大多数是交互性强的软件,但是这些系统难以用形式化方法进行描述;*面向复用的开发:主要建立在已有大量可利用的软件组件和组件的集成框架基础上,可以有效提高开发效率和质量。 (开发学生系统)面向复用的软件开发模型中的重要因素:1)基于组件的软件体系结构2)基于组件的开发过程;优点:充分体现软件复用的思想;实现快速交付软件;缺点:商业组件的修改受到限制,影响系统的演化*增量开发模型:主要内容是将系统的需求定义、设计和实现分解成若干增量依次开发和交付,以减少开发过程中的返工,也可以让用户通过体验先期交付的系统更准确、详细地给出需求。*螺旋模型:它将瀑布模型和快速原型模型结合起来,其过程活动不是按顺序进行而是以螺旋式展开,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。优点:关注软件的重用;关注早期错误的消除;将质量目标放在首位;适合大型软件项目;缺点:3.* Rational统一过程:RUP是基于UML的一种现代软件开发过程模型。 是一种混合过程模型,融合了一些通用过程元素。 强调开发和维护模型,UML的使用使其具有语义丰富的软件系统表达。 反映了许多人和公司的集体经验。 Rational统一过程模型:Rational统一过程中的软件生命周期在时间上被分解为四个连续的阶段,分别是:初始阶段,细化阶段,构造阶段和交付阶段。4.敏捷开发过程:敏捷开发是由业界专家针对企业现状提出的,让软件开发团队具有快速工作、响应变化能力的价值观和原则。第3章 面向对象系统建模:1.面向对象模型:面向对象模型更接近于问题域;反复细化高层模型直到可以实现的程度;将模型组织成对象的集合。2.面向对象基本概念:对象-是系统中描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和对这组属性进行操作的一组服务组成。类-是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。封装-是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐藏对象的内部细节。继承-是指子类可以自动拥有父类的全部属性和服务。3*UML 的构成有三类主要元素:基本构造块,语义规则,公共机制。基本构造块成分图见课本第4章 需求工程1.IEEE给出了如下关于软件需求的定义: 用户解决问题或达到目标所需的条件或能力; 系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力; 一种反映或所描述的条件或能力的说明。对定义的理解:软件需求的概念涵盖了用户角度(系统的外部行为)和开发人员角度(系统的内部特性)两个方面,其中的关键在于需求一定要文档化。根据需求文档服务的对象将需求分成两类:用户需求和系统需求;从系统应解决的问题和达到的目标来分,可分为功能性需求,非功能性需求和业务需求。用户需求:是从用户角度描述的系统功能需求和非功能需求,通常只涉及系统的外部行为,而不涉及系统的内部特性。原则:应该易于用户的理解。一般不采用技术性很强的语言,而是采用自然语言和直观图形相结合的方式进行描述。问题:自然语言表达容易含糊和不准确。系统需求:是更加详细地描述系统应该做什么,通常包括许多不同的分析模型,诸如对象模型、数据模型、 状态模型等。(了解)功能需求:描述系统应该提供的功能或服务,通常涉及用户或外部系统 与该系统之间的交互,一般不考虑系统的实现细节。非功能需求:从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求,例如响应时间、数据精度、可靠性、 开发过程的标准等。业务需求:组织或客户对于系统的高层次目标要求, 定义了项目的远景和范围,即确定软件产品的发展方向、功能范围、目标客户和价值来源。(既可是功能性也可以是非功能性的需求,业务需求不是用户指定的而是从系统应用域派生出来的。2.需求工程过程:需求工程过程活动是对需求的收集、分析、定义和验证的过程 ;主要包括可行性研究,需求获取和分析,需求定义和需求验证等。*需求工程过程图:3.*需求获取技术:用户交流,基于用例的需求获取(确定参与者,确定用例,构建用例模型,用例描述),原型化方法。(理解)4.需求定义:需求定义阶段的工作就是以分析模型为基础,形成完整的需求定义文档即需求规格说明,为设计提供基础,也为软件测试和确认及维护提供依据。(了解需求文档的步骤)5.需求验证:一般通过评审的方式来实现。需求验证主要围绕正确性检验,完整性检验,一致性检验,实现性检验和需求的可验证性展开。是确保需求规格说明准确、完整的表达必要的质量特点。只对已文档化的需求验证,未文档化的不验证。第5章 面向对象的分析1.面向对象的分析过程是找出分析类,分析包,构建它们之间的静态关系和动态协作模型的过程。分析类:分析类代表了系统设计中的一个或几个类或若干个子系统的抽象 分析类的类型:实体类:表示系统存储和管理的永久信息边界类:表示参与者与系统之间的交互控制类:表示系统在运行过程中的业务控制逻辑 边界类 控制类 实体类2.基于UML的需求分析:确定分析类;建模分析对象间的交互;构建分析类图 。确定分析类:识别边界类,识别控制类,识别实体类;(如何找出三个类)构建分析类图:确定职责,确定属性,确定关联和聚合,确定泛华,捕获特殊需求;第6章 软件设计1.软件设计原则:模块化和信息隐蔽,内聚和耦合,抽象和求精,复用;模块化和信息隐蔽:将一个复杂的大系统分解成若干个相对简单的子系统称为大系统模块化,使得求解问题的复杂性和工作量比一个大系统要小,求解更为容易。但模块的分解并非越多越好,模块之间存在着交互接口,当模块过多时 ,将会增加接口的代价。一个复杂的系统可以按层次分解为子系统,组件/服务类和函数,它们构成了不同层次的系统模块。内聚和耦合:内聚性是子系统内部的相关程度。当子系统中彼此相关的多个对象执行类似的任务时,则认为 该子系统是高内聚的;反之,当子系统内的多个对象彼此不相关时,则认为是低内聚的。(内聚越高越好)高内聚的方法做且仅做一件事,这会很容易理解与维护;高内聚的类表示且仅表示一种类型的对象。内聚度是描述信息隐藏和局部化概念的自然扩展,它标志一个模块内部各成分彼此结合的紧密程度;内聚度按其高低程度可分为7级,从低至高分别为:偶然内聚,逻辑内聚,时间内聚,过程内聚,通信内聚,顺序内聚,功能内聚。【内聚度越高越好】耦合:表示两个子系统(或类)之间的关联程度。耦合也可分为7级,从低至高为:非直接耦合,数据耦合,标记耦合,控制耦合,外部耦合,公共耦合,内容耦合。【耦合度越低越好】抽象是对问题的简化和概括,它忽略了问题的某些细节,有助于把握问题的本质;求精(Refine)是抽象的逆过程,是对问题自顶向下逐步分解、细化逐渐至细节的过程。抽象是对问题的简化和概括,它忽略了问题的某些细节,有助于把握问题的本质。求精(Refine)是抽象的逆过程,是对问题自顶向下逐步分解、细化逐渐至细节的过程。所谓复用就是利用某些已开发的、 对建立新系统有用的软件元素来生成新的软件系统。软件复用可以是代码级复用,也可以是组件级复用;复用还可以是设计级的复用。(了解)2.软件系统的体系结构:主要是指软件中相对独立的模块、这些模块接口之间的交互机制以及一系列组织管理这些操作的规则。常见的体系结构设计策略:管道过滤器结构分层体系结构 仓库系统结构 客户/服务器模式 :胖客户机结构如账户可取余额,操纵取款流程,打印服务凭条等;瘦客户机模型如基于Internet的Web应用系统。MVC模式(模型,视图,控制器)第9章 面向复用的设计1.经典的设计模式会举例第11章 软件实现1.软件实现的过程中包括:代码设计,代码编码,代码检查,代码编译和单元测试等基本活动。第12章 软件验证和确认1.验证和确认:验证和确认工作是在整个软件生命周期中对软件的规范性评估活动,以保证软件开发各个环节的正确性;软件验证试图证明在软件生存期的各个阶段,软件产品或中间产品是否能满足客户需求,包括逻辑协调性,完备性和正确性;软件确认是一系列的活动和过程,其目的是保证软件产品能够符合其描述的要求。在V&V过程中,可以使用软件审查和软件测试两种系统检查和分析技术;软件审查时对系统的各种表示形式(静态行为);软件测试是使用测试数据对软件的实现进行运行检查,查看系统的输出内容以及运行行为是否否和要求(动态行为);2.软件测试:目的:1)测试是一个为了寻找错误而运行程序的过程;2)一个好的测试用例是指很可能找到迄今为止尚未被发现的错误用例;3)一个成功的测试是揭示了迄今为止尚未被发现的错误的测试。通常的软件测试过程活动分为:单元测试,集成测试,系统测试和确认测试;*单元测试:要对被测模块的接口,局部数据结构,重要的执行路径,异常处理和边界等五个方面进行测试。*集成测试(也称组装测试或综合测试):是按设计要求把通过单元测试的各个模块组装在一起之后进行测试,以便发现与接口有关的各种错误;其可分为渐增式测试和非渐增式测试。*非渐增式测试方法:是先分别测试每个模块,再把所有模块按设计要求集成在一起,组合成所要的程序再进行测试。但一次集成所有模块不利于错误定位;*渐增式测试时逐步将待测试模块同已测试好的模块集成起来进行测试。当使用渐增方式把模块集成到软件系统时,有自顶向下和自底向上两种组合方法;A:自顶向下方法:可采用深度优先和宽度优先两种策略。B:自底向上结合:是软件从结构最底层层的模块开始向上组装模块,进行集成测试,当测试到较高模块时,所需的下层模块均已测试完毕,因而不再需要桩模块。一般分为四个步骤:1)把底层模块组合成一个特定软件系统;2)为每个模块设定一个驱动软件,作为测试的控制程序,以协调测试用例的输入和输出;3)对模块族进行测试;4)按系统结构逐层向上,用实际模块替换驱动程序,将模块族集成起来组装成新的模块族再进行测试;*系统测试:恢复测试,安全性测试,压力测试,性能测试;*确认测试()又称有效性测试,合格测试或验收测试):是软件交付前的最后测试;确认测试分为:测试是由用户在开发环境下进行的测试,也可以是开发机构内部的人员在模拟实际操作环境下进行的测试;测试是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试(与测试不同的是测试开发者一般不在现场);3.软件测试从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试用例设计方法;A:白盒测试:已知软件内部结构和算法,就可以测试其内部是否符合设计要求,这种测试方法称为白盒测试,是对软件的过程性细节进行检验;白盒测试又称为结构测试或逻辑驱动测试,是将测试对象比作一个打开的盒子,它允许测试人员利用程序内部的罗杰结构和相关信息来设计或选择测试用例,对软件的逻辑路径进行测试,可以再不同点检查程序的状态,以确定实际状态与预期状态是否一致;三种白盒测试技术:基本路径测试,逻辑覆盖测试和循环测试;B:黑盒测试:注重测试软件的功能需求,所有又称为功能测试。它不涉及软件的内部逻辑结构,以程序的功能作为测试的依据对程序进行测试。测试者要研究软件需求规格说明和设计的有关功能,性能,输入/输出之间的关系,只根据程序接口来设计测试用例,并将测试的结果与期望的结果进行分析;根据黑盒测试法的基本思想,软件测试人员应把程序看成一个黑盒,完全不考虑程序的内部结构和处理过程,以程序的外部功能为依据,检查程序是否能完成所规定的功能,证实软件功能的可操作性,程序是否可以很好的接收输入数据,产生正确的输出结果。另一方面还要

温馨提示

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

评论

0/150

提交评论