软件工程复习题.docx
《软件工程复习题.docx》由会员分享,可在线阅读,更多相关《软件工程复习题.docx(33页珍藏版)》请在冰点文库上搜索。
软件工程复习题
软件工程复习题(2015年)
1、软件的概念?
是在计算机系统支持下,能够完成特定功能和性能的程序、数据和相关的文档。
2、软件的特点?
1.软件是一个逻辑实体,具有抽象性
2.软件的生产没有明显的制造过程
3.软件在运行和使用期间,没有硬件那样的机械磨损和老化问题,但存在软件退化问题
4.软件开发和运行受到计算机系统的限制
5.虽然软件产业正在向基于构件的组装前进,大多数软件仍是定制的;
6.软件研制成本多为人力资源成本
7.软件是复杂的
8灵活性(软件巧妙工作同时也复杂、难以理解,依赖开发者)
3、简述软件质量要素包括那些内容?
正确性、可用性、可靠性、有效性、
可维护性、可移植性、安全性、可复用性
4、软件工程的定义?
是研究和应用如何以系统化的、规范的、可度量的方法去开发、运行和维护软件,即把工程化应用到软件上。
5、软件工程方法学的定义?
用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。
6、软件过程的定义,软件工程的过程包括哪些内容?
为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
过程模型、过程活动、过程改进等。
7、软件危机产生的原因是什么?
危机产生的原因:
1、用户对需求的描述的二义性、不准确性、遗漏或错误
2、开发人员对需求的理解有偏差
3、缺乏管理经验
4、开发人员的分工不够明确
5、缺乏有力的方法学和工具支持
8、软件工程的四个发展阶段?
一、20世纪50年代初期至20世纪60年代末期
科学计算—手工作坊—软件危机
二、20世纪60年代初期至20世纪80年代末期
“手工作坊”—“工业化生产”:
软件工程
三、20世纪80年代初期至20世纪90年代末期
构件级别的复用,软件成熟度模型(CMM)
四、2000年至今
广泛采用统一建模语言UML和统一过程RUP
9、瀑布模型、增量过程模型、快速原型模型、螺旋模型能够简述其特点以及优缺点。
能够根据需求描述选择合适的过程模型。
1、瀑布模型:
将软件生存周期的各项活动规定为依照固定顺序连接的若干阶段工作,形如瀑布流水,最终得到软件产品。
·特点:
各阶段按顺序进行,依赖性,评审每一阶段保证质量,推迟程序的物理实现
·瀑布模型优点:
(1)采用规范化方法,规定了每个阶段必须提交的文档,属于文档驱动模型
(2)阶段化评审,保证软件质量,降低成本
·瀑布模型缺点:
(1)需求确定下来才能进行后续的软件开发工作,但大型软件项目难以给出全部需求。
(2)成品时间长,风险较大,缺乏灵活性
(3)文档驱动模型,错误难于及早发现。
·瀑布模型适用于需求明确的软件,如物理系统中的嵌入式软件或大型软件系统的某些部分
2、快速原型模型:
由于在项目开发的初始阶段人们对软件的需求认识常常不够清晰,因而使得开发项目难于做到一次开发成功,出现返工再开发在所难免。
做两次:
第一次只是试验开发,其目标只是在于探索可行性,弄清软件需求。
第二次则在此基础上获得较为满意的软件产品。
·快速原型模型特点:
(1)本质是“快速”
(2)原型作为第一个系统,分为抛弃型原型和进化型原型;
(3)开发过程的交互性和迭代性;
·快速原型模型优点:
(1)充分发挥用户在软件开发初期的作用;
(2)开发周期较短、成本较低、风险较小。
(3)有利于尽早获得更符合需求的模型,提高软件质量
·快速原型模型缺点:
ª大部分情况是,不合适的软件界面被采用-----目的为了演示功能,不合适的开发工具被采用------仅仅为了它的方便,还有不合适的操作方法被选择等等。
·迷惑客户抢占市场
3、增量模型:
增量模型也称为渐增模型,使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。
每个构件由多个相互作用的模块构成,并且能够完成特定的功能。
·增量模型特点:
⑴增量模型强调每一个增量均发布一个可操作和可测试的产品。
ª⑵实现各个构件前就全部完成需求分析、规格说明和概要设计的工作。
ª⑶既要求开发人员把软件看作一个整体,又要求开发人员把软件看作构件序列。
·增量模型优点:
⑴ª能够在较短的时间内向用户提交可完成部分工作的产品。
⑵软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。
ª⑶增加客户了解和适应新参品的时间。
·增量模型缺点:
ª面临着无法集成的风险或无法预知的错误。
加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。
增加了设计时的难度。
增量规模不能大,否则会暴露瀑布模型的缺点。
4、螺旋模型:
1988年,BarryBoehm正式发表了软件系统开发的“螺旋模型”,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。
·螺旋模型的特点
(1)紧密围绕开发中的风险问题,用风险分析推动软件设计向深一层扩展、求精;
(2)强调持续地判断、确定和修改用户任务目标,并按成本、效益来分析候选的软件产品性质对任务目标的贡献;
(3)把软件开发过程组成为一个逐步细化的可定义周期(螺旋周期)序列,每经历一个周期,系统就得到进一步的细化和完善;
·螺旋模型的优点
(1)有利于软件的重用,有助于把软件质量的保证
(2)减少过多测试和测试不足所带来的风险
(3)维护和开发没有本质的区别
螺旋模型的缺点
(1)软件开发人员应该擅长寻找可能的风险
(2)螺旋模型只适合于大规模软件项目
10、RUP统一建模的过程。
RUP(RationalUnifiedProcess)模型(统一软件开发过程模型)
RUP是由Rational公司(现被IBM公司收购)开发的软件工程过程框架,是一个面向对象的基于UML的程序开发方法论。
将软件的生存周期和软件开发过程组成二维模型。
RUP将软件生存周期,即软件制品的进化状态划分为初始、细化、构造、移交、生产5个阶段。
RUP将软件开发过程分解为业务建模、需求、设计、实现、验证和确认(V&V)、部署、配置和变更管理、项目管理、环境9个工作流。
····时间上的四个阶段····
1、初始阶段
软件制品:
业务术语表、业务用例、原型、业务模型、初始风险评估、项目规划。
可能使用的UML语言机制:
描述需求的用例及用例图、表示业务处理过程的活动图、表示用例内部实现过程的交互图等。
2、细化阶段
软件制品:
需求规约、软件体系结构、修正的风险评估、项目计划(迭代计划、工作流、里程碑)、工作手册初稿
以UML类图表示的目标软件系统所处应用领域中的概念及概念间的关系构成领域概念模型;以UML交互图表示的用例内部的交互过程;以UML类图、状态图、活动图等表示的需求分析模型,等等。
3、构造阶段
软件制品进一步细化为软件体系结构、构件和模块、程序源代码、文档、测试用例等。
用UML的类图、交互图、活动图、状态图和构件图表示。
4、移交阶段
软件产品进化为源代码和可执行代码,在实际操作环境中正常工作,并有配套的文档及用户手册、安装手册等。
UML语言机制主要是部署图。
*5、生产阶段
软件运行日志、手册、软件维护文档、软件配置管理等。
·············核心工作流········
1、商业建模
建立商业用例(businesscase)
2、需求
对功能需求、非功能需求以及约束条件进行提取、组织、文档化形成用例模型和补充规范。
3、分析和设计
将需求转化为目标系统的设计,开发一个稳定的体系结构。
设计模型是源代码的抽象,由设计类和一些用例实现组成。
体系结构由用例视图,逻辑视图,并发视图,部署视图和构件视图来表达
4、实现
定义代码的组织结构,实现类和对象,进行单元测试以及集成开发成果。
5、测试
对软件原型和文档的审查,对软件构件或子系统的测试,交付软件版本的确认测试,贯穿开发的全过程。
6、部署
成功的生成版本并发布给最终用户,包括打包、安装、为用户提供帮助等。
有些情况下,还可能包括计划并进行beta版本测试
7、配置和变更管理
需求变更已成为常态,将伴随软件生存周期的全过程。
8、项目管理
软件开发组织按照法定程序,承接的正式软件开发任务。
9、环境
向软件开发组织提供软件开发、维护的工具和环境。
11、UML是什么?
统一建模语言(UnifiedModelingLanguage,UML)是一种应用于任何软件开发过程的标记法和语义语言。
·UML提供一组具有明确语义的图形符号,可以建立清晰的模型便于交流,同时所有开发人员都可以无歧义地解释这个模型。
·UML不是一种可视化的编程语言,但它所描述的模型可以映射成不同的编程语言
·UML不是过程,也不是方法,但允许任何一种过程和方法使用它。
12、正向工程和逆向工程的含义?
UML不是一种可视化的编程语言,但它所描述的模型可以映射成不同的编程语言,这种映射可以进行正向工程--从UML模型到编程语言的代码生成,也可以进行逆向工程--由编程语言代码重新构造UML模型。
13、UML5种视图的作用,每种视图通常使用的UML图有哪些?
用例视图(UseCaseView):
从用户的角度看到的或需要的系统功能。
结构视图(StructuralView):
展现系统的静态和结构组成及特征。
行为视图(BehavioralView):
描述系统的动态行为。
构件视图(ComponentView):
关注软件代码的静态组织和管理。
部署视图(DevelopmentView):
描述硬件的拓扑结构以及软件和硬件的映射问题。
用例
用例(UseCase)是执行者(Actor)与目标系统之间一次典型的交互作用,其效果就是执行者在软件系统的帮助下完成某项相对独立和完整的业务功能。
·用例
从软件系统内部的视角出发,一个用例代表着系统执行的一些列动作,动作执行的结果能够被外部的执行者所察觉。
·执行者
外部用户或外部实体在系统的交互过程中扮演的角色,它与软件系统交换信息并使用软件系统的功能。
UseCase是功能性软件需求的主体部分,具备相对独立性和完整性两项特征。
(1)包含(Include):
B是A的某项子功能,常用来将多个用例中公共的子功能项提取出来,避免重复和冗余。
例如“用户身份验证”与多个用例之间建立包含关系。
(2)扩展(Extend):
A与B相似,但A的功能较B多。
例如“制定选课计划[考虑学生数量限制]”
(3)继承(inheritance):
A与B相似,但A的动作序列是通过改写B的部分动作。
例如“制定优优异生选课计划”用例与普通的选课计划要求不同。
必须符合继承关系的可替代性原则。
类图
描述面向对象软件系统的静态结构。
·领域概念模型:
即业务领域中的概念及概念之间的关系。
·需求分析阶段为需求模型的静态结构
·软件设计和实现阶段,类图表示软件的结构及详细设计
(1)属性(attribute)
属性用来描述类的特征,表示需要处理的数据。
(2)操作
对数据的具体处理方法的描述则放在操作部分,操作说明了该类能做些什么工作。
操作通常称为函数,它是类的一个组成部分,只能作用于该类的对象上。
类之间的关系
(1)关联关系:
两个类之间不同于继承和聚合的一种语义和逻辑上的联系。
(2)泛化:
表示一般与特殊的关系,即“一般”元素是“特殊”关系的泛化。
(3)依赖:
表示对象间语义的关系,并且B的变化会导致A必须相应进行修改,则A依赖于B。
(4)实现:
一个具体类实现一个接口。
(5)组合:
表示整体与部分的关系,一个部件类的对象只能位于整体类的对象之中,一旦整体类对象消亡,其中的部件类也被注销。
(6)聚合:
表示集体与个体的关系。
活动图
一、概述
活动图(ActivityDiagram)的应用非常广泛,它既可用来描述操作(类的方法)的行为,也可以描述用例和对象内部的工作过程,并可用于表示并行过程。
活动图是由状态图变化而来的,它们各自用于不同的目的。
活动图描述了系统中各种活动的执行的顺序。
刻化一个方法中所要进行的各项活动的执行流程。
活动图中一个活动结束后将立即进入下一个活动(在状态图中状态的变迁可能需要事件的触发)。
二、活动图的模型元素
构成活动图的模型元素有:
活动、转移、对象、信号、泳道等。
1.活动
是构成活动图的核心元素,是具有内部动作的状态,由隐含的事件触发活动的转移。
活动还有其它的图符:
初态、终态、判断、同步。
14、软件需求的分类?
软件需求
利益相关方(Stakeholder)对目标软件系统在功能、质量等方面的期望,以及对目标软件系统在运行环境、资源消耗等方面的要求或约束。
(1)扩投资于软件项目并希望利用目标软件获取商业利益的客户(Customer)
(2)直接使用目标软件开展业务工作的用户(User)。
(1)功能需求
利益相关方要求目标软件系统应该具有的功能
例如:
“制定选课计划”,“接受并处理传感器数据”
(2)质量需求
例如“性能:
所有界面操作的响应时间小于1.5秒”
“可靠性:
任何故障不可导致用户已提交的数据丢失”
(3)约束性需求
在项目预算、完成时间、技术选型、必须遵循的标准与规范等方面提出的要求,及其它对目标系统的约束
例如“家庭保安系统中可供软件使用的内存为1MB”
“必须采用特定的操作系统”
15、软件的利益相关方可能包括哪些人?
(5种相关方以上)
(1)扩投资于软件项目并希望利用目标软件获取商业利益的客户(Customer)
(2)直接使用目标软件开展业务工作的用户(User)。
(3)项目经理、分析员、程序员、商业顾问、
16、需求调查的基本方法有哪些?
1.访谈和会议
从抽象到具体,循序渐进地提问。
问题是公正的。
封闭性问题:
“每名学生每学期最多可选多少门课程”,需谨慎,避免误导用户错误回答。
开放性问题:
“提交给计费系统的学生选课信息汇总表应包含哪些信息”
2.调查问卷
如果用户群庞大或者地理分散,无法纳入访谈或会议,可以设计调查问卷。
3.业务文档
理解业务术语和业务过程。
17、需求开发和需求管理包括哪些内容?
18、结构化分析的分析模型包括哪些内容?
结构化分析方法(StructuredAnalysis,简称SA方法)是70年代中期提出的一种面向数据流、自顶向下、逐步求精进行需求分析的方法。
结构化分析方法适合于数据处理类型软件的需求分析。
基于计算机的信息处理系统由数据流和一系列的转换构成,即IPO(Input-Process-Output)模型。
结构化分析得到的分析模型包括数据模型、功能模型和行为模型。
该模型以"数据字典"为核心,它描述了软件使用的所有数据对象,围绕这个核心的是"实体关系图"、"数据流图"和"状态转换图"。
*实体关系图(Entity-RelationshipDiagram,ERD):
作为数据建模的基础,描述数据对象及其关系;
*数据流图(DataFlowDiagram,DFD):
作为功能建模的基础,描述数据怎样转换以及转换的功能;
*状态转换图(State-TransitionDiagram,STD):
作为行为建模的基础,表示系统的各种行为状态以及状态间的转换方式。
19、能够根据需求描述绘制分层的数据流图。
数据流图是结构化分析的基本工具,它描述了信息流和数据转换,通过对数据加工进行分解可以得到数据流图。
·数据流图的制作过程
1确定系统源点/终点
2分析处理(根据输入/输出数据)
3确定数据流和数据存储
20、数据字典的作用是什么,能够根据提示描述数据组成。
·数据词典与数据流图配合,能清楚地表达数据处理的要求
·数据词典精确地、严格地定义了每一个与系统相关的数据元素,并以字典式顺序将它们组织起来,使得用户和分析员对所有的输入、输出、存储成分和中间计算有共同的理解。
1.内容
(a)一般说来,数据字典应该由下列四类元素的定义组成:
◆数据流◆数据流分量(即数据元素)
◆数据存储◆处理
3.数据字典的用途
·作为分析阶段的工具。
·数据字典中包含的每个数据元素的控制信息是很有价值的。
·数据字典是开发数据库的第一步,而且是很有价值的一步。
21、结构化分析中使用的其他三种图形工具为?
在进行需求分析时,经常
·层次方框图
·Warnier图
·IPO图
22、用例图的概念和特征,能够根据需求描述绘制用例图。
例:
保安系统、选课系统
23、类图的表示方法,能够区分UML中6种连接关系的表示方法,并举例说明。
(1)关联关系:
两个类之间不同于继承和聚合的一种语义和逻辑上的联系。
多重性0..1,0..*(0到任意多个,与*等同),m..n
例如每名学生可选0到多门课程。
和业务规则相关,一旦规则改变模型也改变,所以不必直接标定于UML图中,在伴随文档中描述即可。
角色:
参与关联的类的对象在关联中扮演的角色或发挥的作用。
例如“学生”和“教师”的关联中,前者扮演“学习者”角色
约束特性说明针对参与关联的对象的逻辑约束
例如﹛ordered﹜表示如果一门课程设置有多位教师,那么他们之间是有序的。
(2)泛化(继承):
表示一般与特殊的关系,即“一般”元素是“特殊”关系的泛化。
(3)依赖:
表示对象间语义的关系,并且B的变化会导致A必须相应进行修改,则A依赖于B。
(4)实现:
一个具体类实现一个接口。
(5)组合:
表示整体与部分的关系,一个部件类的对象只能位于整体类的对象之中,一旦整体类对象消亡,其中的部件类也被注销。
(6)聚合:
表示集体与个体的关系。
24、掌握活动图状态图的作用,及其模型元素有哪些?
一、概述
活动图(ActivityDiagram)的应用非常广泛,它既可用来描述操作(类的方法)的行为,也可以描述用例和对象内部的工作过程,并可用于表示并行过程。
活动图是由状态图变化而来的,它们各自用于不同的目的。
活动图描述了系统中各种活动的执行的顺序。
刻化一个方法中所要进行的各项活动的执行流程。
活动图中一个活动结束后将立即进入下一个活动(在状态图中状态的变迁可能需要事件的触发)。
二、活动图的模型元素
构成活动图的模型元素有:
活动、转移、对象、信号、泳道等。
2.转移
转移描述活动之间的关系,描述由于隐含事件引起的活动变迁,即转移可以连接各活动。
转移用带箭头的直线表示,可标注执行该转移的条件,无标注表示顺序执行。
25、简述用例驱动的需求获取过程?
用例驱动的需求获取过程
(1)定义软件问题
标示客户和用户
理解业务背景
策划并实施需求调查
定义软件系统的轮廓,包括目标、业务价值、范围及边界。
(2)创建框架用例
策划并实施用例调查;
以框架用例记录用例调查的结果;
创建用例图;
整合并评审框架用例。
(3)精化用例
用例交互动作序列的描述
分解和合并用例
构件完整用例
精华用例图
(4)评审用例模型
26、为什么需要软件分析和软件设计,分析模型主要采用哪些UML图表示?
软件设计是开发阶段中最重要的步骤,它是软件开发过程中质量得以保证的关键步骤。
设计提供了软件的表示,使得软件的质量评价成为可能。
同时,软件设计又是将用户要求准确地转化成为最终的软件产品的唯一途径。
另一方面,软件设计是后续开发步骤及软件维护工作的基础。
如果没有设计,只能建立一个不稳定的系统。
类图、活动图、交互图与状态图
27、简述顺序图构成及含义、同步消息和异步消息的概念?
顺序图(SequenceDiagram)用来描述对象之间动态的交互行为,着重体现对象间消息传递的时间顺序。
顺序图构成:
·一组对象(对象名和类名)
·对象生命线(时间轴)
·对象被激发
·对象间的通信(消息)
同步消息(synchronous):
发送者等待消息接收对象将消息处理完成后再继续。
异步消息(asynchronous):
发送者在发送完消息后不等待接收方即继续自己的处理。
28、能够完成顺序图和通信图之间的转换。
29、状态图的构成,掌握状态节点的表示方法,掌握UML中的4类事件。
描述一个实体在事件刺激下的反应式行为。
它包含实体所有可能的状态、在每个状态下能够响应的事件以及事件发生时的状态变迁与响应动作。
·········4个基本概念······
·状态
对象的状态对应于由对象的属性构成的一个约束条件,无论对象在其生命周期中属性值如何变化,当属性值满足此约束条件时,对象对事件的响应行为完全一样。
·事件
对象的生命周期中某个时刻点上发生的、值得关注的针对该对象的一种瞬时刺激或触动。
消息型事件、信号型事件、时间事件、条件型事件。
·活动
·动作
······构成·······
状态节点(包括初态和终态)、迁移
其中状态节点由状态名、入口活动、出口活动、do活动和内部迁移构成
·········4类事件·······
消息型事件、同步消息
信号型事件、异步信号
时间事件、相对时刻点
条件型事件。
变化导致某个条件成立
30、嵌套的状态图的表示方法。
状态图可能有嵌套的子状态图,且子状态图可以是另一个状态图。
子状态又可分为两种:
“与”子状态和“或”子状态,
31、UML扩充机制有哪些,其表现形式是什么?
1、约束
{约束体}:
表示某种语义限制。
常用约束的模型元素:
类、属性、操作、关联关系等。
2、标记值
名——值对,如{isUser=false}
3、构造型
<<构造型名称>>,如<>
建模者自定义的语义信息,可以用自然语言,也可以通过约束、标记值予以更精确的定义。
32、用例分析的子活动,分析类是什么,如何设置分析类?
用例分析的子活动
·精化领域概念模型
·设置分析类
·构思分析类之间的协作关系
·导出分析类图
······分析类:
完成用例的功能而假想的逻辑职责单元。
····
设计类:
考虑软件结构、用户界面和软件复用等因素。
实现类:
考虑目标软件的运行支撑环境,和面向对象的编程实现细节。
从功能需求的角度看,用例的业务逻辑处理功能主要由3种分析类协同完成。
1、边界类
界面控制:
包括输入数据的格式及内容转换,输出结果的呈现,软件运行过程中界面的变化与切换等。
外部接口:
实现目标软件系统与外部系统或外部设备之间的信息交流和互操作,主要关注跨越目标软件系统边界的通信协议。
环境隔离:
将目标软件系统与操作系统、数据库管理系统、应用服务器中间件等环境软件进行交互的功能与特性封装于边界类之中,使目标软件系统的其余部分尽可能地独立于软件。
2、控制类
负责协调、控制其他类共同完成用例规定的功能或行为。
通常一个用例对应一个控制类。
将任务分解,如何将子任务分派给其他类,并协调这些类的工作。
如家庭保安系统的“监视器”是典型的控制类
3、实体类
负责保存目标软件系统中具有持久意义的信息项并向其他类提供信息访问的操作。
具有“内向收敛”特征,一般不涉及业务逻辑处理。
如在家庭保安系统中的“异常事件”和“日志”均为实体类。
33、可以根据C++代码绘制顺序图,并导出分析类图。
34、简述并解释软件设计的基本原理。
一、模块化