软件工程是一种系统化、规范化的方法论,用于开发、维护和管理软件项目。它涵盖了软件开发的各个方面,包括需求分析、设计、编码、测试、部署、维护和项目管理等。
软件工程通过应用科学原理、工程技术和管理方法,以及适应性的实践,旨在提高软件开发的效率、质量和可靠性。
软件工程的关键特征包括:
1. 系统思维:软件工程将软件项目视为一个复杂的系统,需要考虑整体的结构和关系,以及系统与环境之间的交互。
2. 过程导向:软件工程采用一系列定义明确的过程和方法,以规范开发流程并确保质量控制。
3. 风险管理:软件工程关注项目中的风险,并采取预防控制和应急措施,以减少项目失败的风险。
4. 团队协作:软件工程强调团队合作和沟通,鼓励开发人员之间的协同工作和知识共享。
5. 质量保证:软件工程通过各种质量保证方法,如测试、代码审核和代码重构等,来确保开发的软件满足需求并具有良好的可维护性和可扩展性。
6. 生命周期管理:软件工程将软件开发过程划分为不同的阶段,并提供对每个阶段的管理和控制。
通过软件工程的实践,可以提高软件项目的成功率、减少成本和风险,并提高软件的质量和可靠性。软件工程主要应用于大型和复杂的软件项目,但其中的方法和原则也可以适用于小型和简单的软件开发。
目录
-
单项选择题(每题1分,20题共20分)
- 计算机系统可以划分为软件系统和硬件系统,软件是一种
A.逻辑产品 B.文档资料 C.程序代码 D.物理装置
-
- 可行性分析研究的主要目的是
A.定义项目 B. 项目是否值得开发 C.开发项目 D.规划项目
-
- 在下列四种模块的耦合性中,信息隐蔽性能最好的是( )
A.控制耦合 B.内容耦合 C. 数据耦合 D. 特征耦合
-
- 需求分析是回答系统必须( )的问题。
A. 为谁做 B.怎么做 C.何时做 D.做什么
-
- 在UML中,类是用 ( )表示的
A 矩形框 B 椭圆 C 箭头 D 菱形框
-
- 编码阶段是位于哪个阶段之后
A. 详细设计 B. 可行性研究 C. 总体设计 D. 需求分析
-
- 在数据流图中,圆圈符号表示的是
A. 数据源点或终点 B.数据处理 C. 数据存储 D. 数据流
-
- 内聚是衡量模块内部聚合能力的量度。内聚越高,说明模块内各成分彼此联系的程度
A.越松散 B.彼此相等 C.越紧密 D.没有联系
-
- 在瀑布模型中,将软件划分为若干个时期,软件项目的可行性研究一般归属于( )
A、维护时期 B、开发时期 C、运行时期 D、计划时期
-
- 软件维护有四种,下面哪一个不是的
A. 完善性维护 B. 测试性维护 C. 预防性维护 D. 适应性维护
-
- 结构化程序设计采用的三种基本控制结构是( )
A.顺序、选择、重复 B.选择、循环、重复
C.顺序、分支、选择 D.输入、变换、输出
-
- 软件测试的目的是( )
A. 为了表明程序没有错误 B.为了发现程序中的错误
C. 为了说明程序能正确地执行 D.为了评价程序的质量
-
- 在UML的用例图中,人形符号表示的是
A 关联 B 用例 C角色 D 系统
-
- 软件测试方法中,黑盒、白盒测试法是常用的方法,其中白盒测试主要用于测试( )
A、结构合理性 B、软件外部功能 C、程序正确性 D、程序内部逻辑
-
- 下面哪些测试属于黑盒测试( )。
A、路径测试 B、循环测试 C、等价类划分 D、条件判断
-
- ( )是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是隐蔽的,外界只能通过有限的接口与对象发生联系。
A封装 B 继承 C 多态性 D 消息
-
- 在UML中,协作图反映收发消息的对象的结构组织,它与( )是同构的
A 用例图 B时序图 C 活动图 D 类图
-
- 需求分析是软件生存周期中的一个重要阶段,它的应该是在( )进行。
A、维护阶段 B、软件开发全过程 C、软件定义阶段 D、软件运行阶段
-
- 下面哪个阶段不属于软件的开发时期
A.编码 B.测试 C.需求分析 D. 维护
-
- 模块内聚可分为七类,最低的内聚是
A. 顺序内聚 B. 时间内聚 C. 过程内聚 D. 偶然性内聚
- 填空题(每空2分, 15空共30分)
- 常用(【1】耦合)和内聚这两个定性度量标准来评定模块的独立性。
- 结构化设计方法以数据流图为基础,按一定步骤映射成软件结构,数据流图有两种基本结构:变换型结构和(【2】事务流型结构)。
- 软件的定义可以简单的表述为:软件=(【3】程序+文档)
- 测试技术有黑盒测试和白盒测试两种,根据程序的功能来设计测试用例,这种方法称为( 【4】黑盒 )测试。
- 在面向对象的系统设计过程中,有4种主要的设计组件必须定义,它们是领域组件、( 【5】人机交互组件 ) 、任务管理组件和数据管理组件。
- 统一建模语言是面向对象软件工程所使用的一种建模工具,其英文缩写是(【6】UML)
- 软件结构的深度、宽度、扇人、扇出四个特征,定义了软件结构的形态。(【7】扇出)是指一个模块直接调用的下属模块的数目。
- 软件维护的内容包括纠错性维护,(【8】适应性维护)、完善性维护和(【9】预防性维护)。
- 向一个已经拖期的项目追加开发人员,可能使它完成得更晚。鉴于这一发现的重要性,许多文献称之为(【10】Brooks)定律。
- 在UML的图形符号中,虚线箭头表示的是两个元素之间的 (【11】依赖)关系。
- 软件的测试可以分为4个步骤,主要包括(【12】单元测试)、集成测试、(【13】确认测试)和系统测试。
- 在软件的开发过程中,必须遵循的原则是抽象、信息隐蔽和(【14】模块化 )。
- 为使软件适应运行环境的改变而进行的一类维护称之为(【15】适应性维护)。
-
名词解释(每题3分,6题共18分)
- 白盒法
该方法把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检查内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。白盒法也不可能进行穷举测试。
- 类
具有相同或相似性质的对象的抽象就是类。
- 信息隐蔽
指在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其它模块来说,是不能访问的。
- 路径覆盖
指设计足够的测试用例,覆盖被测程序中所有可能的路径。
- 软件工程
软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。
- 软件复用
就是将已有的软件成分用于构造新的软件系统。可以被复用的软件成分一般称作可复用构件,无论对可复用构件原封不动地使用还是作适当的修改后再使用,只要是用来构造新软件,则都可称作复用。
-
简答题(每题6分, 4题共24分)
- 请说明软件文档的作用?软件开发项目生存期各阶段都包含哪些文档?
软件文档的作用是:提高软件开发过程的能见度;提高开发效率;作为开发人员阶段工作成果和结束标志;记录开发过程的有关信息便于使用与维护;提供软件运行、维护和培训有关资料;便于用户了解软件功能、性能。软件开发项目生存期各阶段应包括得文档以及与各类人员的关系如下:可行性研究报告、项目开发计划、软件需求说明书、数据要求说明书、测试计划、概要设计说明书、详细设计说明书、用户手册、操作手册、测试分析报告、开发进度月报、项目开发总结、程序维护手册(维护修改建议)。
- 什么是数据字典?其作用是什么?它有哪些条目?
数据字典(简称DD)是用来定义数据流图中的各个成分的具体含义的,它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。他和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。数据字典是为分析人员查找数据流图中有关名字的详细定义而服务的,因此也像普通字典一样,要把所有条目按一定的次序排列起来,以便查阅。数据字典有以下四类条目:数据流、数据项、数据存储、基本加工。数据项是组成数据流和数据存储的最小元素。源点、终点不在系统之内,故一般不在字典中说明。
- 采用黑盒技术设计测试用例有哪几种方法?这些方法各有什么特点?
㈠等价类划分。等价类划分是将输入数据域按有效的或无效的(也称合理的或不合理的)划分成若干个等价类,测试每个等价类的代表值就等于对该类其它值的测试。㈡边界值分析。该方法是将测试边界情况作为重点目标,选取正好等于,刚刚大于或刚刚小于边界值的情况,根据这些情况选择测试用例。㈢错误推测。错误推测法没有确定的步骤,凭检验进行。它的基本思想是列出程序中可能发生错误的情况,根据这些情况选择测试用例。㈣因果图。因果图能有效的检测输入条件的各种组合可能会引起的错误。因果图的基本原理是通过画因果图,把用自然语言描述的功能说明转换为判定表,最后为判定表的每一列设计一个测试用例。
- 何谓软件生存周期?其可以划分为几个时期?每个时期又可分为几个阶段?每个阶段的主要任务是什么?
一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件生存期也可以分为三个时期:计划时期、开发时期和运行时期。软件生存周期一般可分为以下几个阶段:
-
- 问题定义 问题定义阶段必须回答的关键问题是“要解决的问题是什么?”,正确理解用户的真正需求。
- 可行性研究 这个阶段要回答的关键问题是:对于上一个阶段所确定的问题“有行得通的解决办法吗?” ,可行性研究阶段应该导出系统的高层逻辑模型(通常用数据流图表示),准确地估计系统的成本和效益。
- 需求分析 需求分析阶段的任务,主要是确定目标系统必须具备的功能,得出经用户确认的系统逻辑模型。根据该系统逻辑模型,准确地回答“为了解决这个问题,目标系统必须做什么”。
- 总体设计 也叫概要设计或初步设计。这个阶段必须回答的是“概括地说,应该如何解决这个问题”。总体设计的目标是将需求分析阶段定义的系统模型转换成相应的软件结构,以规定软件的形态及各成分间的层次关系、界面及接口要求。
- 详细设计 详细设计阶段的任务是把解法具体化,也就是回答“应该怎样具体地实现这个系统”。详细设计亦即模块设计。它是在算法设计和结构设计的基础上,针对每个模块的功能、接口和算法定义,设计模块内部的算法过程及程序的逻辑结构,并编写模块设计说明。
- 编码 这个阶段的任务,是根据详细设计的结果,选择一种适合的程序设计语言,把详细设计的结果翻译成程序的源代码。
- 测试 以便尽早发现程序中的错误和缺陷而进行的一个过程,有单元测试、集成测试、确认测试和系统测试4种。
- 运行与维护 通过各种必要的维护措施支持软件系统能持久地满足用户的需要。
- 如何做好软件质量保证工作?
软件质量保证工作是软件工程管理的重要内容,软件质量保证应做好以下几个方面的工作:<1>采用技术手段和工具。质量保证活动要贯彻开发过程始终,必须从采用技术手段和工具,尤其是使用软件开发环境来进行软件开发。<2>组织正式技术评审,在软件开发的第一个阶段结束时,都要组织正式的技术评审。国家标准要求单位必须采用审查、文档评审、设计评审、审计和测试等具体手段来保证质量。<3>加强软件测试。软件测试是质量保证的重要手段,因为测试可发现软件可发现软件中大多数潜在错误。<4>推选软件工程规范(标准)。用户可以自己指定软件工程规范(标准),但标准一旦确认就应贯彻执行。<5>对软件的变更进行控制。软件的修改和变更常常会引起潜伏的错误,因此必须严格控制软件的修改和变更。<6>对软件质量进行度量。即对软件质量进行跟踪,及时记录和报告软件质量情况。
五.论述题(8分)
在自己的开发实践中你是如何运用软件工程的?
- 单项选择题(每题1分, 20题共20分)
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
答案 | A | B | C | D | A | A | B | C | D | B |
题号 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
答案 | A | B | C | D | C | A | B | C | D | D |
- 填空题(每空2分,15空共30分)
【1】耦合 【2】事务流型结构 【3】程序+文档
【4】黑盒 【5】人机交互组件 【6】UML
【7】扇出 【8】适应性维护 【9】预防性维护
【10】Brooks 【11】依赖 【12】单元测试
【13】确认测试 【14】模块化 【15】适应性维护
- 名词解释(每题3分,6题共18分)
- 白盒法
该方法把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检查内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。白盒法也不可能进行穷举测试。
-
- 类
具有相同或相似性质的对象的抽象就是类。
-
- 信息隐蔽
指在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其它模块来说,是不能访问的。
-
- 路径覆盖
指设计足够的测试用例,覆盖被测程序中所有可能的路径。
-
- 软件工程
软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。
-
- 软件复用
就是将已有的软件成分用于构造新的软件系统。可以被复用的软件成分一般称作可复用构件,无论对可复用构件原封不动地使用还是作适当的修改后再使用,只要是用来构造新软件,则都可称作复用。
- 简答题(每题6分, 4题共24分)
- 请说明软件文档的作用?软件开发项目生存期各阶段都包含哪些文档?
软件文档的作用是:提高软件开发过程的能见度;提高开发效率;作为开发人员阶段工作成果和结束标志;记录开发过程的有关信息便于使用与维护;提供软件运行、维护和培训有关资料;便于用户了解软件功能、性能。软件开发项目生存期各阶段应包括得文档以及与各类人员的关系如下:可行性研究报告、项目开发计划、软件需求说明书、数据要求说明书、测试计划、概要设计说明书、详细设计说明书、用户手册、操作手册、测试分析报告、开发进度月报、项目开发总结、程序维护手册(维护修改建议)。
- 什么是数据字典?其作用是什么?它有哪些条目?
数据字典(简称DD)是用来定义数据流图中的各个成分的具体含义的,它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。他和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。数据字典是为分析人员查找数据流图中有关名字的详细定义而服务的,因此也像普通字典一样,要把所有条目按一定的次序排列起来,以便查阅。数据字典有以下四类条目:数据流、数据项、数据存储、基本加工。数据项是组成数据流和数据存储的最小元素。源点、终点不在系统之内,故一般不在字典中说明。
- 采用黑盒技术设计测试用例有哪几种方法?这些方法各有什么特点?
㈠等价类划分。等价类划分是将输入数据域按有效的或无效的(也称合理的或不合理的)划分成若干个等价类,测试每个等价类的代表值就等于对该类其它值的测试。㈡边界值分析。该方法是将测试边界情况作为重点目标,选取正好等于,刚刚大于或刚刚小于边界值的情况,根据这些情况选择测试用例。㈢错误推测。错误推测法没有确定的步骤,凭检验进行。它的基本思想是列出程序中可能发生错误的情况,根据这些情况选择测试用例。㈣因果图。因果图能有效的检测输入条件的各种组合可能会引起的错误。因果图的基本原理是通过画因果图,把用自然语言描述的功能说明转换为判定表,最后为判定表的每一列设计一个测试用例。
- 何谓软件生存周期?其可以划分为几个时期?每个时期又可分为几个阶段?每个阶段的主要任务是什么?
一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件生存期也可以分为三个时期:计划时期、开发时期和运行时期。软件生存周期一般可分为以下几个阶段:
-
- 问题定义 问题定义阶段必须回答的关键问题是“要解决的问题是什么?”,正确理解用户的真正需求。
- 可行性研究 这个阶段要回答的关键问题是:对于上一个阶段所确定的问题“有行得通的解决办法吗?” ,可行性研究阶段应该导出系统的高层逻辑模型(通常用数据流图表示),准确地估计系统的成本和效益。
- 需求分析 需求分析阶段的任务,主要是确定目标系统必须具备的功能,得出经用户确认的系统逻辑模型。根据该系统逻辑模型,准确地回答“为了解决这个问题,目标系统必须做什么”。
- 总体设计 也叫概要设计或初步设计。这个阶段必须回答的是“概括地说,应该如何解决这个问题”。总体设计的目标是将需求分析阶段定义的系统模型转换成相应的软件结构,以规定软件的形态及各成分间的层次关系、界面及接口要求。
- 详细设计 详细设计阶段的任务是把解法具体化,也就是回答“应该怎样具体地实现这个系统”。详细设计亦即模块设计。它是在算法设计和结构设计的基础上,针对每个模块的功能、接口和算法定义,设计模块内部的算法过程及程序的逻辑结构,并编写模块设计说明。
- 编码 这个阶段的任务,是根据详细设计的结果,选择一种适合的程序设计语言,把详细设计的结果翻译成程序的源代码。
- 测试 以便尽早发现程序中的错误和缺陷而进行的一个过程,有单元测试、集成测试、确认测试和系统测试4种。
- 运行与维护 通过各种必要的维护措施支持软件系统能持久地满足用户的需要。
- 如何做好软件质量保证工作?
软件质量保证工作是软件工程管理的重要内容,软件质量保证应做好以下几个方面的工作:<1>采用技术手段和工具。质量保证活动要贯彻开发过程始终,必须从采用技术手段和工具,尤其是使用软件开发环境来进行软件开发。<2>组织正式技术评审,在软件开发的第一个阶段结束时,都要组织正式的技术评审。国家标准要求单位必须采用审查、文档评审、设计评审、审计和测试等具体手段来保证质量。<3>加强软件测试。软件测试是质量保证的重要手段,因为测试可发现软件可发现软件中大多数潜在错误。<4>推选软件工程规范(标准)。用户可以自己指定软件工程规范(标准),但标准一旦确认就应贯彻执行。<5>对软件的变更进行控制。软件的修改和变更常常会引起潜伏的错误,因此必须严格控制软件的修改和变更。<6>对软件质量进行度量。即对软件质量进行跟踪,及时记录和报告软件质量情况。
- 论述题(8分)
在自己的开发实践中你是如何运用软件工程的?