软件工程基础知识.docx
- 文档编号:4507821
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:39
- 大小:53.42KB
软件工程基础知识.docx
《软件工程基础知识.docx》由会员分享,可在线阅读,更多相关《软件工程基础知识.docx(39页珍藏版)》请在冰豆网上搜索。
软件工程基础知识
软件工程基础知识考点指导
考点1:
软件工程和项目管理基础★★★
考点点拨:
本考点考查软件工程和软件生成周期的概念,常用的软件开发模型,以及软件开发项目管理基础知识。
【试题1】软件工程三要素是______。
A)技术、方法和工具B)方法、工具和过程
C)方法、对象和类D)过程、模型、方法
答案:
B
分析:
软件工程三要素:
方法、工具和过程。
软件工程方法为软件开发提供了“如何做”的技术。
软件工具为软件工程方法提供了自动的或半自动的软件支撑环境。
软件工程过程定义了:
方法使用的顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理以及软件开发各个阶段完成的工作。
理论链接:
软件工程概述
1.软件危机
软件危机是指计算机软件开发和维护过程中所遇到的一系列严重问题。
概括的说即为:
能否满足对软件日益增长的需求能否维护数量日益增长的现有软件
2.软件工程
软件工程是一类求解软件的工程,它应用计算机科学、数学及管理科学等原理,借鉴传统工程的原则、方法,创建软件以达到提高质量、降低成本的目的。
其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。
软件工程是一门指导计算机软件开发和维护的工程学科。
软件工程准则可以概括为六条基本原理:
(1)用分阶段的生存周期计划严格管理;
(2)坚持进行阶段评审;(3)实行严格的产品控制;(4)采用现代程序设计技术;(5)应能清楚地审查结果;(6)合理安排软件开发小组的人员。
【试题2】软件开发的结构化生命周期方法将软件生命周期划分成______。
A)计划阶段、开发阶段、运行阶段B)计划阶段、编程阶段、测试阶段
C)总体设计、详细设计、编程调试D)需求分析、功能定义、系统设计
答案:
A
【试题3】软件生命周期的最后的一个阶段是______。
A)书写软件文档B)软件维护C)稳定性测试D)书写详细用户说明
答案:
B
理论链接:
软件生存(生命)周期
软件生存周期:
软件的产生直到报废的生命周期。
从时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周期依次划分为若干阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。
软件生存周期受软件规模、种类、开发方式、开发环境、方法论的影响有多种划分方法:
一种划分方法为:
软件定义(又称系统分析,包括问题定义,可行性研究,需求分析),软件开发(包括总体设计,详细设计,编码和单元测试,综合测试),软件使用与维护等三个时期。
各阶段的关键问题和阶段性成果如表7-1所示:
表7-1软件生存周期各阶段描述
阶段
关键问题
阶段性成果
问题定义
问题是什么
关于规模和目标的报告书
可行性研究
有可行的解吗
系统的高层逻辑模型:
数据流图
成本/效益分析
需求分析
系统必须做什么
系统的逻辑模型:
数据流图(MSC图)
数据字典(类清单、对象间关系)
算法描述
总体设计
概括地说,应如何解决这个问题
可能的解法:
系统流程图
成本/效益分析
推荐的系统结构:
层次图,结构图(SDL)
详细设计
怎样具体地实现这个系统
编码规格说明(SDL)
综合测试
符合要求的软件
综合测试方案和结果
完整性一致的软件配置
维护
持久地满足用户需求的软件
完整准确的维护记录
另一种划分是把软件生命周期划分为6个阶段:
即制定计划、需求分析、软件设计、程序编写、软件测试和运行维护。
【试题4】瀑布模型(WaterfallModel)突出的缺点是不适应______的变动。
(2002年上午填空22)
A)算法B)平台C)程序语言D)用户需求
答案:
D
分析:
瀑布模型最为突出的缺点是缺乏灵活性,不能适应用户需求的动态变更。
【试题5】在编制程序时,应采纳的原则之一是__A__。
开发软件时对提高开发人员工作效率至关重要的是__B__。
软件工程中描述生命周期的瀑布模型一般包括计划、__C__、设计、编码、测试、维护等几个阶段,其中设计阶段通常又可依次分成__D__和__E__两步。
(1994年上半年题6)
A;①不限制goto语句的使用②减少或取消注解行
③程序越短越好④程序结构应有助于读者理解
B;①操作系统的资源管理功能②程序开发环境
③程序人员数量④计算机的并行处理能力
C:
①需求分析②需求调查③可行性分析④问题定义
D,E:
①数据结构设计②详细设计③概要设计④数据库设计
⑤方案设计⑥代码设计
答案:
A)④B)②C)①D)③E)②
【试题6】包含风险分析的软件工程模型是_____。
A)螺旋模型 B)瀑布模型C)增量模型 D)喷泉模型
答案:
A
理论链接:
软件开发模型
软件开发模型是软件开发全部过程、活动和任务的结构框架。
常用的软件开发模型有:
瀑布模型、演化模型、螺旋模型、喷泉模型等。
1.瀑布模型
瀑布模型将软件生存周期的各项活动规定为依固定顺序连接的若干阶段工作,是一种线性模型。
各个阶段自顶向下,如瀑布流水,逐级下落。
各阶段活动为:
可行性研究与计划、需求分析、设计(概要设计和详细设计)、编码、测试、运行和维护。
每个开发阶段具有以下特征,从上一阶段接受本阶段工作的对象作为输入,对上述输入实施本阶段的活动,给出本阶段的工作成果作为输出传入下一阶段,对本阶段工作进行评审,若本阶段工作得到确认,则继续下阶段工作,否则返回前一阶段甚至更前阶段。
瀑布模型最为突出的缺点是该模型缺乏灵活性。
它的特点如下:
1)阶段间具有顺序性和依赖性:
前一阶段工作完成之后,才能开始后一阶段的工作;前一阶段的输出文档就是后一阶段的输入文档;
2)推迟实现的观点:
区分逻辑设计与物理设计,尽可能推迟物理实现;
3)质量保证的观点:
每个阶段必须完成规定的文档。
每个阶段结束前都需对所完成的文档进行评审,以尽早发现问题;
2.演化模型
演化模型主要针对事先不能完整定义需求的软件开发,其开发过程一般是首先开发核心系统,当核心系统投入运行后,软件开发人员根据用户的反馈,实施开发的迭代过程,每一迭代过程均由需求、设计、编码、测试、集成等阶段组成,直到软件开发结束。
演化模型在一定程度上减少了软件开发活动的盲目性。
3.螺旋模型
它是在瀑布模型和演化模型的基础上,加入两者所忽略的风险分析所建立的一种软件开发模型。
沿螺旋模型顺时针方向,依次表达了四个方面的活动,制定计划、风险分析、实施工程、客户评估。
4.喷泉模型
它体现了软件创建所固有的迭代和无间隙特征,喷泉模型主要用于支持面向对象开发过程。
5.瀑布模型、演化模型、螺旋模型比较
相同点是这三个模型都分为多个阶段。
但瀑布模型一次完成软件;演化模型分为多次完成,每次迭代完成软件的一个部分;螺旋模型也分为多次完成,每次完成软件的一个新原型,并考虑风险分析。
【试题7】软件项目管理所涉及的范围覆盖了整个软件的_____。
A)开发过程B)运行与维护过程C)定义过程D)生存期
答案:
D
【试题8】为使软件开发获得成功,一个关键问题是必须对软件范围、风险、资源、任务、里程碑、成本,进度等做到心中有数,而______可以提供这些信息。
A)计算机辅助工程B)软件开发工具C)软件项目管理D)软件估算
答案:
C
【试题9】Putnam提出的模型,是一种______模型。
它是假定在软件开发的整个生存期中工作量有特定的分布。
A)模块化成本B)结构化成本
C)动态单变量成本D)动态多变量成本
答案:
D
【试题10】软件开发成本主要是指软件开发过程中所花费的______及相应的代价。
A)劳动力B)工作量C)资源D)持续时间
答案:
B
【试题11】对于一个大型的软件项目,由于项目的复杂性,需要进行一系列的估算处理。
主要按__
(1)__和__
(2)__手段进行。
估算的方法分为3类:
从项目的整体出发,进行
(2)的方法称为__(3)__估算法。
把待开发的软件细分,直到每个子任务都已明确所需要的开发工作量,然后把它们加起来,得到软件开发总工作量的方法称为__(4)__估算法。
而把待开发的软件项目与过去已完成的软件项目做类比,区分出类似部分和不同部分分别处理的方法称为__(5)__估算法。
__(6)__是由多位专家进行成本估算的方法。
1、2:
A)类推B)类比C)分解D)综合
3~6:
A)差别B)自顶向下C)自底向上D)专家判定技术E.循序渐进F.比较
答案:
1)C2)A3)B4)C5)A6)D
分析:
成本估算通常按类推(根据以往开发类似软件的经验估算)和分解(按软件生存周期的各个阶段花费的代价估算)手段进行。
注意,这里答题
(1)和
(2)的答案不能互换,因为题目后面用到了
(2)的答案。
根据题意:
“从项目的整体出发,进行
(2)的方法称为__(3)__估算法。
”显然,答题(3)的答案应为B,因此
(2)的答案为A,
(1)的答案为C。
把待开发的软件细分,直到每个子任务都已明确所需要的开发工作量,然后把它们加起来,得到软件开发总工作量的方法称为自底向上估算法。
而把待开发的软件项目与过去已完成的软件项目做类比,区分出类似部分和不同部分分别处理的方法称为差别估算法。
由多位专家进行成本估算的方法称为专家判定技术。
理论链接:
软件开发项目管理基础知识
软件开发项目管理,就是对软件生存期的一切活动进行管理。
具体内容包括对开发人员、组织机构、用户、文档资料等方面的管理。
1.成本估算
成本估算主要指软件开发过程中所花费的工作量及相应的代价。
通常可以根据以往开发类似软件的经验估算,也可以按软件生存周期的各个阶段所花费的代价分别估算。
有二种估算方法:
开发费用=人月数×每个人月的代价
开发费用=源代码行数×每行平均费用
现常用的几种估算模型如下:
1)IBM模型
1977年,IBM的Walston和Felix提出了如下的估算公式:
E=×,L是源代码行数(以KLOC计,LOC:
代码行),E是工作量(以PM计,PM:
人月)
D=×,D是项目持续时间(以月计)
S=×,S是人员需要量(以人计)
DOC=49×。
DOC是文档数量(以页计)
在此模型中,一般指一条机器指令为一行源代码。
一个软件的源代码行数不包括程序注释、作业命令、调试程序在内。
对于非机器指令编写的源程序,如汇编语言或高级语言程序,应转换成机器指令源代码行数来考虑。
2)Putnam模型
这是1978年Putnam提出的模型,是一种动态多变量模型。
它是假定在软件开发的整个生存期中工作量有特定的分布。
这种模型是依据在一些大型项目(总工作量达到或超过30个人年)中收集到的工作量分布情况而推导出来的,但也可以应用在一些较小的软件项目中。
Putnam模型可以导出一个“软件方程”,把已交付的源代码(源语句)行数与工作量和开发时间联系起来。
其中,td是开发持续时间(以年计),K是软件开发与维护在内的整个生存期所花费的工作量(以人年计),L是源代码行数(以LOC计),Ck是技术状态常数,它反映出“妨碍程序员进展的限制”,并因开发环境而异。
其典型值的选取如下所示:
L=Ck*K1/3*td4/3
其中:
L-----------源代码行数(以LOC计)
K-----------整个开发过程所花费的工作量(以人年计)
td-----------开发持续时间(以年计)
Ck----------技术状态常数,它反映“妨碍开发进展的限制”,取值因开发环境而异,见表7-2。
表7-2
Ck的典型值
开发环境
开发环境举例
2000
差
没有系统的开发方法,缺乏文档和复审
8000
好
有合适的系统的开发方法,有充分的文档和复审
11000
优
有自动的开发工具和技术
从上述方程加以变换,可以得到估算工作量的公式:
K=L3/(Ck3*td4)
还可以估算开发时间:
td=[L3/(Ck3*K)]1/4
3)COCOMO模型(COnstructiveCOstMOdel)
这是由TRW公司开发。
Boehm提出的结构型成本估算模型,是一种精确、易于使用的成本估算方法。
该模型还分为:
基本COCOMO模型,是一个静态单变量模型,它是对整个软件系统进行估算;中级COCOMO模型,是一个静态多变量模型,中级COCOMO模型将软件系统型分为系统和部件两个层次,它用于部件级的估算更精确些;详细COCOMO模型,将软件系统模型分为系统、子系统和模块三个层次。
2.风险分析
与任何其他工程项目一样,软件工程项目的开发也存在各种各样的风险,有些风险甚至是灾难性的。
认为,风险与下面三个方面有关:
1)关心未来,风险是否会导致失败;
2)关系变化,用户需求、开发技术、及所有与项目有关的实体会发生什么变化;
3)解决选择,采用什么方法和工具,配备多少人力,质量如何。
软件工程的风险分析包括:
风险标识、风险估算、风险评价和风险管理四部分。
1)风险标识
从宏观上看,风险可以分为项目风险、技术风险和商业风险三类。
由于项目在预算、进度、人力、资源、顾客和需求等方面的原因对软件项目产生的不良影响称为项目风险。
软件在设计、实现、接口、验证和维护过程中可能发生的潜在问题,如规格说明的二义性、采用陈旧或尚不成熟的技术等等,对软件项目带来的危害称技术风险。
开发了一个没人需要的优质软件,或推销部门不知如何销售这一软件产品,或开发的产品不符合公司的产品销售战略,等等,称为商业风险。
这些风险有些是可以预料的,有些是很难预料的。
2)风险估算
估算造成或影响风险的因素,以及风险所造成的损失。
3)风险评价和管理
尽可能地估计各种风险,然后逐一列出并评价风险的程度,对这些风险进行密切关注和严格管理。
3.进度管理
对软件的开发进度进行管理,制定开发进度表。
制定进度表有2种方法:
1)系统最终交付日期已确定,软件开发部门必须在规定期限内完成;
2)系统最终交付日期只确定了大致的时限,最后交付日期由软件开发部门确定。
进度安排的常用图形描述方法有:
Gantt图(甘特图)和PERT图(计划评审技术图)
4.人员管理
可按项目进度对软件人员分组,如需求分析组、设计组、编码组、测试组、维护组、质量保证等。
程序设计小组的组织形式可有多种形式分类。
如主程序员组、无主程序员组、层次式程序员组等。
【试题12】软件开发环境是支持软件产品开发的软件系统,它由____和环境集成机制构成,环境集成机制包括数据集成、控制集成和界面集成。
(2004年下半年上午题49)
A)软件工具集B)软件测试工具集
C)软件管理工具集D)软件设计工具集
答案:
A
分析:
软件开发环境是由软件开发工具集和环境集成机制构成的。
前者用于支持软件开发的相关过程、活动和任务;后者为工具集成、软件开发、维护和管理提供统一的支持。
理论链接:
软件工具与软件开发环境
1.软件工具
可用来帮助和支持软件需求分析、软件开发、测试、维护、模拟、移植或管理而编制的计算机程序或软件。
软件工具是一个程序系统。
软件工具通常由工具、工具接口和工具用户接口三部分构成。
工具通过工具接口与其他工具、操作系统或网络操作系统,以及通信接口、环境信息库接口等进行交互作用。
当工具需要与用户进行交互作用时则通过工具的用户接口。
软件工具可以分为:
1)软件开发工具:
对应软件开发过程中的各种活动,通常有需求分析工具、设计工具、编码与排错工具等
2)软件维护工具:
对应软件维护过程中的各种活动,主要有版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具等。
3)软件管理和软件支持工具:
用来辅助管理人员和软件支持人员的管理和软件支持活动,以确保软件高质量完成。
通常有项目管理工具、配置管理工具、软件评价工具等
2.软件开发环境
软件开发环境是指在计算机的基本软件的基础上,为支持软件的开发而提供的一组工具软件系统。
软件开发环境的定义可从三方面理解:
(1)软件开发环境是一组相关工具的集合。
(2)这些相关工具按一定的开发方法或一定开发处理模型组织起来的。
(3)这些相关工具支持整个软件生存期的各阶段或部分阶段。
软件开发环境按解决的问题可分为:
程序设计环境、系统合成环境、项目管理环境三类;按软件开发环境的演变趋向可分为:
以语言为中心的环境、工具箱环境和基于方法的环境三类;按集成化程度有第一代、第二代、第三代的开发环境。
【试题13】CASE是一组______的集合。
A)工具B)工具和方法C)方法D)程序
答案:
B
【试题14】CASE系统所涉及到的技术有两类:
一类是支持软件开发过程本身的技术;另一类是支持软件_____的技术。
A)开发过程本身B)开发方法管理C)开发方法本身D)开发过程管理
答案:
D
【试题15】平台集成是指工具运行在相同的______平台上。
A)硬件B)软件C)硬件/操作系统D)硬件/软件
答案:
C
理论链接:
CASE工具
CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发。
CASE把软件开发技术、软件工具和软件开发方法集成到一个统一而一致的框架中,并且吸收了CAD(计算机辅助设计)、软件工程、操作系统、数据库、网络和许多其他计算机领域的原理和技术。
因而,CASE领域是一个应用、集成和综合的领域。
根据CASE系统对软件过程的支持范围,CASE可分为三类:
(1)支持单个过程任务的工具。
(2)支持某一过程所有活动或某些活动的工作台。
(3)环境支持软件过程大部分乃至所有活动,一般包括几个不同工作台的集合。
集成化CASE包括五级模型:
(1)平台集成:
工具运行在相同的硬件/操作系统平台上
(2)数据集成:
工具使用共享数据模型来操作
(3)表示集成:
工具使用相同的用户界面
(4)控制集成:
工具激活后能控制其他操作
(5)过程集成:
工具在一个过程模型和"过程机"的指导下使用
CASE工具台是一组工具集,支持像设计、实现或测试等特定的软件开发阶段。
CASE工具组装成一个工具台后工具能协同工作,可提供比单一工具更好的支持。
CASE工作台包括:
(1)程序设计工作台。
由支持程序设计的一组工具组成。
(2)分析和设计工作台。
支持软件过程的分析和设计阶段。
(3)测试工作台。
(4)交叉开发工作台。
这些工作台支持在一种机器上开发软件,而在其他的系统上运行所开发的软件。
(5)配置管理(CM)工作台。
这些工作台支持配置管理。
(6)文档工作台。
这些工具支持高质量文档的制作。
(7)项目管理工作台。
支持项目管理活动。
【试题16】______是指在开发和维护软件及其相关产品时,遵循某个软件过程所能达到的期望效果。
A)软件过程能力B)软件过程性能C)编程能力D)CMM
答案:
A
理论链接:
软件过程能力评估
1.软件过程:
人们在开发和维护软件及其相关产品时所涉及的各种活动、方法、实践和改革等。
其中软件相关产品包括软件项目计划、设计文档、程序代码、测试用例和用户手册等。
2.软件过程能力:
当遵循某个软件过程时所能达到的期望效果,它可以有效预测企业接收新的软件项目时可能得到的结果。
3.软件过程性能:
当遵循某个软件过程时所达到的实际效果。
它可以用于验证软件过程能力。
4.软件过程评估的意义:
1)软件过程改进的需要
(1)软件过程不断改进是软件工程的基本原理之一。
软件过程的基本原理有以下七条:
按软件生成周期分阶段指定计划并认真实施
逐阶段进行确认
坚持严格的产品控制
使用现代程序设计技术
明确责任
用人少而精
不断改进开发过程)
(2)软件过程改进是软件生存周期的基本过程之一。
2)减低软件风险的需要
减低软件风险包括减低软件采购者的风险和软件研制者的风险。
【试题17】CMM描述了______个级别的软件过程成熟度,成熟度反映了软件过程能力(SoftwareProcessCapability)的大小,任何一个软件机构的软件过程必定属于其中某个级别。
A)3B)5C)7D)9
答案:
B
理论链接:
软件过程能力成熟度(CMM)模型简介
软件过程成熟度:
指一个特定的软件过程被显式定义、管理、度量、控制和能行的程度。
成熟度可以用于指示企业加强其软件过程能力的潜力。
当一个企业达到了一定的软件过程成熟级别后,它将通过制定策略、建立标准和确立机构结构使它的软件过程制度化。
而制度化又促使企业通过建立基础设施和公司文化来支持相关的方法、实践和过程。
从而使之可以持续并维持一个良性循环。
CMM描述了五个级别的软件过程成熟度(初始级可重复级已定义级已管理级优化级),成熟度反映了软件过程能力(SoftwareProcessCapability)的大小,任何一个软件机构的软件过程必定属于其中某个级别。
除了第一级以外,每级成熟度又由若干关键过程域(KeyProcessArea)构成。
五个成熟度及其关键过程领域如图所示:
需要提出的是,任何一个成熟度级别的关键过程域集都是本级描述的关键过程域集和所有下级的关键过程域集的并集。
如3级的关键过程域就应有13个不同的域,其中7个是3级自己包含的,6个属于2级成熟度,而4级应有15个域。
五个成熟度级别:
初始级、可重复级(有规章的过程)、定义级(标准化、一致的过程)、管理级(可预测过程)、优化级(可持续改进的过程)分别描述如下:
第一级:
初始级
成功来源于个人英雄主义而非机构行为,因此它不可重复,更换人员后成功便难以维持。
第二级:
可重复级
主要特点是项目计划和跟踪是确定且有效的,项目的软件过程是可控的,以及已有的成功经验是可重复的。
第三级:
定义级
主要特征在于软件过程已被提升成标准化过程,从而更加具有稳定性、重复性和可控性。
第四级:
管理级
主要特征是定量化、可预测、异常控制和高质量。
对于软件的过程和产品有定量的质量指标。
重要的软件过程活动均配有生产率和质量方面的度量指标;
第五级:
优化级
主要特征是新技术的采用和软件过程的改进被作为日常的业务活动来加以计划和管理。
考点2:
面向对象技术基础★★★★★
考点点拨:
本考点考查面向对象的基本概念和面向对象分析与设计的基本知识。
基本概念包括:
对象、类、消息、继承、多态等。
【试题18】在面向对象程序设计语言中,__
(1)__是利用可重用成分构造软件系统的最有效的特性,它不仅支持系统的可重用性,而且还有利于提高系统的可扩充性;__
(2)__可以实现发送一个通用的消息而调用不同的方法;__(3)__是实现信息隐蔽的一种技术,其目的是使类的__(4)__相互分离。
(2004年下半年上午填空31-34)
(1)A)封装B)消息传递C)引用D)继承
(2)A)封装B)多态C)引用D)继承
(3)A)引用B)继承C)封装D)多态
(4)A)定义与实现B)分析与测试C分析与设计D)实现与测试
答案:
(1)D
(2)B(3)C(4)A
分析:
面向对象的主要特性有继承性、多态性和封装性。
继承是在已有类的基础上增量构造新的类,它是利用可重用成分构造软件系统的最有效的特性;多态可以实现发送一个通用的消息而调用不同的方法;封装指将一个数据和与这个数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 基础知识