【软考】软件设计师笔记
软考——软件设计师笔记
(一) 计算机系统知识🐕
(二) 程序设计语言基础知识🐕
(三) 数据结构🐕
(四) 操作系统知识🐕
(五) 软件工程基础知识🐕
根据考试大纲,本章知识点会涉及单选题型,约占 2~5 分。
5.1 软件工程概述🐋
软件生存周期🐇
- 可行性分析与项目开发计划
- 需求分析
- 概要设计
- 详细设计
- 编码
- 测试
- 维护
软件过程🐇
- 能力成熟度模型(CMM)
- CMM 是对软件组织进化阶段的描述,随着软件组织定义、实施、测量、控制和改进其软件过程,
软件组织的能力经过这些阶段逐步提高。CMM 将软件过程改进分为 5 个成熟度级别,从低到高分别为初始级、可重复级、已定义级、已管理级、优化级。 - 采用更成熟的CMM模型,一般来说可以提高产品的质量。
- CMM 是对软件组织进化阶段的描述,随着软件组织定义、实施、测量、控制和改进其软件过程,
- 能力成熟度模型(CMMI)
- CMMI 提供了两种表示方法:阶段式模型和连续式模型。
- CMMI的任务三将已有的几个CMM模型结合在一起,使之构成"集成模型"。
5.2 软件过程模型🐋
软件开发模型,是软件开发全部过程、活动和任务的结构框架。
-
瀑布模型
- 瀑布模型将软件生存周期各个活动规定为线性顺序连接的若干阶段的模型,规定了由前至后,相互衔接的固定次序,如同瀑布流水,逐级下落。这种方法是一种理想的开发模式,缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。
- 项目规模大、开发小组对项目需求理解并了解相关领域,因此可以采用瀑布开发模型。
-
增量模型
- 增量开发是把软件产品作为一系列的增量构件来设计、编码、集成和测试,可以在增量开发过程中逐步理解需求。
-
原型模型
- 原型方法适用于用户需求不清、需求经常变化的情况,可以帮助导出系统需求并验证需求的有效性;
- 探索型原型的目的是弄清目标的要求,确定所希望的特性,并探讨多种方案的可行性,可以用来探索特殊的软件解决方案;
- 原型法能够迅速地开发出一个让用户看得见的系统框架,可以用来支持用户界面设计。
- 原型法不能用来指导代码优化。
-
螺旋模型
- 螺旋将瀑布模型与快速原型模型结合起来,并且加入两种模型均忽略了的风险分析,适用于复杂的大型软件。
- 螺旋模型在开发过程中加入风险分析。
-
喷泉模型
- 喷泉模型适合于面向对象的开发方法。
-
基于构件的开发模型
- 指利用预先包装的构件来构造应用系统,构件可以是组织内部开发的构件,也可以是商品化成
品(COTS)软件构件。 - 基于构件的软件开发,主要强调在构建软件系统时复用已有软件“构件,在检索到可以使用的构件后,需要针对新系统的需求对构件进行合格性检验、适应性修改,然后集成到新系统中。
- 指利用预先包装的构件来构造应用系统,构件可以是组织内部开发的构件,也可以是商品化成
-
形式化方法模型
-
统一过程(UP)模型
-
统一过程的典型代表是 RUP🐇
RUP应用了角色、活动、制品和工作流4种重要的模型元素,其中角色表述“谁做”,制品表述“做什么”,活动表述“怎么做”,工作流表述“什么时候做”。
RUP中每个阶段产生的制品。
初启阶段结束时产生一个构想文档、一个有关用例模型的调査、一个初始的业务用例、一个早期的风险评估和一个可以显示阶段和迭代的项目计划等制品:
精化阶段结束时产生一个补充需求分析、一个软件架构描述和一个可执行的架构原型等制品;
构建阶段结束时的成果是一个准备交到最终用户手中的产品,包括具有最初运作能力的在适当的平台上集成的软件产品、用户手册和对当前版本的描述;
移交阶段结束时产生移交给用户产品发布版本。
-
敏捷方法中,重构是一种重新组织技术,重新审视需求和设计,重新明确地描述它们以符合新的和现有的需求,可以简化构件的设计而无须改变其功能或行为。
-
敏捷开发方法:极限编程(XP)是一种轻量级、髙效、低风险、柔性、可预测的、科学的软件开发方法,其特性包含在12个最佳实践中。
(1) 计划游戏:快速制定计划、随着细节的不断变化而完善;
(2) 小型发布:系统的设计要能够尽可能早地交付;
(3) 隐喻:找到合适的比喻传达信息;
(4) 简单设计:只处理当前的需求使设计保持简单;
(5) 测试先行:先写测试代码再编写程序;
(6) 重构:重新审视需求和设计,重新明确地描述它们,以符合新的和现有的需求;
(7) 结队编程;
(8) 集体代码所有制;
(9) 持续集成:可以按日甚至按小时为客户提供可运行的版本;
(10) 每周工作40个小时;
(11) 现场客户;
(12) 编码标准。
-
5.3 软件项目需求分析🐋
- 功能需求
- 性能需求
- 环境需求
- 界面需求
- 文档需求
- 数据需求
- 资源使用需求
- 安全保密需求
- 可靠性要求
- 软件成本消耗或开发进度需求
“软件产品必须能够在3秒内对用户请求作出响应”主要表述软件的响应时间,属于非功能需求。
5.4 软件项目系统设计🐋
常用的设计方法有:面向数据流的结构化设计方法(SD)、面向对象的分析方法(OOD)。
结构化设计根据系统的数据流图进行设计,模块体现为函数、过程及子程序;
面向对象设计基于面向对象的基本概念进行,模块体现为类、对象和构件等。
系统设计包括两个基本的步骤:概要设计、详细设计。
概要设计🐇
- 设计软件系统总体结构
- 数据结构及数据库设计
- 编写概要设计文档
- 评审
详细设计🐇
- 对每个模块进行详细设计
- 对模块内部的数据结构设计
- 对数据库进行物理设计,即确定数据库的物理结构
- 其他设计
- 编写详细设计说明书
- 评审
5.5 软件项目系统测试🐋
5.6 软件项目管理🐋
软件质量管理🐇
在 ISO/IEC9126 中,软件质量模型由 3 个层次组成,第一层为质量特性,第二层为质量子特性,
第三层为度量指标。软件质量特性功能性包含质量子特性安全性,如下图所示:
软件风险管理🐇
- 软件风险
- 市场风险、策略风险、销售风险、管理风险、预算风险、经济风险、技术风险
- 风险识别
- 性能风险、成本风险、支持风险、进度风险
- 风险预测
- 风险发生的可能性或概率、风险发生后所产生的后果
- .风险控制
- 主动的避免风险、分析引起风险的原因。
- 风险控制的目的是辅助项目组建立处理风险的策略,有效的策略应考虑风险避免、风险监控、风险管理及意外事件计划。
项目估算🐇
- 基于已经完成类似项目进行估算
- 基于分解技术进行估算
- 基于经验估算模型的估算
成本估算方法:
自顶向下估算方法、自底向上估算方法、差别估算方法、其他估算方法。
Putnam模型:是一种动态多变量模型,假设在软件开发的整个生存期中工作量有特定的分布。
COCOMO:是一种静态单变量模型,对整个软件系统进行估算。
中级COCOMO:是一种静态多变模型,将软件系统模型分为系统和部件两个层次,系统由部件构成。
详细中级COCOMO:将软件系统模型分为系统、子系统和模块三个层次,除了包括中级模型所考虑的因素外,还考虑了在需求分析、软件设计等每一步的成本驱动属性的影响。
5.7 软件度量🐋
可维护性是所有软件都应具有的基本特点,必须在开发阶段保证软件具有可维护的特点。
在系统分析阶段的复审过程中,应该指出软件的可移植性问题以及可能影响软件维护的系统界面。
在系统设计阶段的复审期间,应该从容易修改、模块化和功能独立的目的出发,评价软件的结构和过程。
在系统实施阶段的复审期间,代码复审应该强调编码风格和内部说明文档这两个影响可维护性的因素。
(六) 结构化开发方法🐕
(七) 面向对象技术🐕
(八) 算法设计与分析🐕
(九) 数据库技术基础🐕
(十) 网络与信息安全基础知识🐕
(十一) 标准化和软件知识产权基础知识🐕
(十二) 软件系统分析与设计🐕
(十三) 新技术🐕
(十四) 专业英语🐕
软考题至31题