软件工程导论复习指南Word文档下载推荐.docx
- 文档编号:20930641
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:15
- 大小:741.25KB
软件工程导论复习指南Word文档下载推荐.docx
《软件工程导论复习指南Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《软件工程导论复习指南Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
集成软件性能成熟度模型,是一个过程元模型,定义了如何建立完整的软件过程,软件组织所应该具备的过程特征。
分为不完全级、已执行级、已管理级、已定义级、已定量管理级、优化级。
10.软件神话:
即关于软件及其开发过程的一些说法被人盲目相信,这些可以追溯到信息处理技术发展的初期。
神话的一些表象使人捉摸不透。
a)管理神话(开发宝典,人越多越好)从业者神话(只顾编程)用户神话(顾客错误的期望)
第二章过程模型
11.惯例模型:
瀑布,增量,RAD,原型,螺旋,基于构建的开发,统一过程(UnifiedProcess,UP)
12.瀑布模型waterfall,又被称为经典生命周期,它提出了一个系统的、顺序的软件开发方法,从用户需求规格说明开始,通过策划、建模、构建和部署的过程,最终提供一个完整的软件并提供持续的技术支持。
a)v-mod:
瀑布模型的改进。
13.增量过程模型
1增量模型以迭代的方式运用瀑布模型。
2运用增量模型的时候,第一个增量往往是核心产品。
14.快速应用程序开发(RapidApplicationDevelopment,RAD模型)是一种侧重于短暂的开发周期的增量软件过程模型。
15.使用原型prototyping开发的情况
1客户提出了软件的一些基本功能,但是没有详细的定义输入、处理和输出需求;
2开发人员可能对算法的效率、操作系统的兼容性和人机交互的形式等情况不确定。
b)当需求很模糊的时候,原型开发范型帮助软件工程师和客户更好地理解究竟需要做什么。
16.螺旋spiral模型是一种风险驱动型过程模型的生成器,对于软件集中的系统,它可以指导多个共利益者的协同工作。
a)它有两个显著的特点:
1采用循环的方式逐步加深系统定义和实现的深度,同时降低风险;
2确定一系列里程碑,确保共利益者都支持可行的和令人满意的系统解决方案。
17.在“快速原型”模型中软件原型的作用主要是:
软件开发人员与用户沟通的强有力工具,因此有助于所开发出的软件产品满足用户的真实需求。
18.螺旋模型中引入风险分析
19.瀑布模型是典型的传统软件工程生命周期模型
20.统一过程①“用例驱动,以架构为核心,迭代并且增量”;
②它建立了一种迭代的、增量的过程流,提供一种演进的特性。
21.个人软件过程(PSG)强调产品以及产品质量的个人测量。
a)团队软件过程(TSP)的目标是建立一个能够“自我管理”的项目团队,团队能自我组织惊醒高质量的软件开发。
第三章敏捷开发
22.敏捷宣言:
我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人。
由此我们建立了如下价值观:
1个体和互动高于流程和工具
2工作的软件高于详尽的文档
3客户合作高于合同谈判
4响应变化高于遵循计划
5也就是说,尽管右项有其价值,我们更重视左项的价值。
23.敏捷过程三个假设:
需求的预测和变化,设计和构建的交替,计划与变化
24.敏捷是什么:
敏捷不仅仅是有效地响应变化,它还鼓励能够在组员之间、技术和商务人员之间、软件工程师和经理之间进行更便利沟通的团队结构和协作态度,强调可运行软件的快速交付而不是中间产品,将客户作为开发组成员以消除持续、普遍存在于多数软件项目中的“区分你我”的态度,意识到在不确定的世界里计划是有局限性的,它必须是可以调整的。
25.敏捷过程模型agileprocessmodel:
强调项目的灵活性,并在一些基本原则的指导下,采用非正式的方式执行软件过程。
如Web应用开发
26.掌握XP的阶段:
策划,设计,编码,测试
27.极限编程
第四章指导实践的原则
28.核心原则:
存在价值,维护视图,保持简洁,生产者要让消费者理解,面向未来,计划复用,认真思考
29.Boehm的W5HH原则:
为什么要开发?
要做什么东西?
什么时候完成?
功能谁负责?
组织位于哪里?
怎样才能在工作中体现技术和管理?
需要多少资源?
30.需求工程:
需求工程是帮助软件工程师更好地理解将要解决的问题,包含一系列任务有帮于理解软件将如何影响业务、客户想要什么以及最终用户如何和软件交互。
31.建模实践:
在软件工程中,要创建两类模型:
分析模型和设计模型。
32.分析模型通过以下三个不同域描述软件来表达客户的需求:
信息域、功能域、行为域。
33.设计模型表述了可以帮助开发者开发软件的特征:
架构、用户界面、构建细节。
34.分析建模原则
1必须描述并理解问题的信息域;
2必须确定软件所要实现的功能;
3必须描述软件的行为;
4描述信息、功能和行为的模型必须以一种能揭示分层细节的方式分解开来;
5分析人物应该从本质信息转向实现细节。
35.设计建模的原则
1设计可追溯到分析模型;
2经常关注特建系统的构造;
3数据设计与功能设计同等重要;
4必须设计接口;
5用户界面设计必须符合最终永华要求;
6功能独立的构件级设计;
7构件之间以及构件与外部环境之间松散耦合;
8设计表述应该做到尽可能易于理解;
9设计应该迭代式进行,每一次迭代,设计者都应该尽力简化。
36.构造实践
37.构建活动包括一系列编码和测试任务。
38.测试原则
39.软件测试的目标:
1测试是一个以查找程序错误为目的的程序执行过程;
2一个好的测试用例能最大限度地找到尚未发现的错误;
3一个成功的测试能找到那些尚未发现的错误。
40.部署:
部署活动包括三个动作:
交付、支持和反馈。
41.UML系统建模
42.OCL对象约束语言:
通过允许软件工程师使用形式化的语法和文法构建各种设计模型元素,利用这些无歧义描述作为UML的补充。
43.连接设计和构造的桥梁
44.理解问题的需求是软件工程师所面对的最困难的任务之一。
45.需求工程是一个软件工程动作,开始于沟通并持续到建模。
创建用户的信息、功能、行为模型。
46.导出
47.为什么导出需求这么困难?
1范围问题:
系统的边界不清楚,或客户/用户的说明带有多余的技术细节
2理解问题:
客户/用户并不完全确定需要什么,与系统工程师在要求沟通上有问题
3易变问题:
需求随时间变化
48.精化:
精化阶段需求工程活动集中于开发一个精确的技术模型,用以说明软件的功能、特征和约束。
49.质量功能部署(QFD)
质量功能部署是一种将客户要求转化成软件技术需求的技术。
有三类需求:
正常需求、期望需求、令人兴奋的需求。
50.构建分析模型(细看)
51.数据建模的概念
52.基于场景建模
53.控制规格说明(CSPEC)CSPEC使用两种不同的方式表现系统的行为。
它包含一个状态图
54.处理规格说明(PSPEC)PSPEC用于描述出现在求精过程中最终层次的所有流模型的处理。
55.生成行为模型
56.状态度。
行为模型的组成之一
57.顺序图。
第二种表现行为的方式
58.软件工程馆衡中搞得设计
59.软件设计在软件工程过程中处于技术核心,并且和它的应用与所用的软件过程模型无关。
60.设计表示法和设计方法:
1数据/类设计,将分析类模型转化为设计类的实现以及软件实现所要求的数据结构。
2体系结构设计,定义了软件的主要结构元素之间的联系,可用于达到系统所定义区域的体系结构风格和设计模式以及影响体系结构实现方式的约束。
3接口设计,描述了软件和协作系统之间、软件和使用人员之间是如何通信的。
4构件级设计,将软件体系结构的结构元素变换为对软件构件的过程性描述。
61.软件设计的重要性可以用一个词来表达---质量。
62.设计概念
设计四要素:
数据、体系架构、结构。
构建。
63.部署级设计元素
部署级设计元素指明软件功能和子系统将如何在支持软件的物理计算机环境内分布。
64.基于模式的软件设计
65.软件体系结构
一个程序和计算系统软件体系结构是指系统的一个或者多个结构。
结构中包括软件的构件,构件的外部可见属性以及它们之间的相互关系。
66.体系结构之所以关键的三个原因:
1软件体系结构的表示有助于对计算机系统开发感兴趣的各方开展交流;
2体系结构突出了早期设计决策,这些决策对随后的所有软件工程工作有深远的影响,同时对系统作为一个可运行实体的最后成功有着重要作用。
3体系结构“构建了一个相对小的,易于理解的模型,该模型描述了系统如何构成以及其构件如何一起工作”。
67.体系结构风格的简单分类
以数据为中心的体系结构
数据流体系结构
调用和返回体系结构
面向对象体系结构
层次体系结构
映射数据流到软件体系结构
68.设计基于类的构件
69.开关原则(OCP):
模块应该对外延具有开放性,对修改具有封闭性。
70.Liskov替换原则(LSP):
子类可以替换它们的基类。
71.依赖倒置原则(DIP):
依赖于抽象,而非具体实现。
72.接口分离原则(ISP):
多个用户专用接口比一个通用接口要好。
73.发布复用等价性原则(REP):
复用的粒度就是发布的粒度。
74.共同封装原则(CCP):
一同变更的类应该合在一起。
75.共同复用原则(CRP):
不能一起复用的类不能被分到一组。
76.内聚性:
把内聚性描述为构件的专诚性。
77.耦合性:
耦合是类之间彼此联系程度的一种定性度量。
78.黄金规则
1置用户于控制之下;
2减少用户的记忆负担;
3爆出界面的一致。
79.验证与确认
80.验证是指确保软件正确地实现某一特定功能的一系列活动。
81.确认则是指的是确保开发的软件可追溯到用户需求的另外一系列活动。
82.传统软件的测试策略
83.单元测试
84.集成测试
85.自顶向下优点:
不需要测试驱动程序,能够在测试阶段的早期实验并验证系统的主要功能,
a)而且能在早期发现上层模板的接口错误。
2缺点:
需要存根程序,可能遇到与此相联系的测试困难,低层关键模板中的错误
a)发现较晚,而且用这种方法早期不能充分展开人力。
86.自底向上优点:
由于驱动模块模拟了所有调用参数,测试模式返回结果不影响驱动模式,
i.生成测试数据也没有困难,如果关键模块式在结构图的底部,自底向上测
ii.试是有优越性的,且自底向上的组装测试不必开发脏模块。
当最后一个模块尚未测试时,还没有呈现出被测试软件系统的雏形。
87.α测试与β测试
88.α测试是由最终用户在开发者的场所进行。
软件在自然环境下使用,开发者站在典型用户的后面观看,并记录错误和使用问题。
α测试在受控的环境下进行。
89.β测试是在最终用户场所执行。
开发者通常不在场。
因此,β测试是在不为开发者控制的环境下软件的“现场”应用。
最终用户记录测试过程中遇见的所有问题,并将其定期地报告给开发者。
90.软件测试基础
91.软件可测试性就是(计算机程序)能够被测试的容易程度。
92.白盒测试与黑盒测试
白盒测试:
了解产品的内部运行情况,可以执行测试以确保”所有齿轮吻合“--即内部操作依据规格说明执行,而且对所有的内部构件已进行了充分测试。
黑盒测试:
了解已设计产品所完成的指定功能,可以执行测试以显示每个功能是可操作的,同时,查找每个功能中的错误。
93.白盒测试
软件工程师设计的测试用例可以:
1保证一个模块中的所有独立路径至少被执行一次;
2对所有的逻辑值均需测试真和假;
3在上下边界及可操作的范围内执行所有的循环;
4检验内部数据结构以确保其有效性。
94.黑盒测试
黑盒测试可用的用例集:
a)能够减少达到合理测试所需的附加测试用例数;
b)能够告知某些错误类型是否存在,而不是仅仅知道与特定测试相关的错误。
题型分析
名词解释15分
★★★★★
软件是:
1.指令的集合,通过执行这些指令可以满足预期的特征、功能和性能需求。
2.数据结构,它使得程序可以充分利用信息。
3.描述程序操作和使用的文档。
软件工程:
1.将系统化、规范化、度量化的方法应用到软件开发中
2.1中方法的研究。
软件工程的层次:
工具(tool)方法(method)过程(process)质量关注点
遗留软件:
变更(软件的维护)推动软件演化:
需求工程:
黄金规则:
1.置于用户控制之下
2.减少用户记忆负担
3.保持界面一致
OCL对象约束语言:
惯例模型:
瀑布,增量,RAD,原型,螺旋,基于构建的开发,UP
螺旋模型:
是一种风险驱动型过程模型的生成器,对于软件集中的系统,它可以指导多个共利益者的协同工作。
它有两个显著的特点:
①采用循环的方式逐步加深系统定义和实现的深度,同时降低风险;
②确定一系列里程碑,确保共利益者都支持可行的和令人满意的系统解决方案。
信息隐蔽:
指在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说,是不能访问的
验证与确认:
验证是指确保软件正确地实现某一特定功能的一系列活动。
确认则是指的是确保开发的软件可追溯到用户需求的另外一系列活动。
分析建模的方法:
1.结构化分析
2.面对对象的分析
UML:
统一建模语言,对软件进行可视化,规约,构造,文档化的一种语言
Prototypingmodel:
先建立一个能够满足用户主要需求的原型,让用户实际看一下未来系统的面貌,以便判断哪些功能是符合需要的,哪些方面还需要改进,然后将原型反复改进,直至建立完全符合用户要求的新系统。
Functionalindependence:
功能独立性是模块化和抽象及信息隐藏概念的直接产物,并且是通过开发具有“单一”功能和“反对”同其他模块的过分交互的模块而实现。
CMMI:
Software:
①软件是设计开发的,而不是传统意义上生产制造的;
②软件不会“磨损”;
③虽然整个工业向着基于构件的构造模式发展,然而大多数软件仍是根据实际的顾客需求定制的
RADmodel:
快速应用程序开发(RAD)是一种侧重于短暂的开发周期的增量软件过程模型
★★★★☆
1.Use-Cases
指从系统外部可见的系统的一个功能,也就是描述系统应该完成什么功能。
2.Waterfallmodel
是一种基于软件生存周期的线性开发模型。
它提出了一个系统的、顺序的软件开发方法,从用户需求规格说明开始,通过策划、建模、构件和部署的过程,最终提供一个完整的软件并提供持续的技术支持。
3.Incrementalmodel
增量模型:
以迭代的方式运用瀑布模型。
这种模型把软件看作是一系列相互联系的增量,在开发过程的各次迭代中,每次完成其中的一个增量。
4.SoftwareArchitecture
软件体系结构:
结构中包括软件的构件,构件外部可见属性以及他们之间的相互关系。
简答问答30分
1.Describethedifferencesbetweenthesoftwareengineeringtermscouplingandcohesion?
(coupling)耦合性:
指一个模块与其他模块间的联系,也称为块件联系。
(cohesion)内聚性:
指模块内部各个成分之间的联系,也称为块内联系。
2.Describethestepsofinterfaceanalysis.
①进行初始的分析:
着重于与系统交互的用户特点
②更详细的任务分析
③用户的环境分析
3.Whatarethekeydifferencesbetweenvalidationtestinggoalsandverificationtestinggoals?
验证测试的目标是指确保软件正确地实现某一特定功能的实现
确认测试目标是确保开发的软件可追溯到用户需求的另外一系列活动
4.Whyanalysisanddesignmodelingisanimportantpartofsoftwaredevelopment?
①因为分析模型可以规范化软件可操作的元素,显示和其他外部系统相连的接口,并且建立软件所需要的联系
②而设计模型则可以准确实现分析模型中提供的的需求,并且为软件提供完整的功能图
1.Pleasedescribetherelationshipbetweenanalysismodelsanddesignmodelswithconnectionline:
分析模型将一般性的软件范围陈诉被精化为具体的规约,为设计模型提供基础,而设计模型对分析模型中的数据结构,程序体系结构,接口和过程细节进行了逐步的求精,评审和文档描述
2.Describethedifferencesbetweenblack-boxtestingandwhite-boxtesting.
(也叫功能测试)根据被测试程序的功能来进行的测试。
(也叫结构设计)是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。
区别:
主要从用户的输入和系统输出进行软件外部的测试。
主要对软件内部的逻辑业务进行测试。
3.Whywepayattentiontothewhite-boxtesting?
①逻辑错误和不正确假设与一条程序路径被执行的可能性成反比
②我们经常相信某逻辑路劲是不可能被执行的,而事实上,它可能在正常的基础上执行
③打字错误是随机的
1.Accordingtotheflowchartofprogram,pleasedesignenoughtestcasestotesttheprogramas:
(1)Basispathtesting
(2)Conditiontesting
2.Whyisregressiontestinganimportantpartofanyintegrationtestingprocedure?
因为回归测试是对某些已经进行过的测试的子集的重新执行,以保证上述改变不会创博无法预料的副作用,而成功的测试结果都是发现错误,而错误是要被修改的,每当软件被修改的时候,软件配置的某些方面也被修改了
3.Describethefiveframeworkactivitiesinvolvedinthesoftwareprocess.
CommunicationPlaningModelingConstructionDeployment
HW
★★★☆☆
1.Forthewaterfallmodel,describesituationswherethismodelcanandcannotbeusedandwhy.(37)
瀑布模型:
通常用于需要对一个已有的系统进行明确定义的适应性调整或增强的时候;
也可用于发生在一些新的开发项目上,但是需求必须是准确定义和相对稳定的。
在实际的不遵守瀑布模型的顺序,客户通常难以清楚描述所有的需求,以及软件工作是一个高速的,永不停止的变化流,特性,功能和信息内容都会变化的情况下不适合用瀑布模型(38)
2.DescribetheconditionsunderwhichIncrementalmodelsshouldbeusedandwhatan“increment”meansintermsofprojectworkanddelivery.
增量过程模型:
初始软件需求有明确的定义,但是整个开发过程却不宜单纯用线性模型。
同时,可能迫切需求为用户迅速提供一套功能有限的软件产品,然后再后续版本中再细化和扩展功能。
在这种条件下,需要选用一种以增量的形式生产软件产品的过程模型。
5.Listthekeyissuesstressedbyanagilephilosophyofsoftwareengineering.
软件工程的敏捷理念强调4个关键问题:
①具有控制力的自我组织团队对所展开工作的重要性;
②团队成员之间,开发参与者与客户之间的交流与合作;
③对“变更代表机遇”的认识;
④强调快速软件交付以让客户满意。
6.Describethedifferencesbetweensoftwareconstructionandsoftwaredeployment.
软件的构造包括了编码和测试任务,从而为向客户和最终用户交付可运行软件做好准备。
部署则包括了三个动作:
交付,支持和反馈。
用于现代软件工程本质上是演变的,因此部署并不是只发生一次。
两者都是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 导论 复习 指南
![提示](https://static.bdocx.com/images/bang_tan.gif)