软件工程期末复习题
【软件工程期末复习题】
一、考点
1、类图之间关系 ?
依赖关系、关联关系、聚合关系、组合关系、继承(泛化)关系、实现关系
2、类图的作用
可视化表达静态结构
3、软件维护的类型?
(1) 纠错性维护
诊断和修正系统中遗留的错误,就是纠错性维护。 纠错性维护是在系统运行中发生异常或故障时进行的。核心:出现错误后纠正,叫做更正性维护
(2) 适应性维护
适应性维护时为了使 系统适应环境的变化而进行的维护工作 。核心:环境发生变化。若环境没发生改变,而对系统做出的改进不是适应性维护。
(3) 完善性维护(占比最大)
在系统的使用过程中, 用户往往要求扩充原有系统的功能 ,增加一些在软件需求规范书中没有规定的功能与性能特征,以及对处理效率和编写程序的改进。核心:基于用户对软件完善。例如:用户觉得某处不行,我们去改,这就是完善性维护。
(4) 预防性维护(占比最小)
系统维护工作不应总是被动地等待用户提出要求后才进行,应进行主动的预防性维护, 即选择那些还有较长使用寿命, 目前尚能正常运行, 但可能将要发生变化或调整的系统进行维护, 目的是通过预防性维护为未来的修改与调整奠定更好的基础 。核心:预防。也就是说,目前尚可工作,为了预防而做出改变。
4、什么是软件危机,软件危机的主要体现,表现形式?
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机的表现:
构建这些软件系统的非正规 的软件开发方式已力不从心、不能凑效,软件质量差、成本无法控制、进度一拖再拖的现象十分普遍。
产生软件危机的原因:
(1)用户对软件需求的描述不精确。
(2)软件开发人员对用户需求的理解有偏差。
(3)缺乏处理大型软件项目的经验。
(4)开发大型软件易产生疏漏和错误。
(5)缺乏有力的方法学的指导和有效的开发工具的支持。
(6)面对日益增长的软件需求,人们显得力不从心。
5、内聚和耦合的概念
内聚
度
是一个模块内部各成分
彼此
关联
的紧密
程度。
耦合
度
是
指软件结构中多个
模块之间
关联
程度。
6、内聚性和耦合性的分类?
模块设计追求强内聚,弱耦合。
一、内聚强度
内聚按强度 从低到高 有以下几种类型:
(1) 偶然
性
内聚 。如果一个模块的各成分之间毫无关系,则称为偶然内聚。
(2) 逻辑
性
内聚 。几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。
(3) 时间
性
内聚 。如果一个模块完成的功能必须在同一时间内执行,则称为时间内聚。
(4) 过程
性
内聚 。如果一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行,则称为过程内聚。
(5) 通信
性
内聚 。如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。
(6) 顺序
性
内聚 。如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚。
(7) 功能
性
内聚 。模块内各成分协同完成单一功能,则称为功能内聚。
二、耦合强度
耦合按 从强到弱 的顺序可分为以下几种类型:
(1) 内容耦合 。当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。此时,被修改的模块完全依赖于修改它的模块。
(2) 公共耦合 。两个以上的模块共同引用一个全局数据项就称为公共耦合。
(3) 外部耦合 。当若干模块都和同一外部设备和外部坏境相关联时,这些模块之间存在外部耦合。
(3) 控制耦合 。一个模块在界面上传递一个信号控制另一个模块,接收信号的模块的动作根据信号值进行调整,称为控制耦合。
(5) 数据耦合 。模块间通过参数传递基本类型的数据,称为数据耦合。
(6) 非直接耦合 。模块间没有信息传递时,属于非直接耦合。
如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,坚决避免使用内容耦合。
7、用例之间有什么关系?
(1) 包含
包含关系指用例包含其他用例具有的行为,并把它所包含的用例行为作为自身行为的一部分。在UML中,包含关系是通过带箭头的虚线段加<>字样来表示,箭头由基础用例(Base)指向被包含用例(Inclusion)。
(2)扩展
在一定条件下,把新的行为加入到已有的用例中,获得的新用例叫做扩展用例(Extension),原有的用例叫做基础用例(Base),从扩展用例到基础用例的关系就是扩展关系。
(3)继承
8、软件测试的测试方法?
(1) 黑盒测试 : 把程序看作一个黑盒子,完全不考虑程序的内部逻辑结构和内部特性。它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性。黑盒测试又称为功能测试或基于规格说明书的测试。
黑盒测试方法:等价类划分法、边界值分析法、错误推测法、因果图法、功能图法和接口测试法。
(2) 白盒测试 : 检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试。
是把测试对象看成一个玻璃盒子,允许测试人员利用程序内部的逻辑结构及有关信息,设计测试用例对程序所有的逻辑路径进行测试,通过在不同点检查程序的状态,确定实际状态是否与预期一致。白盒测试又称为结构测试或基于程序的测试。
白盒测试主要包含六种测试方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
9、软件生命周期包含哪些阶段?花费最多的阶段是哪个阶段
需求->设计->编码、测试->软件测试->运行、维护->退役
花费最多的阶段是
维护
阶段
10、快速原型模型的主要特点 ?
软件开发人员根据客户提出的软件定义,快速地开发一个原型。原型向客户展示了待开发软件系统的 全部或部分功能 和性能,在征求客户对原型意见的过程中,进一步修改、完善、确认软件系统的需求并达到一致的理解。
克服了瀑布模型的缺点,使它更好的满足用户并减少由于需求不明确带来的项目风险
适合预先不能确切定义需求的软件系统的开发
不适合开发大型的软件系统,只适合开发小型的
前提是要有一个展示性的原型,因此在一定程度上限制了开发人员的创新
11、绘制状态图。
状态图是描述一个 在事件刺激下的反应式 ,它包含实体所有可能的状态、在每种状态下哪个响应的事件以及事件发生时的状态变迁及响应动作。
12、软件工程的三要素?
过程、方法和工具
软件工程 方法 为软件开发提供了“如何做”的技术。
软件 工具 为软件工程方法提供了自动的或半自动的软件支撑环境。
软件工程的 过程 则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。
13、软件设计的基本原则包括?
抽象与逐步求精、 高内聚低耦合 、信息隐藏和关注点分离
14、需求规格说明书在软件开发中的作用。
软件需求说明书是指在研究用户要求的基础上,完成可行性分析和投资效益分析以后,由 或分析员编写的说明书。它详细定义了信息流和界面,功能需求,设计要求和限制,测试准则和质量保证要求。 它的作用是作为用户和软件开发人员达成的技术协议书,作为着手进行设计工作的基础和依据,系统开发完成以后,为产品的验收提供了依据。
15、E-R模型中的基本成分。
实体
、
属性
、
关系
客观存在并可相互区别的事物称为 实体
实体所具有的某一特性称为 属性
现实世界中事物内部以及事物之间的联系在信息世界中反应为实体内部的联系和实体之间的 联系
16、结构程序设计的基本思想。
自顶而下、逐步求精
17、一个完整计算机系统的构成。
软件系统和硬件系统
18、软件的分类
基于软件功能:系统软件、 支撑软件、 应用软件
基于实时性:实时软件和非实时软件
基于软件运行坏境:单机软件和网络软件
20、交互图
交互图包括顺序图和通信图两种,都是用来表示对象之间的交互关系。顺序图强调重点描述对象间消息传递的时间顺序,通信图强调对象之间的交互、协作关系
21、面向对象的开发方法包括哪些
面向对象的分析、面向对象的设计和面向对象的程序设计
22、UML视图(p57)
(1)用例视图:它从外部用户的角度描述系统的功能,并指出功能的参与者。
(2)结构视图:结构视图包括包图、类图、对象图,它们分别从不同的层面表示系统的静态结构。
(3)行为视图:行为视图包括交互图、状态图、活动图,它们从不同的侧面刻画系统的 动态 行为。交互图包括顺序图和通信图
(4)构建视图:它描述软件系统中各组成构件、构件的内部结构以及构件之间的依赖关系。
(5)部署视图:它描述软件系统中的各类工件在物理运行坏境中的分布情况。
二、选择题
1. 黑盒测试在设计测试用例时,主要需要研究( )
A
.
需求规格说明与概要设计说明
B. 详细设计说明
C. 项目开发计划
D. 概要设计说明与详细设计说明
2.面向对象的类层次结构中,继承关系是一种( )
A.“一般——特殊”关系
B.“整体——部分”关系
C.“相互依赖”关系
D
.“一般
——
具体”关系
3. 结构化设计方法在软件开发中,用于( )。
A、测试用例设计
B、软件概要设计
C、程序设计
D、软件详细设计
4. 软件重用的单位是( )。
A.软件模块
B.性能
C.系统
D.功能
三、填空
1、结构化设计方法在软件开发中,用于( 软件概要设计 )。
2、软件重用的单位是( 软件模块 )。
3、程序的三种基本控制结构的共同特点是 ( 只能一个入口和一个出口 ) 。
4、软件质量保证应在 ( 需求分析 ) 阶段开始。
5、软件生命周期中所花费用最多的阶段是 ( 软件维护 )。
6、软件工程的理论和技术性研究的容主要包括软件 开发技术和( 软件工程管理 )。
7、可行性研究的目的是用最小的代价,在尽可能短的时间内,确定( 问题能否解决 )。
四、判断题
1、需求分析阶段的任务是确定 软件系统的功能。(v)
2、在软件开发的各种资源中,开发工具是最重要的资源。(x)
3、从软件的生存期来看,软件测试只涉及编码阶段(x)
五、简答题
1、什么是软件危机?其产生的原因是什么?
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
产生软件危机的原因:
(1)用户对软件需求的描述不精确。
(2)软件开发人员对用户需求的理解有偏差。
(3)缺乏处理大型软件项目的经验。
(4)开发大型软件易产生疏漏和错误。
(5)缺乏有力的方法学的指导和有效的开发工具的支持。
(6)面对日益增长的软件需求,人们显得力不从心。
2、测试与软件开发各阶段的关系。
螺旋中心对应 单元测试 ,它测试源程序的 每一模块 ,下一步是 集成测试(或称综合测试) ,它测试软件 总体结构 ,再下一步是 确认(验收)测试 ,测试软件是 否满足需求 ,最后一步是 系统测试 ,检查软件与系统中其他元素 是否协调 。
3、什么是状态?什么是状态图?简述实际应用中只用状态图的作用。
状态 是对象执行了一系列活动的结果,当某个事件发生后,对象的状态将发生变化。
状态图 描述一个实体在事件刺激下的反应式动态行为。状态图包含实体所有可能的状态、在每个状态下能够响应的事件以及事件发生时的状态变迁与响应动作。
作用 :创建一个系统的动态图和创建一个场景的模型。
4、软件生命期各阶段的任务是什么?
可行性研究阶段: 确定问题是否值得解,分析技术可行性、经济可行性、操作可行性
需求分析阶段: 明确系统必须做什么
总体设计: 明确系统如何实现,包括系统设计和结构设计
详细设计: 具体实现设计的系统
实现阶段: 选择语言和工具翻译详细设计结果和测试模块
测试阶段: 通过各类型的测试(及相应的调试)是软件达到预定要求
运行和维护阶段: 保证软件正常运行,通过各种必要的维护活动使系统持久地满足用户的需求
5、请根据如下描述绘制培训班的状态图:
(1)培训班招生“开始”后有学员“注册”,学期开始后“开始上课”,当课程结束经过“期末考试”后,培训班结束,进入终态。
(2)“注册”学员都取消了注册,培训班也进入结束状态。
(3)学员“注册”,学期开始后“开始上课”,学员有中途退学的,则需判断培训班是否继续开课。
6、用户使用ATM自动取款机取钱,请使用顺序图表示用户插入银行卡,并验证成功的过程。
7、软件产品的特点是什么?
8、软件生存周期如何划分?
RUP的5个阶段: 初始阶段、细化阶段、构造阶段、移交阶段、生产阶段
RUP的九个工作流: 业务
建模
工作流、
需求
工作流、设计工作流、实现工作流、验证与确认工作流、部署工作流、配置和变更管理工作流、项目管理工作流、环境工作流
六、论述题:
1、谈谈软件工程师应具备的素质和职业道德。
素质:
1)能运用理论、模型和技术对问题进行识别和分析,能进行软件设计、开发、实现、验证和文档化,并交付高质量的软件产品
2)能理解各种工程设计方法的优缺点,能根据情况选择符合道德、社会、法律、安全和经济规划的合适方法
3)重视产品交付期限,面对有限的资源、系统和组织能对各种矛盾进行协调和折中
4)能遵守纪律、交流和合作,能评价个人和团队的能力,了解团队和团队的行为及角色
职业道德:
1)软件工程人员与公众利益保持一致
2)软件工程人员应在保持与公众利益一致的前提下,满足客户和雇主的最大利益
3)软件工程人员应保证自己的产品及附件达到尽可能高的行业标准
4)软件工程人员应具有独立的、公正的职业判断力
5)软件工程管理者和领导者倡导、采用的软件开发和维护管理方法应符合道德规范
6)软件工程人员应弘扬职业的正义感和荣誉感,尊重社会公众利益
7)软件工程人员应工程应公平地对待和帮助每一位同事
8)软件工程人员应终身学习专业知识,倡导符合职业道德的工作方式
2、描述你曾用过的最好的软件,根据软件工程中所学习的相关概念对其进行评析。
开放题,可从功能性,可靠性,可用性,效率,可维护性,可移植性几方面作答