软件工程复习参考.docx
《软件工程复习参考.docx》由会员分享,可在线阅读,更多相关《软件工程复习参考.docx(14页珍藏版)》请在冰豆网上搜索。
软件工程复习参考
问答题
1.什么是软件生存期
答:
一个软件从定义到开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。
软件生存周期就是从提出软件产品开始,直到该软件产品被淘汰的全过程。
2.简述什么是系统流程图
答:
系统流程图是描述物理系统的传统工具。
它的基本思想是用图形符号以黑盒子形式描绘系统里的每个部件(程序、文件、数据库、表格、人工过程等)。
系统流程图表达的是部件的信息流程,而不表示对信息进行加工处理的控制过程。
3.为什么数据流图要分层?
答:
这了表达数据处理过程的数据加工情况,用一个数据流图是不够的。
为表达稍为复杂的实际问题,需要按照问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。
4.软件的质量反应为哪些方面的问题?
答:
软件需求是度量软件质量的基础,不符合需求的软件就不具备质量。
在各种标准中定义了一些开发准则,用来指导软件人员用工程化的方法来开发软件。
如果不遵守这些开发准则,软件质量就得不到保证。
往往会有一些隐含的需求没有明确地提出来。
如果软件只满足那些精确定义了的需求而没有满足这些隐含的需求,软件质量也不能保证。
软件质量是各种特性的复杂组合。
它随着应用的不同而不同,随着用户提出的质量要求不同而不同。
5.简述容错技术的四种主要手段,并解释。
结构冗余:
包括静态冗余、动态冗余和混合冗余。
信息冗余:
为检测或纠正信息在运算或传输中的错误,须外加一部分信息。
时间冗余:
指重复执行指令或程序来消除瞬时错误带来的影响。
冗余附加技术:
指为实现上述冗余技术所需的资源和技术。
6.以G.J.Myers的观点,简述对软件测试的目的。
软件测试是
(1)为了发现错误而执行程序的过程;
(2)一个好的用例能够发现至今尚未发现的错误的测试。
(3)一个成功的测试是发现至今尚未发现的错误的测试。
7.就程序设计语言的工程特性而言,对程序编码有哪些要求?
就程序设计语言的工程特性而言,对程序编码有如下要求:
(1)可移植性
(2)开发工具的可利用性(3)软件的可重用性(4)可维护性
8.模块的内聚性包括哪些类型?
模块的内聚性包括:
(1)偶然内聚
(2)逻辑内聚(3)时间内聚(4)通信内聚(5)顺序内聚(6)功能内聚
36.可行性研究报告的主要内容有哪些?
解:
一个可行性研究报告的主要内容如下:
(1)引言:
说明编写本文档的目的;项目的名称、背景;本文档用到的专门术语和参考资料。
(2)可行性研究前提:
说明开发项目的功能、性能和基本要求;达到的目标;各种限制条件;可行性研究方法和决定可行性的主要因素。
(3)对现有系统的分析:
说明现有系统的处理流程和数据流程;工作负荷;各项费用支出;所需要各类专业技术人员的数量;所需要各种设备;现有系统存在什么问题。
(4)所建议系统的技术可行性分析:
所建议系统的简要说明;处理流程和数据流程;与现有的系统比较的优越性;采用所建议系统对用户的影响;对各种设备、现有软件、开发环境、运行环境的影响;对经费支出的影响;对技术可行性的评价。
(5)所建议系统的经济可行性分析:
说明所建议系统的各种支出,各种效益;收益投资比;投资回收周期。
(6)社会因素可行性分析:
说明法律因素,对合同责任、侵犯专利权、侵犯版权等问题的分析;说明用户使用可行性,是否满足用户行政管理、工作制度、人员素质的要求。
(7)其他可供选择方案:
逐一说明其他可供选择的方案,并说明未被推荐的理由。
(8)结论意见:
说明项目是否能开发;还需要什么条件才能开发;对项目目标有什么变动等。
[解析]做软件的可行性研究的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发,其中的问题能否解决,报告共分为八个基本内容。
37.系统设计的内容是什么?
解:
系统设计阶段先从高层入手,然后细化。
系统设计要决定整个结构及风格,这种结构为后面设计阶段的更详细策略的设计提供了基础。
(1)系统分解。
系统中主要的组成部分称为子系统,子系统既不是一个对象也不是一个功能,而是类、关联、操作、时间和约束的集合。
每次分解的各子系统数目不能太多,最底层子系统称为模块。
(2)确定并发性。
分析模型、现实世界及硬件中不少对象均是并发的。
系统设计的一个重要目标就是确定哪些是必须同时动作的对象,哪些不是同时动作的对象。
后者可以放在一起,而综合成单个控制线或任务。
(3)处理器及任务分配。
各并发子系统必须分配给单个硬件单元,要么是一个一般的处理器,要么是一个具体的功能单元,必须完成下面的工作:
估计性能要求和资源需求,选择实现子系统的硬软件,将软件子系统分配给各处理器以满足性能要求和极小化处理器之间的通信,决定实现各子系统的各物理单元的连接。
(4)数据存储管理。
系统中的内部数据和外部数据的存储管理是一项重要的任务。
通常各数据存储可以将数据结构、文件、数据库组合在一起,不同数据存储要在费用、访问时间、容量以及可靠性之间做折中考虑。
(5)全局资源的处理。
必须确定全局资源,并且制定访问全局资源的策略。
全局资源包括:
物理资源,如处理器、驱动器等;空间,如盘空间、工作站屏等;逻辑名字,如对象标识符、类名、文件名等。
如果资源是物理对象,则可以通过建立协议实现对并发系统的访问,以达到自身控制;如果资源是逻辑实体,如对象标识符,那么在共享环境中有冲突访问的可能,如独立的事务可能同时使用同一个对象标识符,则各个全局资源都必须有一个保护对象,由保护对象来控制对该资源的访问。
(6)选择软件控制机制。
分析模型中所有交互行为都表示为对象之间的事件。
系统设计必须从多种方法中选择某种方法来实现软件的控制。
(7)人机交互接口设计。
设计中的大部分工作都与稳定的状态行为有关,但必须考虑用户使用系统的交互接口。
38.什么是软件危机?
软件危机的表现是什么?
其产生的原因是什么?
解:
软件发展第二阶段的末期,由于计算机硬件技术的进步,计算机运行速度、容量、可靠性有显著的提高,生产成本显著下降,这为计算机的广泛应用创造了条件。
一些复杂的、大型的软件开发项目提出来了,但是,软件开发技术的进步一直未能满足发展的需要。
在软件开发中遇到的问题找不到解决办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。
软件危机表现在以下四个方面:
(1)经费预算经常突破,完成时间一再拖延。
由于缺乏软件开发的经验和软件开发数据的积累,使得开发工作的计划很难制定。
主观盲目制定计划,执行起来与实际情况有很大差距,使得开发经费一再突破。
由于对工作量估计不足,对开发难度估计不足,进度计划无法按时完成,开发时间一再拖延。
(2)开发的软件不能满足用户要求。
开发初期对用户的要求了解不够明确,未能得到明确的表达。
开发工作开始后,软件人员和用户又未能及时交换意见,使得一些问题不能及时解决,导致开发的软件不能满足用户的要求,因而导致开发失败。
(3)开发的软件可维护性差。
开发过程中没有同意的、公认的规范,软件开发人员按各自的风格工作,各行其是,开发过程无完整、规范的文档,发现问题后进行杂乱无章的修改。
程序结构不好,运行时发现错误也很难修改,导致维护性差。
(4)开发的软件可靠性差。
由于在开发过程中,没有确保软件质量的体系和措施,在软件测试时,又没有严格的、充分的、完全的测试,提交给用户的软件质量差,在运行中暴露出大量的问题。
造成软件危机的原因是:
(1)软件的规模越来越大,结构越来越复杂。
(2)软件开发管理困难而复杂。
(3)软件开发费用不断增加。
(4)软件开发技术落后。
(5)生产方式落后。
6)开发工具落后,生产率提高缓慢。
39.软件质量保证应做好哪几方面的工作?
解:
软件质量保证是软件工程管理的重要内容,软件质量保证应做好以下几方面的工作:
(1)采用技术手段和工具。
质量保证活动要贯彻开发过程始终,必须采用技术手段和工具,尤其是使用软件开发环境来进行软件开发。
(2)组织正式技术评审。
在软件开发的每一个阶段结束时,都要组织正式的技术评审。
国家标准要求单位必须采用审查、文档评审、设计评审、审计和测试等具体手段来保证质量。
(3)加强软件测试。
软件测试是质量保证的重要手段,因为测试可发现软件中大多数潜在错误。
(4)推行软件工程规范(标准)。
用户可以自己制定软件工程规范(标准),但标准一旦确认就应贯彻执行。
(5)对软件的变更进行控制。
软件的修改和变更常常会引起潜伏的错误,因此必须严格控制软件的修改和变更。
(6)对软件质量进行度量。
即对软件质量进行跟踪,及时记录和报告软件质量情况。
1.简述软件工程的概念。
答:
概括地说,软件工程是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
2. 简述典型的软件生命周期的各个阶段。
答:
软件生命周期(各阶段)软件生命周期由软件定义、软件开发和运行维护三个时期组成。
软件定义时期:
问题定义、可行性研究和需求分析
开发时期:
总体设计、详细设计、编码和单元测试、综合测试。
维护时期:
主要任务是使软件持久地满足用户的需要。
即每个有8个阶段及基本任务:
1问题定义:
回答 要解决的问题是什么?
2可行性研究:
该问题有行的通的解决办法吗?
若有解决问题的办法,则需要多少费用、资源、时间?
3需求分析:
回答“为了解决这个问题,目标系统必须做什么”,确定目标系统的功能 4总体设计:
回答 “概括地说,应如何解决这个问题”。
把确定的各项功能需求转换成需要的体系结构。
设计软件的结构,确定程序由哪些模块组成及模块间的关系,同时设计该项目的应用系统的总体数据结构和数据库结构。
5详细设计:
回答 “应怎样具体地实现这个系统”。
为每个模块完成的功能进行具体描述,把功能描述转变为精确的、结构化的过程描述 6编码和单元测试:
把每个模块的控制结构转换成计算机可接受的程序代码。
写出的程序应是结构好,清晰易读,并且与设计一致。
7综合测试:
通过各种类型的测试使软件达到预定的要求。
8软件维护:
通过各种必要的维护活动使系统持久地满足用户需要。
3. 简述传统方法学软件设计的基本原理及内容。
传统方法学也称生命周期方法学或结构化范型。
原理:
采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。
内容:
把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。
采用生命周期方法学可以大大提高软件开发的成功率,软件开发的生产率也能明显提高。
4. 以G.J.Myers的观点,简述对软件测试的定义。
G.Myers给出了关于测试的一些规则,这些规则也可以看作是测试的目标或定义。
(1) 测试是为了发现程序中的错误而执行程序的过程;
(2) 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案; (3) 成功的测试是发现了至今为止尚未发现的错误的测试。
从上述规则可以看出,测试的正确定义是“为了发现程序中的错误而执行程序的过程”。
5. 简述面向对象方法学的4个要点。
概括地说,面向对象方法学具有下述4个要点:
(1)把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。
(2) 把所有对象都划分成类(class)。
(3) 按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。
(4) 对象彼此间仅能通过发送消息互相联系。
6. 列举出5个详细设计阶段的常用工具。
程序流程图,盒图,PAD图(问题分析图),判定表,判定树,过程设计语言,
三、名词解释题
31.软件生存周期模型
描述软件开发过程中各种活动如何执行的模型
32.数据字典(DD)
数据字典是用来定义数据流图中的各个成分的具体含义的。
它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。
33.内聚性
内聚性是模块独立性的衡量标准之一,它是指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量
34.JSP方法
JSP方法是面向数据结构的设计方法,其定义了一组以数据结构为指导的映射过程,它根据输入,输出的数据结构,按一定的规则映射成软件的过程描述,即程序结构。
35.多态性
指相同的操作或函数、过程可作用于多种类型的对象上并获得不同结果。
或(不同的对象,收到同一消息可以产生不同的结果。
)
31.经济可行性
解:
进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。
32.社会可行性
解:
要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。
33.投资回收期
解:
投资回收期就是使累计的经济效益等于最初的投资费用所需的时间。
34.对应关系
解:
即有直接因果关系在程序中可以同时处理。
35.结构冲突
解:
输入数据与输出数据结构找不到对应关系的情况,称为结构冲突。
参考附录
1、软件危机是指在计算机开发过程中的开发和维护过程中所遇到的一系列的严重问题。
2、软件是程序、数据及相关文档的完整集合,程序是能够完成预定功能和性能的可执行的程序序列;数据是是使程序能够适当的处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。
3、软件工程学包含3个要素:
方法、工具、过程。
4、目前使用最广泛的软件工程方法学是传统方法学和面向对象方法学。
5、软件工程方法学的软件过程基本上可以用瀑布模型来描述。
6、瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。
7、Rup把软件生命周期划为:
初始、精化、构建、移交阶段。
8、可行性研究的三方面:
技术可行性、经济可行性、操作可行性。
9、数据流图(DFD)是一种图形化技术,他描绘信息流和数据从输入移动到输出的过程中所经受的变化。
10、数据字典是关于数据信息的集合,也就是对数据流程图中所包含的所有元素的定义的集合。
11、数据流图和数据字典共同构成系统的逻辑模型,没有数据字典,数据如就不严格,没有流程图,数据字典也难以发挥作用。
12、需求分析阶段结束之前,系统分析员应该写出软件需求规格说明书,以书面形式准确的描述软件需求。
13、结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法。
14、ER图中包含了实体、关系和属性,矩形代表实体,菱形表示关系,椭圆或圆角矩形表示属性,用直线把实体和其属性连接。
15、验证软件需求的正确性:
一致性、完整性、现实性、有效性。
16、总体设计的基本目的是回答"概括地说,系统应该如何实现?
",总体设计又称为概要设或初步设计。
17、模块的独立程度可以有两个定性标量度量:
内聚和耦合。
18、软件测试的目标:
(1)测试是为了发现程序中的错误而执行程序的过程;
(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;(3)成功的测试是发现可至今为止尚未发现的错误的测试。
19、软件测试步骤:
模块测试、子系统测试、系统测试、验收测试、平行运行。
20、软件可靠性是程序在给定的时间点,按照规格说明书的规定,成功的运行的概率。
21、用面向对象方法开发软件,通常需要建立3种形式的模型:
描述系统数据结构的对象模型,描述系统控制结构的动态模型和描述系统功能的功能模型。
22、用面向对象方法开发软件,在任何情况下,对象模型始终都是最重要、最基本的、最核心的。
23、通常,使用UML提供的类图来建立对象模型。
24、类与类之间通常有关联、泛化(继承)、依赖和细化等4种关系。
25、在UML中,在一段为空心的三角形的连线表示泛化关系。
26、复杂问题的对象模型通常由:
主题层、类与对象层、结构层、属性层和服务层。
27、广义的说,软件重用可分为知识重用、方法和标准的重用、软件成分的重用。
28、工程网络和Gantt图同样是安排进度和管理工程进度情况的强有力的工具。
29、3种典型人员组织方式:
民主制程序员组、住程序员组、现代程序员组。
30、软件过程的输出信息可以分为3类计算机程序、描述计算机程序的文档、数据,这些项组成了软件过程中产生的全部信息,人们把他们统称为软件配置,而这些项就是软件配置项。
31、Cmm把软件过程从无序到有序的进化过程分成5个阶段,并把这些阶段排序,形成五个逐层提高的等级。
能力的成熟度的5个等级从低到高依次是:
初始级(1级)、可重复级(2级)、已定义级(3级)已管理级(4级)和优化级(5级)。
32、软件危机的典型表现:
对软件开发成本和进度的估计常常很不准确;用户对"已完成"的软件系统不满意的现象经常发生;软件产品质量往往靠不住;软件常常是不可维护的;软件通常没有适当的文档资料;软件成本在计算机总成本中所占的比例逐年上升;软件开发生产效率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
33、软件不同于硬件,他是计算机系统的逻辑部件而不是物理部件。
34、软件不同于一般程序,它的一个显著特点就是规模庞大。
35、如何改进软件设计、提高软件质量?
(1)提高模块的独立性。
(2)模块规模应该适中。
(3)适当选择深度、宽度、扇出和扇入。
(4)模块的作用域应该在控制域之内。
(5)力争降低模块接口的复杂程度。
(6)设计单入口单出口的模块。
(7)模块功能应该可以预测。
36、软件的维护有哪4种类型?
①校正性维护②适应性维护 ③完善性维护 ④ 预防性维护。
37、软件的可维护性
软件可维护性指软件能够被理解、校正、适应及增强功能的容易程度。
38、什么是黑盒测试法?
常用的黑盒测试方法有哪些?
将程序当成是黑盒子以设计中的功能为标准在程序的接口出进行测试看它能否达到功能要求。
常见方法:
等价类划分、边界值分析、因果图、错误推测。
39、编码风格:
持续内部文档、数据说明、语句构造、输入输出、效率、
40、面向对象设计准则和启发式原则
(1)模块化
(2)抽象(3)信息隐藏(4)弱耦合(5)强内聚(6)可重用
(1)设计结果应该清晰易懂
(2)一般-特殊结构的深度应适当(3)设计简单的类(4)使用简单的协议(5)使用简单的服务(6)把设计变动减至最小
41、软件维护的几种类型
(1)改正性维护
(2)适应性维护(3)完善性维护(4)预防性维护
42、决定软件可维护性因素
(1)可理解性
(2)可测试性(3)可修改性(4)可移植性(5)可重用性 43、软件配置项
软件配置的主要任务就是控制变化,同时也负责各个软件配置项和软件各种版本的标志、软件配置审计以及软件配置发生的任何变化的报告。
(1)标识软件配置中的对象
(2)版本控制(3)变化控制(4)配置审计(5)状态报告
面向对象的模型:
对象模型,动态模型,功能模型
手机震动,来一条微信消息,他说:
“我开好房间了,等你!
他们都说你技术好,我想试试真假。
真的,我平时对你也不错吧,你可不能让我干等着呀。
”
她回:
“那好吧,你先等我,我在家里,先洗个澡,换身衣服吧。
”
半个小时后,她问:
“你在哪里开房?
”
“欢乐斗地主,电信一区,12号房间,不见不散哦。
”
“给老娘滚!
”
当然,以上是个笑话。
不过,近日成都一家燃气公司也发生了一件类似的事情,董事长在微信里发了一个六十块钱的红包,三名员工一时手痒,按耐不住诱惑,结果伸手一抢纷纷中招:
工作时间玩手机,罚款五百!
在面对记者采访时,董事长表示:
“我为了了解大家的思想动态,所以加入了员工的微信群里。
”
贵董事长显然忘记了,微信是一款私人社交APP,主要用于朋友间的情感交流,如果谈工作,我们有OA或IMO等专门的办公协作软件。
如果公司实在不成气候,一时没有使用这样的专业应用程序,也应当提前与员工约定,公司把QQ或者微信当做办公交流的专用软件。
没有事先的约定,董事长从微信里冒出来,就是以“朋友”的身份,而非“老板”的身份。
朋友发红包,抢还是不抢呢?
朋友上班抢红包,罚还是不罚呢?
显然,天真的员工把董事长当做了朋友,所以抢了红包,而老谋深算的董事长没有把员工当做朋友,所以罚了员工。
试探是一把双刃剑,你在试探别人的时候,往往先暴露了自己
。
然而,朋友圈里的试探之风经久不衰。
最常见的试探:
“清清吧,不用回。
试试吧,复制我发的消息,找到微信里的设置,通用,群发助手,全选,粘贴复制的信息发送就行,谁的发送失败了,就是把你拉黑了,你再扔掉那些尸体就OK啦!
”
发出这种试探信息的人,骨子里肯定极端自卑,而且平时很可能不大受待见,要不怎么老怀疑自己被朋友删了呢?
像马云,我猜他一定不会纠结于自己是不是被微信好友给删了。
我一般收到这样的消息,会当下把对方拉黑。
既然你连这点做人的底气都没有,咱俩之间的友谊连这点信任的基础都没有,我还有必要把你保留在我的朋友圈里吗?
试探朋友关系的升级版,是在朋友圈求助。
“临时急用,不多,就两千,哪位朋友方便的话请来电告诉我,事情万分紧急,不挨着问了,谢谢!
”
看到这样的信息,是朋友的自然要赶紧打个电话,电话接通那边却是云淡风轻,“没事儿,我就试试。
”你丫小学没毕业吧,狼来了的故事听过没?
下次你再说有急事,我可保不准是真是假,到时候看我帮不帮你。
还有,刚才急着打电话,晾了个好几亿的大单,你赔不赔?
你当我像你这么闲呢!
!
还有一种另类的试探,是从网上狂下美女图片,把自己的朋友圈打扮的花枝招展,然后换个昵称,换张头像,给自己的老公来一句:
“帅哥,约吗?
”
如果老公回一个心花怒放的表情,得咧,回去跪搓衣板吧。
小公主碎了一地的玻璃心,一时半会儿是哄不好了。
要是老公如柳下惠般一本正经,事情就这样完美收工了吗?
不,她会继续下载更妖艳更动人的图片,直到有一天老公随口地问一句:
“请问多少钱一晚?
”
男人记住,女人试探的时候,往往心里已经有了预设的结果,预设的结果没有出现,那就是自己试探的还不够。
带着一种不见黄河不死心,不见棺材不落泪的执着,女人生生把幸福推向远方。
女人,试想一下,假如你是一个男人,遇见一个才貌双全不求名利,一心只想倒贴给你的凡间仙子,难道你不会动心?
试探人性的弱点,只会暴露自己的无知。
而这样的试探,有百害而无一利,却有很多无知的朋友乐此不疲。
所以说,如果你缺乏安全感,不知道你的朋友是否把你当朋友,也不知道你的爱人是否把你当爱人,那你不妨多学习,多打扮,充实内心,提升自己。
记住,你若盛开,蝴蝶自来,无味的试探,只会使你化身荆棘,刺痛别人,刺伤自己!
生活有压力,经济有压力,学业有压力,晋升有压力,人际关系有压力,情感世界有压力,婚姻也有压力……人们的交谈中,无不涉及林林总总的压力。
压力像汽油桶被打翻,弥散到现代生活的各个领域,散发着浓烈的气味,我们躲不胜躲,防不胜防,它不定在哪个瞬间就燃起火焰。
其实,适当的压力是保持活性的重要条件。
如果空气没有了压力,我们的呼吸就会衰竭;
如果血液没有了压力,我们的四肢就会瘫痪;
如果水管子没有了压力,那结果是让任何一个住在高层楼房的人都噤若寒蝉的,你将失去可饮可用的清洁水。
20世纪