软考——软件设计师:第七章:系统开发基础(软件工程&结构化开发)考点总结(完整篇)

简介: 软考——软件设计师:第七章:系统开发基础(软件工程&结构化开发)考点总结(完整篇)

文章目录:


1.软件开发模型

1.1 瀑布模型

1.2 V模型

1.3 增量模型

1.4 演化模型 

1.4.1 原型模型

1.4.2 螺旋模型 

1.5 喷泉模型

1.6 构建组装模型 

1.7 敏捷开发方法

2.软件开发方法

3.软件需求分析 

4.软件设计(高内聚、低耦合、提高模块的独立性)

4.1 内聚

4.2 耦合

5.软件测试 

5.1 测试原则与类型 

5.2 测试用例设计 

5.3 测试阶段

5.4 McCabe复杂度

6.软件维护

7.软件过程改进——能力成熟度模型集成(CMMI

7.1 阶段式模型

7.2 连续式模型 

8.软件项目管理

8.1 时间管理(Gantt图、PERT图)

8.2 风险管理 

9.软件质量保证

9.1 功能性

9.2 可靠性

9.3 易使用性 

9.4 效率 

9.5 可维护性 

9.6 可移植性 


1.软件开发模型

1.1 瀑布模型

瀑布模型是将软件生存周期中的各个活动规定为依线性顺序连接的若干阶段的模型,包括需求分析、设计、编码、测试、运行与维护。它规定了由前至后、相互衔接的固定次序,如同瀑布流水逐级下落。

瀑布模型以文档作为驱动,适合于软件需求很明确的软件项目的模型!!!


1.2 V模型


V模型是瀑布模型的一个变体,描述了质量保证活动和沟通、建模相关活动以及早期构建相关的活动之间的关系。


1.3 增量模型


增量模型融合了瀑布模型的基本成分和原型实现的迭代特征,它假设可以将需求分段为一系列增量产品,每一增量可以分别开发。当使用增量模型时,第1个增量往往是核心产品,客户对每个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。增量模型强调每一个增量均发布一个可操作的产品。 


1.4 演化模型

1.4.1 原型模型

原型模型比较适合于用户需求不清、需求经常变化的情况。当系统规模不是很大也不太复杂时,采用原型模型比较好。


1.4.2 螺旋模型

螺旋模型将瀑布模型和原型模型结合起来,加入了两种模型均忽略的风险分析,弥补了这两种模型的不足。

螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,从而做出应有的反应。同时,该模型特别适合用于庞大、复杂并且具有高风险的系统。(也适用于用户需求不清、需求经常变化的情况)


1.5 喷泉模型


喷泉模型是一种以用户需求为动力、以对象作为驱动的模型,适合于面向对象的开发方法。喷泉模型使得开发过程中具有迭代性和无间隙性(在开发活动之间不存在明显的边界,允许开发活动交叉,迭代地进行)。


1.6 构建组装模型


1.7 敏捷开发方法

极限编程(XP):XP是一种轻量级(敏捷)、高级、低风险、柔性、可预测的、科学的软件开发方式。主要就是由上图中的4大价值观、5大原则、12个最佳实践组成。

水晶法(Crystal):水晶法认为每一个不同的项目都需要一套不同的策略、约定和方法论,认为人对软件质量有重要的影响,因此随着项目质量和开发人员素质的提高,项目和过程的质量也随之提高。

并列争球法(Scrum):使用迭代的方法,其中,把每30天一次的迭代称为一个冲刺,并按需求的优先级别来实现产品。

2.软件开发方法


结构化方法:由结构化分析、结构化设计、结构化程序设计构成,它是一种面向数据流的开发方法。总的指导思想是自顶向下、逐层分解,基本原则是功能的分解与抽象。特别适合于数据处理领域的问题,但是不适合解决大规模、特别复杂的项目,且难以适应需求的变化。

Jackson方法:这是一种面向数据结构的开发方法。以数据结构为驱动,适合于小规模的项目。当输入数据结构与输出数据结构之间没有对应关系时,难以应用此方法。

原型化方法:比较适合于用户需求不清、业务理论不确定、需求经常变化的情况。当系统规模不是很大也不太复杂时,采用该方法是比较好的。

面向对象开发方法:包括面向对象分析、面向对象设计和面向对象实现,采用统一建模语言(UML)。

3.软件需求分析

功能需求:考虑系统要做什么,在何时做,在何时如何修改或升级。

性能需求:考虑软件开发的技术性目标。例如:存储容量限制、执行速度、响应时间及吞吐量。

用户或人的因素:考虑用户的类型。

环境需求:考虑未来软件应用的环境,包括硬件和软件。对硬件设备的需求包括:机型、外设、接口、地点、分布、湿度、磁场干扰等。对软件设备的需求包括:操作系统、数据库、网络等。

界面需求:考虑来自其他系统的输入,到其他系统的输出,对数据格式的特殊规定,对数据存储介质的规定。

文档需求:考虑需要哪些文档,文档针对哪些读者。

数据需求:考虑输入输出数据的格式,接收、发送数据的频率,数据的准确性和精度,数据流量,数据需保持的时间。 

资源使用需求:考虑软件运行时所需要的数据、其他软件、内存空间等资源;软件开发、维护所需的人力、支撑软件、开发设备等。

安全保密需求:考虑是否需要对访问系统或系统信息加以控制,隔离用户数据的方法,用户程序如何与其他程序和操作系统隔离以及系统备份要求等。

可靠性需求:考虑系统的可靠性要求,系统是否必须检测和隔离错误;出错后,重启系统允许的时间等。

(11)软件成本消耗与开发进度需求:考虑开发是否有规定的时间表,软硬件投资有无限制等。

(12)其他非功能需求:如采用某种开发模式,确定质量控制标准、里程碑和评审、验收标准、各种质量要求的优先级等。

4.软件设计(高内聚、低耦合、提高模块的独立性)


4.1 内聚

功能内聚:这是最强的内聚,指模块内的所有元素共同作用完成一个功能,缺一不可。

顺序内聚:指一个模块中的各个处理元素都密切相关于同一功能,且必须按顺序执行,前一功能元素的输出就是下一功能元素的输入。

通信内聚:指模块内的所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或者产生相同的输出数据。

过程内聚:指一个模块完成多个任务,这些任务必须按指定的次序执行。

瞬时内聚(时间内聚):把需要同时执行的动作组合在一起形成的模块,所包含的任务必须在同一时间间隔内执行。

逻辑内聚:指模块内执行若干个逻辑上相似的功能。

偶然内聚(巧合内聚):指一个模块内的各处理元素之间没有任何联系。

内聚性:功能内聚>顺序内聚>通信内聚>过程内聚>时间内聚>逻辑内聚>偶然内聚(内聚性越高,模块独立性越强)

模块独立性:功能内聚>顺序内聚>通信内聚>过程内聚>时间内聚>逻辑内聚>偶然内聚

4.2 耦合

无直接耦合:两个模块之间没有直接的关系,它们之间的联系完全是通过主模块的控制和调用来实现的。

数据耦合:指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。

标记耦合:指两个模块之间传递的是数据结构。

控制耦合:指一个模块调用另一个模块时,传递的是控制变量,被调用模块通过该控制变量的值有选择地执行模块内的某一功能。

外部耦合:模块间通过软件之外的环境联结(如I/O将模块耦合到特定的设备、格式、通信协议上)。

公共耦合:指多个模块都访问同一个公共数据环境。

内容耦合:当一个模块直接使用另一个模块的内部数据,或通过非正常入口转入另一个模块内部的耦合。

耦合性:无直接耦合<数据耦合<标记耦合<控制耦合<外部耦合<公共耦合<内容耦合(耦合性越低,模块独立性越强)

模块独立性:无直接耦合>数据耦合>标记耦合>控制耦合>外部耦合>公共耦合>内容耦合

5.软件测试


5.1 测试原则与类型

5.2 测试用例设计

5.3 测试阶段

5.4 McCabe复杂度


6.软件维护


改正性维护:改正在系统开发阶段已发生而系统测试阶段尚未发现的错误。

适应性维护:使应用软件适应信息技术变化和管理需求变化而进行的修改。

完善性维护:为扩充功能和改善性能而进行的修改,主要是指对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征。

预防性维护:为了改进应用软件的可靠性和可维护性,为了适应未来的软硬件环境的变化,应主动增加预防性的新的功能,以使应用系统适应各类变化而不被淘汰。


7.软件过程改进——能力成熟度模型集成(CMMI


7.1 阶段式模型

初始的:过程不可预测且缺乏控制。

已管理的:过程为项目服务。

已定义的:过程为组织服务。

定量管理的:过程已度量和控制。

优化的:集中于过程改进。


7.2 连续式模型


CL0(未完成的):过程域未执行或未得到CL1中定义的所有目标。

CL1(已执行的):其共性目标是过程将可标识的输入工作产品转换乘可标识的输出工作产品,以实现支持过程域的特性目标。

CL2(已管理的):其共性目标集中于已管理的过程的制度化。

CL3(已定义级的):其共性目标集中于已定义的过程的制度化。

CL4(定量管理的):其共性目标集中于可定量管理的过程的制度化。

CL5(优化的):使用量化手段改变和优化过程域,以满足客户要求的改变和持续改进计划中的过程域的功效。 

8.软件项目管理


8.1 时间管理(Gantt图、PERT图)


Gantt图:能够清晰地描述每个任务从何时开始、到何时结束,任务的进展情况以及各个任务之间的并行性。但是它不能清晰地反映出各任务之间的依赖关系,难以确定整个项目的关键所在,也不能反映计划中有潜力的部分。

PERT图:不仅给出了每个任务的开始时间、结束时间和完成该任务所需的时间,还给出了人物之间的依赖关系,即哪些任务完成后才能开始另外一些任务,以及如期完成整个工程的关键路径。但是它不能反映任务之间的并行关系。 

时间\事件

1

2

3

4

5

6

7

8

9

最早开始时间

0

2

2

0

4

4

9

9

15

最晚开始时间

0

2

9

6

4

10

9

11

15

由上图分析,以及Gantt图和PERT图的相关概念,可知,第一空选D,第二空选C


8.2 风险管理

9.软件质量保证


9.1 功能性

适合性。准确性。互用性。依从性。安全性。 


9.2 可靠性

成熟性。容错性。易恢复性。 


9.3 易使用性

易理解性。易学性。易操作性。 


9.4 效率

时间特性。资源特性。 


9.5 可维护性

易分析性。易改变性。易测试性。稳定性。


9.6 可移植性

适应性。一致性。易安装性。易替换性。 

相关文章
|
6月前
|
存储 算法 前端开发
【软件设计师-从小白到大牛】上午题基础篇:第五章 结构化开发方法
在结构化分析中,用数据流图描述 数据在系统中如何被传送或变换,以及如何对数据流进行变换的功能或子功能,用于对功能建模。 数据字典有以下4类条目:数据流、数据项、数据存储和基本加工。
62 0
|
6月前
|
自然语言处理 编译器 C语言
【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础(1)
语法分析阶段可以发现程序中的所有语法错误;编译正确的程序必然不包含语法错误;“除数为0”为动态语义错误,动态语义错误只有运行时才能发现。
87 0
【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础(1)
|
1月前
|
设计模式 存储 算法
【软件设计师—基础精讲笔记7】第七章 面向对象技术
【软件设计师—基础精讲笔记7】第七章 面向对象技术
53 1
|
1月前
|
敏捷开发 算法 测试技术
【软件设计师—基础精讲笔记5】第五章 软件工程基础
【软件设计师—基础精讲笔记5】第五章 软件工程基础
44 2
|
1月前
|
存储 算法 Java
【软件设计师—基础精讲笔记12】第12章 软件系统分析与设计(下午题)
【软件设计师—基础精讲笔记12】第12章 软件系统分析与设计(下午题)
54 0
|
1月前
|
自然语言处理 Java 编译器
【软件设计师—基础精讲笔记10】第十章 程序设计语言基础
【软件设计师—基础精讲笔记10】第十章 程序设计语言基础
28 1
|
1月前
|
存储 自然语言处理 算法
【软件设计师—基础精讲笔记6】第六章 结构化开发方法
【软件设计师—基础精讲笔记6】第六章 结构化开发方法
51 0
|
1月前
|
算法
【软件设计师—基础精讲笔记9】第九章 算法设计与分析
【软件设计师—基础精讲笔记9】第九章 算法设计与分析
22 1
|
2月前
|
算法 搜索推荐 C语言
【软件设计师备考 专题 】如何编写有效的程序设计文档
【软件设计师备考 专题 】如何编写有效的程序设计文档
49 0
|
6月前
【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础(2)
【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础
28 0
【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础(2)