四川大学软件工程考点.docx
- 文档编号:23375194
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:40
- 大小:134.47KB
四川大学软件工程考点.docx
《四川大学软件工程考点.docx》由会员分享,可在线阅读,更多相关《四川大学软件工程考点.docx(40页珍藏版)》请在冰豆网上搜索。
四川大学软件工程考点
第一章——软件工程介绍
1.一个包含过程(process)、一系列方法(methods)和工具(tools)的框架,我们称之为软件工程(softwareengineering)。
2.软件开发人员面临的问题:
①软件开发时间长
②软件开发成本居高不下
③在软件交付给用户之前,我们无法找到所有的错误。
④维护已有的程序花费高昂的时间和人力代价
⑤软件开发和维护的过程难以度量。
3.软件的定义:
①程序(program):
通过执行包含在程序中的指令可以满足预期的特征、功能和性能需求
②数据结构(datastructure):
使得程序充分利用信息。
③文档(ducoment):
描述程序操作和使用。
4.Whatisthedifferencebetweensoftwareandhardware?
①软件是开发设计的,而不是生产制造的。
②软件不会磨损(wearout),但是会退化(deteriorate)。
不断的变更是软件退化的根本原因。
硬件会磨损,磨损的部分可以用备用的构件替换,而软件缺不存在备用构件。
③虽然整个工业向着基于构件的构造模型发展,然而大多数的软件还是主要采用用户定制(custombuildt)的方式(Becauseoff-the-shellsoftwarecomponentsareunavailableinmanyapplicationdomains)。
在硬件设计中,构件复用是工程进程中通用的方法。
而在软件设计中,大规模的复用还刚刚开始尝试。
5.软件的确定性(determinate)是指系统的输入、处理和输出的顺序及时间是可以预测的;软件的不确定性是指系统的输入、处理和输出的顺序及时间是无法提前预测的。
6.遗留软件(legacysoftware)——旧的软件
①生命周期长(longevity)②业务关键性(businesscriticality)③质量差(poorquality)
遗留软件发生系统演化的原因:
①软件需要修改其适应性,从而可以满足新的计算环境或者技术的需求。
②软件必须根据新的业务需求进行升级。
③软件必须扩展以具有与更多现代系统和数据库协作的能力。
④软件构架必须进行改建以适应多样化的网络环境。
7.软件演化(evolution)
变更(change)(通常称为软件维护)推动了软件演化,它通常是由以下情况引发的:
程序纠错,调整软件以适应新的环境,满足用户新特性和功能的需求,以及对软件实施再工程以便在现代应用中发挥作用。
8.软件危机
软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题,如软件费用、软件可靠性、软件维护、软件生产、软件重用等。
第二章——过程综述
1.软件过程定义为一个建造高质量软件所需要完成的任务的框架(framework)。
软件生命周期:
软件产品或软件系统从设计、投入使用到被淘汰的全过程。
2.**软件工程的定义:
①将系统化(systematic)、规范化(disciplined)、可量化(quantifiable)的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。
②对①中所述方法的研究。
3.软件工程是一种层次化的技术,软件工程层次图如下:
工具tools
方法methods
过程process
质量关注点aqualityfocus
①软件工程的根基(bedrock)在于质量关注点。
②软件工程的基础(foundation)是过程层。
软件过程将各个层次的技术结合在一起,并实施合理地、及时地开发计算机软件。
并且过程定义一个框架。
③软件工程方法为建造软件提供技术上的解决方法,包括沟通、需求分析、设计建模、编程、测试和支持。
④软件工程工具:
为过程和方法提供自动化或半自动化的支持。
4.过程框架定义了若干小的框架活动,为完整的软件开发建立了基础。
五个通用过程框架活动(genericprocessframeworkactivity):
①communication沟通
②planning策划
③modeling建模:
包括分析(analysis)和设计(design)两个动作
④construction构建
⑤deployment部署
5.stakeholder(共利益者)就是可在项目成功中分享利益的人,包括业务经理、最终用户、软件工程师、支持人员等。
6.不同的项目需要不同的任务集(taskset),软件开发根据问题和项目的特点选择任务集。
7.软件工程的通用框架由很多普适性活动(umbrellaactivity)来实现,普适性活动贯穿于整个软件过程。
(across/throughouttheentiresoftwareprocess)
尽管有很多种不同的软件工程过程模型,但它们都定义了:
一组框架活动,完成每个活动所包含的任务集,任务完成所形成的工作产品,以及一组可以用于整个过程的普适性活动。
8.不同模型之间的区别:
①活动和任务的总体流程,以及相互之间的关系
②在框架中的每一个活动中任务细化的程度
③对所需要提交的工作产品的定义
④质量保证活动应用的方式
⑤过程跟踪和控制活动应用的方式
⑥过程描述的详细和严谨程度
⑦客户和共享利益者对项目参与的深度
⑧软件项目队伍所赋予的自主权
⑨队伍组织和角色明确程度
9.能力成熟度模型(CMMI)能力成熟度模型集成,是一个过程元模型,定义了如何建立完整的软件过程,软件组织所应该具备的过程特征。
分为不完全级、已执行级、已管理级、已定义级、已定量管理级、优化级。
每个过程域的capabilitylevels:
①第0级:
incomplete(不完全级)
②第1级:
performed(已执行级)
③第2级:
managed(已管理级)
④第3级:
defined(已定义级)
⑤第4级:
quantitativelymanaged(已定量管理级)
⑥第5级:
optimized(优化级)
10.软件过程可以定义为一系列模式(pattern)的组合,这些模式定义了一系列的软件开发中所需的活动、动作、工作任务、工作产品及相关的行为。
Patterntemplateprovidesaconsistentmeansfordescribingapattern。
11.formaltechniquesareavailableforassessingthesoftwareprocess:
SCAMPI、CBIIPI、SPICE、ISO9001
SCAMPI提供了五步的过程评估模型:
启动(initiating)、诊断(diagnosing)、建立(establishing)、执行(acting)、学习(learning)
SPICE和其他的标准定义了指导软件过程评估的要求,ISO对过程中的质量管理进行检查
12.ISO9001:
2000采用“计划-实施-检查-行动”(plan-do-check-act)循环,将其应用于软件项目的质量管理环节。
A.计划(plan)是为实现高质量的软件产品并最终提高用户满意度,建立必须的过程目标、活动和任务。
B.实施是执行软件过程,包括框架活动和普适性活动。
C.检查监督并测量过程,以保证所有为质量管理所建立的需求均已实现。
D.行动启动软件过程改进活动,并持续地改进进程。
13.个人过程模型PSP定义的五个框架活动:
①策划(planning)
②高层设计(high-leveldesign)
③高层设计评审(high-leveldesignreview)
④开发(development)
⑤后验(postmortem)
PSP强调对所犯的错误类型进行记录和分析,以便于制定避免错误的策略。
14.团队软件过程TSP定义的框架活动:
①项目启动(launch)
②高层设计(high-leveldesign)
③实现(implementation)
④集成(integration)
⑤测试(test)
⑥后验(postmortem)
个人和团队模型都强调了成功软件过程的关键因素:
测量、计划、自我管理
第3章——过程模型
1.惯例过程模型:
惯例模型规定了一套过程元素——框架活动、软件工程动作、任务、工作产品、质量保证以及每个项目的变更控制机制。
每个过程还定义了工作流
2.**瀑布模型waterfallmodel(经典生命周期classicallifecircle)、
是一种基于软件生存周期的线性(linear)开发模型。
它提出了一个系统的、顺序(sequential)的软件开发方法,从用户需求规格说明开始,通过策划、建模、构件和部署的过程,最终提供一个完整的软件并提供持续的技术支持。
①适用于需求定义清晰(requirementsarefixed)且稳定的软件开发
不足之处:
①实际的项目很少遵守瀑布模型提出的顺序。
②用户常难以清楚地描述所有的需求。
③客户必须要有耐心,只有在项目接近尾声的时候,他们才能得到可执行的程序。
3.**增量模型(incremental):
以迭代的方式运用瀑布模型,在每个阶段运用线性序列。
这种模型把软件看作是一系列相互联系的增量,在开发过程的各次迭代中,每次完成其中的一个增量。
①第一个增量是一个核心产品,每个增量都提交一个可以操作的产品。
②如果在既定的商业要求之前不可能找到足够的开发人员,增量模型显得特别有用。
4.RAD模型:
①是一种侧重于短暂的开发周期的增量过程模型,为大型且必须在严格的时间内提交的项目而设计的。
②是瀑布模型的高速变体,通过基于构件的构建方法实现快速开发。
③是一种linearsequentialmodel
RAD的不足之处(drawbacks):
①对于大型的可伸缩项目,RAD需要大量的人力资源来创建多个相对独立的RAD团队。
②如果没有为短时间内急速完成整个系统做好准备,RAD项目将会失败。
③如果一个系统不能合理地模块化,RAD构建会有很多问题。
④如果系统需求是高性能,不能采用RAD模型。
⑤技术风险很高的时候,不宜采用RAD。
演化过程模型(evolutionaryprocessmodel)每次迭代产生软件的一个更完整的版本。
5.原型开发(prototyping):
用于需求很模糊的时候(requirementsarefuzzy,cantdefinerequirementclearly)
**原型模型的思想是:
先建立一个能够放映用户主要需求的原型,让用户实际看一下未来系统的面貌,以便判断哪些功能是符合需要的,哪些方面还需要改进,然后将原型反复改进,直至建立完全符合用户要求的新系统。
6.螺旋模型(spiral)
①结合了原型的迭代(iterative)特性、瀑布模型的系统性(systematic)和可控性(controlled)特点。
采用循环的方式逐步加深系统定义和实现的深度。
②其他过程模型在软件交付之后就结束了,螺旋模型则不同,它应用在计算机软件的整个生命周期,从概念开发到维护。
③把原型开发作为降低风险的机制,它依赖大量的风险评估专家来保证成功。
Ifamajorriskisnotuncoveredandmanaged,problemswillundoubtedlyoccur。
7.协同开发模型:
适合于不同的工程团队开发的系统工程项目。
8.专用过程模型:
应用较窄,只适合于某些特定的软件工程方法。
①基于构件的开发:
本质上是演化模型,需要以迭代方式构建软件。
theprocesstoapplywhenreuseisdevelopmentobjective。
②形式化方法模型:
主要活动是生成计算机软件形式化的数学规格说明,意义在于提供无缺陷的软件。
③面向方面的软件开发(AOSD):
以用户跨越多个系统功能、特性和信息为关注点。
9.统一过程(UP)是一种增量模型,determinediterativelly,spanmorethanoneoftheprocess。
定义了五个阶段(phase):
①起始(inception):
包括客户沟通和策划活动,强调定义和细化用例,并将其作为主要模型②细化(elaboration):
包括用户沟通和建模活动,重点是创建分析和设计模型,强调类的定义和体系结构的表示
③构建(construction):
细化设计模型,并将设计模型转化为软件构件实现
④转换(translation):
将软件从开发人员传递给最终用户,并由用户完成Beta测试和验收测试
⑤生产(production):
持续地监控软件的运行,并提供技术支持
第4章——敏捷开发(agileprocess)
1.软件敏捷开发宣言(Manifesto)
①个体和交互胜过过程和工具
②可工作软件胜过宽泛的文档
③用户合作胜过合同谈判
④响应变化胜过遵循计划
普遍存在的变化是敏捷的基本动力。
所有敏捷方法都或多或少的遵循以上的原则。
2.Agilityismorethan①aneffectiveresponsetochange。
②effectivecommunicationamongstakeholders
③drawingthecustomontotheteam
③organizingateamsothatit'scontroloftheworkperformed
Agilealliance的12条准则中,第一条是最优先要做的是通过尽早、持续交付valuablesoftware来满足用户的要求
敏捷可用于任何软件过程,实现要点是将软件过程设计为如下方式:
①允许项目团队调整并合理安排任务
②理解敏捷开发方法的易变性并制定计划
③精简并维持最基本的工作产品
④强调增量交付策略
3.敏捷过程的三个假设(Assumption):
①提前预测哪些需求是稳定的和哪些需求会变化非常困难。
②对许多软件来说,设计和构建是交错进行的。
事实上,两种活动应顺序开展(tandem)以保证通过构建实施来验证设计模型,而在通过构建验证之前很难估计到应当设计到什么程度。
③从制定计划的角度来看,设计、分析、构建和测试并不像我们所设想的那么容易预测。
以上说明敏捷过程必须具有自适应性(adaptable)。
4.软件开发团队及成员应具有的特点:
①competence
②commonfocus
③collaboration
④decision-makingability
⑤fuzzyproblem-slovingability
⑥mutualtrustandrespect
⑦self-organization
5.极限编程XP
①XP使用面向对象方法作为推荐的开发范型
②XP的四个框架活动:
planning、design、coding、testing(计划、设计、编码和测试)
③Planning始于建立一系列描述待开发软件必要特征与功能的故事(storyoruserstory)。
项目速度是第一个发行版本中实现的用户故事个数。
④XPdesign遵循kis原则(Keep-it-simple);鼓励使用CRC作为有效机制;如果在某个故事设计中碰到困难,实现并评估原型;XP估计既是构建技术又是设计中的重构。
⑤XPcoding中的关键概念之一是结对编程(pairprogramming)。
⑥在编码之前建立单元测试是XP方法的关键因素,XP验收测试(也称用户测试),由客户确定,根据用户故事得到的。
6.重构():
是以不改变代码外部行为而进行改进其内部结构的方式来修改软件系统的过程。
简而言之,重构是在编码完成之后改进代码设计。
7.自适应软件开发(ASD)强调humancollaboration和teamself-organization。
ASD的三个阶段:
①speculation(思考)②collaboration③learning
8.动态系统开发方法(DSDM)
①DSDM建议使用修改版Pareto原则。
在这种情况下,如果交付整个应用系统需用100%时间,那么80%的应用系统可以用20%的时间交付。
②像XP和ASD一样,DSDM建议使用迭代软件过程。
9.Scrum(橄榄球)
①每一个框架活动中,发生于一个过程模式中的工作任务称为一个冲刺。
②每一个过程模式定义的一系列问题:
待定项(backlog)、冲刺(sprint)
③十五分钟例会回答的基本问题:
A.上次例会之后做了什么
B.遇到什么困难
C.下次例会之前做些什么
10.Crystal提倡一种机动性的软件开发方法。
11.特征驱动开发(FDD)
①特征是可以在两周或更短的时间实现的具有客户价值的功能。
②FDD更强调项目管理原则和技术。
12.敏捷建模(AM)认为对所有的系统都是有必要的。
AM给实践者(practitioner)的分析和任务设计以非常有用的指导。
13.敏捷理念强调的四个关键问题:
①具有控制力的自我组织团队对所开展工作的重要性
②团队成员之间、开发参与者与客户之间的交流与合作
③对变更代表机遇的认识
④强调快速软件交付让客户满意
第五章——软件工程实践综述
1.软件工程实践的精髓:
①理解问题(交流和分析)
②计划解决方案(建模和软件设计)
③实施计划(代码生成)
④检查结果的精确度(测试和质量保证)
2.Davidhooker提出的关注软件工程整体实践的核心原则:
①存在价值②保持简洁③维护视图④生产者要让消费者理解
⑤面向未来⑥计划复用⑦认真思考
3.
原则——开发一个实际项目计划所必须提出和回答的问题是:
①为什么要开发②要做什么东西③什么时候完成④功能由谁负责
⑤组织位于哪里⑥怎样才能在工作中体现技术和管理⑦需要多少资源
4.在软件工程中,需要建立两类模型:
分析建模(analysis)和设计建模(design),建模的目的是加深对所要完成的工作的理解并为开发人员提供技术指导。
①分析模型通过三个不同域描述来表达用户的需求:
theinformationdomain(信息域)、thefunctionaldomain(功能域)、thebehavioraldomain(行为域)
②设计模型可以帮助开发者高效开发软件的特征:
thearchitecture(构架)、theuserinterface(用户界面)、component-leveldetail(构件细节)
5.构造活动包括一系列编码和测试任务
①最初的测试是构件级的,称为单元测试(unittest)
②集成测试(integrationtest)——在构建系统的时候进行
③确认测试(validationtest)——是测试系统是否完全按照需求开发
④验收测试(acceptancetest)——由用户检验系统是否按照需求实现了所有的功能
6.测试规则:
①测试是一个以查找程序错误为目的的程序执行过程
②一个好的测试(goodtest)用例能最大限度地找到尚未发现的错误
③一个成功的测试(successfultest)能找到那些尚未发现的错误
7.部署活动包括三个动作:
交付(delivery)、支持(support)和反馈(feedback)
部署活动并不只是发生一次,而是在软件完全开发完成之前要进行许多次。
8.叙述软件构造和软件部署的区别
软件构建包括编码和测试,是在开发阶段由开发人员来完成;
软件部署是将所完成的部分交付给客户,由客户对其进行评测和反馈意见,此时开发人员提供技术支持和维护。
第6章——系统工程(Systemengineering)
1.计算机的系统:
组织在一起通过处理信息来实现预定目标的要素集合或排列。
2.系统要素(systemelement):
①software(软件)
②hardware(硬件)
③people(人员)
④database(数据库)
⑤documentation(文档)
⑥procedure(规程)
宏要素是指基于计算机系统,它作为更大的基于计算机的系统的一部分。
3.thesystemhierarchy:
worldview→domainview→elementview→detailedview
4.建立模型工程师要考虑的restrainingfactor:
①Assumption
②simplification
③limitation
④construction
⑤preferences
5.业务过程工程(BPE)
①Thegoalofbusinessprocessengineeringistodefinearchitecturesthatwillenableabusinesstouseinformationeffectively。
②BPE定义和开发的三种架构:
dataarchitecture、applicationarchitecture、technologyarchitecture
③业务过程工程层次:
信息战略计划→业务区域分析→业务系统设计→构建和集成
6.产品工程
①thegoalofproductengineeringistotranslatethecustomer'sdesireforasetofdefinedcapabilitiesintoworkingproduct。
(定义一个能有效利用信息进行业务活动的体系)
②产品工程是从系统分析开始的系统工程,软件工程师确定用户需求。
③产品工程给出构架的不同系统构件:
software、hardware、database、people
④产品工程层次图:
需求工程→构件工程→分析和设计建模→构建和集成
7.系统建模:
每个基于计算机的系统都可按“输入-处理-输出”模板进行信息转换。
8.Hatley-Pirbhai建模模板:
①userinterface
②input
③systemfunctionandcontrol
④output
⑤maintenanceandself-test
系统环境图asystemcontextdiagram(SCD)residesatthetoplevelofthehierarchy。
9.UnifiedModelingLanguage(UML)
**统一建模语言,对软件进行可视化、规约、构造、文档化的一种语言。
UML大量的图表表示法,用于在系统和软件层次分析和设计。
涉及到的图:
Deploymentdiagram(硬件)、activitydiagram(软件)、classdiagram(软件)、use-casediagram
第7章——需求工程(requirementeng
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 四川大学 软件工程 考点
![提示](https://static.bdocx.com/images/bang_tan.gif)