太原科技大学软件工程考试重点知识(一)

更新时间:2024-01-14 16:44:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第1章 软件工程学概述 1.1软件危机

概念:指在计算机软件的开发和维护过程中所遇到的一系列严重问题。实际上,几乎所有软件都不同程度地存在这些问题。 原因:

1. 与软件本身的特点有关。1)软件不同于硬件,缺乏“可见性”,它是计算机系统的逻辑部件而不是物理部件。2)软件不同于一般程序,规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。

2.与软件开发与维护的方法不正确有关。1)忽视软件需求分析的重要性。对用户要求没有完整准确的认识就匆忙着手编写程序。2)认为软件开发就是写程序并设法使之运行。3)在软件开发的不同阶段进行修改需要付出的代价是很不相同的。4)轻视软件维护。 消除途径:

1.对计算机软件有正确的认识:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。即Software = Program + Data + Document。

2.必须充分认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。

3.推广使用在实践中总结出来的开发软件的成功技术和方法,并继续研究探索。

4.开发和使用更好的软件工具。

1.2 软件工程

软件工程:是指导计算机软件开发和维护的一门工程学科。

软件工程的本质特性:1. 软件工程关注于大型程序的构造;2. 软件工程的中心课题是控制复杂性;3. 软件经常变化;4. 开发软件的效率非常重要;5. 和谐地合作是软件开发的关键;6. 软件必须有效地支持它的用户;7. 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。 软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。

软件工程方法学的3要素:方法、工具和过程。

目前使用最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。 1.传统方法学也称为生命周期方法学或结构化范型。结构化方法(Structure Method)有:1)结构化设计方法(SD);2)结构化分析方法(SA);3)结构化分析与设计技术(SADT);4)JACKSON方法; 5)WARNIER方法。

2.面向对象方法学是把数据和对数据的操作紧密结合起来的方法,模拟人类认识世界解决问题的方法和过程。面向对象方法学4个要点:对象(object)、类(class)、继承、消息。

1.3 软件生命周期

软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)三个时期组成,每个时期又进一步划分成若干个阶段。

1.4 软件过程

软件过程指为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 1. 瀑布模型

传统瀑布模型 实际瀑布模型

瀑布模型的特点:1. 阶段间具有顺序性和依赖性;2. 推迟实现的观点;3. 质量保证的观点。

瀑布模型的优点:1.可强迫开发人员采用规范的方法;2.严格地规定了每个阶段必须提交的文档;3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。

瀑布模型的缺点:1.“瀑布模型是由文档驱动的”这个事实也是它的一个主要缺点。2.实际项目很少按照该模型给出的顺序进行;3.用户常常难以清楚地给出所有需求;4.用户必须有耐心,等到系统开发完成。 2. 快速原型模型

快速原型(Rapid Prototype Model):是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。

快速原型模型的特点:1.快速原型模型不带反馈环,软件产品的开发基本上是线性顺序进行的。2.快速原型的本质是“快速”。应该尽可能快地建造出原型系统,以加速软件开发过程,节约成本。

原型模型存在的问题:⑴为了使原型尽快的工作,没有考虑软件的总体质量和长期的可维护性。⑵为了演示,可能采用不合适的操作系统、编程语言、效率低的算法,这些不理想的选择成了系统的组成部分。⑶开发过程不便于管理。 3. 增量模型

增量模型(Incremental Model):把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。 增量模型的优点:

? 人员分配灵活,刚开始不用投入大量人力资源。

? 当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径。

? 逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品。 增量模型的难点:

? 软件体系结构必须是开放的。

? 模型本身是自相矛盾的。整体——独立构件。

? 不同的构件并行地构建有可能加快工程进度,但是冒无法集成到一起的风险。

增量模型适用于:

? 适用于需求经常改变的软件开发过程。

? 如果在项目既定的商业要求期限之前不可能找到足够的开发人员,在这种情况下,增量模型显得特别有用。 4. 螺旋模型

螺旋模型(Spiral Model):使用原型及其他方法来尽量降低风险。把它看作在

每个阶段之前都增加了风险分析过程的快速原型模型。

螺旋模型的优点:

? 主要优势在于它是风险驱动的。

? 对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;

? 减少了过多测试或测试不足所带来的风险;

? 维护只是模型的另一个周期,维护和开发之间没有本质区别。 螺旋模型的缺点:

? 采用螺旋模型需要软件开发人员具有相当丰富的风险评估经验和这方面的专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。

? 过多的迭代次数会增加开发成本,延迟提交时间。 螺旋模型适用于:

? 特别适用于庞大、复杂并具有高风险的系统。 ? 适用于内部开发的大规模软件项目。

5. 喷泉模型

喷泉模型(Fountain Model) :是典型的面向对象生命周期模型。 “喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。为避免使用喷泉模型开发软件时开发过程过分无序,应该把一个线性过程(例如,快速原型模型或图中的中心垂线)作为总目标。

喷泉模型的优点:

? 该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。 ? 多次反复地增加或明确目标系统,而不是本质性的改动,降低错误的可能性。

喷泉模型的缺点:

? 由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,不利于项目的管理。 ? 要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。 喷泉模型适用于:

? 适用于面向对象的软件开发过程。 基于构件的开发模型:

? 支持软件复用。利用预先包装好的软件构件来构造应用系统。 形式化方法模型:

? 形式化方法是建立在严格数学基础上的一种软件开发方法。软件开发的全过程中,从需求分析、规约、设计、编程、系统集成、测试、文档生成、直至维护各个阶段,凡是采用严格的数学语言,具有精确的数学语义的方法,都称为形式化方法。

6. Rational统一过程(Rational Unified Process, RUP)

? RUP是一种迭代的,以架构为中心的,用例驱动的软件开发方法。 ? RUP是一种具有明确定义和结构的软件工程过程。

? RUP还是一个过程产品,提供了可定制的软件工程的过程框架。 ? RUP被广泛应用在不同工业领域中的不同企业中。 RUP总结了6条软件开发经验—最佳实践: ? 迭代式开发 ? 管理需求

? 使用基于构件的体系结构 ? 可视化建模 ? 验证软件质量 ? 控制软件变更

7. 敏捷过程与极限编程

价值观声明提出的软件过程统称为敏捷过程。 极限编程(eXtreme Programming, XP): ? 敏捷过程中最富盛名的一个

? 广泛适用于需求模糊且经常改变的场合

? 使得敏捷过程能够较好地适应商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束 微软过程模型

? 每一个生命周期发布一个递进的版本,各生命周期持续快速地迭代循环

? 优点: 综合了Rational统一过程和敏捷过程的优点 ? 缺点:对方法、工具和产品等方面不够全面

第2章:可行性研究 2.1 可行性研究的任务

可行性研究的目的:用最小的代价在尽可能短的时间内确定问题是否能够解决。

(不是解决问题,而是确定问题是否值得去解决。)

可行性分析主要包括技术可行性、经济可行性、操作可行性和社会可行性的研究:。

2.2 可行性研究过程

可行性研究过程包括:1)复查系统规模和目标;2)研究目前正在使用的系统;3)导出新系统的高层逻辑模型;4)重新定义问题;5)导出和评价供选择的解法(物理解决方案);6)推荐行动方案;7)草拟开发计划;8)书写文档提交审查。

2.3 系统流程图

系统流程图是概括地描绘物理系统的传统工具。

它的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件(程序,文档,数据库,人工过程等)。

2.4数据流图

数据流图(DFD Data Flow Diagram )是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。 在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程,是系统逻辑功能的图形表示。

数据流图的用途:1)利用它作为交流信息的工具;2)作为软件分析和设计的工具。

2.5 数据字典

数据流图和数据字典共同构成系统的逻辑模型。

数据字典是关于数据信息的集合,是对数据流图中包含的所有元素定义的集合。 没有数据字典数据流图就不严格,没有数据流图数据字典也难于发挥作用。 数据字典应该由对下列4元素的定义组成:1)数据流;2)数据元素(数据流分量);3)数据存储;4)处理。

定义数据的方法:对数据自顶向下分解。

数据组成方式:顺序、选择、重复(三种基本类型)以及可选(附加类型)。 实现数据字典两种方式:1)计算机程序处理;2)卡片式人工书写。

2.6 成本/效益分析

软件开发成本主要表现为人力资源的消耗。成本估计不能用精确科学来估计。 成本估算技术包括:1)代码行技术、2)任务分解技术、3)自动成本估计、4)算法模型估计。

成本/效益分析要估计开发成本、运行费用和新系统将带来的经济效益。

第3章 需求分析

需求分析是软件定义时期的最后一个阶段,它的基本任务不是确定系统怎样完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。

3.1 需求分析的任务

对系统的综合要求包括:1)功能需求、2)性能需求、3)可靠性和可用性需求、4)出错处理需求、5)接口需求、6)约束、7)逆向需求、8)将来可能提出的要求。

数据是软件系统的核心和血液,必须分析系统的数据要求。如:数据的元素组成、数据元素之间的逻辑关系、数据结构的规范化描述等。

3.2 与用户沟通获取需求的方法

包括:访谈、面向数据流自顶向下求精、简易应用规格说明技术、快速建立软件原型。

结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法。

3.3 分析建模与规格说明

根据结构化分析准则,需求分析过程应该建立数据模型、功能模型和行为模型3

种模型。

结构化分析是面向数据流进行分析的方法,主要建立以下几种模型:1)实体联系图(Entity-Relationship Diagram,E-R图)、2)数据流图(Data Flow Diagram,DFD)、3)状态转换图(State-Transition Diagram,STD)。另外几种图形工具有:层次方框图、Warnier图、IPO图等。

软件需求规格说明书,是需求分析阶段得出的最主要的文档。

3.4 实体-联系图

ER图是用来建立数据模型的工具。

数据模型是一种面向问题的数据模型,包含3种相互关联的信息:数据对象(实体)、数据对象的属性及数据对象彼此间相互连接的关系。

3.5 数据规范化

通常用“范式(Normal Forms)”定义消除数据冗余的程度。第一范式(1 NF)数据冗余程度最大,第五范式(5 NF)数据冗余程度最小。从实用角度看来,在大多数场合选用第三范式都比较恰当。

3.6 状态转换图

状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。此外,状态图还指明了作为特定事件的结果系统将做哪些动作(例如,处理数据)。

状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。状态规定了系统对事件的响应方式。

事件是引起系统做动作或(和)转换状态的控制信息。

3.7 验证软件需求

验证软件需求的正确性,一般应从4个方面进行:一致性、完整性、现实性和有效性。

第5章 总体设计

软件设计的任务:以软件需求规格说明书为依据,着手实现软件的需求,并将设计的结果反映在“设计规格说明书”文档中。 软件设计的重要性:是软件开发阶段的第一步,最终影响软件实现的成败和软件维护的难易程度。

总体设计任务:根据软件需求,设计软件系统结构和数据结构,确定程序的组成模块及模块之间的相互关系。详细设计任务:确定模块内部的算法和数据结构;选定某种过程的表达形式来描述各种算法;产生精确描述各模块程序过程的详细文档,并进行评审。

5.1 总体设计过程

总体设计由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构。

5.2 设计原理

软件设计过程中应该遵循的基本原理包括:模块化、抽象、逐步求精、信息隐藏和局部化、模块独立。

模块的独立程度可以由两个定性标准度量:耦合与内聚。耦合衡量不同模块彼此间互相依赖(连接)的紧密程度,而内聚衡量一个模块内部各个元素彼此结合的紧密程度。

模块的耦合分四类:1)数据耦合、2)控制耦合、3)公用耦合、4)内容耦合。 软件设计中应该:力求做到高内聚,尽量少用中内聚,不用低内聚。

5.3 启发规则

用来改进软件设计的启发式规则包括:1)改进软件结构提高模块独立性、2)模块规模应该适中、3)深度、宽度、扇出和扇入都应适当、4)模块的作用域应该在控制域之内、5)力争降低模块接口的复杂度、6)设计单入口、单出口的模块、 7)模块功能应该可以预测。

5.4 图形工具

描述软件结构的图形工具包括:层次图、HIPO图、结构图。

5.5 面向数据流的设计方法

面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法。信息流包括变换流和事务流两种类型。

面向数据流的设计将得到以数据流图为基础的软件模块结构图。

具有较明确的输入、变换(或称主加工)和输出界面的数据流图称为变换型数据流图。

事务型数据流图中存在一个事务中心(也就是数据处理、加工中心),它将输入分离成若干个发散的数据流,形成许多活动路径,并根据输入值选择其中一条路径。

变换设计就是从变换型数据流图映射出软件模块结构的过程,也称以变换为中心的设计。

面向数据流设计软件结构的基本步骤有七步:1)复审基本系统模型;2)复查并精化数据流图;3)确定数据流图具有变换特性还是事务特性;4)确定输入流和输出流的边界,从而孤立出变换中心;5)完成“第一级分解” ;6)完成“第二级分解” ;7)使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化。

事务设计就是从事务型数据流图映射出软件模块结构的过程,也称为以事务为中心的设计。

事务设计的基本方法有两步:1)建立主控模块、接收输入类型分析模块和事务调度模块;2)分别设计输入类型分析模块和调度模块的下层模块结构。

本文来源:https://www.bwwdw.com/article/ixmo.html

Top