【软考】记录软件工程的一些基础知识,背背,还在更新——不更啦,考过了

本文详述了软件生命周期的各个阶段,包括可行性分析、需求分析、设计、编码、测试和维护。讨论了瀑布模型、增量模型、原型法、结构化开发方法的适用场景。同时,介绍了白盒测试、黑盒测试的关键点,以及软件设计中的模块化原则。此外,还涵盖了软件维护、CMMI模型、统一过程UP和软件质量的相关内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.软件生命周期:可行性分析与项目开发计划、需求设计、概要设计、详细设计、编码、测试、维护

方便背搬运了👉软件生命周期各个阶段详解_小光的光的博客-CSDN博客_软件生命周期

可行性研究:产物:可行性研究报告

需求分析:产物:软件需求规格说明书

概要设计:完成对软件项目的大概设计;对软件项目的功能模块进行划分,接口、界面的完成;概要设计说明书

详细设计:完成对软件项目功能实现的详细做法;对功能模块的实现、细化到算法、数据结构的层次、详细的定义功能模块的实现;详细设计说明书

编码:选择程序设计语言,完成编码;源代码;

测试:白盒测试(结构性测试)关注内部算法是否正确;黑盒测试(功能性测试)只关注功能是否实现,不关注内部算法;灰盒测试,黑白的结合,既关注内部逻辑又关注最终结果

运行维护

下图出自:为方便背粘过来了

软考—软件设计师(软件工程基础知识)_李小斌96的博客-CSDN博客_软件设计师

 瀑布模型难点在于需求确认增量模型难点在于模块划分

原型法适用于需求不清晰且多变的情况

结构化开发方法适用于系统规模不大且不复杂,需求变化也不大的情况;

Jackson是一种面向数据结构的方法以数据结构为驱动,适用于小规模的项目

下面是做题遇到的,当成知识点背!

1.在设计算法时,通常应考虑以下原则:首先说设计的算法必须是“正确的”,其次应有很好的“可读性”,还必须具有“健壮性”,最后应考虑所设计的算法具有“高效率和低存储量”。

 2.在结构化设计中,系统由多个逻辑上相互独立的模块组成,在模块划分时要遵循如下原则

①模块大小要适中(过大的模块可能导致系统分解不充分;过小的模块导致复杂度增加,模块之间调用频繁则会降低模块的独立性;一般一个模块的实现代码在1~2页纸内,或其代码行数在50~200);

②扇入扇出要合理(一个模块的扇出是指该模块直接调用的下级模块的个数;扇入指直接调用上级的模块的个数;一般系统平均扇入和扇出系数为3或4,不超过7);

③深度和宽度要适当(深度指软件结构中模块的层数;宽度指软件结构中同一层次上的模块总数的最大值;一般,宽度越大系统越复杂,对宽度影响最大的因素是模块的扇出)

2.1结构化设计

体系结构设计:定义软件系统各主要部件之间的关系

数据设计:基于E-R图确定软件涉及的文件系统的结构及数据库的表结构

接口设计(人机界面设计):软件内部,软件和操作系统间以及软件和人之间如何通信

过程设计:系统结构 部件转换成软件的过程描述。确定软件各个组成部分内的算法及内部数据结构,并选定某种过程的表达形式来描述各种算法

 3.1白盒测试

白盒测试方法_程序媛_婷的博客-CSDN博客_白盒测试复杂度

  至少需要2个测试用例;复杂度是3(11-10+2)

McCabe度量法计算环路复杂度公式

法一:V(G)=m-n+2 m-边数;n-结点数

法二:V(G)=p+1 p-判定节点的数目

法三:流图中的区域数 = 环形复杂度

语句覆盖:每一条语句至少执行一次

判定覆盖(分支覆盖) :每个判断的取真分支和取假分支至少经历一次

条件覆盖:每个判断中每个条件的可能取值至少满足一次

路径覆盖:覆盖被测程序中所有可能的路径

3.2黑盒测试

黑盒测试(功能测试):它把软件看作一个不透明的黑盒子,完全不考虑或不了解软件的内部结构和处理算法,它只检查软件功能是否能按照软件需求说明书的要求正常使用,软件是否能适当地接收输入数据并产生正确的输出信息,软件运行过程中能否保持外部信息(例如文件和数据库)的完整性等。

常用的黑盒测试技术包括等价类划份、边界值分析、错误推测、因果图

4.低耦合,高内聚

内聚:模块内;耦合:模块间

耦合取决于各个模块之间接口的复杂程度、调用模块的方式通过接口的信息类型

5.能力成熟模型集成CMMI包含连续式模型(6个过程域)和阶段式模型。CL:capability level

CMMI 是多个CMM模型的集成与演化

连续模式的6个👇

CL0:不完整级:过程域的一个或多个目标没有被满足

CL1:已执行级:过程通过转换可识别的输入工作产品,产生可识别的输出工作产品。能实现过程域的特定目标

CL2:已管理级:过程作为已管理的过程被制度化

CL3:已定义级:过程作为已定义的过程被制度化

CL4:量化管理级:过程作为量化管理的过程被制度化

CL5:优化级:过程作为优化的过程被制度化

阶段式模型👇

已管理级:已定义级:定量管理级:优化级:

5.1软件成熟度模型CMM:五级特征 18个关键过程域

1)初始级工作无序,管理无章法,常被放弃初计划,依靠项目负责人经验能力

2)可重复级建立基本的项目管理和实践来跟踪项目费用、进度和功能特性

3)已定义级:使用标准开发过程(或方法论)构建(或集成)系统---->许多组织的追求

4)已管理级管理层寻求更主动地应对系统的开发问题      管理级和优化级对软件过程和产品都

5)优化级:连续地监督和改进标准化的系统开发过程          有定量的理解与控制

6.统一过程UPUP是以用例和风险为驱动以架构为中心迭代并且增量的开发过程; UP定义了四个阶段,即起始、精化、构建、移交③每次迭代包含计划、分析、设计、构造、集成、测试以及内部和外部发布④每次迭代5个核心工作流

7.概要设计的内容包括:系统架构、模块划分、系统接口、数据设计 

8.事务具有原子性、一致性、隔离性和持久性。

原子性:指事务执行过程中的任何失败都将导致事务所做的任何修改失效

一致性:指事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态

隔离性:指事务执行过程中对数据的修改,在事务提交之前对其他事务不可见

持久性:指事务已提交的数据在事务执行失败时,数据的状态都应该正确

9.接口设计主要依据数据流图主要任务描述软件与外部环境之间的交互关系,软件内模块之间的调用关系。

架构阶段的任务是定义软件的主要结构元素及其之间的关系

数据存储设计阶段的任务是确定软件涉及的文件系统的结构及数据库的表结构

详细设计阶段的任务是确定软件各个模块内部的算法和数据结构

10. 进度管理工具Gantt图(甘特图)

就长👇这样(从后面粘来的)甘特图_vbirdbest的博客-CSDN博客

用图示的方法通过活动列表和时间刻度形象的表示出任何特定项目的活动顺序和持续时间。基本是一条线条图,横轴表示时间,纵轴表示活动(项目),线条表示在整个期间上的计划和实际的活动完成情况。 

能清晰地表达每个任务的开始时间、结束时间和持续时间;②能清晰地表达任务之间的并行关系;③不能清晰地确定任务之间的依赖关系;④不能清晰地确定影响进度地关键任务

11. 在结构化分析中

数据流图用来记录系统中的数据和数据在特定的过程中的流动,即数据如何被采集、处理、保存和使用(围绕信息系统的功能)

外部实体系统之外又与系统有联系的人或事务,表示了该系统数据的外部来源和去处。

结构图用来描述构成软件系统的模块以及这些模块之间的调用关系。由模块、调用、数据、控制信息和转接符号5种基本符号组成。(控制信息不等同于控制成分

12.冗余技术(储备技术),利用系统的并联模型来提高系统可靠性的一种手段。

冗余附加技术包括:        ①独立设计的相同功能冗余备份程序的存储及调用

                                        ②实现纠错检测及回复的程序

                                        ③为实现容错软件所需的固化程序

13.数据库设计①需求分析②概念结构设计(ER图)③逻辑结构设计(er模型转成关系模式)④数据库物理设计(选择合适的存储结构和存取路径)⑤数据库的实施⑥数据库运行于维护

14. 动态测试是指需要实际运行被测软件而进行的测试

15.pert图

关键路径:图中花费时间最长的事件和活动的序列。(求解时可计算出每一个序列所需时间,而后再选择最长的)

最早开始时间:某段工程开始点之前最长的输入流之和

最早结束:某段工程结束点之前最长的输入流之和

最晚开始:关键路径 - (开始点到最后整个工程最后结束点的距离)

最晚结束:关键路径 - (该结束点到整个工程最后结束点的距离)

松弛时间 = 最晚开始 - 最早开始

或      = 最晚结束 - 最早结束

或  =  用关键路径 - 所求活动在的最长路径   。

皮特图不能清晰地描述各任务之间地并行情况

如果一段工程在关键路径上,那不可以延迟开始

PERT图(工程网络图)_sinat_36789271的博客-CSDN博客_pert图

16. 计算机系统的可靠性可以用MTBF/(1+MTBF)来度量,其中MTBF为平均失效间隔时间

Mean Time Between Failures 指可修复产品两次相邻故障之间的平均时间;衡量一个产品的可靠性指标

17.成本估算时,COCOMO Ⅱ方法以规模作为成本的主要因素,考虑多个成本驱动因子。该方法包括三个阶段性模型,即应用模型、早期设计阶段模型和体系结构阶段模型。

专家估算是通过行业经验和历史数据对开发成本进行估算;

Wolverton是通过源代码函数进行成本运算;

COCOMO 通过软件的规模和难度对成本进行估算;(用3个不同层次的模型来反映不同程度的复杂性。基本模型静态单变量:用一个以已估算出来的源代码行数LOC为自变量的函数来计算软件开发工作量;中级模型静态多变量:在用LOC为自变量的函数计算软件开发工作量的基础上,再用涉及产品、硬件、人员、项目等方面属性的影响因素来调整工作量的估算;详细模型分析设计:包括中级COCOMO型的所有特性,但用上述各影响因素调整工作量估算时,还要考虑对软件工程过程中分析、设计等各步骤的影响)

COCOMO Ⅱ是对COCOMO的改进:估算选择有:对象点、功能点和代码行

18.完善性维护是在系统运行过程中,根据用户要求,增加一些在系统分析和设计阶段没有规定的功能与性能特性,以及对处理效率和编写程序的改进。

19.测试策略

三明治策略:集成测试 先用到自顶向下,再用到自底向上,然后就成了三明治夹心

20.ISO/IEC软件质量模型由三个层次组成:

第一层是质量特性,第二层是质量子特性,第三层是度量指标

软件质量时软件特性的总和,是软件满足规定或潜在用户需求的能力。

软件质量包括内部质量、外部质量和使用质量

功能性:指软件必须要完成成哪些事,必须实现哪些功能。子特性包括:适合性、准确性、互用性、依从性和安全性;

 21.软件维护工具主要有:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具

22.从原型是否实现功能来分可分为水平原型和垂直原型两种

水平原型(行为原型),用来探索预期系统地一些特定行为,并达到细化需求的目的 。水平原型通常只是功能的导航,但未真实实现功能。水平原型主要用在界面上

垂直模型(结构化原型),实现了一部分功能。垂直原型主要用在复杂的算法实现上

从原型的最终结果来分可分为抛弃式原型和演化式原型。

抛弃式原型(探索式原型),是指达到预期目的后,原型本身被抛弃。抛弃式原型主要用在解决需求不确定性、二义性、不完整性、含糊性等

演化式原型,为开发增量式产品提供基础,逐步将原型演化成最终系统,主要用在必须易于升级和优化的场合,适合于Web项目。

23. 在软件开发过程中进行风险分析时,风险控制活动目的辅助项目组建立处理风险的策略有效的策略应考虑风险避免、风险监控、风险管理及意外事件计划。

24.需求分析阶段的输出包括:数据流图、实体联系图、数据字典

数据字典对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述;目的是对数据流图种的各个元素作出详细的说明,使用数据字典为简单的建模项目。其条目有数据流、数据项、数据存储、基本加工

25.仓库风格优点包括:1.解决问题的多方法性

                                       2.具有可更改性和可维护性

                                        3.有可重用的知识源

                                        4.支持容错性和健壮性

缺点:测试困难、不能保证有好的求解方案、效率低、开发成本高、缺少对并行机的支持。

仓库风格包括:数据库系统、黑板系统、超文本系统。

编译器何用多种架构风格实现

26.管道/过滤器体系结构的优点:1.使得软件具有良好的隐蔽性和高内聚、低耦合的特点

                               2.允许设计者将整个系统的输入/输出行为堪称是多个过滤器的行为和简单合成

           3.支持软件重用。提供合适在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来

        4.系统维护和增强系统性能简单。新的过滤器可以添加到现有系统中来,旧的可以被改进的过滤器替换掉

        5.允许对一些如吞吐量、死锁等属性的分析

               6.支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行

27.测试配置管理的活动包括制定配置管理计划、配置库管理、配置控制、发布管理和交付配置项标识、配置项控制、配置状态报告、配置审计 变色的是基本活动

28.DDP(Defect Detection Percentage)缺陷探测率:是衡量测试投资回报的一个重要指标,是衡量测试工作效率的软件质量成本指标之一。

DDP= Bugs(tester)/【Bugs(tester)+Bugs(customer)】

tester -开发方测试者发现的bug    customer-客户发现的bug

ddp越高,说明测试者发现的bug数越多,发布后客户发现的bug就越少,降低了外部故障不一致成本,达到了节约总成本的目的,可获得较高的测试投资回报率(ROI).

29.软件测试可划分为:单元测试、集成测试、系统测试、确认测试、验收测试等阶段。

单元测试包括:模块接口、局部数据结构、模块内路径、f边界条件、错误处理

确认测试包括:内部确认测试、Alpha测试、Beta测试

29.1 顶层模块测试不需要驱动模块,底层模块测试不需要桩模块

30.评价需求的主要内容描述评价的目标,特别是描述了产品的质量需求

评价规格说明确定对软件及其部件实行的所有分析和测量标识要分析和测量的软件部件

评价记录评价执行计划时详细记载的动作组成。

评价报告的主要内容是执行测量和分析的结果,以及能被重复和重新评价的必要信息

31.风险排优先级根据风险的曝光度来进行的曝光度 = 风险的产生后果 * 风险发生的概率

32.极限编程XP提倡结对编程,代码所有权归于整个开发队伍。其中结对编程就是一种对代码的审查过程,XP主要解决代码质量低的问题,能提高代码质量,支持共同代码游泳和共同对系统负责,承担了非正式的代码审查过程,但编码速度不能改变

33.包含n个成员的开发小组沟通路径最多有C_{n}^{2}

34. ISO/IEC 9126 《软件工程产品质量》统一了多种质量模型。1.它测量用户特定环境中能达到其目标的程度不是测量软件自身的属性。2.使用质量的属性4个特性有效性、生产率、安全性和满意度;3.使用质量基于用户的观点;4.使用质量的获得依赖于取得必需的外部质量,而外部质量的获得则依赖于取得必需的内部质量

 35.软件测试的对象包括程序、数据、文档

 36.软件需求中对软件产品的响应时间吞吐量价格等属性的要求都属于非功能性需求

37.在选择某种面向对象语言进行软件开发时不需要着重考虑的因素是 是否支持全局变量和全局函数的定义

38. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值