软件工程导论----西南交大机械考点_第1页
软件工程导论----西南交大机械考点_第2页
软件工程导论----西南交大机械考点_第3页
软件工程导论----西南交大机械考点_第4页
软件工程导论----西南交大机械考点_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、.1、软件是能够完成预定功能和性能,并对相应数据进行加工的程序和描述程序及其操作的文档。软件=程序+数据+文档,程序=算法+数据结构.2、软件工程是:(1)将系统的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,也就是把工程应用于软件;(2) 上述方法的研究。软件工程三要素:过程、方法和工具。3、软件生命周期是指软件产品从形成概念开始,经过开发、运行(使用)和维护直到退役的全过程称为软件生存周期,包括软件定义、开发、使用和维护三部分。软件定义包括问题定义、可行性研究、和需求分析;软件开发包括总体设计、详细设计、编码和单元测试、综合测试。4、软件危机是指在计算机软件的开发和维护过程中所

2、遇到的一系列严重问题。主要表现为:硬件发展超过软件,硬件潜能没有充分发挥;软件产业的发展长期滞后,与硬件发展不协调;软件开发成本过高;软件质量得不到保证;软件开发效率低;难以控制开发进度,工作量估计困难。产生的主要原因是:软件的规模加大、复杂性提高、性能增强;软件是逻辑产品, 尚未完全认识其本质和特点;缺乏有效的、系统的开发、维护大型软件项目的技术手段和管理方法。5、软件工程目标是在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可适应性、可追踪性、可移植性、可互操作性、并满足用户需求的软件产品。6、软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。软件需求分

3、析阶段的任务,通过对问题及环境的理解、分析,将用户需求精确化、完全化,最终形成需求规格说明,描述系统信息、功能和行为。需求分析三阶段:问题分析,需求描述,需求评审 验证软件需求:1、一致性:所有需求必须是一致的,任何一条需求都不能和其他需求相互矛盾;2、完整性:需求必须是完整的,软件需求规格说明书应该包含用户对软件产品的每一项要求;3、现实性:指定的需求应该是用现实有的硬件技术和软件技术可以实现的;4、有效性:需求必须是有效的,确定能解决用户所面临的问题,可以达到开发该软件的目的。 需求分析内容:功能,信息,行为,约束。需求分析技术和方法:常见的方法有结构化分析方法(面向数据流)和面向对象分析

4、方法。7、模块化是指把软件划分为可独立命名和编址的部件,每个部件称为一个模块,当把所有模块组装到一起时则获得满足问题需要的一个解。模块化是软件唯一能使程序获得智能化管理的一个属性。“模块”,又称“组件”。它一般具有如下三个基本属性:1功能:描述该模块实现什么功能;2逻辑:描述模块内部怎么做;3状态:该模块使用时的环境和条件。模块独立是指:1、模块应该设计得使其所含信息(过程和数据)对于那些不需要这些信息的模块不可访问;2、每个模块只完成一个相对独立的特定功能;3、模块之间仅仅交换那些为完成系统功能必须交换的信息,即模块应该独立。采用信息隐藏原理指导模块设计优点:支持模块的并行开发;减少软件测试

5、和软件维护的工作量。模块独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其它的模块的接口是简单的。一般采用两个准则度量模块独立性,即模块间耦合和模块内聚。8、事务流数据流 在很多软件应用中,存在某种作业数据流,它可以引发一个或者多个处理,这些处理能够完成作业要求的功能,这种数据流叫做事务流数据流。面向数据流的设计方法:交换流和事务流。事务流由于基本系统模型呈变换流,故任意系统中的信息均可用变换流刻画。单个数据项称为事务沿传入路径(接受通道)进入系统,由外部形式变换为内部形式后到达事务中心,事务中心根据数据项计值结果从若干动作路径中选定一条继续执行。软件设计的基本原理和原

6、则:模块化,抽象,逐步求精,信息隐蔽和局部化,模块独立。9、内聚度是指模块内部各成分彼此结合的紧密程度。内聚度按其高低程度可分为七级,内聚度越高越好。低级内聚度:1偶然性内聚,模块内各成分为完成一组功能而组合在一起,它们相互之间即使有关系,也很松散。2逻辑性内聚,模块完成的诸任务逻辑上相关,如,一个模块产生所有与类型无关的输出。3时间性内聚,模块包含的诸任务必须在同一时间段内执行,如一个初始化模块。中级内聚度:1过程性内聚,模块具有过程性内聚度指,模块内成分彼此相关,并且必须按特定的次序执行; 2通信性内聚,模块中各成份都将对数据结构的同一区域进行操作,以达到通信的目的。高级内聚度:1顺序性内

7、聚,模块内的各处理成份均与同一功能相关,且这些处理必须顺序执行,则称顺序内聚。2功能性内聚,模块内所有成分形成一个整体,完成单个功能。 设计软件时应该能够识别内聚度的高低,并通过修改设计尽可能提高模块内聚度,从而获得较高的模块独立性。10、黑盒测试是指一种方法是已知产品应该具有的功能,通过测试检验每个功能是否都能正常使用。黑盒测试完全不考虑程序的内部结构和处理过程。测试仅在程序界面上进行。设计测试用例旨在说明:软件的功能是否可操作;程序能否适当地接收输入数据并产生正确的输出结果或在可能的场景中事件驱动的效果是否尽如人意;能否保持外部信息(如数据文件)的完整性。黑盒测试旨在测试软件是否满足功能要

8、求,它主要诊断下列几类错误:1不正确或遗漏的功能;2界面错误;3数据结构或外部数据库访问错误;4性能错误;5初始化和终止条件错误。白盒测试是指是已知产品内部工作过程,通过测试检验产品内部动作是否按照产品规格说明的规定正常进行。白盒测试法密切关注处理细节,针对程序的每一条逻辑路径都要分别设计测试用例,检查分枝和循环的情况。穷举测试不可取,一般选用少量“最有效”,即最有可能暴露错误的路径进行测试。白盒测试的目的是为了找出错误,所以无论采用黑盒法还是白盒法,设计测试用例时总是期望用尽可能少的时间和代价发现尽可能多的错误。白盒测试应该根据程序的控制结构设计测试用例,原则是:保证模块中每一独立的路径至少

9、执行一次;保证所有判断的每一分枝至少执行一次;保证每一循环都在边界条件和一般条件下至少各执行一次;验证所有内部数据结构的有效性。11、测试类型:1、单元测试:对象是软件设计的最小单位模块,依据是详细设计描述,单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误。单元测试多采用白盒测试技术,系统内多个模块可以并行地进行测试(白)。2、组装测试:组装软件的系统测试技术,按设计要求把通过单元测试的各个模块组装在一起之后,进行综合测试以便发现与接口有关的各种错误(白和黑)。3、确认测试:检查软件能否按合同要求进行工作,即是否满足软件需求说明书中的确认标准(黑)。12、边界值分析法:

10、经验表明,大多数错误都发生在输入的边界值上。为此,专门引入边界值分析(BVA)技术,旨在选择测试用例,强迫程序在边界值上执行。BVA技术是对等价分类技术的补充,即在一个等价类中不是任选一个元素作为此等价类的代表进行测试,而是选择此等价类边界上的值。13、维护活动根据起因可分为改正性维护、适应性维护、改善性维护和预防性维护四类:1改正性维护是为诊断和改正软件系统中潜藏的错误而进行的活动。2适应性维护是为适应环境的变化而修改软件的活动。3改善性维护是根据用户在使用过程中提出的一些建设性意见而进行的维护活动。4预防性维护是为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠定基础。14、变换分

11、析由一系列设计步骤组成,经过这些步骤就能把具有变换流特点的数据流图,按预先确定的模式映射成软件结构。步骤一复审基本系统模型-基本系统模型指顶级和所有由外部提供的信息。这一设计步骤是对系统规格说明书和 软件需求规格说明书进行评估。步骤二复审和精化软件数据流图-精化软件需求规格说明书中的分析模型,直至获得足够详细的。步骤三确定为变换流还是事务流-系统内部的信息流总可以用变换流表示,倘若具有明显的事务特性,还应该采用针对事务流的映射方法。设计人员首先要判定中占主导地位的信息流,并确定其特性,然后孤立出具有变换特性或事务特性的支流,这些支流将用于精化由主导数据流推出的程序结构。步骤四划定输入流和输出流

12、边界孤立变换中心-输入、输出流边界的划分可能因人而异,不同的设计人员可能把边界沿着数据通道向前推进或后退一个处理框,这对最后的软件结构影响不大。步骤五执行“一级分解”导出具有三个层次的程序结构。步骤六执行“二级分解”-把数据流图中每个处理框映射成程序结构中一个适当的模块,二级分解过程是从变换中心的边界开始沿输入、输出通道向外移动,把遇到的每个处理框映射为程序结构中的一个模块。步骤七采用启发式设计策略,精化所得程序结构雏形,改良软件质量。事务流分析方法和交换分析基本相同,仅在由数据流图到软件结构的映射方法不同。15、事务分析法可分为七个步骤,前三步与变换分析法相同,步骤四、找出数条动作路径的公共

13、源头,即为事务中心,确定由事务中心发出的每一动作路径的数据流特性。步骤五、把数据流图映射为事务处理型的程序结构-事务处理型的程序结构由“ 输入”和“散转”两部分组成,输入部分的构成方法如变换分析法,即从事 务处理中心开始,沿输入通路向外推进,每个处理框映射为一个模块。“散转”部分顶层为一“散转”模块,它总控所有对应于每一动作路径的控制模块,每条动作路径都根据它的信息流特征映射为一个程序子结构。步骤六、分解并精化事务结构以及每条动作路径所对应的结构。步骤七、使用启发式设计策略,精化所得程序结构雏形,改良软件质量。16、UML(统一建模语言)是面向对象技术发展的一个重要里程碑。UML统一了面向对象

14、建模的基本概念、术语和表示方法,不仅为面向对象的软件开发过程提供了能力丰富的表达手段,而且也为软件开发人员提供了互相交流、分享经验的共用语言。UML主要以Booch方法、OMT方法和OOSE方法为基础,同时也吸收了其他面向对象建模方法的优点,形成了一种概念清晰、表达能力丰富、适用范围广泛的面向对象的标准建模语言。UML通过图形化的表示机制从多个侧面刻画系统的分析和设计模型。UML共定义十种视图,可分四类:1用例图-从外部用户的角度描述系统的功能,并指出功能的执行者。2静态图-类图,类图描述系统的静态结构;对象图,对象图是类图的一个实例。它描述在某种状态下,或者在某一时间段系统中活跃的对象及其关

15、系;包图,包图描述系统的分解,表示包以及包之间的关系,包由子包及类组成,包之间的关系包括继承、构成与依赖关系。3行为图-交互图、状态图、活动图,它们从不同的侧面刻画系统的动态行为。交互图描述对象之间的消息传递。它又可分为顺序图与合作图两种形式。顺序图强调对象之间消息发送的时间序。合作图更强调对象间的动态协作关系。合作图也可通过消息序号来表示消息传递的时间序。状态图描述类的对象的动态行为。它包含对象所有可能的状态、活动图描述系统为完成某项功能而执行的操作序列,这些在每个状态下能够响应的事件以及事件发生时的状态迁移与响应动作。活动图中包含控制流和信息流。控制流表示一个操作完成后对其后续操作的触发,

16、信息流则刻画操作之间的信息交换。4实现图-描述软件系统的实现。构件图描述软件实现系统中各组成部件以及它们之间的依赖关系。部署图描述软件系统运行环境的硬件及网络的物理体系结构。17、瀑布模型以软件需求完全确定为前提的,主要思想是1软件开发过程与软件生命周期是一致的2相邻二阶段之间存在因果关系3需对阶段性产品进行评审;瀑布模型的优点是1软件生命周期模型,使软件开发过程可以在分析、设计、编码、测试和维护的框架下进行;2软件开发过程具有系统性、可控性,克服了软件开发的随意性。瀑布模型的缺点是:1项目开始阶段用户很难精确的提出产品需求,由于技术进步,用户对系统深入的理解,修改需求十分普遍。2项目开发晚期

17、才能得到程序的运行版本,这时修改软件需求和开发中的错误代价很大。3采用线性模型组织项目开发经常发生开发小组人员“堵塞状态”,特别是项目的开始和结束。18、结构设计法方法将数据流图转换为软件结构 确定信息流的类型;划定流界;将数据流图映射为程序结构;提取层次控制结构;通过设计复审和启发式策略精化结构。第三步所用映射方法涉及信息流的类型。信息流分为变换流和事务流两种类型。19、依赖倒转原则(DIP)讲的是:要依赖于抽象,不要依赖于具体。依赖倒转原则的一种表述是:细节应当依赖于抽象,抽象不应当依赖于细节。另一种描述是:要针对接口编程,不要针对实现编程。意思就是应当使用接口和抽象类而不是具体类进行变量

18、的类型声明、参数的类型声明、方法的返回类型声明以及数据类型的转换等。20、耦合度是指软件结构中模块间关联程度的一种度量。耦合度也分为七级:1非直接耦合,两模块中任一个都不依赖对方能独立工作, 这类耦合度最低; 2数据耦合,两模块通过参数交换信息,信息仅限于数据;3控制耦合,传递的信息含有控制信息。控制耦合通常会增加系统的复杂性,适当分解模块可望消除控制耦合;4特征耦合,介于数据耦合与控制耦合之间;5外部耦合,当若干模块均与同一个外部环境关联;6公共耦合,若干模块通过全局的数据环境相互作用, 全局数据环境中可能含有全局变量、公用区、内存公共复盖区、任何存储介质上的文件、物理设备等;7内容耦合,一

19、个模块使用另 一模块内部的数据或控制信息;一个模块直接转移到另一模块内部等等。设计软件时应尽量使用数据耦合,减少控制耦合,限制外部环境耦合和公共数据耦合,杜绝内容耦合。如何将DFD图转化为结构图:可通过“变换分析”和“事务分析”技术,导出“变换型”和“事务型”初始的模块结构图。这两种方法的思想是首先设计顶层模块,然后自顶向下,逐步细化,最后得到一个满足数据流图所表示的用户要求的系统的模块结构图,即系统的物理模型。1、确定信息流类型2、划定流界3、将数据流图映射为结构4、提取层次控制结构5、通过计算复审和使用启发式策略进一步精华所得结构如何将DIP转换程序结构图:依赖倒转原则,要针对接口编程,不

20、要针对实现编程,意思就是应当使用接口和抽象类而不是具体类进行变量的类型声明,参数的类型声明、方法的返回类型声明,以及数据类型的转换等,一个具体java类应当只实现java接口和抽象java类中声明过的方法,而不应当给出多余的方法。软件设计在技术上可分为总体结构设计、数据设计、过程设计和界面设计四个活动;在工程上可区分为概要设计和详细设计两个阶段。软件设计中用到基本概念包括:抽象与逐步求精;模块化与信息隐藏;软件总体结构、数据结构与软件过程。软件总体结构应该包括两方面内容:1由系统中所有过程性部件(即模块)构成的层次结构, 亦称为程序结构;2输入输出数据结构。软件总体结构设计的目标是产生一个模块

21、化的程序结构并明确各模块之间的控制关系,此外还要通过定义界面,说明程序的输入输出数据流,进一步协调程序结构和数据结构。软件的深度和宽度分别说明控制的层数和跨度。模块的“扇出率”指该模块直接控制的其他模块数。模块的“扇入率”指能直接控制该模块的模块数。如果一个模块控制另一模块,称前者为“主控”模块,后者为“从属”模块。模块的可见域指该模块可直接或间接引用的一组模块;模块的连通域指模块可直接引用的模块。 面向对象方法:对象+类+继承+消息通信。对象是现实世界中个体或事物的抽象表示,是其属性和相关操作的封装。 类表示某些对象在属性和操作方面的共同特征。 类之间的继承关系是现实世界中遗传关系的模拟,它表示类之间的内在联系 以及对属性和操作的共享,即,子类可以沿用父类(被继承类)的某些特征。子类也可以具有自己独有的属性和操作。 部分整体关系在O

温馨提示

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

评论

0/150

提交评论