软件工程基础知识
什么是软件工程?
概念
1968年,在德国召开的北大西洋公约组织会议上,首次提出“软件工程”名词。
软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。
软件工程包括:
- 软件需求分析
- 软件设计
- 软件构建
- 软件测试
- 软件维护
软件生成周期
- 可行性分析项目开发计划
- 需求分析
- 概要设计
开发人员需要将确定的功能需求转换成相应的体系结构。
即每个模块都和某些功能需求相对应。
概要设计就是设计软件的结构,明确软件有哪些模块组成,模块的层次与功能。
包括总体的数据结构和数据库结构。
- 详细设计
详细设计是对每个模块完成功能的具体描述。
详细设计不是编码,而是设计出程序的详细规格说明,可以据此说明写入实际的程序代码。
通常采用HIPO(层次加输入/处理/输出图)或PDL语言(过程设计语言)描述详细设计的结果。
- 编码和单元测试
- 综合测试
- 上线维护
软件生成周期模型
- 瀑布模型
以文档驱动
- 增量模型
瀑布模型的变体,每一个增量均发布一个可操作的产品
- 演化模型
事先不能完全定义软件的需求
- 螺旋模型
结合了瀑布模型和演化模型
- 喷泉模型
以用户需求为驱动
典型的软件开发方法
- 结构化开发方法
- 原型化开发方法
- 面向对象开发方法
- 敏捷方法
敏捷过程有很多典型的方法,如:
- 极限编程(Extreme Programming,XP),五个核心价值观是:沟通、简单、反馈、勇气、谦逊
- 水晶法
- 并列争求法
- 自适应软件开发
软件项目管理
软件项目管理主要包括:
- 成本估算
- 风险分析
- 进度管理(Gantt图、Pert图、活动图)
- 人员管理
⭐ 相关真题
2014年15题
以下关于结构化开发方法的叙述中,不正确的是(15)。
A.将数据流映射为软件系统的模块结构
B.一般情况下,数据流类型包括变换流型和事务流型
C.不同类型的数据流有不同的映射方法
D.一个软件系统只有一种数据流类型
解析:D
结构化设计方法是一种面向数据流的设计方法,与结构化分析方法衔接。
在需求分析阶段,结构化分析方法产生了数据流图,
而在设计阶段,结构化设计方法将数据流映射为软件系统的模块结构。
数据流图中从系统的输入数据流到系统的输出数据流的一连串变换形成了一条信息流。
其中的信息流一般情况下包括变换流型和事物流型。
不同类型的数据流到程序模块的映射方法不同。
⚡ 一个软件系统往往不仅仅有一种数据流类型。
2014年16题
模块A提供某个班级某门课程的成绩给模块B,模块B计算平均成绩、最高分和最低分,将计算结果返回给模块A,则模块B在软件结构图中属于(16)模块。
A.传入 B.传出 C.变换 D.协调
解析:C
通常,可以按照在软件系统中的功能将模块分为四种类型。
- 传入模块:取得数据或输入数据,经过某些处理,再将其传送给其他模块。
- 传出模块:输出数据,在输出之前可能进行某些处理,数据可能被输出到系统的外部,或者会输出到其他模块进行进一步处理。
- 变换模块:从上级调用模块得到数据,进行特定的处理,转换成其他形式,在将加工结果返回给调用模块。
- 协调模块: 一般不对数据进行加工,主要是通过调用、协调和管理其他模块来完成特定的功能。
2014年17题
____ 软件成本估算模型是一种静态单变量模型,用于对整个软件系统进行估算。
A.Putnam B.基本COCOMO C.中级COCOMO D.详细COCOMO
解析:B,本题考査软件项目管理的基础知识。
Putnam和COCOMO都是软件成本估算模型。
- Putnam模型是一种动态多变量模型,假设在软件开发的整个生存期中工作量有特定的分布。
结构性成本模型COCOMO模型分为基本COCOMO模型、中级COCOMO模型和详细COCOMO。
- 基本COCOMO模型: 是一个静态单变量模型,对整个软件系统进行估算:
- 中级COCOMO模型: 是一个静态多变模型,将软件系统模型分为系统和部件两个层次,系统由部件构成;
- 详细COCOMO模型: 将软件系统模型分为系统、子系统和模块三个层次,除了包括中级模型所考虑的因素外,还考虑了在需求分析、软件设计等每一步的成本驱动属性的影响。
2014年18题
以下关于进度管理工具图的叙述中,以下关于进度管理工具图的叙述中,不正确的是(18)。
A. 能清晰地表达每个任务的开始时间、结束时间和持续时间
B. 能清晰地表达任务之间的并行关系
C. 不能清晰地确定任务之间的依赖关系
D. 能清晰地确定影响进度的关键任务
解析:D,本题考查软件项目管理的基础知识
Gantt图是一种简单的水平条形图,以日历为基准描述项目任务。
水平轴表示日历时间线,如天、周和月等,每个条形表示一个任务,任务名称垂直的列在左边的列中,图中水平条的起点和终点对应水平轴上的时间,分别表示该任务的开始时间和结束时间,水平条的长度表示完成该任务所持续的时间。
当日历中同一时段存在多个水平条时,表示任务之间的并发。
Gantt图不能清晰地反映出各任务之间的依赖关系,难以确定整个项目的关键所在,也不能反映计划中有潜力的部分。
2014年19题
项目复杂性、规模和结构的不确定性属于___风险。
A.项目 B.技术 C.经济 D.商业
【答案】A,本题考查软件项目管理的基础知识。
一般来说,影响软件项目的风险主要有三种类别:
项目风险涉及到各种形式的预算、进度、人员、资源以及和客户相关的问题;
技术风险涉及到潜在的设计、实现、对接、测试即维护问题;
业务风险包括建立一个无人想要的优秀产品的风险、失去预算或人员承诺的风险等;
商业风险包括如市场风险、策略风险、管理风险和预算风险等。
2015年15题
软件工程的基本要素包括方法、工具和(15)。
(15)A.软件系统 B.硬件系统 C.过程 D.人员
【答案】C
软件工程是一门工程学科,涉及到软件开发的各个方面,从最初的系统描述到交付后的系统维护,都属于其学科范畴。
用软件工程方法进行软件开发,涉及到方法、工具和过程等要素。
其中,方法是产生某些结果的形式化过程。
工具是用更好的方式完成某件事情的设备或自动化系统。
过程是把工具和方法结合起来,定义涉及活动、约束和资源使用的一系列步骤,来生产某种想要的输出。
2015年17/18图
某项目包含的活动如下表所示,完成整个项目的最短时间为(17)周。不能通过缩短活动(18)的工期,来缩短整个项目的完成时间。

A.16 B.17 C.18 D.19
A.A B.B C.D D.F
【答案】D B
活动图是描述一个项目中各个工作任务相互依赖关系的一种模型,项目的很多重要特性可以通过分析活动图得到
如估算项目完成时间,计算关键路径和关键活动等。
根据上表给出的数据,构建活动图,如下图所示。

从上图很容易看出,关键路径为A-D-E-F-H,其长度为19,关键路径上的活动均为关键活动。
把不同路径上的数字累加起来,结果最大的就是关键线路。
由于B不是关键路径上的活动,所以压缩他,无法缩短整个项目的完成时间。
(64条消息) 软考【网络工程师】(上午经典例题——软件项目活动图 详解)_阁中之楼的博客-CSDN博客_软件项目活动图
2015年19题
风险的优先级通常是根据(19)设定。
A.风险影响(Risk Impact)
B.风险概率(Risk Probability)
C.风险暴露(Risk Exposure)
D.风险控制(Risk Control)
【答案】C
风险是一种具有负面后果的、人们不希望发生的事件。
风险管理是软件项目管理的一项重要任务。
在进行风险管理时,根据风险的优先级来确定风险控制策略,而优先级是根据风险暴露来确定的。
风险暴露是一种量化风险影响的指标,等于风险影响乘以风险概率。
风险影响是当风险发生时造成的损失。
风险概率是风险发生的可能性。
风险控制是风险管理的一个重要活动。
2015年第27题
某公司计划开发一个产品,技术含量很高,与客户相关的风险也很多,则最适于采用(27)开发过程模型。
A.瀑布
B.原型
C.增量
D.螺旋
【答案】D
瀑布模型将软件生存周期各个活动规定为线性顺序连接的若干阶段的模型,规定了由前至后,相互衔接的固定次序,如同瀑布流水,逐级下落。
这种方法是一种理想的现象开发模式,缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。
原型模型从初始的原型逐步演化成最终软件产品,特别适用于对软件需求缺乏准确认识的情况。
增量开发是把软件产品作为一系列的增量构件来设计、编码、集成和测试,可以在增量开发过程中逐步理解需求。
螺旋将瀑布模型与快速原型模型结合起来,并且加入两种模型均忽略了的风险分析,适用于复杂的大型软件。