软件工程复习提纲(剑兰)学习资料_第1页
软件工程复习提纲(剑兰)学习资料_第2页
软件工程复习提纲(剑兰)学习资料_第3页
软件工程复习提纲(剑兰)学习资料_第4页
软件工程复习提纲(剑兰)学习资料_第5页
已阅读5页,还剩7页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

《软件工程》复习提纲1软件与软件工程1.1软件的基本概念(例如,软件的定义、文档、软件的特点等)两种定义:软件是与计算机系统操作有关的程序、规程、规则以及任何与之相关的文档和数据。软件是程序以及开发、使用与维护所需要的文档,包括机器运行所需要的各种程序及有关资料。软件文档由面向用户的文档和面向开发者的文档构成。软件的特点: 计算机软件产品部件是一种逻辑产品部件而不是物理产品部件。 软件产品的生产主要是研制,把通过人们的智力活动,把知识与技术转化为信息产品。 软件具有复杂性,主要是因为其开发和运行受到计算机系统的限制。另外软件投入后也需要维护,这又带来更多的复杂性。 软件不存在磨损,不会有物理上的老化,但是会有软件退化问题。 软件成本昂贵,其开发方式至今未完全摆脱手工生产方式。1.2软件危机的概念软件危机的出现是由于软件规模越来越大,复杂度增大,需求也不断增加。软件危机分为两种:软件产品质量低劣,甚至在开发过程中就夭折软件生产效率低下,无法满足需求1.3软件工程学的概念(定义)、研究的内容(三要素)1、把系统化的、规范化的、可度量的途径应用于软件的开发、运行和维护中,也就是将工程化应用于软件中。2、研发1中提到的途径。研发的三要素为方法、工具和过程。1.4软件工程学的原理、原则7条基本原则: 抽象、模块化、信息隐蔽、局部性(本地化?)、一致性、完备性(完整性?)、可验证性。1.5软件工程的基本(主要)目标压缩成本;实现功能;提高性能;易于移植;易于维护;按时交付。也即多、快、好、省。1.6软件开发模型概念(常用的几种) 瀑布模型 快速原型模型 循环模型 螺旋模型 基于4代语言的模型 构件组装模型 基于面向对象的模型 基于知识工程的模型 变换模型1.7传统的瀑布模型分成哪几个阶段,以及基本任务 问题定义 可行性研究 需求分析 总体设计 详细设计 编码与单元测试 综合测试 运行与维护2可行性研究2.1基于计算机的系统 计算机的系统定义为某些元素的一个集合或者排列,这些元素被组织起来,以实现某种方法、过程或者借助处理信息进行控制等。2.2可行性研究的概念、目的、任务 可行性研究的概念是,在进行软件开发前,根据用户提出的需求和资源,判断能否成功完成开发。 可行性研究的目的是,以最小的代价在最短时间内得出问题是否有解,以及是否值得解。 任务是,根据得到的系统框架描述信息和系统在机构中被使用的说明得出可行性研究报告。2.3可行性研究内容包括哪几方面的可行性 经济可行性 技术可行性 社会可行性 方案的抉择与可操作性2.4系统分析与系统结构模板7种软件(系统?)分析方法: 功能分解方法 数据流方法 结构化开发方法 原型化方法 信息造型方法 Jackson方法 面向对象方法系统结构常用结构图来描述。工程师使用结构模板来建立系统结构图。 描述系统总体结构的叫结构环境图(ACD)或系统语境图(SCD),它位于模型的最上层。 子系统的描述使用结构流程图(AFD)3软件需求工程(软件系统分析)3.1软件系统分析的概念、原则及任务软件需求分析是在软件可行性分析的基础上对系统的目标和功能做进一步的详细论述,把系统的总体概念转换为具体的软件需求规格说明,为系统的开发奠定基础。需求分析的原则:必须理解和表示出问题的信息域(包括信息流、信息内容和信息结构),可用数据模型描述;必须定义软件将完成的功能域(包括上述三方面的控制信息),可用功能模型描述;必须表示软件的行为域(服务、操作),可用行为模型来描述;描述软件的信息、功能和行为模型能够划分,以便用分层次地展示细节;分析过程应从要素信息转移向实现细节,可采用逐步求精的方式。需求分析的任务是:通过当前的系统的逻辑模型导出目标系统的逻辑模型。3.2需求分析的过程分为以下4步:问题识别(获取);分析和综合,导出系统逻辑模型;编写文档(包括需求说明书、初步的用户使用手册、测试计划和开发计划);需求分析的评审。3.3软件需求建模(三个子模型+数据字典) 数据模型、功能模型、行为模型、数据字典 数据字典是核心,三模型可互相迭代、围绕数据字典。 数据模型:E-R图; 功能模型:数据流图; 行为模型:状态图。3.4结构化分析方法(SA方法)的概念和描述工具(数据流图、数据词典、加工说明、其他补充材料)结构化方法是现有的软件开发方法中最成熟、应用最广泛的方法。主要特点是快速、自然和方便。结构化开发方法构成:结构化分析方法(SA);结构化设计方法(SD);结构化程序设计方法(SD)。其基本思想是“分解”和“抽象”,分以下几个步骤:建立当前系统的“具体模型”;抽象出当前系统的逻辑模型;建立目标系统的逻辑模型;为了对目标系统做完成的描述,还需要考虑人机界面和其他一些问题。SA方法的描述工具:分层的数据流图;数据词典;描述加工逻辑的结构化语言、判定表和判定树。3.5软件规格说明软件规格说明(SRS)也称为功能规格说明,是软件需求分析得最终产物。4软件设计工程4.1软件设计的概念(包括总体设计、详细设计)软件设计是一个把软件需求转化为软件表示的过程,也就是把它加工为在程序细节上非常接近于源程序的软件表示(描述)。4.2软件设计原则和原理原则:设计过程不应受到“隧道视野”的影响;设计应该可以回溯到分析模型;设计不应每次从头做起;软件设计的结构应该尽量模拟问题域结构;设计应该具有一致性和集成性;设计应该适应变更、具有容错性;设计不是编码;在创建设计时就应能评估系统质量;评审设计以减少错误;。原理:模块化:将系统分为若干的模块,每个模块完成一个子功能;模块分解会引入模块间接口成本,存在一个最小成本区使模块成本和接口成本的和最小。分解与抽象:分解能使系统的复杂度降低;抽象是提取事物共性的过程。逐步求精:“为了能集中精力解决主要问题而忽略细节的考虑”。信息隐藏:每个模块完成相对完整的功能,内部不可访问,仅对外提供定义的通用访问接口。4.3软件设计过程和模型软件设计需要完成一系列任务,完成体系结构模型、数据模型、接口模型和构件模型的设计。4.4软件体系结构、系统分解(常用工具、图形等)软件体系结构指软件整体结构和这种结构提供系统在概念上的整体性的方式。系统分解以块状结构或层次结构来表示。4.5模块和模块设计、模块的内聚度和类型、模块的耦合度和类型、模块设计的准则(高内聚低耦合) 内聚度是模块内部功能联系的紧密程度,内聚度越高,模块独立性越好。 偶然型<逻辑型<时间型<过程型<通信型<顺序型<功能型 耦合度是模块间功能关联的紧密程度,耦合度越强,模块间独立性越差: 内容耦合>公共耦合>控制耦合>复合耦合(特征耦合)>数据耦合4.6面向数据流的设计方法(SD方法与描述工具)4.7数据流图的两种类型,从数据流图导出程序的初始结构图,常用的(1)变换分析与变换设计(2)事务分析与事务设计数据流图的类型分为变换型和事务型,对应的程序结构也分变换型和事务型。变换型数据流:在数据流中,具有较明确的输入流、变换中心、输出流三部分特征的数据流称为变换型数据流。事务型数据流:在数据流中,存在有单个事务的数据项,它可沿着多条路径之一触发其他数据流。变换分析与变换设计:从变换型数据流图导出变换型的程序结构。事务分析和事务设计:从事务型数据流图导出事务型的程序结构。4.8过程(详细)设计的概念过程设计也称为构件设计,它的主要任务是把结构体系的结构元素转换成对软件构件的过程型描述。过程设计确定每一个构件的内部特征,即模块内部的数据结构和算法细节。4.9结构化程序设计及基本控制结构(SP方法)三种基本控制结构:顺序型、选择型、循环型。4.10过程(详细)设计的工具(常用工具:程序流程图、盒图、问题分析图(PAD)、伪代码等)5软件测试工程5.1测试的基本概念(定义)程序测试是为了发现错误而检查文档和执行程序的过程,对于程序的测试是根据软件的规格说明和软件的内部结构而设计的一批测试用例,并利用这些测试用例去运行程序,以发现软件错误的过程。5.2测试的目的、原则以及流程测试的目的是以最小的人力、物力和时间的投入,尽可能多第发现软件中的各种错误。测试的原则(可以?)是:所有的测试都应该追溯到用户需求;应该尽早制定测试计划;应该由第三方来进行测试工作;穷举测试是不可能的;充分注意到错误的群集现象;测试应该从“小规模”到“大规模”。测试流程:5.3常用的测试的方法(手段)和技术(人工评审静态测试、机器静态分析、程序正确性证明、机器动态测试)(1)黑盒法及技术黑盒法(又称功能测试)注重测试软件功能需求,它很少设计程序内部逻辑结构,以程序的功能作为测试依据。以黑盒法进行测试时,测试人员应完全不考虑软件内部结构和处理过程,只从程序接口进行测试。其主要检查以下错误:功能不正确或者被遗漏;界面错误;数据结构或外部数据库访问错误;性能错误;初始化或者终止错误。黑盒法主要技术有:等价类法;边界值法;错误猜测法。(2)白盒法及技术白盒法(又称结构测试)需要了解程序内部,以程序的逻辑结构入手,按照程序内部逻辑结构测试、检验程序。有以下一些测试原则:保证模块中每一个独立的路径至少执行一次;保证所有判断的每一个分支至少执行一次;保证每一个循环都在边界条件下和一般条件下至少执行一次;验证所有内部数据结构的有效性。白盒法的主要技术有:逻辑覆盖法;循环测试;基本路径测试。5.4程序流图及与复杂度计算(McMabe复杂度)程序流程图简称流图,它是程序流程图中结构化构件改造为一个有向图的形式,或理解为流程图的简化形式。复杂度V计算公式为(实则为欧拉公式):V(G)=边数-点数+2;5.5测试的步骤(策略)(1)单元测试(2)集成测试(系统安装测试、系统组装测试、综合测试)(3)验收测试(确认测试、有效性测试)(4)系统测试6软件维护工程6.1软件维护的定义、软件维护的类型(分类)软件维护是指在系统交付使用以后,为了改正错误或满足新的需求而修改软件的过程。分为3类:纠错性维护:诊断和改正软件系统中潜伏下来的错误,这样的维护就叫做纠错性维护;适应性维护:为了适应新环境而修改软件的维护;完善性维护:为了改善、加强系统的功能和性能,提高软件运行的效率以满足用户新的要求,这样的维护活动称为完善性维护;预防性维护:预防性维护是为了改善软件系统的可维护性和可靠性,以便减少今后对它们维护所需要的工作量,为以后进一步改进软件打下良好的基础。6.2软件维护的特点(代价、副作用)由于修改软件所带来的新的错误被称为维护的副作用,主要有以下三种:修改代码产生的副作用:修改后的代码部分与其他部分出现不符;修改数据产生的副作用:修改后的数据与软件设计不一致;文档产生的副作用:修改后的程序与文档不一致。6.3软件维护的流程……6.4软件的可维护性概念软件的可维护性是指,纠正软件的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩的容易程度。7面向数据结构的方法7.1Jackson方法的基本概念Jackson方法是一种面向数据结构的方法,考虑问题的出发点是数据结构。其基本思想是先建立输入、输出的数据结构,再将其转换为软件结构。7.2Jackson图(用于描述数据结构和程序结构)分为三种典型动作:顺序型、选择型和重复型。顺序型中每个元素按确定的次序出现一次。选择型结构包含两个或多个元素,每次使用时根据条件从这些元素中选择一个。(以右上角的原点作标记)重复型(循环型)中元素可重复,每次使用时,根据条件重复出现任意次。(以右上角的星号作标记)7.3Jackson方法的设计步骤分为4个步骤:根据问题建立数据结构图,用Jackson图表达数据的输入和输出等。实际上是对求解问题进行分析;找出输入数据结构和输出数据结构有对应关系的数据单元;导出相应的程序结构;列出操作,并且分配到程序结构中适当的位置上;用伪代码描述程序结构图对应的过程性表示。8快速原型的开发方法8.1快速原型方法与定义快速原型法的基本思想是,在软件开发的早期快速建立起目标系统的原型,让用户对其评估后提出修改意见。当原型几经修改最终确定后,(1)将在该原型上进行设计编码、最终实现软件产品(2)仅适用该原型确定的外部特性实现软件产品。8.2原型开发的分类分为三类:探索型:这种原型的目的是为了摸清用户对目标系统的需求,确定所希望的特性,并探讨多种方案的可行性。它主要针对开发目标模糊,用户和开发者对项目都缺乏经验的情况。实验型:这种原型用于大规模开发和实现之前,考核方案是否合适,规格说明是否可靠。进化型:这种原型的目标不在于改进规格说明,而是将系统构造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统。它将原型方法的思想扩展到软件开发的全过程,适于满足需求的变动。8.3快速原型开发的过程5个阶段:快速分析:在分析人员与用户紧密配合下,迅速确定系统的基本需求,根据原型所要体现的特征(如上述的特征类型),描述基本需求以满足开发原型的需要。其关键要注意分析与描述内容的选取,围绕运用原型的目标,集中力量确定局部的需求说明,从而尽快开始构造原型。构造原型:在快速分析的基础上,根据基本需求说明尽快实现一个可运行的系统。原型设计特别强调用户可用部分的表示,并按原型目标设计原型结构。建造原型,使之达到第一次需求的主要目标。运行原型:由于原型忽略了很多内容而集中反映要评价的要素,用户要在开发者的指导下运行原型,使用过程中努力发现各种不合理的部分,使双方在共同运用原型的过程中进一步加深对系统的了解和相互直接的理解。评价原型:在运行的基础上,考核评价原型的特性,分析运行效果是否满足用户的愿望,纠正过去交互中的误解与分析中的错误,增添新的要求,并满足因环境变化或用户新想法引起的系统要求变动,提出全面的修改意见。修改原型:根据评价原型得到的结果进行修改,若原型未满足需求说明的要求,说明对需求存在不一致的理解或实现方案不够合理,则根据明确的要求迅速修改原型。将修改过程替代快速分析就可形成原型开发的循环过程,用户与开发者在这种循环过程中不断接近系统的最终要求。9面向对象软件工程方法9.1面向对象基本概念:对象、类(类的结构)、封装性、继承性、多态性、消息和方法对象:对象是包含有属性及为这些属性提供服务的构件,对象的属性一般只能通过对象的服务来修改。类:一组具有相同数据结构和相同操作的对象的集合。封装性:将属性和服务捆绑在一起形成一个相对独立的基本构件。对象内部的属性,只能由对象自身的服务请求来实现。继承性:是使用现存定义作为基本,建立新定义的技术。多态性:同一个消息发送到不同类的对象时产生不同的行为。消息:对象之间在交互中传递的通信信息。方法:类中操作实现的过程称为方法,方法是类和对象行为的描述。(结构:对象之间的关系:组合、分类、属性间静态联系、行为间动态联系)。9.2面向对象建模(1)面向对象建模(Rumbaugh方法,OMT(ObjectModelingTechnique))使用了建模思想,分析模型由三个子模型构成:对象模型、动态模型和功能模型。(2)对象模型概念和描述工具(对象图)用于描述由对象和相应实体构成的系统内部对象的静态结构。包括对象的定义、对象的属性、对象的运算、对象之间的关系等。三类模型中对象模型最关键,它是分析阶段三个模型的核心,提供了其他两类模型都适用的框架。(3)动态模型概念和描述工具(状态图)用于根据事件和状态描述系统的动态结构、动态行为,即执行操作。例如,消息发送、事件——状态。(4)功能模型概念和描述工具(数据流图)用于描述系统的计算结构、数据变换、数据流动的情形等功能关系。(5)面向对象分析模型中三个子模型的关系在OMT方法的分析模型中,包括静态结构(对象模型)、交互次序(动态模型)、数据变换(功能模型)。状态图的事件对应数据流图的数据处理,也对应对象模型的服务。每个类对应一个动态模型,描述类实类的运行周期和生存周期。功能模型中的数据流对应对象的属性甚至整个对象,数据存储实体以及数据的源点、终点通常是对象模型中的对象。9.3面向对象分析(1)面向对象分析及基本过程(Coad与Yourdon方法的三个子模型、对象模型的五个层次)识别类&对象、划分结构(分类-继承;组装-委托)、定义属性、定义服务、标识主题三模型:对象模型,动态模型和功能模型。对象模型的五层:类与对象层:类与对象的识别、认定、定义和建立;属性层:标示对象的属性;服务层:识别对象的行为,也就是外部服务;结构层:识别类与结构;主题层:定义主题、分组与归并。(2)建立对象模型(描述系统的什么)。识别对象:找出对象;标示属性:提取出对象与问题有关联的属性;定义服务:确定对象对外提供的服务;定义结构:以功能为出发点对类进行划分;定义主题:以问题领域对类进行划分。(3)建立动态模型(描述系统的什么)步骤:建立典型交互行为的脚本;从脚本中提取事件,确定关联对象;排序事件;用状态图描述;复审。(4)建立功能模型(描述系统的什么)步骤:画系统基本模型图;确定目标系统的源点和重点;确定数据加工的整体功能;画数据流图;加工处理功能的描述。9面向对象软件工程方法需求模型、分析模型、设计模型、实现模型、测试模型。9.4面向对象设计(1)面向对象设计的基本概念判断模块化能力的5原则:分解性:设计方法能将大型问题分解为易于解决的子问题的程度;组装性:设计方法能将已创建的程序构件用于创建其他系统的程度;易理解性:程序构件在不参考其他消息或其他构件下,易于被理解的程度;连贯性:在模块中进行小修改时影响其他模块的程度;保护性:当模块内发生错误时影响其他模块的程度。据此导出以下基本原则: 模块化、抽象、信息隐藏、低耦合、高聚合、可重用。(2)OOD的三大活动总体设计(系统分解与设计):系统设计,体系架构设计、类的划分与组织;数据设计:数据结构设计;对象设计:对象设计、类的实现、成员函数实现的细节、算法。(3)系统结构分解(块状型、层次型、混合)块状型:将系统分解为若干弱耦合的子系统,每个子系统提供相对独立的服务

温馨提示

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

评论

0/150

提交评论