当前位置:文档之家› 软件工程_第七章_面向数据流的设计方法

软件工程_第七章_面向数据流的设计方法

第七章面向数据流的设计方法面向数据流的设计方法,即通常所说的结构设计法(简称SD方法),是根据需求阶段对数据流的分析(一般用数据流图和数据字典表示)设计软件结构。数据流图主要描绘信息在系统内部加工和流动的情况,面向数据流的设计方法根据数据流图的特性定义两种“映射”,这两种映射能机械地将数据流图转换为程序结构。该方法的目标是为软件结构设计提供一个系统化的途径,使设计人员对软件有一个整体的认识。本章所述技术用于软件的概要设计描述,包括模块、界面和数据结构的定义,这是所有后续开发工作的基础。每种软件设计方法都有长处和不足,先用哪种方法首先应考虑它适用的范围。任何软件系统都可以用数据流图表示,理论上,面向数据流的设计方法可用于任一种软件系统的开发。然而,该方法对那些顺序处理信息且不含层次数据结构的系统最为有效,例如过程控制、复杂的数值分析过程、以及科学与工程方面的应用,等等。当SD方法用于完全的数据处理时,即使系统中作用层次数据也同样行之有效。

从系统设计的角度出发,软件设计方法可以分为三大类。第一类是根据系统的数据流进行设计,称为面向数据流的设计或者过程驱动的设计,以结构化设计方法为代表。第二类是根据系统的数据结构进行设计,称为面向数据结构的设计或者数据驱动的设计,以LCP(程序逻辑构造)方法、Jackson 系统开发方法和数据结构化系统开发(DSSD)方法为代表。第三类设计方法即面向对象的设计。

第一节基本概念和设计过程

面向数据流设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。该方法实施的要点是:①建立数据流的类型。②指明流的边界。③将数据流

图映射到程序结构。④用“因子化”方法定义控制的层次结构。⑤用设计测量和一些启发式规则对结构进行细化。

一、在系统结构图(SC)中的模块

在系统结构图中不能再分解的底层模块为原子模块。如果一个软件系统的全部实际加工(数据计算或处理)都由底层的原子模块来完成,而其他所有非原子模块仅仅执行控制或协调功能,这样的系统就是完全因子分解的系统。如果系统结构图是完全因子分解的,就是最好的系统。一般地,在系统结构图中有4种类型的模块(如图7-1-1):

图7-1-1 系统结构图的四种模块类型

·传入模块:从下属模块取得数据,经过某些处理,再将其传送给上级模块。

·传出模块:从上级模块获得数据,进行某些处理,再将其传送给下属模块。

·变换模块:即加工模块。它从上级模块取得数据,进行特定的处理,转换成其他形式,再传送回上级模块。大多数计算模块(原子模块)属于这一类。

·协调模块:对所有下属模块进行协调和管理的模块。在系统的输入/输出部分或数据加工部分可以找到这样的模块。在一个好的系统结构图中,协调模块应在较高层出现。

在实际系统中,有些模块属于上述某一类型,还有一些模块是上述各种类型的组合。

二、结构化设计的步骤

SD方法能方便地将数据流图转换为软件结构,其过程分为五步:

(1)确定信息流的类型;

(2)划定流界;

(3)将数据流图映射为程序结构;

(4)提取层次控制结构;

(5)通过设计复审和使用启发式策略进一步精化所得到的结构。

第三步所用映射方法涉及信息流的类型。信息流分为变换流和事务流两种类型。

①变换流。在基本系统模型(即顶级数据流图)中信息通常以“外部世界”所具有的形式进入系统,经过处理后又以这种形式离开系统,如图7-1-2 所示。输入信息流沿传入路径进入系统,同时由外部形式变换为内部形式,经系统变换中心加工、处理,作为输出信息流又沿传出路径离开系统,并还原为外部形式。如果数据流图所描述的信息流具有上述特征,则称作变换流。

图7-1-2 信息流

②事务流。由于基本系统模型呈变换流,故任意系统中的信息均可用变换流刻画。但若数据流具有如图7-1-3所示形状,则称为“事务流”。此时,单个数据项称为事务(transaction) 沿传入路径(也称接受通道)进入系统,由外部形式变换为内部形式后到达事务中心,事务中心根据数据项计值结果从若干动作路径中选定一条继续执行。

图7-1-3 事务流

值得注意的是在大系统的DFD中,变换流与事务流往往交织在一起。如,在基于事务流的系统中,当信息沿动作路径流动时可能呈现变换流的特征,因此,下面两节讨论的变换分析法与事物分析法常常需要交叉使用。

图7-1-4描绘了面向数据流的软件设计过程,当然,任何设计过程都不应该也不可能完全机械化,人的判断力和创造性往往起决定作用。

图7-1-4 面向数据流的设计

第二节变换分析

一、变换流与变换型系统结构

变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据。如图7-2-1所示。这三步反映了变换型问题数据流的基本思想。其中,变换数据是数据处理过程的核心工作,而取得数据只不过是为它做准备,给出数据则是对变换后的数据进行后处理工作。

图7-2-1 变换型数据流

变换型系统结构图如图7-2-2所示,相应于取得数据、变换数据、给出数据,系统的结构图由输入、中心变换和输出等三部分组成。

图7-2-2 变换型的系统结构图

二、变换映射

变换映射是体系结构设计的一种策略。运用变换映射方法建立初始的变换型系统结构图,然后对它做进一步的改进,最后得到系统的最终结构图。设计的步骤如下。

步骤1:复审基本系统模型(0层数据流图和支持信息)。评估系统规格说明和软件需求规格说明。

步骤2:复审和细化软件的数据流图。重画数据流图时,可以从物理输入到物理输出,或者相反. 还可以从顶层加工框开始,逐层向下。

步骤3:确定数据流图中含有变换流特征还是含有事务流特征。通常,系统的信息流总能表示为变换型,但其中也可能遇到明显的事务流特征,这时可采用变换型为主,在局部范围采用事务型的设计方法。

步骤4:区分输入流、输出流和中心变换部分,即标明流的边界。不同的设计人员可能选择不同的流边界,这将导致不同的系统结构图。

步骤5:进行一级“因子化”分解,设计顶层和第一层模块。

首先设计主模块,用程序名字为它命名,将它画在与中心变换相对应的位置上。做为系统的顶层,它调用下层模块,完成系统所要做的各项工作。系统结构第一层的设计方针:为每一个逻辑输入设计一个输入模块,它为主模块提供数据;为每一个逻辑输出设计一个输出模块,它将主模块提供的数据输出;为中心变换设计一个变换模块,它将逻辑输入转换成逻辑输出。第一层模块与主模块之间传送的数据应与数据流图相对应。

步骤6:进行二级“因子化”分解,设计中、下层模块。这一步工作是自顶向下,逐层

细化,为每一个输入模块、输出模块、变换模块设计它们的从属模块。

输入模块要向调用它的上级模块提供数据,因而它必须有两个下属模块:一个是接收数据;另一个是把这些数据变换成它的上级模块所需的数据。输出模块是从调用它的上级模块接收数据,用以输出,因而也应当有两个下属模块:一个是将上级模块提供的数据变换成输出的形式;另一个是将它们输出。中心变换模块的下层模块没有通用的设计方法,一般应参照数据流图的中心变换部分和功能分解的原则来考虑如何对中心变换模块进行分解。

步骤7:利用一些启发式原则来改进系统的初始结构图,直到得到符合要求的结构图为止。

三、例

变换分析由一系列设计步骤组成,经过这些步骤就能把具有变换流特点的数据流图按预先确定的模式映射成软件结构。下面以“家庭保安系统”的传感器监测子系统为例说明变换分析的各个步骤。

步骤1:复审基本系统模型

基本系统模型指顶级DFD和所有由外部提供的信息。这一设计步骤是对系统规格说明书和软件需求规格说明书进行评估。这两个文档描述软件界面上信息的流程和结构。图7-2-3和7-2-4分别为“家庭保安系统”的顶层和第一层数据流图。

图7-2-3 “家庭保安系统”的顶级数据流图

图7-2-4 “家庭保安系统”的第一级DFD

步骤2:复审和精化软件数据流图

这一步主要是对软件需求规格说明书中的分析模型进行精化,直至获得足够详细的DFD。例如由“传感器监测子系统”的第一级(图7-2-4的局部)和第二级(图7-2-5)DFD进一

步推导出第三级数据流图(图7-2-6),此时,每个变换对应一个独立的功能,可望用一个具有较高内聚度的模块实现,至此已有足够的信息可用于设计“传感器监测子系统”的程序结构,精化过程亦可结束。

图7-2-5 “传感器监测子系统”的第二级DFD

图7-2-6 “传感器监测子系统”的第三级DFD

步骤3:确定DFD的特性,判定它为变换流还是事务流。

一般说来,系统内部的信息流总可以用变换流表示,倘若具有明显的事务特性,还应该采用针对事条流的映射方法。因此,设计人员首先要判定DFD中占主导地位的信息流,并确定其特性,然后孤立具有变换特性或事务特性的支流,这些支流将用于精化由主导数据流推出的程序结构。

仍以图7-2-6所示DFD为例,数据沿一个传入路径进来,沿三个传出路径离开,无明显的事务中心,因此,该信息流应属变换流。

步骤4:划定输入流和输出流的边界,孤立变换中心

输入、输出流边界的划分可能因人而异,不同的设计人员可能把边界沿着数据通道向前推进或后退一个处理框,不过这对最后的软件结构影响不大。“传感器监测子系统”的流界在图7-2-6中用虚线表示。

步骤5:执行“一级分解”(first level factoring)

一级分解的目标是导出具有三个层次的程序结构,顶层为主控模块;底层模块执行输入、计算和输出功能;中层模块控制、协调底层的工作。

程序结构可用yourdon结构图表示。结构图中,方框代表模块,方框内注明模块名称或主要功能。方框之间的有向边(无二义时也可用无向边)表示模块间的调用关系。图7-2-7所示的结构图对应于一级分解的上两层模块,即主控模块和下面几个中层控制模块:

①输入流控制模块,接收所有输入数据;

②变换流控制模块,对内部形式数据进行加工、处理;

③输出流控制模块,产生输出数据。

图7-2-7 一级分解

图7-2-7展示的是一个简单三叉结构,实际处理大型系统的复杂数据流时,可能需要两个甚至多个模块对应上述一个模块的功能。“一级分解”总的原则是,在完成控制功能并保持低耦合度、高内聚度的前提下尽可能减少模块数。

“传感器监测子系统”一级分解如图7-2-8所示,其中控制模块的名字概括了所有下属模块的功能。

图7-2-8 传感器监测子系统一纷分解结果

步骤6:执行“二级分解”

二级分解的任务是把数据流图中每个处理框映射成程序结构中一个适当的模块,二级分解过程是从变换中心的边界开始沿输入、输出通道向外移动,把遇到的每个处理框映射为程序结构中的一个模块,其方法如图7-2-9所示。

图7-2-9 二级分解

虽然图7-2-9中,DFD的处理框与程序结构模块一一对应,但按照软件设计原则进行设计时,可能需要把几个处理框聚合为一个模块,或者把一个处理框裂变为几个模块。总之,应根据“良好”设计的标准,进行二级分解。

由图7-2-6输出流部分导出的程序结构如图7-2-10所示。整个“传感器监测子系统”二级分解的结果见图7-2-11 ,它仅仅是程序结构的“雏形”(first-cut),后续的复审和精化会反复修改。程序结构的模块名已隐含了模块功能,但仍有必要为每个模块写一个简要的处理说明,应包括:

①进出模块的信息(接口描述);

②模块的局部信息;

③处理过程陈述,包括主要的判断点和任务;

④对有关限制和一些专门特性的简要说明(例如,文件I/O,独立于硬件的特性,特殊的实时要求,等等)。

这些描述构成第一版设计规格说明书。

步骤7:采用启发式设计策略,精化所得程序结构雏形,改良软件质量。

对于程序结构的雏形,以“模块独立”为指导思想,对模块或合或拆,旨在追求高内聚、低耦合,易实现、易测试、易维护的软件结构。

例如,“传感器监测子系统”的程序结构雏形可修改如下:

(1)只因存在唯一一条传入路径,故输入控制模块可删除;

(2)由变换中心产生的整个子结构可归并为“建立警报条件”一个模块(选择电话电码的功能纳入其中),变换控制模块不再需要;

图7-2-10 传感器监测子系统输出流部分导出和程序结构

图7-2-11 传感器监测子系统的程序结构”雏形”

(3)“格式化显示”和“生成显示”两个模块归并为“产生显示”一个模块。

“传感器监测子系统”精化后的程序结构如图7-2-12所示。

图7-2-12 传感器监测子系统精化后的程序结构

上述七个设计步骤的目标是给出软件的一个整体描述。一旦有了这样一个描述,设计人员即可从整体角度评价和精化软件的总体结构,此时修改所需耗费不多,却能大大提高软件质量。比较上述设计过程与一般直接编码过程可知,如果源代码是软件唯一的表现形式,设计人员很难从整体的观点评价和精化软件。

第三节事条分析

一、事务流与事务型系统结构图

事务型数据处理问题的工作机理是接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。我们把完成选择分派任务的部分叫做事务处理中心。或分派部件。这种事务型数据处理问题的数据流图如图7-3-1所示。其中,输入数据流在事务中心T处做出选择,激活某一种事务处理加工。D1~D4是并列的供选择的事务处理加工。

图7-3-1 事务型数据处理问题

事务型数据流图所对应的系统结构图就是事务型系统结构图。如图7-3-2所示。

图7-3-2 事务型系统结构图

在事务型系统结构图中,事务中心模块按所接受的事务的类型,选择某一个事务处理模块执行。各个事务处理模块是并列的,依赖于一定的选择条件,分别完成不同的事务处理工作。每个事务处理模块可能要调用若干个操作模块,而操作模块又可能调用若干个细节模块。不同的事务处理模块可以共享一些操作模块。同样,不同的操作模块又可以共享一些细节模块。

事务型系统结构图在数据处理中经常遇到,但是更多的是变换型与事务型系统结构图的结合。例如,变换型系统结构中的某个变换模块本身又具有事务型的特点。

二、事务映射

在很多应用中,存在某种作业数据流,它可以引发一个或多个处理。这种数据流就叫做事务。与变换映射类似,事务映射也是从分析数据流图开始,自顶向下,逐步分解,建立系统结构图。所不同的是由数据流图映射成的系统结构图不同。

步骤1:复审基本系统模型。

步骤2:复审和细化软件的数据流图。

步骤3:确定数据流图中含有变换流特征还是含有事务流特征。以上三步与变换映射中的相应工作相同。

步骤4:识别事务中心和每一条操作路径上的流特征。事务中心通常位于几条操作路径的起始点上,可以从数据流图上直接找出来。输入路径必须与其他所有操作路径区分开来。

步骤5:将数据流图映射到事务型系统结构图上。事务流应映射到包含一个输入分支和一个分类事务处理分支的程序结构上。输入分支结构的开发与变换流的方法类似。分类事务处理分支结构包含一个调度模块,它调度和控制下属的操作模块。

步骤6:“因子化”分解和细化该事务结构和每一条操作路径的结构。每一条操作路径的数据流图由它自己的信息流特征,可以是变换流也可以是事务流。与每一条操作路径相关的子结构可以依照前面介绍的设计步骤进行开发。

步骤7:利用一些启发式原则来改进系统的初始结构图。

三、例

当数据流具有明显的事务特征时,即能找到一个事务(亦称触发数据项)和一个事条中心,采用事务分析法更为适宜。

图7-3-3 用户交互子系统的二级数据流图

软件工程_第七章_面向数据流的设计方法

第七章面向数据流的设计方法面向数据流的设计方法,即通常所说的结构设计法(简称SD方法),是根据需求阶段对数据流的分析(一般用数据流图和数据字典表示)设计软件结构。数据流图主要描绘信息在系统内部加工和流动的情况,面向数据流的设计方法根据数据流图的特性定义两种“映射”,这两种映射能机械地将数据流图转换为程序结构。该方法的目标是为软件结构设计提供一个系统化的途径,使设计人员对软件有一个整体的认识。本章所述技术用于软件的概要设计描述,包括模块、界面和数据结构的定义,这是所有后续开发工作的基础。每种软件设计方法都有长处和不足,先用哪种方法首先应考虑它适用的范围。任何软件系统都可以用数据流图表示,理论上,面向数据流的设计方法可用于任一种软件系统的开发。然而,该方法对那些顺序处理信息且不含层次数据结构的系统最为有效,例如过程控制、复杂的数值分析过程、以及科学与工程方面的应用,等等。当SD方法用于完全的数据处理时,即使系统中作用层次数据也同样行之有效。 从系统设计的角度出发,软件设计方法可以分为三大类。第一类是根据系统的数据流进行设计,称为面向数据流的设计或者过程驱动的设计,以结构化设计方法为代表。第二类是根据系统的数据结构进行设计,称为面向数据结构的设计或者数据驱动的设计,以LCP(程序逻辑构造)方法、Jackson 系统开发方法和数据结构化系统开发(DSSD)方法为代表。第三类设计方法即面向对象的设计。 第一节基本概念和设计过程 面向数据流设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。该方法实施的要点是:①建立数据流的类型。②指明流的边界。③将数据流

软件工程复习资料

1.什么是软件工程他的基本原理是什么 1)软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,经济地开发出高质量的软件并有效地维护它。 2)用分阶段的生命周期计划严格管理、坚持进行阶段评审、实行严格的产品控制、采用现代程序设计技术、结果应能清楚的审查、开发小组的人员应该少而精、承认不断改进软件工程实践的必要性。 2. 是什么导致了软件工程 主要是软件危机的出现导致了软件工程 3. 通常我们所见的软件工程模型有哪些 瀑布模型、快速原型模型、增量模型(渐增模型)、螺旋模型、喷泉模型。 21.软件危机的现象: 1)经费超出预算,项目一再拖延。 2)不重视需求,开发的软件不能满足用户的要求,项目成功率低。 3)没有规范的软件工程方法,软件可维护性差,软件质量差,可靠性差。 3)开发工具落后,手工方式,开发效率低。 22.软件工程的三要素 1)“过程”是软件产品加工所经历的一系列有组织的活动,保证能够合理、高质量开发出软件。 2)“方法”为软件开发提供“如何做”的技术。它涵盖了项目计划、需求分析、系统程序()实现、测试与维护灯一系列活动的做法。 3)“工具”可为过程和方法提供自动的或半自动的支持。这些工具既包括软件,也包括硬件,软件工具包括编程、建模、管理等开发工具。通过网络环境把这些软件工 具集成起来搭建一个能够支持团队开发的平台,称为计算机辅助软件工程,即CASE。 CASE集成了软件、硬件和()存放开发过程信息的软件工程数据库,形成了一个 软件工程环境。 23.简述软件工程的目标,过程和原则 1)目标、过程和原则是一切工程的三维框架,,这里是以工程的观点来看待软件开发。 软件工程的目标:降低成本,及时交付高质量的软件产品。 实现目标的过程即完成产品加工的过程:包括:基本过程、支持过程和组织过程 进行过程应遵守的原则:原则就是过程中的轨道约束,包括:选取适宜的开发范型、适合的设计方法、提供高质量的工程支持、重视开发过程的管理。 24.对比瀑布模型,原型模型,增量模型和螺旋模型 1)瀑布模型:主要体现了分阶段、有控制的思想。活动间强调按顺序、文档化;存在的问题是过于理想化,每一步的工作必须完整准确,否则无法进行下一步工作 2)原型模型:需求分析入手快速、表达直观、容易交流。重点解决瀑布模型的需求分析入手难的问题。 3)增量模型:对于需求复杂的系统,采用分块开发、逐步集成的开发策略。增量体现了演进、迭代思想,每一块就是一个增量。每个增量试一次迭代。增量模型的 新版本叫做“极限编程(XP)”。 4)螺旋模型:融合了上述3种模型,融进了循环往复、强化了演进迭代的思想,增加了风险控制环节。但是,风险分析的正确性是左右软件演进的关键因素。 25. 当需求不能一次搞清楚,且系统需求较复杂时应选用什么模型 开发模型不是孤立或排斥的,他们之间需要相互借鉴和参考。螺旋模型是一种综合性

《软件工程》课程教学大纲

软件工程课程教学大纲 (SoftwareEngineering) 学时数:32 其中:实验学时:6 课外学时:0 学分数:2 适用专业:计算机科学与技术 一、课程的性质、目的与任务 《软件工程》是计算机科学与技术专业教学计划中一门综合性和实践性很强的核心课程,主要内容包括软件工程概述、可行性分析、需求分析、概要设计、详细设计、面向对象分析与设计、编码、软件质量与质量保证、项目计划与管理。 根据培养基层应用型人才的需要,本课程的目的与任务是使学生通过本课程的学习,了解软件项目开发和维护的一般过程,掌握软件开发的传统方法和最新方法,为更深入地学习和今后从事软件工程实践打下良好的基础。 二、课程教学的基本要求 (-)基本概念和基本知识: 软件与软件工程,生存周期与软件开发模式,结构化分析、设计与编码,面向对象分析、设计与编码,软件的评审、测试与维护,项目计划与项目管理。 (二)基本技能: 能用软件工程的方法参与软件项目的分析、设计、实现和维护 重点:系统分析、系统设计、系统实现、系统维护 难点:需求分析、软件测试 课程的教学要求在每一章教学内容之后给出,大体上分为三个层次:了解、理解和掌握。了解即能正确判别有关概念和方法:理解是能正确表达有关概念和方法的含义;掌握是在理解的基础上加以灵活应用 三、课程的教学内容、重点和难点 第一章概论 一、软件 (一)软件的发展; (二)软件的定义; (三)软件的特点、软件的种类。 二、软件工程的概念 (一)软件危机与软件工程的定义; (二)软件工程的目标; (三)软件工程的原则。 三、软件生存周期与软件开发模型 (一)瀑布模型、原型模型、螺旋模型、基于四代技术模型、面向对象与组件模型、混合模型。 教学要求:软件和软件工程的基本概念,软件生命周期及软件开发的各个模型重点:软件生存周期与软件开发模型

软件工程复习资料

一.概述 1.什么是软件?什么是软件工程? --软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。软件具有不可见性,是抽象的、形式化和逻辑化的。 --软件会逐渐退化而不会磨损的原因是不断地变更使组件接口之间引起错误。 --软件工程要素:过程、方法、工具。 --软件工程的基本目标是开发高质量的软件。 2.现代软件工程师关注的问题 开发过程中遇到的各种困扰。 3.软件生存周期模型 --软件生存期由软件定义、软件开发和运行维护3个时期组成,每个时期又可划分若干阶段,即可行性研究、需求分析、概要设计、详细设计、编码、测试、使用与维护。 --软件生存周期模型包括瀑布模型、原型模型、增量模型、螺旋模型。 4.软件开发的各种模型(瀑布、快速原型等)的特点 --瀑布模型:1)阶段间具有顺序性和依赖性。2)推迟实现的观点。3)质量保证的观点。瀑布模型适用于需求被清晰定义的情况。 --快速原型模型:适用于客户需求难以清楚定义的情况。 --增量模型:适用于一种需要快速构造可运行程序的方法。 --螺旋模型:螺旋模型是瀑布模型、原型模型的有机结合,同时增加了风险分析。 螺旋模型只适合于大规模的软件项目。 --喷泉模型:喷泉模型是典型的面向对象生命周期模型。 二.需求分析 1.需求分析的目的 --需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。需求分析是软件工程中的一个关键过程。 --需求分析中开发人员从用户那里了解软件做什么。 --可行性研究要进行一次“简化的、压缩的”需求分析。 2.主要任务 --获取并理解用户的需求是软件工程师所面对的最困难的任务之一

软件工程课程教学大纲教案

《软件工程》课程教案 (Software Engineering) 一、课程基本信息 课程编号:10134055 课程类别:专业必修课 适用专业:计算机科学与技术 学分:理论教学学分:3学分 总学时:54学时,其中理论学时:42学时, 实验学时:12学时 先修课程:高等数学Ⅰ、计算机导论、程序设计语言、数据库原理及应用后继课程: 课程简介: 《软件工程》是一门迅速发展的新兴学科,其研究的范围非常广泛,包括技术方法、工具和管理等许多方面,而且新的技术方法和工具源源不断涌现。该学科为软件的开发提供了一条科学途径,缓解了软件危机。通过本课程的学习,使学生掌握开发软件的方法、步骤,了解软件维护的重要性,掌握软件工程的管理技术,为学生今后的工作奠定良好的基础。 主要教学方法与手段: 课堂多媒体课件结合黑板板书。 选用教材: 张海藩.软件工程导论[第6版].北京:清华大学出版社.2013 必读书目: [1] 郭宁主编.软件工程实用教程(第二版). 北京:人民邮电出版社,2011 [2] 张海藩.软件工程(第4版).北京:人民邮电出版社.2010

[3] 吴洁明主编.现代软件工程. 北京:清华大学出版社,2010 选读书目: [1] 软件工程实践者的研究方法.Roger S.Pressman(著)梅宏(译).北京:机械工业出版社。 [2] 最新的参考文献可在SEPA Web站点获得: https://www.doczj.com/doc/8519192343.html,/engcs/compsci/pressman/resources/future.mht ml 二、课程总目标 本课程的教学目标是使学生通过课程学习,掌握软件工程的基本知识和理论,了解软件工程的原理,锻炼软件开发技术,特别让学生注重软件的文档建设和管理,能将计算机知识进行综合应用。本课程以课堂教学为主,讲授软件工程的基本原理和方法,布置一定的作业,配合相应的实验,使学生对软件工程的开发方法得到真正的提高,为学生从事计算机相关工作奠定基础。 三、课程教学内容与教学要求 1、教学内容与学时分配 课程总学时:54学时,其中讲授学时:42学时;实验(上机)学时:12学时 教学内容与学时分配建议如下表:

软件工程知识点总结

软件工程(简要知识点)
软件生命周 期:
软件定义 软件开发
问题定义(确定题目) 可行性研究 需求分析 概要设计 系统设计 详细设计
系统实现
编码和单元测试 综合测试
运行维护:主要任务是使软件持久地满足用户的需要
一、. 软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型) 二、可行性研究: 1、任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。 2、四个方面:技术、经济、操作可行性、法律 3、数据流图四种成分:1、源点/终点 2、处理 3、数据存储 4、数据流 三、需求分析: 1、任务:确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要 求。 2、结构化方法就是面向数据流自顶向下逐步求精进行需求分析的方法。 3、实体联系图:1、数据对象 2、属性 3、联系(1:1、1:N、M:N) 四、总体设计: 1.任务:回答“概括的说,系统应该如何实现”,用比较抽象概括的方式确定系 统如何完成预定的任务,也就是说应该确定系统的物理配置方案,并且进而确定 组成系统的每个程序结构。 2. 系统设计阶段(确定系统具体实施方案)、结构设计阶段(确定软件结构) 3.模块独立:内聚和耦合 4. 耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的 系统

5. 内聚 (Cohesion): 一个模块内各元素结合的紧密程度
6.面向数据流的设计方法:变换流和事务流 五、详细设计: 1.任务:确定应该怎样具体的实现所要求的系统,也就是说经过这个阶段的设计 工作应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译 成用某种程序设计语言书写的程序。 2.过程设计的工具(程序流程图、盒图、PAD 图、判定表、判定树) 七、测试: 1、单元测试:又称模块测试。每个程序模块完成一个相对独立的子功能,所以 可以对该模块进行单独的测试。由于每个模块都有清晰定义的功能,所以通常 比较容易设计相应的测试方案,以检验每个模块的正确性。 2、集成测试: 在单元测试完成后,要考虑将模块集成为系统的过程中可能出现的问题,例如, 模块之间的通信和协调问题,所以在单元测试结束之后还要进行集成测试。这个 步骤着重测试模块间的接口,子功能的组合是否达到了预期要求的功能,全程数 据结构是否有问题等。 3、白盒测试技术(逻辑覆盖、基本路经测试)

软件工程复习资料

1.什么是软件工程?他的基本原理是什么? 1)软件工程是指导计算机软件开发和维护的工程学科。采用工程的槪念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,经济地开发出高质量的软件并有效地维护它。 2)用分阶段的生命周期汁划严格管理、坚持进行阶段评审、实行严格的产品控制、采用现代程序设讣技术、结果应能淸楚的审査、开发小组的人员应该少而精、承认不断改进软件工程实践的必要性。 2.是什么导致了软件工程? 主要是软件危机的出现导致了软件工程 3.通常我们所见的软件工程模型有哪些? 瀑布模型、快速原型模型、增量模型(渐增模型)、螺旋模型、喷泉模型。 21.软件危机的现象: 1)经费超出预算,项目一再拖延。 02 )不重视需求,开发的软件不能满足用户的要求,项目成功率低。 3)没有规范的软件工程方法,软件可维护性差,软件质量差,可靠性差。 3圄)开发工具落后,手工方式,开发效率低。 2 2 .软件工程的三要素 1)"过程”是软件产品加工所经历的一系列有组织的活动,保证能够合理、高质疑开发出软件。 2)"方法”为软件开发提供"如何做”的技术。它涵盖了项目计划、需求分析、系统程序()实现、测试与维护灯一系列活动的做法。 3) "工具"可为过程和方法提供自动的或半自动的支持。这些工具既包括软件,也包括硬件,软件工具包括编程、建模、管理等开发工具。通过网络环境把这些软件工具集成起 来搭建一个能够支持团队开发的平台,称为汁算机辅助软件工程,即CASE。C ASE集成 了软件、硬件和()存放开发过程信息的软件工程数据库,形成了一个软件工程环境。 23.简述软件工程的目标,过程和原则 佢)目标、过程和原则是一切工程的三维框架,,这里是以工程的观点来看待软件开发。 软件工程的目标:降低成本,及时交付髙质量的软件产品。 m实现目标的过程即完成产品加工的过程:包括:基本过程、支持过程和组织过程进行过程应遵守的原则:原则就是过程中的轨道约朿,包括:选取适宜的开发范型、适合的设计方法、提供高质量的工程支持、重视开发过程的管理。 24.对比瀑布模型,原型模型,增虽:模型和螺旋模型 1)瀑布模型:主要体现了分阶段、有控制的思想。活动间强调按顺序、文档化;存在的问题是过于理想化,每一步的工作必须完整准确,否则无法进行下一步工作 2)原型模型:需求分析入手快速、表达直观、容易交流。重点解决瀑布模型的需求 分析入手难的问题。 3)增量模型:对于需求复杂的系统,采用分块开发、逐步集成的开发策略"增量体现了演进、迭代思想,每一块就是一个增量。每个增量试一次迭代。增屋模型的新版本 叫做"极限编程(XP)”。 4)螺旋模型:融合了上述3种模型,融进了循环往复、强化了演进迭代的思想,增加了风险控制环节。但是,风险分析的正确性是左右软件演进的关键因素。 2 5.当需求不能一次搞淸楚,且系统需求较复杂时应选用什么模型? 开发模型不是孤立或排斥的,他们之间需要相互借鉴和参考。螺旋模型是一种综合性的

软件工程导论复习重点总结很全(第六版)

软件工程导论复习重点总结很全(第六版)第1章软件工程学概述 1.1软件危机 1.1.1软件危机的介绍 软件危机(软件萧条、软件困扰:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 软件危机包含下述两方面的问题: 如何开发软件,满足对软件日益增长的需求; 如何维护数量不断膨胀的已有软件。 软件危机的典型表现: 1对软件开发成本和进度的估计常常很不准确; 2用户对“已完成的”软件系统不满意的现象经常发生; 3软件产品的质量往往靠不住; 4软件常常是不可维护的; 5软件通常没有适当的文档资料; 6软件成本在计算机系统总成本中所占的比例逐年上升; 7软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。 1.1.2产生软件危机的缘故原由 1与软件本身的特点有关

2与软件开发与维护的方法不正确有关 1.1.3消除软件危机的途径 对计算机软件有正确的认识。 认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。应该推广使用在实践中总结出来的开发软件的成功技术和方法,并继续研究探索。 应该开发和使用更好的软件工具。 总之,为了解决软件危机,既要有技术措施(方法和工具,又要有必要的组织管理措施。 1.2 1.2.1软件工程的介绍 软件工程:是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。(期中考 软件工程的本质特性: 软件工程关注于大型程序的构造 软件工程的中心课题是控制复杂性 软件经常变化

软件工程中的结构化设计方法

软件工程中的结构化设计方法 摘要软件工程中的结构化设计方法定义了一些不同的“映射”,利用这些映射可以把数据流图变换成软件结构。 关键词软件工程;结构化设计 结构化设计(structured design,SD)方法是一种面向数据流的设计方法,它可以与(structured analysis,SA)方法衔接。SD方法采用结构图(structured chart,SC)来描述程序的结构。 1结构图 1.1结构图的基本成分 结构图的基本成分有模块、调用和数据。 结构图和层次图类似,也是描绘软件结构的图形工具,图中一个方框代表一个模块,框内注明模块的名字或主要功能;方框之间的箭头(或直线)表示模块的调用关系。 在结构图中通常还用带注释的箭头表示模块调用过程中来回传递的信息。如果希望进一步标明传递的信息是数据还是控制信息,则可以利用注释箭头尾部的形状来区分:尾部是空心圆表示传递的是数据,实心圆表示传递的是控制信息。 1.2附加符号 结构图除了一些基本符号以外,还有一些附加符号,可以表示模块的选择调用或循环调用。 注意,层次图和结构图并不严格表示模块的调用次序。虽然多数人习惯于按调用次序从左到右画模块,但并没有这种规定,出于其他方面的考虑(例如为了减少交叉线),也完全可以不按这种次序画。此外,层次图和结构图并不指明什么时候调用下层模块。通常上层模块中除了调用下层模块的语句之外还有其他语句,究竟是先执行调用下层模块的语句还是先执行其他语句,在图中丝毫没有指明。事实上,层次图和结构图只表明一个模块调用哪些模块,至于模块内还有没有其他成分则完全没有表示。 2信息流的类型 在需求分析阶段,用SA方法产生了数据流图。面向数据流的设计能方便地将数据流图(data flow diagram,DFD)转换成程序结构图。DFD中从系统的输入数据流到系统的输出数据流的一连串连续变换形成了一条信息流。DFD的信

软件工程复习

1.软件生存周期:是指一个软件从提出开发要求开始直到该软件报废为止的整个时期。包括问题定义及可行性研究、需求分析、概要设计、详细设计、编码、测试、维护等部分。 2.数据字典(DD):是为分析人员查找数据流图中有关名字的详细定义而服务的,因此也像普通字典一样,要把所有条目按一定的次序排列起来,以便查阅。数据字典有以下4类条目:数据流、数据项、数据存储及基本加工。数据项是组成数据流和数据存储的最小元素。 图:数据流图从数据传递和加工的角度,以图形的方式描述数据流从输入到输出的传输变换过程。数据流图是结构化系统分析的主要工具,它表示了系统内部信息的流向,并表示了系统的逻辑处理功能。 4.α测试:由用户在开发环境下进行测试,也可以是开发机构内部的用户在模拟实际环境下进行的测试。开发者坐在用户旁边,随时记录错误情况和使用中的问题。这是受控环境下进行的测试。 5.β测试:由软件的最终用户在一个或多个实际使用环境下进行的测试,开发者通常不在测试现场。它是在软件开发者不能控制的环境中的“真实”应用,由用户记录下在测试过程中遇到的一切问题,包括真实的及主观的认定,定期把这些问题报告给开发者。开发者在综合报告后作出修改,将软件产品交付给所有用户使用。 6.什么是需求分析?是软件计划时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么”,深入描述软件的功能和性能,确定软件设计的限制和软件与其他系统的接口细节,描述软件的其他有效性需求。该阶段的基本任务是什么?①确定对系统的综合要求②分析系统的数据要求③提出系统的逻辑模型④修正系统开发计划⑤开发原型系统。 方法?如果一个程序的代码仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和出口,则称这个程序为结构化的。它的原则可以概括为自顶向下、逐步求精、模块化和限制使用GOTO 语句。 8.概要设计阶段?概要设计的任务①设计软件系统结构②数据结构及数据库库设计③编写概要设计文档④评审设计过程①设想供选择的方案②选取最佳的方案③功能分解④设计软件结构⑤数据库设计⑥制定测试计划 ⑦书写文档⑧审查和复审。设计原理①模块化②抽象与逐步求精③信息隐蔽④模块独立性。 9.详细设计的基本任务是什么?①模块的算法设计②模块的数据设计③模块的接口设计④模块的测试用例设计⑤模块的其他设计⑥编写“详细设计说明书”。 10.某银行储蓄系统的工作问题。给出系统的分层数据流程图(DFD图)和E-R图描述。 1.软件危机主要有哪些表现?产生的原因是什么? 产品不符合用户的实际需要;软件开发生产率提高的速度远远不能满足客观需要,软件的生产率远远低于硬件生产率和计算机应用的增长速度,使人们不能充分利用现代计算机硬件提供的巨大潜力;软件产品的质量差;对软件开发成本和进度的估计常常不准确;软件的可维护性差;软件文档资料通常既不完整也不合格;软件的价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升。造成软件危机的原因是:软件的规模越来越大,结构越来越复杂。软件开发管理困难而复杂。软件开发费用不断增加。软件开发技术落后。生产方式落后。开发工具落后,生产率提高缓慢。 2.如何设计软件系统结构? 为了实现目标系统,最终必须设计出组成这个系统的所有程序和数据库(文件),对于程序,则首先进行结构设计,具体为:(1)采用某种设计方法,将一个复杂的系统按功能划分成模块。(2)确定每个模块的功能。(3)确定模块之间的调用关系。(4)确定模块之间的接口,即模块之间传递的信息。(5)评价模块结构的质量。 3.什么是面向数据流的设计方法?它有哪些策略? 面向数据流的设计方法也称结构化设计方法(SD),它与结构化分析(SA)相衔接,它按一定的设计策略将数据流图转换成软件的模块层次结构。有两种设计策略: (1)事务型分析设计:一个大的复杂的系统分解成较小的,相对简单的子系统,这些子系统彼此之间相对独立一些,而高层数据流图的数据处理往往反映这些子系统的功能,有平行分别处理的特点,因此,高层数据流图的转换通常可作为事务型处理,把一个加工逻辑看成是一类特定的事务,把它们分别映射成一个模块,最

面向数据流设计方法的七个步骤

面向数据流设计方法的七个步骤 一、分析需求 在进行数据流设计之前,首先需要对系统的需求进行全面的分析。需要明确系统将要处理的数据类型、数据来源、数据流向以及数据的处理过程等内容,这些都是进行数据流设计的基础。 二、绘制数据流图 在需求分析的基础上,可以开始绘制数据流图了。数据流图是一种图形化的工具,用于描述系统中数据的流动以及数据处理的过程。通过数据流图可以清晰地看到数据的输入、输出以及数据之间的关系,从而为后续的数据流设计提供重要的参考。 三、识别数据流 在绘制数据流图的过程中,需要识别出系统中存在的数据流。这些数据流通常包括输入数据流、输出数据流以及内部数据流。需要对每个数据流进行详细的描述,包括数据流的名称、数据流的来源、数据流的去向以及数据流的内容等。 四、识别数据存储 除了数据流之外,系统中还包括大量的数据存储。在进行数据流设计时,需要对这些数据存储进行识别和描述。需要确定每个数据存储中保存的数据类型、数据的格式、数据的存储位置以及数据的访问权

限等内容。 五、识别数据处理 数据处理是系统中非常重要的一个环节,涉及到数据的加工、转换 和处理等过程。在进行数据流设计时,需要对系统中涉及的数据处理 进行识别和描述。需要明确每个数据处理的功能、输入数据和输出数 据以及数据处理的执行顺序等内容。 六、验证数据流图 绘制数据流图之后,需要对其进行验证。需要确保数据流图能够真 实地反映系统的数据流动和数据处理的过程,同时需要对数据流图进 行合理性和一致性的检查,以确保数据流图的准确性和完整性。 七、优化数据流图 在验证数据流图之后,可以对其进行优化。需要对数据流图中存在 的不合理或冗余的部分进行调整和优化,以提高数据流图的可读性和 实用性。 总结: 面向数据流设计方法是一种重要的系统设计方法,通过对数据流进 行系统化的设计和分析,可以有效地帮助系统设计人员理清系统中数 据的流动和处理过程。遵循以上七个步骤进行数据流设计,可以为系 统设计提供重要的支持,使得系统设计更加科学化、规范化和高效化。

软件工程 第七版 Chapter_07设计概念

软件工程第七版 Chapter_07设计概念 第7章设计概念设计: Mitch Kapor,Lotus 1-2-3的创始人,在《Dr. Dobbs》杂志上发表了“软件设计宣言”,他说: 良好的软件设计应该展示:坚固:程序应该展示不含任何妨碍其功能的缺陷。适用:程序应该符合开发的目标。愉悦:使用程序的体验应是愉快的。 设计的任务 分析模型设计模型设计文档回答How to do? 可以分为概要设计、详细设计把分析阶段产生的软件需求分析说明转换为用适当手段表示的软件设计文档。过程设计 用户需求 需求分析 需求分析规格说明 接口设计 设计 体系结构数据设计 设计模型 数据设计 信息模型 软件数据结构 体系结构设计 定义软件部件间的关系软件内部、外部及与人之间的通信软件组件的过程性描述 接口设计 构建级(过程)设计 分析模型-设计模型面向流的元素数据流图控制流图处理表达基于场景的元素用例文本use-cases - text 用例图use-case diagrams 活动图 activity diagrams 泳道图 swim lane diagramssc e na r i o- ba se d e l e me nt s f l ow- or i e nt e d e l e me nt sdata flow diagrams control-flow diagrams processing narratives Co m p o n e n t L e v e l D e sig n 构件级设计 In t e rf a c e D e sig n 接口设计 Analysis Model分析模型基于类的元素类图分析包 CRC模型协作图c l a ss- ba se d e l e me nt sclass diagrams analysis packages CRC models collaboration diagrams be ha v i or a l e l e me nt sstate diagrams sequence diagrams A rc h it e c t u ra l D e sig n 体系结构设计

软件工程导论

第一章 1.什么是软件危机?产生软件危机的原因?消除软件危机的途径? 1)软件危机是指在计算机的开发和维 护中所遇到的一系列严重问题。 2)原因,一方面与软件本身的特点有 关,另一方面也和软件开发与维护的 方法不正确有关。 3)途径:1)将软件开发看成是一种组 织严密、管理严格、各类人员协同配 合共同完成的工程项目。 2)、研究 和推广成功的软件开发技术和方法。 3)、开发和使用好的软件工具。 1.软件工程是:①把系统的规范的、可度 量的途径应用于软件开发、运行和维护 过程,也就是把工程应用于软件;②研 究①中提到的途径。 2.软件工程的基本原理 1)用分阶段的生命周期计划严格管理 2)坚持进行阶段评审 3)实行严格的产品控制 4)采用现代程序设计技术 5)结果应能清楚的审查 6)开发小组的人员应该少而精 7)承认不断改进软件工程实践的必要 性 3.软件工程方法学包含三个要素,方法、 工具和过程。 4.软件生命周期的八个阶段 1)问题定义 2)可行性研究 3)需求分析 4)总体设计 5)详细设计 6)编码和单元测试 7)综合测试 8)软件维护 5.什么是软件过程?几种模型的优缺点及 适用项目? 软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的步骤。 软件开发模型有瀑布型、渐增型和变换型。 瀑布型开发方法是按照软件生存周期的划分依次实施,每一个阶段有明确规定的任务。它的特点: (1)各个阶段的顺序性和依赖性; (2)划分逻辑设计与物理设计,尽可能推迟程序的物理实现; (3)每个阶段必须完成规定的文档,对其中问题通过复审及早发现,及早解决。 渐增型开发方法及特点: (1) 从部分需求出发,先建立一个不完全的系统,通过测试运行该系统取得经验和信息反馈,加深对软件需求的理解,进一步使系统扩充和完善。如此反复,直至软件人员和用户对所设计完成的软件系统满意为止。 (2) 在渐增型开发下的软件是随软件开发的过程而逐渐形成的。 (3) 渐增型开发方法适合于知识型软件的开发,设计系统时对用户需求的认识开始不是很清楚的,需要在开发过程中不断认识、不断获得新的知识去丰富和完善系统。多数研究性质的试验软件,一般采用此方法。 变换型开发方法及特点: (1)从软件需求的形式化说明出发,经过一系列的程序变换,得到最终的程序系统。 (2)该方法必须有严格的数学理论和形式化技术的支持。 7.微软的过程模型适用于商业环境下具有有限资源和有限开发时间约束的项目软件过程模式。 8.面向对象的4个要点可用以下方程式代替概括: 面向对象方法=对象+类+继承+用消息通信 第二章 1.可行性研究的目的是:用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得开发,最后给决策者提供做与不做的依据。 2.可行性研究的任务: 1)、首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制。 2)、然后进行简要的需求分析,抽象出该项目的逻辑结构,建立逻辑模型。 3)、最后从逻辑模型出发,经过压缩的设计,探索出若干种可供选择的主要解决办法,对每种解决方法都要从多个方面研究它的可行性。 3.可行性研究内容: (1)技术可行性 (2)经济可行性 (3)操作可行性 (4)社会可行性(法律可行性) 4.系统流程图是概括的描述物理系统的传统工具 ❤数据流图(DFB)和数据字典(DD)共同构成

软件工程导论(整理)

一、软件危机与软件工程 1、软件危机 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.(正常、不正常运行软件都具有这种问题) 2、软件危机的原因 1)软件本身特点造成; 程序规模庞大; 程序复杂性随着程序规模的增加而呈指数上升。 2)软件开发与维护的方法不正确。 主要表现: (a)忽视软件需求分析; (b)认为软件开发就是写程序并使之运行; (c)轻视软件维护; 3、解决软件危机的途径: 1、组织管理:软件开发不是某种个体劳动的神秘技巧,软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。 2、方法:应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。 3、工具:应该开发和使用更好的软件工具。在软件开发的每个阶段都有许多繁琐重复的工作需要做,在适当的软件工具辅助下,开发人员可以把这类工作做得既快又好. 4、软件工程包括哪7条基本原理? 1. 用分阶段的生命周期计划严格管理; 2。坚持进行阶段评审; 3. 实行严格的产品控制; 4. 采用现代程序设计技术; 5. 结果能清楚地审查; 6. 开发小组的人员应该少而精; 7。承认不断改进软件工程实践的必要性。 5、软件开发流程? 1)、问题定义2)、可行性研究3)、需求分析4)、总体设计5)、详细设计6)、编码和单元测试7)、综合测试8)、软件维护 6、软件开发模型 瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、rational统一过程、敏捷过程与极限编程、微软过程 二、可行性研究

软件工程答案版

一、概念题: 1、软件危机:在计算机软件的开发和维护过程中所遇到的一系列严重问题。 2、软件工程:是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维 护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以 经济地开发出高质量的软件并有效地维护它,这就是软件工程。 3、软件生命周期:由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期又进一步划分成 若干个阶段。 4、模块的内聚性:标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。 5、软件测试:为了发现程序中的错误而执行程序的过程。 6、软件的可维护 性: 维护人员理解、改正、改动或改进这个软件的难易程度。 7、数据流图DFD:一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。 8、模块的耦合(性):对一个软件结构内不同模块之间互连程序的度量。耦合的强弱取决于模块间接口的复杂程序,进入或访问一个模块的点,以及通过接口的数据。 9、形式化方法:描述系统性质的基于数学的技术。 10、软件重用:指同一事物不作修改或稍加改动就多次重复使用。广义地说,软件重用可分为以下3个层次:知 识重用、方法和标准的重用和软件成分的重用。 11、软件维护:就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。 12、对象:是由描述该对象属性的数据以及对这些数据施加的所有操作封装在一起构成的统一体。 13、软件可靠性:是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。 二、填空题: 1、软件工程包括技术和管理两方面内容,是(技术)与(管理)紧密结合所形成的工程学科。管理就是通过(计划)、 (组织)和(控制)等一系列活动。软件工程方法学包含3个要素:(方法)、(工具)和(过程)。 2、任何计算机系统均由(硬件)和(软件)两部分组成。 3、通常使用软件生命周期模型简洁地描述软件过程。请举出几种典型的软件过程模型如(瀑布模型)、(快速原型模型)、 (增量模型)等等。 4、可行性研究其实质上是要进行一次大大压缩简化了的系统分析和设计过程。一般对可供选择的主要系统实现方案的 可行性,至少应该从(技术可行性)、(经济可行性)和(操作可行性)等3个方面研究每种实现方案的可行性。 5、需求分析的任务包括(系统综合要求)、(数据要求)、(导出逻辑模型)和(修正系统开发计划)等。其中常见的接 口需求有(用户接口)、(硬件接口)、(软件接口)和(通信接口需求)等等。 6、需求分析过程应该建立3种模型,它们分别是(数据模型)、(功能模型)和(行为模型)。 7、按照形式化的程度,可以把软件工程使用的方法划分成(非形式化)、(半形式化)和(形式化)等3类。 8、软件设计一般包括(总体设计阶段)和(详细设计阶段)等两个阶段,在软件设计过程中应该遵循的基本原理和相 关概念有(模块化)、(抽象)、(逐步求精)、(信息隐藏和局部化)和(模块独立)。 9、软件设计的基本任务可以概括地说包括以下四个任务(体系结构设计)、(人机界面设计)、(数据设计)和(过程设 计)。 10、在设计人机界面的过程中,必须充分重视并认真处理好(系统响应时间)、(用户帮组设施)、(出错信息处理)和 (命令交互)等四个问题。 11、(白盒测试)和(黑盒测试)是软件测试的两类基本方法,通常在测试过程的早期阶段主要使用(白盒测试), 而在后期阶段主要使用(黑盒测试)。

《软件工程》教学大纲

《软件工程》教学大纲 一、课程基本信息二、教学目标 本课程是物联网工程专业的专业主干课。通过本课程的学习,使学生初步建立工程化意识,学会用工程化思想(包括技术、方法与环境)开发各种软件,以软件的生命周期作为主线,掌握软件工程的基本理论,进一步系统化、工程化,为今后实际工程中能够进行系统分析与设计奠定良好的基础,是从事计算机软件开发与维护工作的基础。 三'教学内容及基本要求第一章软件工程概述(4/0)(-)教学目标了解软件危机产生的典型表现 1.软件危机产生的原因了解软件工程的概念、软件生命周期和软件过程(二)重点、难点重 点:软件危机的概念、软件危机产生的原因、软件生命周期 难点:软件生命周期(三)教学方法讲授法、讨论法、实验教学(四)教学内容 1.软件工程概述(1)软件危机(2)软件工程(3)软件生命周期 (4)软件过程⑸小结(五)作业及要求教材上书面作业 (六)课外学习要求阅读有关软件缺陷造成严重后果的案例。 (七)其他必要说明无第二章可行性研究(2/2)(一)教学目标 1. 了解可行性研究的定义.软件本钱/效益分析.掌握系统流程图的绘制、数据流图的绘制

(二)重点、难点 重点:可行性研究的过程、数据流图、系统流程图、本钱/效益分析难点:数据流图(三)教学方法讲授法、讨论法、实验教学 (四)教学内容2.可行性研究 (1)问题定义 ⑵可行性研究 ⑶本钱/效益分析 ⑷数据流图DFD ⑸数据字典 (6)小结(五)作业及要求教材上书面作业(六)课外学习要求 无(七)其他必要说明无第三章需求分析(7/2) (-)教学目标. 了解需求分析的方法 1 .状态图、其他图形工具、验证软件需求重点、难点需求分析的过程、需求获取的方法、状态图需求获取方法 教学方法讲授法、讨论法、实验教学(四)教学内容.需求分析 (1)需求分析任务及获取需求的方法⑵实体一联系图⑶状态迁移图⑷其他图形工具 ⑸验证软件需求 ⑹小结(五)作业及要求教材上书面作业 (六)课外学习要求 无 (七)其他必要说明 无 (二) 重点: 难点: (二) 重点: 难点:

软件工程大纲(13版)

《软件工程》课程教学大纲 一、课程基本信息 1.课程编号: 32801202 2.课程名称:软件工程 3.英文名称:Software Engineering 4. 课程简介:《软件工程》是计算机专业的一门工程性基础课程,是高等学校计算机软件教学体系中的一门核心课程,在软件工程学科人才培养体系中占有重要的地位。课程以IEEE最新发布的软件工程知识体系为基础构建内容框架,注重贯穿软件开发整个过程的系统性认识和实践性应用,以当前流行的统一开发过程、面向对象技术和UML语言作为核心,密切结合软件开发的先进技术、最佳实践和企业案例,力求从“可实践”软件工程的角度描述需求分析、软件设计、软件测试以及软件开发管理,使学生在理解和实践的基础上掌握当前软件工程的方法、技术和工具。 二、课程说明 1.教学目的和要求: 本课程对提高学生的软件开发能力和项目管理能力有重要的现实意义。通过本课程的学习,培养学生对整个软件开发过程的能力,让学生能切实体会到软件工程在实践中的指导作用,并按软件工程的要求完成规范的各项软件开发文档。要求学生能掌握软件工程的基本概念、基本原理、开发软件项目的工程化的方法和技术及在开发过程中应遵循的流程、准则、标准和规范等;学生应能掌握开发高质量软件的方法,以及有效地策划和管理软件开发活动,为学生参加大型软件开发项目打下坚实的理论基础。 2.与相关课程衔接:先修《程序设计》、《操作系统》 3.学时:56(32+24) 4.开课学期:5 5.教学方法:讲授 6.考核方式:闭卷,成绩组成:卷面成绩(50%)+项目报告(40%)+平时成绩(10%) 7.教材:张海藩,《软件工程导论》(第四版),清华大学出版社 8.教学参考资料: [1] 《软件工程概论》清华大学出版社郑人杰,殷人昆 [2] 屠立德《软件工程方法》机械工业出版社 [3] 冯玉琳,黄涛,倪彬《对象技术导论》科学出版社 三、课程内容与教学要求 第1章软件工程学概述 教学目标:了解和掌握软件工程的基本概念,软件危机的表现形式、产生的原因及消除的途径,软件工程的基本原理、方法学,软件的生存期,几种主要的软件开发模型。 教学重点:软件工程基本原理,软件生存其,软件开发模型。 教学难点:软件开发模型 授课时数:2

软件工程第二版答案

里面包含绝大部分的软件工程第二版中的课后习题答案瞿中编 第一章仿真试题 1、瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和( )。 A、详细计划 B、可行性分析 C、运行阶段 D、测试与排错 2、从结构化的瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中哪个环节出错,对软件的影响最大( )。 A、详细设计阶段 B、概要设计阶段 C、需求分析阶段 D、测试和运行阶段 3、在结构化的瀑布模型中,哪一个阶段定义的标准将成为软件测试中的系统测试阶段的目标( )。 A、需求分析阶段 B、详细设计阶段 C、概要设计阶段 D、可行性研究阶段 4、软件工程的出现主要是由于( )。 A.程序设计方法学的影响 B.其它工程科学的影响 C. 软件危机的出现 D.计算机的发展 5、软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是( ) A、硬件环境 B、软件开发的环境 C、软件开发工具和软件开发的环境 D、开发人员的素质 6、软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为( ) A、相互排斥 B、相互补充 C、独立使用 D、交替使用 7、UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法( ) A、基于瀑布模型的结构化方法 B、基于需求动态定义的原型化方法 C、基于对象的面向对象的方法 D、基于数据的数据流开发方法 8、在下面的软件开发方法中,哪一个对软件设计和开发人员的开发要求最高( ) A、结构化方法 B、原型化方法 C、面向对象的方法 D、控制流方法 9、结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的( ) A、控制流 B、数据流 C、程序流 D、指令流 10、软件开发的结构化生命周期方法将软件生命周期划分成( ) A、计划阶段、开发阶段、运行阶段 B、计划阶段、编程阶段、测试阶段 C、总体设计、详细设计、编程调试 D、需求分析、功能定义、系统设计 11、软件开发中常采用的结构化生命周期方法,由于其特征而一般称其为( ) A、瀑布模型 B、对象模型 C、螺旋模型 D、层次模型 12、软件开发的瀑布模型,一般都将开发过程划分为:分析、设计、编码和测试等阶段,一般认为可能占用人员最多的阶段是( ) A、分析阶段 B、设计阶段 C、编码阶段 D、测试阶段 13、软件开发模型是指软件开发的全部过程、活动和任务的结构框架。主要的开发模型有瀑布模型、演化模型、螺旋模型、喷泉模型和智能模型。螺旋模型将瀑布模型和演化模型相结

相关主题
文本预览
相关文档 最新文档