《安徽工程大学软件工程复习资料(共14页).docx》由会员分享,可在线阅读,更多相关《安徽工程大学软件工程复习资料(共14页).docx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上微型计算机及接口专业:计算机科学与技术计算机科学与技术21022013年6月第一章软件定义:软件是:(1)指令的集合(计算机程序),通过执行这些指令来满足预期的特征、功能和性能需求; (2)数据结构,使得程序可以合理的利用信息;(3)文档描述,用来描述程序操作和使用。软件与硬件的区别:(1)软件是设计开发的,而不是传统意义上的生产制造的。(2)软件不会“磨损”。(3)虽然整个工业向着基于构件的构造模式发展,然而大多数软件仍是根据实际的顾客需求定制的这张图表示的意思?(1)在完整的生存周期里,软件将会面临变更,每次变更都可能引入新的错误。不断的变更是软件退化的根本原因。
2、(2)软件维护要应对变更请求,比硬件维护更为复杂。软件工程定义:1.种子定义:软件工程是:建立和使用一套合理的工程原则,以便经济地获得可靠的、可以在实际机器上高效运行的软件。2.IEEE 定义:软件工程是:(1)将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。(2)在(1)中所述方法的研究软件工程三要素:软件工程的基础是过程(process)层软件工程方法(method)为构建软件提供技术上的解决方法(“如何做”)软件工程工具(tool)为过程和方法提供自动化或半自动化的支持根基:质量关注点(软件工程的目标)软件工程五个最基本的过程框架活动是什么? 沟通
3、、策划、建模、构建、部署软件危机的概念、产生原因及其表现?a)软件危机:指的是在计算机软件开发和维护过程中所遇到的一系列严重的问题。b)表现:软件代价高、开发进度难以控制、工作量估计困难、质量差、修改维护困难。c)产生的原因:用户的需求不明确、缺乏正确的理论指导、软件规模越来越大、软件的复杂度越来越大、软件灵活行要求高、影响软件生产率与质量因素十分复杂。第二章瀑布模型特点: 文档驱动优点:(1)消除非结构化软件;(2)降低软件的复杂度,促进软件开发工程化。简述瀑布模型在实际运用中所面临的问题(缺点):1.实际的项目很少遵守瀑布模型提出的顺序。虽然线性模型可以加入迭代,但是它是用间接的方式实现的
4、,结果是,随着项目的推进,变更可能造成混乱。2.客户通常难以清楚地描述所有的需求。而瀑布模型却需要客户明确需求,因此很难适应在许多项目开始阶段必然存在的不确定性。3.客户必须要有耐心,因为只有在项目接近尾声的时候,他们才能得到可执行的程序。对于系统中存在的重大缺陷,如果在可执行程序评审之前没有被发现,将可能造成惨重损失。原型模型优点:(1)需求表示清楚,用户满意度较高(2)降低开始风险和开发成本缺点:(1)原型法不适用于开发大型的信息系统(2)系统难于维护(3)如果用户合作不好,盲目纠错,会拖延开发进程第四章需求工程包括七个不同的活动:起始、导出、精化、协商、规格说明、确认和管理为什么需求的捕
5、获这么难? 范围问题:系统的边界不清楚理解问题:客户并不能完全确定需要说明易变问题:需求随时间变化导出需求:协作收集需求、质量功能部署、用户的场景、调查表、对用户的现场观察等质量功能部署(QFD):是一种将客户要求转化成软件技术需求的质量管理技术。用例(use case):是外部可见的系统单元,这些功能由系统单元所提供,并通过一系列系统单元与一个或多个参与者之间交换的消息所表达。测试用例(testing case):指为实施一次测试而向被测试系统提供的输入数据,操作各种环境设置。会画简单的用例图:用例的关系:包含(include)、扩展(extend)、关联(ascociation)、泛化(g
6、eneralization)用例规约的基本内容:简要说明、事件流、用例场景、特殊需求、前置条件、后置条件第五章需求建模涉及的方法:结构化分析方法、面向对象分析方法基于建模的元素:基于场景模型、基于类模型、基于行为模型、基于流模型用例图、活动图、类图(应用题):基本画法、基本关系第六章数据流图(DFD)的四个符号:即外部实体、数据加工、数据流和数据存储(07年软件设计师下午试题一)状态图、顺序图第七章模块化(Modularity):是关注点分离最常见的表现,软件被划分为独立命名的、可处理的构件,有时被称为模块,把这些构建集成到一起可以满足问题的需求。模块化的优点:模块化设计(以及由其产生的程序)
7、是开发工作更易于规划,可以定义和交付软件增量,更容易实施变更,能够更有效地开展测试和调试,可以长期维护而没有严重的副作用。独立性可以通过两条定性的标准进行评估:内聚性和耦合性。内聚性显示了某个模块相关功能的强度。耦合性显示了模块间的相互依赖性。为什么我们总是努力构造独立模块?(翻译)具有有效模块化(也就是独立模块)的软件更容易开发,这是因为功能被分隔而且接口被简化。独立模块更容易维护和测试,因为修改设计或修改代码所引起的副作用被限制,减少了错误扩散,而且模块复用也成为可能。概括的说,功能独立是良好设计的关键,而设计又是软件质量的关键。第八章体系风格的分类:以数据为中心的体系结构数据流体系结构调
8、用和返回体系结构面向对象体系结构层次体结构结构设计是一种映射技术,常被作为面向数据流的方法,因为它提供了从数据流图到软件体系结构的便捷的转化变换的七个步骤:1评审基本系统模型 2评审和精化软件的数据流图 3确定DFD是否含有变换流或事物流特征 4通过确定输入和输出流的边界,分隔出变换中心 5完成“第一级分解” 6完成“第二级分解” 7使用提高软件质量的设计启发式方式,精化第一次迭代得到的体系结构数据流图(DFD)一般可分为“变换流”,“事物流”两种。变换流(transform flow):由输入、输出、变换三部分组成,是一顺序结构。事物流:它的某个加工,分离成许多发散的数据流,形成许多加工路径
9、,并且根据输入值选择其中一个路径来执行。第九章构件(Component):系统中模块化的、可部署的和可替换的部件,该部件封装了实现并暴露一组接口。内聚性(Cohesion):内聚性指一个模块内部各个元素彼此结合的紧密程度的度量。耦合性(Coupling):耦合性是指模块间互相连接的紧密程度的度量。结构化程序设计的特征是程序模块只有一个入口和一个出口、程序中只包含顺序、条件和循环三种控制结构。决策表(应用题)十四章软件测试的总体策略过程:单元测试、编码、集成测试、设计、确认测试、需求、系统测试、系统工程单元测试的目的:验证代码能否达到详细设计的预期要求。发现代码中不符合编码规范的地方。准确定位发
10、现的错误,以便排除错误。集成测试的优缺点(自顶向下集成):优点:能尽早地对程序的主要控制和决策机制进行检验,因此较早地发现错误。缺点:在测试较高层模块时低层处理采用桩模块替代不能反映真实情况,重要数据不能及时回送到上层模块,因此测试并不充分。回归测试(regression testing):是指在发生修改之后重新测试先前的测试以保证修改的正确性。alpha测试是在用户组织模拟软件系统的运行环境下的一种验收测试,由用户或第三方测试公司进行的测试,模拟各类用户行为对即将面市的软件产品进行测试,试图发现并修改错误。Beta测试是用户公司组织各方面的典型终端用户在日常工作中实际使用beta版本,并要求
11、用户报告异常情况,提出批评意见。区别:两者的主要区别是测试的场所不同。Alpha测试是指把用户请到开发方的场所来测试,beta测试是指在一个或多个用户的场所进行的测试。Alpha测试的环境是受开发方控制的,用户的数量相对比较少,时间比较集中。而beta测试的环境是不受开发方控制的,谁也不知道用户如何折磨软件,用户数量相对比较多,时间不集中。一般地,alpha测试先于beta测试执行。通用的软件产品需要较大规模的beta测试,测试周期比较长。如果产品通过了beta测试,那么就可以正式发行了测试和调试的区别1。测试的目的是找出存在的错误;而调试的目的是定位错误并修改程序以修改错误。2。调试是测试之
12、后的活动,测试和调试在目标,方法和思路上都有所不同3。测试从一个已知的条件开始,使用预先定义的过程,有预知的结果;调试从一个未知的条件开始,结束的过程不可预计4。测试过程可以实现设计,进度可实现确定;调试不能描述过程或者持续时间。5。测试是在软件生命周期的全过程中,而调试只在软件生命周期的编码阶段中6。测试主要由测试人员进行,而编码主要由开发人员进行。软件测试:软件测试是为了度量和提高被测试软件的质量,对测试条件进行工程设计,实施和维护的整个生命周期过程。白盒测试(White-box testing):有时也称为玻璃盒测试,是一种测试用例设计方法,它利用作为构件层设计的一部分所描述的控制结构来
13、生成测试用例。黑盒测试(Black-box testing):也称行为测试,侧重于软件的功能需求。即黑盒测试使软件工程师能设计出将测试程序所有功能需求的输入条件集。基本路径测试(应用题)黑盒测试和百合测试的区别:前者基于功能,后者基于结构。黑盒测试常用技术:边界值、等价类、因果图、错误推测法等白盒测试常用技术:静态结构分析法、逻辑覆盖法、基本路径测试法、域测试。复杂性(yclomatic):是一种软件度量,它为程序的逻辑复杂性提供一个量化的测度;导出测试用例:1 以设计或源代码为基础,画出相应的流图。 2 确定所得流图的环复杂性。 3 确定线性独立路径的基本集合。 4 准备测试用例,强制执行基
14、本集合中的每条路径。(课本396-398)等价类划分的基本思路:先从程序的规格说明书中找出各个输入条件,再为每个输入条件划分两个或多个等价类,形成若干的互不相交的子集。等价类划分步骤:(1)先考虑输入数据的类型(合法型和非法型)(2)再考虑数据范围(合法型中的合法区间和非法区间)(3)画出示意图,区分等价类(4)为每一个等价类编号。需求分析的方法:结构化分析(传统建模方法)、面向对象分析。一、结构化分析方法1、结构化分析方法(Structure Analysis-SA)(1) 定义是面向数据流进行需求分析的方法,采用自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系
15、统的逻辑模型。(2)结构化分析的主要步骤通过对用户的调查,以软件的需求为线索,获取当前系统的具体模型;去掉具体模型中非本质因素,抽象出当前系统的逻辑模型;根据计算机的特点分析当前系统与目标系统的差别,建立目标系统的逻辑模型;完善目标系统并补充细节,写出目标系统的软件需求规格说明。2、结构化分析方法使用的常用工具(1)数据流图(DFDData Flow Diagram ) 作用从数据传递和加工的角度,在需求分析阶段以图形的方式描述数据流从输入到输出的移动变换过程,为系统建立逻辑模型。 注意:数据流图中的箭头表示的是数据流。程序流程图中的箭头表示的是控制流。 数据流图中的基本图形符号意义 数据流图
16、的层次结构为了表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。按照系统的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统。 在多层数据流图中,顶层流图仅包含一个加工,它代表被开发系统。它的输入流是该系统的输入数据,输出流是系统所输出数据。 底层流图是指其加工不需再做分解的数据流图,它处在最底层。 中间层流图则表示对其上层父图的细化。它的每一加工可能继续细化,形成子图。 建立数据流图的步骤第1步由外向里:先画系统的输入输出,然后画系统的内部。第2步自顶向下:顺序完成顶层、中间层、底层数据流图。第3步逐层分解。(2)数据字典 定义是所有与系统相关
17、的数据元素的一个有组织的列表,以及精确、严格的详细定义。 作用对DFD中出现的被命名的图形元素的确切解释,数据词典与数据流图配合,能清楚地表达数据处理的要求。 数据字典的组成数据项:是数据的最小单位;数据结构:是若干数据项的有意义的集合;数据流:可以是数据项,也可以是数据结构,表示某一个处理过程的输入或输出;数据存储:处理过程中存取的数据,常常是手工凭证、手工文档或计算机文件;处理过程。(3) 判定树使用判定树进行描述时, 应分清哪些是判定的条件,哪些是判定的结论,并找出判定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树。优点:更加直观,易于理解和使用(4)判定表 使用条件当数据流
18、图中的加工要依赖于多个逻辑条件的取值时(该加工的一组动作是由于某一组条件取值的组合而引发的),使用判定表描述比较适宜。 判定表的组成(四部分)基本条件:各种可能的条件;条件项:各种可能的条件组合;基本动作:所有的操作;动作项:对应的条件组合下所选的操作。 二、面向对象分析方法面向对象分析方法(Object-Oriented Analysis,OOA),是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。OOA与结构化分析有较大的区别。OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。 OOA(面向对
19、象的分析)模型由5个层次(主题层、对象类层、结构层、属性层和服务层)和5个活动(标识对象类、标识结构、定义主题、定义属性和定义服务)组成。在这种方法中定义了两种对象类之间的结构,一种称为分类结构,一种称为组装结构。分类结构就是所谓的一般与特殊的关系。组装结构则反映了对象之间的整体与部分的关系。 OOA在定义属性的同时,要识别实例连接。实例连接是一个实例与另一个实例的映射关系。 OOA在定义服务的同时要识别消息连接。当一个对象需要向另一对象发送消息时,它们之间就存在消息连接。 OOA 中的5个层次和5个活动继续贯穿在OOD(画向对象的设计)过程中。OOD模型由4个部分组成。它们分别是设计问题域部
20、分、设计人机交互部分、设计任务管理部分和设计数据管理部分。一、OOA的主要原则。 (1)抽象:从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征,就叫作抽象。抽象是形成概念的必须手段。 抽象原则有两方面的意义:第一,尽管问题域中的事物是很复杂的,但是分析员并不需要了解和描述它们的一切,只需要分析研究其中与系统目标有关的事物及其本质性特征。第二,通过舍弃个体事物在细节上的差异,抽取其共同特征而得到一批事物的抽象概念。 抽象是面向对象方法中使用最为广泛的原则。抽象原则包括过程抽象和数据抽象两个方面。 过程抽象是指,任何一个完成确定功能的操作序列,其使用者都可以把它看作一个单一的实体,尽
21、管实际上它可能是由一系列更低级的操作完成的。 数据抽象是根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察。数据抽象是OOA的核心原则。它强调把数据(属性)和操作(服务)结合为一个不可分的系统单位(即对象),对象的外部只需要知道它做什么,而不必知道它如何做。 (2)封装就是把对象的属性和服务结合为一个不可分的系统单位,并尽可能隐蔽对象的内部细节。 (3)继承:特殊类的对象拥有的其一般类的全部属性与服务,称作特殊类对一般类的继承。 在OOA中运用继承原则,就是在每个由一般类和特殊类形成的一般特殊结构中,把一般类的对象实例和所有特殊类的对象实例都共同具有的属性和服务,
22、一次性地在一般类中进行显式的定义。在特殊类中不再重复地定义一般类中已定义的东西,但是在语义上,特殊类却自动地、隐含地拥有它的一般类(以及所有更上层的一般类)中定义的全部属性和服务。继承原则的好处是:使系统模型比较简练也比较清晰。 (4)分类:就是把具有相同属性和服务的对象划分为一类,用类作为这些对象的抽象描述。分类原则实际上是抽象原则运用于对象描述时的一种表现形式。 (5)聚合:又称组装,其原则是:把一个复杂的事物看成若干比较简单的事物的组装体,从而简化对复杂事物的描述。 (6)关联:是人类思考问题时经常运用的思想方法:通过一个事物联想到另外的事物。能使人发生联想的原因是事物之间确实存在着某些
23、联系。 (7)消息通信:这一原则要求对象之间只能通过消息进行通信,而不允许在对象之外直接地存取对象内部的属性。通过消息进行通信是由于封装原则而引起的。在OOA中要求用消息连接表示出对象之间的动态联系。 (8)粒度控制:一般来讲,人在面对一个复杂的问题域时,不可能在同一时刻既能纵观全局,又能洞察秋毫。因此需要控制自己的视野:考虑全局时,注意其大的组成部分,暂时不详察每一部分的具体的细节;考虑某部分的细节时则暂时撇开其余的部分。这就是粒度控制原则。 (9)行为分析:现实世界中事物的行为是复杂的。由大量的事物所构成的问题域中各种行为往往相互依赖、相互交织。二、面向对象分析产生三种分析模型 1、功能模
24、型(即用例模型作为输入) 2、对象模型:对用例模型进行分析,把系统分解成互相协作的分析类,通过类图/对象图描述对象/对象的属性/对象间的关系,是系统的静态模型 3、动态模型:描述系统的动态行为,通过时序图/协作图描述对象的交互,以揭示对象间如何协作来完成每个具体的用例,单个对象的状态变化/动态行为可以通过状态图来表达三、OOA的主要优点 (1)加强了对问题域和系统责任的理解; (2)改进与分析有关的各类人员之间的交流; (3)对需求的变化具有较强的适应性; (4)支持软件复用。 (5)贯穿软件生命周期全过程的一致性。 (6)实用性; (7)有利于用户参与。四、OOA方法的基本步骤 在用OOA具
25、体地分析一个事物时,大致上遵循如下五个基本步骤: 第一步,确定对象和类。这里所说的对象是对数据及其处理方式的抽象,它反映了系统保存和处理现实世界中某些事物的信息的能力。类是多个对象的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述。 第二步,确定结构(structure)。结构是指问题域的复杂性和连接关系。类成员结构反映了泛化-特化关系,整体-部分结构反映整体和局部之间的关系。 第三步,确定主题(subject)。主题是指事物的总体概貌和总体分析模型。 第四步,确定属性(attribute)。属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对象的存储中指定
26、。 第五步,确定方法(method)。方法是在收到消息后必须进行的一些处理方法:方法要在图中定义,并在对象的存储中指定。对于每个对象和结构来说,那些用来增加、修改、删除和选择一个方法本身都是隐含的(虽然它们是要在对象的存储中定义的,但并不在图上给出),而有些则是显示的。三、 基本路径测试法的步骤:第一步:画出控制流图流程图用来描述程序控制结构。可将流程图映射到一个相应的流图(假设流程图的菱形决定框中不包含复合条件)。在流图中,每一个圆,称为流图的结点,代表一个或多个语句。一个处理方框序列和一个菱形决测框可被映射为一个结点,流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。一条边必须
27、终止于一个结点,即使该结点并不代表任何语句(例如:if-else-then结构)。由边和结点限定的范围称为区域。计算区域时应包括图外部的范围。 画出其程序流程图和对应的控制流图如下 第二步:计算圈复杂度圈复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。独立路径必须包含一条在定义之前不曾用到的边。有以下三种方法计算圈复杂度:1.流图中区域的数量对应于环型的复杂性;2.给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量;3.给定流图G的圈复杂度V(G),定义为V
28、(G)=P+1,P是流图G中判定结点的数量。 第三步:导出测试用例根据上面的计算方法,可得出四个独立的路径。(一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。V(G)值正好等于该程序的独立路径的条数。) 路径1:4-14 路径2:4-6-7-14 路径3:4-6-8-10-13-4-14 路径4:4-6-8-11-13-4-14根据上面的独立路径,去设计输入数据,使程序分别执行到上面四条路径。 第四步:准备测试用例为了确保基本路径集中的每一条路径的执行,根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到,满足上面例子基本路径集的测试用例是:
29、 决策表在所有的黑盒测试方法中,基于决策表(也称判定表)的测试是最为严格、最具有逻辑性的测试方法。决策表的概念:决策表是分析和表达多逻辑条件下执行不同操作的情况的工具。决策表的优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用决策表能够设计出完整的测试用例集合。在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。决策表很适合于处理这类问题。决策表通常由以下4部分组成:条件桩列出问题的所有条件条件项针对条件桩给出的条件列出所有可能的取值动作桩列出问题规定的可能采取的操作动作项指出在条件项的各组取值情况下应
30、采取的动作构造决策表的5个步骤:(1) 确定规则的个数。有n个条件的决策表有2n个规则(每个条件取真、假值)。(2) 列出所有的条件桩和动作桩。(3) 填入条件项。(4) 填入动作项,得到初始决策表。(5) 简化决策表,合并相似规则。若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为无关条件。例:问题要求:”对功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应给予优先的维修处理” 。这里假定,“维修记录不全”和“优先维修处理”均已在别处有更严格的定义 。请建立判定表。解答: 定规则的个数:这里有3个条件,每个条件有两个取值,故应有2*2*2=8种规则。列出所有的条件茬和动作茬: 人条件项。(二进制的真值表)。 人动作桩和动作顶。这样便得到形如图的初始判定表。专心-专注-专业