自考《软件工程》总结笔记

软件工程题型及分数占比

单选 15道题 每题2分 共30分
填空 20个空 每空1分 共20分
简答题 6道题 每题5分 共30分
综合题 2道题 每题10分 共20分

第一章:绪论(3~5分)

第一节:软解工程概念的提出和发展

一、软件危机:(速度 ↓ 、质量 ↓ 、成本 ↑ )

  • 速度: 软件的发展水平远远滞后于硬件的发展水平,生产率低下,软件制造仍然是一种人工 集约生产方式
  • 质量: 软件的质量低下,不能满足用户的需求、适应性差
  • 成本: 软件开发成本居高不下

二、软件工程:

软件工程是应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度 实现满足用户要求的软件产品的工程,或以此为研究对象的学科。

三、软件工程的发展:

(1) 20世纪60~80年代 :瀑布模型、过程化语言、支持工具

(2) 20世纪80年代~今 :软件复用技术、软件生产管理、面向对象语言、CASE

(3)近几年 软件复用技术:构件技术、平台技术、需求工程技术、领域分析技术、应用集成技术等。

第二节:软件开发的本质

一、软件(单选,填空)

软件 = 程序 + 文档

二、 软件开发的本质:(单选,填空)

映射”,即实现问题空间概念和处理逻辑解空间概念和处理逻辑之间的映射

三. 系统建模:

运用所掌握的知识,通过抽象,给出系统的一个结构。

四、模型(单选,填空)

模型是一个抽象。模型是在特定意图下所确定的角度和抽象层次上对物理系统的描述,通常包含对该系统边界的描述、对系统内各模型元素以及它们之间关系的语义描述。

五、系统模型的类型(简答题)

(1)概念模型:描述软件是什么

(2)软件模型:实现概念模型的软件解决方案。包括设计模型、实现模型和部署模型。

第二章软件需求和需求规约(10分左右)

第一节:需求与需求获取

一、需求定义(单选填空)

一个需求是有关一个“要予构造”的陈述,描述了待开发产品/系统(或项)功能上的能力性能参数其它性质

1、需求的基本性质(单选,填空)

1、必要的:该需求是用户要求的。

2、无歧义的:该需求只能用一种方式解释。

3、可测的:该需求是磕进行测试的。

4、可跟踪的:该需求可从一个开发阶段跟踪到另一个开发阶段。

5、可测量的:该需求是可测量的。

2、需求分类(单选,填空)

(1)分类

分类 描述
功能需求 是一个需求的主体
非功能需求 性能、外部节课、设计约束、质量属性

能够区分哪些是功能需求,哪些是性能需求。(单选,填空)

(2)接口需求的分类(单选,填空)

①用户接口

②硬件接口

③软件接口

④通信接口 

⑤内存约束

⑥运行

⑦地点需求

(3)设计约束需求(单选,填空)

①法规政策

②硬件限制

③与其它应用的接口

④并发操作

⑤审计能力

⑥控制功能

⑦高级语言要求

⑧握手协议

⑨应用的关键程度

⑩安全和保密

(4)质量属性(单选,填空) 

①可靠性

②存活性

③可维护性

④用户友好性

三、需求发现技术 P26(单选,填空)

①自悟

②交谈

③观察

④小组会

⑤提炼

第二节:需求而规约

一、需求规约定义(单选,填空)

1、定义: 需求规约是一个软件/产品/系统所有需求陈述的正式文档,它表达了一个软件/产品/系统的概念模型

2、需求规约的基本性质(单选,填空)

①重要性和稳定性程度:对需求进行分级

②可修改的

③完整的:没有被遗漏的需求

④一致的:不存在互斥的需求

二、需求规约(草案)格式

1.引言

   1.1 目的

   1.2 范围

   1.3 定义,缩略语

   1.4 参考文献

   1.5 概述

2.总体描述

   2.1 产品概述

   2.2 产品功能

   2.3 用户特性

   2.4 约束

   2.5 假设和依赖

3.特定需求

   附录 索引

三、需求规约(规格说明书)的表达

(1)非形式化的需求规约

(2)半形式化的需求规约

(3)形式化的需求规约

四、需求规约的作用

(1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现

(2)需求规约是一个管理控制点

(3)对于产品/系统的而设计,需求规约是一个正式的、受控的起始点

(4)需求规约是创建产品验收计划和用户指南的基础

★第三章:结构化方法(25分左右)

第一节:结构化需求分析

一、基本术语

★二、系统功能模型表示(DFD图)(综合应用题)

1、DFD图是一种描述数据变换的图形化工具,其中包含的元素可以是 数据流、数据存储、加工、数据源和数据潭等。

2、在使用DPFD图来表达系统/产品功能模型时,应注意以下3个问题。(简答题)

①、在DFD图中,数据流起到连接其他实体(如加工、数据存储、数据源和数据潭) 的作用,即数据流可以从一个加工流向另一个加工; 可以从数据源流向加工,或从加工流 向数据潭;可以从加工流向数据存储,或从数据存储流向加工。在应用中,数据流和数据存储 一般需要给出标识, 而对流人或流出数据存储的数据流,在语义比较清晰的情况下,一般可 以不给出它们的标识。

②、加工之间可以有多个数据流,这些数据流之间可以没有任何直接关系,数据流图也不表明 它们的先后次序。

③、对于一个比较大的软件系统,为了避免由于采用张DFD图来描述系统功能而出现的层次不 清、难以理解的情况,往往需要采用多层次的数据流图

三、建模过程

建模形式:自顶向下,功能分解

1、建立系统环境图,确定系统语境(单选,填空)

2、自顶向下,逐步求精,建立系统的层次数据流图(单选,填空,简答题)

3、定义数据字典(单选,填空)

     (1)定义数据流程图中所有数据流和数据存储的数据结构。

     (2)顺序结构:+

     (3)选择结构:|

     (4)重复结构:{ }

     (5)子界:m..n

4、描述加工

(1)判定表

判断表(Decision Table)也称为决策表,是一个二维表,它说明了每一种条件组合所产生 的结果。该表分为四个象限(quadrants)。

①、左上限代表所有的条件

②、右下限代表可能的结果

③、右上限代表每一种条件的取值(用 Y 和 N 来表示)

④、右下限用 X 表示所对应的条件组合所产生的结果

(2)判定树

判断树 (Decision Tree)也称为决策树,是用来描述在一组不同的条件下,决策的行动是 根据不同条件及其取值来选择的处理过程。业务规则的描述通常可以使用判断树这一过程描述 工具。

(3)结构化自然语言

如果一个加工得输入数据和输出数据之间得逻辑关系比较简单,可以使用结构化自然语言 予以表述。

四、应用中注意的问题

(1)模型平衡问题

(2)信息复杂性控制问题

五、需求验证

需求阶段的主要任务是完整地定义问题,确定系统地功能和能力。为此该阶段的主要任务

一般包括需求发现、需求分析和需求验证

(1)验证每一个需求满足 5 个性质

(必要性、无歧义性、可测量性、无歧义性、可测性、可跟踪性、可测量性)

(2)验证需求规格说明书满足 4 个性质

(重要性、稳定性程度、可修改性、完整性、一致性)

第二节:结构化设计

 一、总体设计:

1、总体设计的目标及其表示

基本任务:把系统的功能需求分配到一个特定的软件体系结构中。

表达软件体系结构的工具:三种模块结构图:

结构图(Structure Chart)

是对软件总体结构的一种图形描述,它显示了软件的层次结构、 组织和通讯。也就是说,在结构图中,显示了软件是由哪些模块组成的,这些模块按照什么样 的层次结构组织在一起以及模块之间通过什么接口联系在一起。结构图也称之为控制结构图、 模块结构图或系统结构图。

①模块符

② 模块调用关系

③ 模块间的数据传递

④ 模块间的控制信息传递

⑤ 循环调用结构

⑥ 选择调用结构

⑦ 数据存

层次图:

层次图中一个矩形框代表一个模块,框间的连线表示调用关系(位于上方的矩形框所代表 的模块调用位于下方的矩形框所代表的模块)

HIPO图:

HIPO图是美国IBM公司发明的“层次图加输入/处理/输出图”的英文缩写。为了使HIPO图 具有可追踪性,在H图(即层次图)里除了顶层的方框之外,每个方框都加了编 。 H图+IPO图

2、总体设计步骤(单选,填空,简答题)

将DFD图映射为设计层面的模块及模块调用。

首先将系统的DFD图转换为初始的模块结构图,再基于“高内聚低耦合”这一软件原理,通过模块化,将初始的模块结构图转换为最终的、可详细设计使用的模块结构图(MSD)。

(1)变换流(Transform Flow)。基于变换流的数据流程图是一个线性的顺序结构,由输入臂、 输出臂和变换中心三部分组成。其中变换中心使系统数据发生本质的变化,输入臂将物理输入 变换成逻辑输入,而输出臂则将逻辑输出变换成物理输出。

(2)事务流(Transaction Flow)。事务流的数据流程图中有一个事务处理中心,它将输入分 为许多相互平行的加工路径,然后根据输入的属性,选择某一加工路径。 事务中心完成以下任务:

① 接收事务(即输入数据);

② 分析每个事务并确定它的类型;

③ 根据事务的类型选取一条活动通路。 任何处理都可以划分为两种转换类型之一:以转换为中心的分解和以业务为中心结构的分解

3、模块化及启发式提供规则

(1)模块 执行一个特殊任务的一个过程以及相关的数据结构。模块通常由两部分组成:模块接口和 模块体。

(2)模块化分而治之”和“抽象”。把一个待开发的软件分解成若干个简单的、具有高内聚低耦合 的模块,这一过程称为模块化。模块化是系统设计基本原理/原则之一。

(3)内聚(Cohesion) 是指一个模块内部个成分之间相互关联程度的度量。也就是说,内聚是对模块内各处理动 作组合强度的一种度量。很显然,一个模块的内聚越大越好。

① 偶然内聚 可维护性最差

② 逻辑内聚

③ 时间内聚

④ 过程内聚

⑤ 通信内聚

⑥ 顺序内聚

⑦ 功能内聚 可维护性最好

(4)模块耦合 耦合(coupling)是对两个模块之间联接程度的一种度量。模块间的依赖程度越大,则其耦 合程度也就越大;反之,模块间的依赖程度越小,则其耦合程度也就越小。很显然,为了使软件具有较好的可维护性和可修改性,模块间的关联程度即耦合程度应越小越好。因为耦合程度 越小,表明模块间的独立程度越大,这样在修改一个模块时,对其它模块的影响程度就越小, 从而使模块的修改工作局限于一个最小范围之内。

① 内容耦合

② 公共耦合

③ 数据耦合

④ 控制耦合

⑤ 标记耦合

原则是:尽量用数据耦合,少用控制耦合,限制公共耦合的范围,避免使用内容耦合。

(5)启发性规则 高内聚、低耦合。

① 改进软件结构,提高软件独立性。模块分解

② 模块规模适中

③ 力求深度、宽度、扇出、扇入适中。

   深度:表示其控制的层数。

   宽度:同一层次上模块总数的最大值。

   扇出:一个模块直接控制的下级模块的数目。

   扇入:有多少个上级模块直接调用它。

   原则:顶层模块扇出比较大,中间层模块扇出较小,底层模块具有较大的扇入。

④ 尽量使模块的作用域在其控制域内。

   模块的控制域:这个模块本身以及所有直接或间接从属它的模块的集合。

   模块的作用域:受该模块内一个判断所影响的所有模块的集合。

⑤ 尽力降低模块接口的复杂度

⑥ 力求模块功能可以预测

二、详细设计

具体描述模块结构图中的每一模块,即给出实现模块功能的实施机制,包括一组例程和数 据结构。

1、结构化程序设计

一种基于结构的编程方法,即采用顺序结构、选择结构和重复结构进行编程,其中每一结构只允许一个入口和一个出口。

三种基本的控制结构:(顺序、选择、重复)

  •  顺序结构,先执行 A 再执行 B;
  • IF-THEN-ELSE 型选择(分支)结构;
  • DO-WHILE 型循环结构 

2、详细设计工具(单选,填空,简答题)

(1)程序流程图 程序流程图:

程序流程图又称为程序框图,它是历史最悠久使用最广泛的描述过程设计的 方法,然而它也是用得最混乱的一种方法。

(2)盒图(N-S 图)

出于要有一种不允许违背结构程序设计精神的图形工具的考虑,Nassi 和 Shneiderman 提 出了盒图,又称为 N-S 图

(3)PAD 图

PAD 是问题分析图(Problem Analysis Diagram)的英文缩写,自 1973 年由日本日立公司发 明以后,已得到一定程度的推广。它用二维树形结构的图来表示程序的控制流,将这种图翻译 成程序代码比较容易。下图给出 PAD 图的基本符 。

(4)类程序设计语言 PDL

PDL 也称为伪码,它是用正文形式表示数据和处理过程的设计工具。 PDL 具有严格的关键字外部语法,用于定义控制结构和数据结构;另一方面,PDL 表示实 际操作和条件的内部语法通常又是灵活自由的,以便可以适应各种工程项目的需要。因此,一 般说来 PDL 是一种“混杂”语言,它使用一种语言(通常是某种自然语言)的词汇,同时却使 用另一种语言(某种结构化的程序设计语言)的语法。 可以作为注释工具直接插在源程序中间。

(5)设计规约

完整准确地描述满足需求规约所要求的所有功能模块,以及伴随功能模块而出现的非功能机制。 设计规约包括概要设计规约详细设计规约

① 概要设计规约:指明高层软件体系结构。

? 系统环境

?软件模块的结构

?模块描述

?文件结构和全局数据文件的逻辑结构

?测试需求

② 详细设计规约

?各处理过程的算法

?算法所涉及的全部数据结构的描述

第四章:面向对象方法——UML

第一节:UML术语表

一、表达客观事物的术语

1.类与对象(单选,填空,简答题)

 (1)对象(object)

是系统中用来描述客观事物的一个实体。一个对象由一组属性和对这组 属性进行操作的一组方法组成。 对象只描述客观事物本质的与系统目标有关的特征。 对象之间通过消息通信,一个对象通过向另一个对象发送消息激活某一个功能。

(2)类(Class)

是具有相同属性、操作、关系和语义的一组对象的集合,它为属于该类 的全部对象提供了同一的抽象描述,其内部包括属性和服务两个主要部分。 类有超类(Superclass)和子类(Subclass)之分。 (相对而言)对象与类的关系犹如程序设计语言中变量和类型的关系。对象是类的实例 (Instance)。 类在类图上使用包含三个部分的矩形来描述,如下图所示。最上面的部分显示类的名称, 中间部分包含类的属性,最下面的部分包含类的操作(或者说”方法”)。

(3)属性 对象或类的属性(attributes)

描述了对象的具体特征。属性有属性名和属性值(或称属 性状态)。 每条属性可以包括属性的可见性、属性名称、类型、缺省值和约束特性。 UML 规定类的属性的语法为: 可见性 属性名 : 类型 = 缺省值 {性质串} 可见性:public(+) 、protected(#)、private(-)、包内的(~)

(4)类的操作

通常也被称为功能,但是它们被约束在类的内部,只能作用到该类的对象上。操作名、返回类型和参数表组成操作界面。 UML 规定操作的语法为: 可见性 操作名 (参数表) : 返回类型 {性质串} 例如:+取客户地址(客户名:字符串):字符串 

2. 接口(单选,填空)

接口是操作的一个集合,其中每个操作描述了类、构件或子系统的一个服务。

(1) 采用具有分栏和关键字的矩形符 来表示

(2) 采用小圆圈和半圆圈来表示

3. 协作(单选,填空)

协作是一个交互,涉及交互的三要素:交互各方、交互方式以及交互内容。

4. 用况(use case)/用例(单选,填空)

对一组动作序列的描述,系统执行这些动作应产生对特定参与者有值的、可观察的结果。

5.主动类(单选,填空)

至少具有一个进程或线程的类。能够启动系统的控制活动,并且其对象的行为通常与其它 元素行为并发的。 表示方法:两条竖线。

6.构件/组件

 系统设计中的一种模块化部件,通过外部接口隐藏了它的内部实现。

7.制品(单选,填空)

系统中包含物理信息的、可替代的物理部件。

8. 节点(单选,填空)

节点是在运行时存在的物理元素,通常表示一种具有记忆能力和处理能力的计算机资源。

二、表达术语的关系

1.关联(单选,填空)

关联反映了类和类之间的静态关系。关联在模型中,特别是在永久业务对象模型中是最基本的关系。

链(link)是对象之间具有特定语义关系的抽象。

(1)关联名

(2)导航

(3)角色

(4)可见性

(5)多重性:多重性(Multiplicity)定义了与一个对象/类相联系的对象/类出现一次, 该对象/类可能出现的最小和最大的数目。

(6)限定符

(7)聚合:一个类是另一类的一部分。

 (8)组合:是聚合的一种特殊形式

 (9)关联类

(10)约束

2.泛化/继承(单选,填空,简答题

继承:特殊类(子类)的对象拥有其一般类(超类)的全部属性与服务,称作特殊类对一 般类的继承(Inheritance) 。利用继承(inheritance),子类可以继承父类的属性和方法。 子类/父类也可分别叫做特殊类/一般类、子类/超类、派生类/基类等。

继承反映了类之间的一种联系或结构:一般-特殊结构,也称分类结构(Classification Structure),是由一组具有继承关系的类所组成的结构。仅由一些单继承关系的类形成的结 构又称作层次结构(Hierarchy Structure);由一些存在多继承关系的类形成的结构又称作 格结构(Lattice Structure)。

3.细化(单选,填空)

细化是类目之间的语义关系,其中一个类目规约了保证另一类目执行的契约。 用空心三角形的虚线表示。

4.依赖(单选,填空)

依赖是一种使用关系,用于描述一个类目使用另一类目的信息和服务。 用有向虚线段表示。

5. 包(单选,填空)

包是模型元素的一个分组,一个包本身可以被嵌套在其它包中,并且可以含有子包和其它 类型的模型元素。

第二节:UML的模型表达式

一、UML的模型表达格式

UML的图形工具分为两类,一类是结构图,用于表达系统或者系统成分的静态结构模式, 给出系统或系统成分的一些说明性信息;一类是行为图,用于表达系统或系统成分的动态结构 模型,给出系统或系统成分的一些行为信息。

1. 图的类别(单选,填空)

(1)结构图

①对象结构建模—类图和对象图

②应用结构建模—包图、构件图、部署图、组合结构图

(2)行为图

对象交互建模—顺序图、协作图(通信图、交互综述图、定时图)、状态图(状态机) 对象行为建模—用况图、活动图

 2.类图(单选,填空,简答题)

任何系统都需要从两方面进行描述:结构信息和行为信息。系统的组成表达了系统各组成 要素之间的联系,称为结构;这些组成要素的执行逻辑称为行为。在面向对象方法中,系统的 结构信息是通过类图(class diagram)来描述的;而系统行为信息则通过用况图、交互图(包 括顺序图和协作图)和状态图来描述的。也就是说,前者说明了系统的组成部分是什么,而后 者则说明了系统做什么。

类图(class diagram)表达了系统的静态结构信息,即系统是由哪些类组成的,这些类 之间的关系是什么。

类图显示系统各个部分以及怎样将它们组装起来;但却不能模拟组装后系统的工作情况。 构造类图的三个关键问题是:

(1)系统中有哪些需要关心的类p>

(2)这些类是如何描述的p>

(3)这些类之间的联系是什么p>

创建一个系统的类图,要涉及 4 方面的工作:

(1)模型化待建系统中的概念,形成类图中基本元素

(2)模型化待建系统中的各种关系,形成该系统的初始关系。

(3)模型化系统中的协作,给出该系统的最终类图。

(4)模型化逻辑数据库模式

3.用况图(use case 图) (单选,填空,简答题)

用况是对一个参与者(actor)使用系统的一项功能时所进行的交互过程的一个文字描述序列

用况是系统、子系统或类与外部的参与者(actor)交互的动作序列的说明,包括可选的 动作序列和会出现异常的动作序列。

用况图(Use Case Diagram)是指反映活动者,系统边界所封闭的用况,及活动者与用况 之间,用况与用况之间关系的一种图。

6 个模型元素:

(1)主题

(2)用况

(3)参与者:

①系统用户: 是最常见的一种角色。是直接使用系统的人。

②另一个系统:如 DSS 可作为 MIS 的一个活动者。补货系统可作为定单处理系统的活 动者。

③时间:当经过一定时间触发系统中的某个事件时,时间就成了角色。例如定期的某 些业务处理工作。

(4)关联/泛化/依赖

4.状态图(填空,简答题)

对象或者类的整体行为的某些规则所能适应的对象或类的状况、情况、条件、形式或生存 周期。仅当对象的行为规则不同时,才称对象处于不同的状态。

在由对象的全部属性的属性值集合所构成的笛卡儿乘积中的每一个等价集合(即,使对象 的服务呈现相同行为规则的属性值的集合)称之为对象的一种状态。

例如,对象发票(invoice)可以根据其付款的情况分为三个状态:未付款(unpaid)、 部分付款(partly paid)以及付清款(fully paid)。

状态图(state chart diagram)使用状态、事件和转换来记录对象在其生命周期中所历 经的状态序列。

(1)对象的初始状态是图中任何事件都未对该对象起作用时的状态。

(2)状态代表对象生命周期中的某一瞬间。

(3)转换表明作为对事件的响应结果,对象将从一种状态转换到另一种状态并执行某个动 作。

(4)触发状态转换的事件在状态转换字符串中命名。双击一个状态转换,除事件签名以外, 还可用字符串为其加注临界条件、动作表达式等标签。

5.顺序图(填空,简答题)

顺序图(sequence diagram)表示了对象之间传送消息的时间顺序,也就是对象之间的交 互顺序,这些交互是指在场景或用况的事件流中发生的。每一个对象(类)用一条生命线来表 示——即用垂直线代表整个交互过程中对象的生命期。生命线之间的箭头连线代表消息。

顺序图中的基本元素包括:

(1)活动者,指用况中的活动者。

(2)对象,指在用况中的内部对象。

(3)生命线:在顺序图中的一个对象下面的竖线,用以显示这个对象的生命期。时间从上 到下流过。生命线实际上显示了消息的顺序,在生命线之上的消息比在它之下的消息先发生。 在生命线中的棒形方框表示的是活动生命线,用以强调一个对象只有在一个场景的部分中处于 活动状态。

(4)消息,指场景内由事件流定义的内部事件成为在对象和活动者或其他对象之间的消息。

     ①同步消息——返回消息。同步消息假定有一个返回消息。同步消息用有实心的箭头表示; 返回消息用虚线、箭头也不是实心来表示。

     ②反身消息——消息的发送方和接收方是同一个对象。

     ③异步消息——没有返回值的消息。用非实心箭头表示。

     ④定时消息——对消息附加时间约束条件,包括:发送时间、接收时间、已用时间等。

(5)控制操作子

     ①选择执行操作子(opr)两部分组成:一是监护条件,二是控制体。

     ②条件执行操作子(alt)

     ③并发执行操作子(par)

     ④迭代执行操作子(loop)

第五章:面向对象方法——RUP

第一节:RUP的特点

第二节:核心工作流

第六章:软件测试

第一节:软件测试目标和软件测试过程模型

第二节:软件测试技术

第三节:软件测试步骤

第七章:软件生存周期过程与管理

第一节:软件生存周期过程概述

第二节:过程描述

第三节:应用说明

第四节:软件生存周期模型

第五节:过程规划与管理

第八章:集成化能力成熟度模型(CMMI)

第一节:背景与原理

第二节:CMMI的模型部件

第三节:CMMI的等级

第四节:过程域举例

持续更新中。。。。。。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年8月26日
下一篇 2022年8月26日

相关推荐