贵大软件工程复习资料.docx

上传人:b****6 文档编号:16610823 上传时间:2023-07-15 格式:DOCX 页数:23 大小:329.65KB
下载 相关 举报
贵大软件工程复习资料.docx_第1页
第1页 / 共23页
贵大软件工程复习资料.docx_第2页
第2页 / 共23页
贵大软件工程复习资料.docx_第3页
第3页 / 共23页
贵大软件工程复习资料.docx_第4页
第4页 / 共23页
贵大软件工程复习资料.docx_第5页
第5页 / 共23页
贵大软件工程复习资料.docx_第6页
第6页 / 共23页
贵大软件工程复习资料.docx_第7页
第7页 / 共23页
贵大软件工程复习资料.docx_第8页
第8页 / 共23页
贵大软件工程复习资料.docx_第9页
第9页 / 共23页
贵大软件工程复习资料.docx_第10页
第10页 / 共23页
贵大软件工程复习资料.docx_第11页
第11页 / 共23页
贵大软件工程复习资料.docx_第12页
第12页 / 共23页
贵大软件工程复习资料.docx_第13页
第13页 / 共23页
贵大软件工程复习资料.docx_第14页
第14页 / 共23页
贵大软件工程复习资料.docx_第15页
第15页 / 共23页
贵大软件工程复习资料.docx_第16页
第16页 / 共23页
贵大软件工程复习资料.docx_第17页
第17页 / 共23页
贵大软件工程复习资料.docx_第18页
第18页 / 共23页
贵大软件工程复习资料.docx_第19页
第19页 / 共23页
贵大软件工程复习资料.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

贵大软件工程复习资料.docx

《贵大软件工程复习资料.docx》由会员分享,可在线阅读,更多相关《贵大软件工程复习资料.docx(23页珍藏版)》请在冰点文库上搜索。

贵大软件工程复习资料.docx

贵大软件工程复习资料

软件工程复习

第1章软件工程概述

什么是计算机软件?

●计算机软件指计算机系统中的程序、数据及其相关文档的集合。

●三要素:

软件=程序+文档+数据

●程序是按照特定顺序组织的计算机数据和指令的集合。

●数据是使程序能正常执行的数据结构。

●文档是与程序的开发、维护和使用有关的资料。

它是为了便于了解程序所需的阐明性资料,文档一般是给人看的,不一定装入计算机。

软件的主要特点

●软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算。

●软件是被开发的或被设计的,它没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大。

●软件的使用没有硬件那样的机械磨损和老化问题。

软件的分类

●系统软件:

属于计算机系统中最靠近硬件的一层,其它软件一般都通过系统软件发挥作用,它与具体的应用领域无关。

如操作系统、编译程序等。

●支持软件:

支持软件的开发和维护的软件。

如数据库管理系统、网络软件、软件开发环境等。

●应用软件:

特定应用领域专用的软件。

如实时软件、嵌入式软件、科学和工程计算软件、事务处理软件、人工智能软件等。

●按软件工作方式划分:

●实时处理软件

●分时软件

●交互式软件

●批处理软件

●按软件服务对象的范围划分:

●项目软件

●产品软件

●按使用的频度进行划分:

●一次使用

●频繁使用

●按软件失效的影响进行划分:

●高可靠性软件

●一般可靠性软件

 

软件工程定义

●B.W.Boehm的定义:

运用现代科学技术知识来设计并构造计算机程序,以及为开发、运行和维护这些程序所必须的相关文件资料。

●FritzBauer的定义:

软件工程是为了经济地获得能够在实际机器上有效运行的可靠软件,而建立和使用的一系列完善的工程化原则。

●1983年美国《IEEE软件工程标准术语》的定义为:

软件工程是开发、运行、维护和修复软件的系统方法,其中“软件”的定义为:

计算机程序、方法、规则、相关的文档资料,以及在计事机上运行时所必需的数据。

 

软件工程化思想

●把软件看作是一个工程产品。

●两个方面:

●软件开发技术

●软件工程管理

●原因:

●缺乏软件过程控制能力

●能力成熟模型(CapabilityMaturityModel)

●体现:

●工程化管理

软件工程基本原理

●推迟实现原理:

软件方法学的一条基本思想。

把逻辑设计与物理设计清楚地划分开来,尽可能推迟软件的物理实现。

●逐步求精原理,求解一个复杂问题,采用从抽象到具体,有条理地逐步分解与细化方法和过程进行。

●分解与抽象原理,是把复杂问题趋于简单化处理的有效策略。

●信息隐蔽原理,把一些关系密切的软件元素物理地放得彼此靠近,使信息最大限度地局部化。

●质量保证原理,是软件与文档中明确描述的功能和性能需求、开发标准以及任何专业开发的软件产品具有的隐含特征相一致的程度。

软件工程基本原则

●1983年提出了软件工程的7条基本原则:

●分阶段的软件生存周期

●坚持进行阶段评审

●实行严格的产品控制

●采用现代程序设计技术

●明确职责

●开发小组的人员应少而精

●不断改进开发过程

软件工程两大范型

●结构化开发范型

●特征:

结构化技术要么面向行为,要么面向数据

●构成结构化开发范型的技术包括:

●结构化分析

●结构化设计

●结构化编程

●结构化测试

●结构化维护

软件工程两大范型

●面向对象范型

●特征:

将对象视作一个融合了数据及在其上操作的行为的、统一的软件组件。

●技术包括:

●面向对象分析

●面向对象设计

●面向对象编程

●面向对象测试

●面向对象维护

●优势:

●对象的概念符合业务或领域的客观实际

●维护容易

 

第2章软件过程

软件过程

●定义:

●软件过程是为了开发出软件产品,或者是为了完成软件工程项目而需要完成的有关软件工程的活动。

●通常使用生命周期模型简洁地描述软件过程。

●层次:

●软件工程是一门建立在以质量焦点为基础的层次化综合技术。

●过程:

定义阶段和管理。

●方法:

技术支持。

●工具:

自动化实施支持。

软件过程框架

●定义:

●框架是实现整个软件开发活动的基础,并且那些与过程有关的角色、职责的定义以及实现也都离不开框架的支持。

软件过程模型

●把软件生命周期中各项开发活动的流程用一个合理的框架—开发模型来规范描述,这就是软件过程模型,也称为软件生命周期模型。

能力成熟度模型

●CMM是对软件组织在定义、实施、度量、控制和改善其软件过程的各个发展阶段的描述,是国际公认的对软件公司进行成熟度等级认证的重要标准。

●能力成熟度模型集成(CMMI--CapabilityMaturityModelIntegration)是CMM模型的最新版本。

CMM的五个级别

●CMM提供了一个成熟度等级框架:

1级-初始级、2级-可重复级、3级-已定义级、4级-已管理级和5级-优化级。

●1.初始(initial)级:

过程无序且不可见。

●软件过程的特点是无秩序的,甚至是混乱的。

几乎没有什么过程是经过妥善定义的,成功往往依赖于个人或小组的努力和机遇。

●Level1:

初始级

 

●2.可重复(repeatable)级:

里程碑可见,按计划开发。

●建立了基本的项目管理过程来跟踪成本、进度和功能特性。

制定了必要的过程纪律,能重复早先类似应用项目取得的成功。

Level2:

可重复级

 

●3.已定义(defined)级:

每个阶段的内部活动可见,标准过程和项目定义过程裁剪

●己将管理和工程活动两方面的软件过程文档化、标准化,并综合成该机构的标准软件过程。

所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件。

Level3:

定义级

 

4.Level4已管理(managed)级:

过程可度量,预测值与结果之间的偏差可控。

收集对软件过程和产品质量的详细度量值,对软件过程和产品都有定量的理解和控制。

Level4管理级

 

5.Level5优化(optimizing)级:

过程动态调整、新技术的采用。

整个组织关注软件过程改进的持续性、预见及增强自身,防止缺陷及问题的发生。

过程的量化反馈和先进的新思想、新技术促使过程不断改进。

Level5优化级

极限编程

●极限编程(eXtremeProgramming,XP)是一种软件工程方法学,是敏捷开发中最富有成效的方法学之一。

●具有强沟通、简化设计、迅速反馈等特点。

●适合于规模小、进度紧、需求不稳定、开发小项目的小团队。

极限编程

●核心有四个要点:

●交流

●简单

●反馈

●勇气

PairProgramming

(结对编程)

结对编程

●结对编程(Pair-Programming)是XP中非常重要的实践之一。

●定义:

两个人坐在同一台计算机前面,使用相同的键盘和鼠标来开发同样的一个模块,一个称为驾驶者(Driver),负责代码的键入,另外一个称为领航员(Navigator),负责监看与决策,包括低级错误和方向性的错误。

●当出现的一个问题对其中一个人来说,难以解决,而恰好是另外一个人的强项的时候,那么角色就会发生转换。

如何结对编程?

●Driver–写设计文档(Classdiagram等),进行编码(UnitTestandBusinessObject)等XP开发流程。

●Navigator–审阅Driver的文档、Driver对编码等开发流程的执行;考虑UnitTest的覆盖程度;是否需要和如何Refactoring;帮助Driver解决具体的技术问题。

●Driver和Navigator不断轮换角色,不要连续工作超过一小时,每一小时休息15分钟。

Navigator要控制开发时间。

●主动参与–虽然每个EngineeringTask都有owner,但不能以旁观者的心态来做。

任何一个Task都首先是两个人的责任,也是所有人的责任。

没有“我的Code”、”你的Code”或“她的Code”,只有“我们的Code”。

如何结对编程?

●只有水平上的差距,没有级别上的差异。

一个Pair,尽管可能大家的级别资历不同,但不管在分析,设计或编码,双方都拥有平等的决策权利。

●Pairs之间互换Partner。

每个Task都应该和不同的Developer配对。

●每隔一天,甚至是半天,互换Partners。

但Task的owner因该继续留该Task的Pair中。

●如果Pair中的一人请假,另一人应尽量不要写

●ProductionCode。

●Pair一起加班。

 

软件工程实践

●软件工程实践的精髓是理解问题、计划解决方案、实施计划和检查结果的精确度等方面。

●通用的框架活动包括:

●沟通

●计划

●建模

●部署

●普适性活动

第3章软件过程模型

●典型的软件过程模型有:

●瀑布模型(waterfallmodel)

●演化模型(evolutionarymodel)

●增量模型(incrementalmodel)

●原型模型(prototypingmodel)

●螺旋模型(spiralmodel)

●面向对象过程模型——喷泉模型(waterfountainmodel)

●基于构件的开发模型(component-baseddevelopmentmodel)

●形式方法模型(formalmethodsmodel)

●统一过程模型(unifiedprocdssmodel)

 

软件过程模型

●软件过程模型是软件开发全部过程、活动和任务的结构框架。

●也称软件开发模型或软件生存周期模型。

软件生存周期

●软件也有一个从生到死的过程,这个过程一般称之为软件的生存周期或生命周期(SoftwareDevelopmentLifeCycle)。

●软件生存周期包括可行性分析、项目计划、需求分析、软件设计、编码与测试、维护等阶段,每个阶段包含一系列的活动。

一.瀑布模型

●瀑布模型将软件生命周期划分为软件计划、需求分析和定义、设计、实现、测试、运行和维护这6个阶段,规定了它们自上而下、相互衔接的固定次序,如同瀑布流水逐级下落。

瀑布模型特点

●顺序性和依赖性——接受上一阶段的结果作为本阶段的输入,上一阶段的输出正确,下一阶段的工作才能获得正确的结果。

●推迟实现——清楚地区分逻辑设计与物理设计,尽可能推迟程序的编程实现。

●质量保证的观点,重视各个阶段的文档齐备。

缺点

●缺乏灵活性,难以适应需求不明确或需求经常变化的软件开发。

●开发早期存在的问题往往要到交付使用时才发现,维护代价大。

二.演化模型

●许多软件项目在开发早期对软件需求的认识是模糊的、不确定的,因此软件很难一次开发成功。

●演化模型的开发过程就是从构造初始的原型出发,逐步将其演化成最终软件产品的过程。

●演化模型适用于对软件需求缺乏准确认识的情况。

●典型的演化模型有:

增量模型、原型模型、螺旋模型。

1.增量模型

●增量模型(IncrementalModel)也称为渐增模型,是在项目的开发过程中以一系列的增量方式开发系统。

●增量方式包括:

●增量开发:

以一定的时间间隔开发部分工作软件。

●增量提交:

以一定的时间间隔增量方式向用户提交工作软件及相应文档。

2.原型模型

●原型(prototype)是预期系统的一个可执行版本,它反映了系统性质(如功能、计算结果等)的一个选定的子集。

一个原型不必满足目标软件的所有约束,其目的是能快速、低成本地构建原型。

●原型方法从软件工程师与客户的交流开始,其目的是定义软件的总体目标,标识需求。

然后快速制订原型开发的计划,确定原型的目标和范围,采用快速设计的方式对其建模,并构建原型。

3.螺旋模型

●螺旋模型(SpiralModel)是结合了瀑布模型和快速原型模型的迭代开发模型,是瀑布模型和演化模型的结合,并增加了风险分析。

●强调了其他模型均忽略了的风险分析:

●风险识别

●风险分析

●风险控制

●特别适合于大型复杂的系统。

●每一个周期都包括需求定义、风险分析、工程实现和评审。

螺旋模型活动

●四个象限分别代表了以下活动:

●制定计划:

确定软件目标,选定实施方案,确定项目开发的限制条件;

●风险分析:

分析评估所选方案,考虑如何识别和消除风险;

●实施工程:

实施软件开发和验证;

●客户评估:

评价开发工作,提出修正建议,制定下一步计划。

●螺旋模型是风险驱动的模型。

三.面向对象过程模型

●面向对象是一种程序设计的方法,或者说它是一种程序设计范型。

●基本思想是使用对象,类,继承,封装,消息等基本概念来进行程序设计。

●面向对象的要素:

●抽象:

强调实体的本质、内在的属性,忽略一些无关紧要的属性。

类实现了对象的数据(即状态)和行为的抽象,是对象的共性的抽象。

●封装性:

指所有软件部件内部都有明确的范围以及清楚的外部边界。

●共享性。

●面向对象的特征:

对象惟一性;分类性;继承性;多态性(多形性)。

1.喷泉模型

●喷泉模型是一种支持面向对象开发的模型。

●体现迭代和无间隙特征:

●迭代:

各开发活动常常重复工作多次,相关的功能在每次迭代中随之加入演进的系统。

●无间隙:

开发活动之间不存在明显的边界。

四.基于构件的开发模型

●支持软件复用(reuse)。

●利用预先包装好的软件构件(包括组织内部开发的构件和现存商品化构件COTS)来构造应用系统。

构件集成模型

●构件集成模型是基于构件的开发模型。

●构件集成模型:

●整个系统模块化。

●复用构件库中的软件构件。

●构件集成模型是演化形的,开发过程是迭代的。

●5个阶段:

●软件的需求分析和定义

●体系结构设计

●构件库建立

●应用软件构建

●测试和发布

五.形式方法模型

●形式化方法(formalmethods)是建立在严格数学基础上的一种软件开发方法。

软件开发的全过程中,从需求分析、规约、设计、编程、系统集成、测试、文档生成、直至维护各个阶段,凡是采用严格的数学语言,具有精确的数学语义的方法,都称为形式化方法。

六.统一过程模型

●统一过程是用况驱动的。

●用况模型(usecasemodel)要素:

●用户(user)

●用况(usecase)

●动作(action)

●用况驱动(use-casedriven):

用况可以驱动开发过程,用况不只是确定系统需求的工具,还能驱动系统设计、实现和测试的进行。

统一过程模型

●统一过程(UnifiedProcess,UP)是风险驱动的、基于用例技术的、以架构为中心的、迭代的、可配置的软件开发流程。

●统一过程是一个软件开发过程,是一个通用的过程框架:

●初始

●细化

●构造

●移交

统一过程五个核心工作流

●需求(RequirementsCapture):

致力于开发正确的系统。

●分析(Analysis):

更精确地理解需求。

●设计(Design):

深入理解与非功能性需求和约束相联系的问题。

●实现(Implementation):

实现系统与集成。

●测试(Test):

验证实现的结构。

第4章软件需求分析

软件需求

●在软件的整个生命周期中,首先是软件计划期,接着是软件开发期,软件需求分析是软件开发的第一个阶段,也是关系到软件开发成功与否的关键一步。

需求分析的任务与步骤

需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型。

主要有两个任务:

1、建立分析模型——数据、功能和行为模型。

2、编写需求说明书。

需求分析的任务与步骤

2.编写软件需求规格说明:

主要包括描述目标系统概貌、功能要求、性能要求、运行要求和将来可能提出的要求。

用数据流图、IPO图或其他工具简要描述的系统主要算法,都是该份文档的重要组成部分。

此外,该份文档还应包括用户需求与系统功能之间的关系、设计约束等等文字描述。

软件需求规格说明是需求分析阶段的最终成果。

●需求分析的步骤

●1.需求获取

●目的:

清楚地理解所要解决的问题;完整地获取用户需求。

●2.需求提炼

●任务:

分析建模。

●3.需求描述

●结果:

软件需求说明书。

●4.需求验证

●改善需求说明的完整性,确保他可作为软件设计和系统验收的依据。

需求获取的常用方法

●联合分析小组

●用户代表、领域专家和系统分析员。

●客户访谈

●充分准备,寻找共同语言;

●循序渐进、逐步逼近。

●问题分析与确认

●多个来回。

软件需求获取的层次(内容)

●1.业务需求与用户需求:

源于系统的特定领域的需求和用户使用交互需求。

●2.功能需求:

描述系统预期提供的功能或服务。

定义了系统做什么(描述系统必须支持的功能和过程)

●对系统应提供的服务;

●如何对输入做出反应;

●系统在特定条件下的行为。

●3.非功能需求:

指那些不直接与系统具体功能相关的一类需求。

定义了系统工作时的特性(描述操作环境和性能目标)

●产品需求;

●机构需求;

●外部需求。

需求分析过程

●需求分析主要是理解客户需要什么、分析要求、评价可行性、协商合理的方案、无歧义地详细说明方案、确认规格说明、管理需求,以至将这些需求转化为可行系统。

●过程包括:

●沟通

●导出需求

●精化需求

●可行性研究

●与客户协商

●编写需求规格说明

●验证需求

●管理需求

多视点的需求分析过程

●视点识别:

包括发现接收系统服务的视点和发现提供给每个视点的特别服务。

●视点组织:

包括组织相关的视点到层次结构中,通用的服务放在较高的层次,并被较低层次的视点继承。

●视点文档编写:

包括对被识别的视点和服务描述的精炼。

●视点系统映射:

包括在面向对象设计中,通过封装在视点中的服务信息识别对象。

场景分析

●分析员与项目相关人员共同识别出情景,并捕获这些情景的细节。

●把细节加入到一个纲要的需求描述中时,情景特别有用。

●情景是对交互实例片断的描述,每个情景可能包含一个或多个交互,它们能在不同的细节层次上提供不同类型的情景信息。

●情景开始于一个框架,在导出过程中,细节被逐渐增加,直到产生交互的一个完整的描述。

情景内容

●在情景开始部分有一个系统状态描述;

●关于标准事件流的描述;

●关于哪儿会出错,以及如何处理错误的描述;

●有关其他可能在同一时间进行的活动的信息;

●在情景完成后系统状态的描述。

场景分析举例-ATM系统“取款”场景分析

●场景名:

取款

●参与者:

银行客户

●场景描述:

●1.插入有效的银行卡;

●2.ATM机验证该银行卡;

●3.系统要求输入银行卡密码,用户输入密码;

●4.系统通过网络向银行内部系统请求验证密码;

●5.若验证通过,系统请求选择业务,选择取款;

●6.系统要求输入取款金额,比如1000元;

●7.系统验证是有足够的现金,并请求验证银行内部服务器处理取款;

●8.若处理成功,系统计算钞票数目,并送出现金;

●9.用户取走现金;

●10.系统打印凭条,用户取走凭条;

●11.系统退出银行卡,用户取走银行卡。

第5章结构化分析与建模

结构化方法

●一种面向数据流的传统软件开发方法。

●以数据流为中心构建软件的分析模型和设计模型。

●分为:

●结构化分析(StructuredAnalysis简称SA)

●结构化设计(StructuresdDesign简称SD)

●结构化程序设计(StructuredProgrammin简称SP)

结构化分析

●结构化分析方法是一种传统的系统建模技术,其过程是创建描述信息内容和数据流的模型,依据功能和行为对系统进行划分,并描述必须建立的系统要素。

结构化分析过程

●理解当前的现实环境,获得当前系统的具体模型(物理模型)。

●从当前系统的具体模型抽象出当前系统的逻辑模型。

●分析目标系统与当前系统逻辑上的差别,建立目标系统的逻辑模型。

●为目标系统的逻辑模型作补充。

结构化分析模型结构

 

面向数据流的建模方法

●面向数据流的建模是结构化需求分析方法之一。

●表示:

●数据字典:

模型中的数据信息集合。

●数据流图-DataFlowDiagram(简称DFD):

描述系统处理过程,即是描述输入数据流到输出数据流的变换(即加工)过程,用于对系统的功能建模。

 

数据流图符号

 

源或宿

●存在于软件系统之外的人员或组织,表示软件系统输入数据的来源和输出数据的去向,因此也称为源点和终点。

●例如,对一个考务处理系统而言:

●考生向系统提供报名单(输入数据流),所以考生是考试系统(软件)的一个源。

●考务处理系统要将考试成绩的统计分析表(输出数据流)传递给考试中心,所以考试中心是该系统的一个宿。

●源或宿用相同的图形符号表示。

●当数据流从该符号流出时表示是源。

●当数据流流向该符号时表示是宿。

●当两者皆有时表示既是源又是宿。

加工和文件

●加工:

描述输入数据流到输出数据流的变换。

●每个加工用一个定义明确的名字标识。

●至少有一个输入数据流和一个输出流。

●可以有多个输入数据流和多个输出数据流。

●文件:

保存数据信息的外部单元。

●每个文件用一个定义明确的名字标识。

●由加工进行读写。

●DFD中称为文件,但在具体实现时可以用文件系统实现,也可以用数据库系统实现。

数据流

●每个数据流用由一组固定成分的数据组成,并拥有一个定义明确的名字标识。

●如:

运动会管理系统中,报名单(数据流)由队名、姓名、性别、参赛项目等数据组成。

●数据流的流向:

●从一个加工流向另一个加工。

●从加工流向文件(写文件)。

●从文件流向加工(读文件)。

●从源流向加工。

●从加工流向宿。

●数据流图举例:

飞机机票预订系统:

旅行社把预订机票的旅客信息输入机票预订系统。

系统为旅客安排航班,打印出取票通知单(附应交的帐款)。

旅客在飞机起飞的前一天凭取票通知等交款取票,系统检验无误,输出机票给旅客。

出卷系统DFD举例:

总体数据流图

出卷系统:

自动出卷数据流图

出卷系统:

自动出卷数据流图

数据字典

●定义:

●数据字典——是描述数据信息的集合,它对数据流图中的各个元素按规定格式进行详细的描述和确切的解释,是数据流图的补充工具。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2