ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:329.65KB ,
资源ID:28495012      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/28495012.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(贵大软件工程复习资料.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、贵大软件工程复习资料软件工程 复习第1章 软件工程概述什么是计算机软件? 计算机软件指计算机系统中的程序、数据及其相关文档的集合。 三要素:软件=程序+文档+数据 程序是按照特定顺序组织的计算机数据和指令的集合。 数据是使程序能正常执行的数据结构。 文档是与程序的开发、维护和使用有关的资料。它是为了便于了解程序所需的阐明性资料,文档一般是给人看的,不一定装入计算机。软件的主要特点 软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算。 软件是被开发的或被设计的,它没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大。 软件的使用没有硬件那样的机械磨损和老化问题

2、。软件的分类 系统软件:属于计算机系统中最靠近硬件的一层,其它软件一般都通过系统软件发挥作用,它与具体的应用领域无关。如操作系统、编译程序等。 支持软件:支持软件的开发和维护的软件。如数据库管理系统、网络软件、软件开发环境等。 应用软件:特定应用领域专用的软件。如实时软件、嵌入式软件、科学和工程计算软件、事务处理软件、人工智能软件等。 按软件工作方式划分: 实时处理软件 分时软件 交互式软件 批处理软件 按软件服务对象的范围划分: 项目软件 产品软件 按使用的频度进行划分: 一次使用 频繁使用 按软件失效的影响进行划分: 高可靠性软件 一般可靠性软件软件工程定义 B.W.Boehm的定义:运用

3、现代科学技术知识来设计并构造计算机程序,以及为开发、运行和维护这些程序所必须的相关文件资料。 Fritz Bauer的定义:软件工程是为了经济地获得能够在实际机器上有效运行的可靠软件,而建立和使用的一系列完善的工程化原则。 1983年美国IEEE软件工程标准术语的定义为:软件工程是开发、运行、维护和修复软件的系统方法,其中“软件”的定义为:计算机程序、方法、规则、相关的文档资料,以及在计事机上运行时所必需的数据。软件工程化思想 把软件看作是一个工程产品。 两个方面: 软件开发技术 软件工程管理 原因: 缺乏软件过程控制能力 能力成熟模型(Capability Maturity Model) 体

4、现: 工程化管理软件工程基本原理 推迟实现原理:软件方法学的一条基本思想。把逻辑设计与物理设计清楚地划分开来,尽可能推迟软件的物理实现。 逐步求精原理,求解一个复杂问题,采用从抽象到具体,有条理地逐步分解与细化方法和过程进行。 分解与抽象原理,是把复杂问题趋于简单化处理的有效策略。 信息隐蔽原理,把一些关系密切的软件元素物理地放得彼此靠近,使信息最大限度地局部化。 质量保证原理,是软件与文档中明确描述的功能和性能需求、开发标准以及任何专业开发的软件产品具有的隐含特征相一致的程度。软件工程基本原则 1983年提出了软件工程的7条基本原则: 分阶段的软件生存周期 坚持进行阶段评审 实行严格的产品控

5、制 采用现代程序设计技术 明确职责 开发小组的人员应少而精 不断改进开发过程软件工程两大范型 结构化开发范型 特征:结构化技术要么面向行为,要么面向数据 构成结构化开发范型的技术包括: 结构化分析 结构化设计 结构化编程 结构化测试 结构化维护软件工程两大范型 面向对象范型 特征:将对象视作一个融合了数据及在其上操作的行为的、统一的软件组件。 技术包括: 面向对象分析 面向对象设计 面向对象编程 面向对象测试 面向对象维护 优势: 对象的概念符合业务或领域的客观实际 维护容易第2章 软件过程软件过程 定义: 软件过程是为了开发出软件产品,或者是为了完成软件工程项目而需要完成的有关软件工程的活动

6、。 通常使用生命周期模型简洁地描述软件过程。 层次: 软件工程是一门建立在以质量焦点为基础的层次化综合技术。 过程:定义阶段和管理。 方法:技术支持。 工具:自动化实施支持。软件过程框架 定义: 框架是实现整个软件开发活动的基础,并且那些与过程有关的角色、职责的定义以及实现也都离不开框架的支持。软件过程模型 把软件生命周期中各项开发活动的流程用一个合理的框架开发模型来规范描述,这就是软件过程模型,也称为软件生命周期模型。能力成熟度模型 CMM是对软件组织在定义、实施、度量、控制和改善其软件过程的各个发展阶段的描述,是国际公认的对软件公司进行成熟度等级认证的重要标准。 能力成熟度模型集成(CMM

7、I-Capability Maturity Model Integration)是CMM模型的最新版本。CMM的五个级别 CMM提供了一个成熟度等级框架:1级-初始级、 2级-可重复级、3级-已定义级、4级-已管理级和5级-优化级。 1.初始(initial)级:过程无序且不可见。 软件过程的特点是无秩序的,甚至是混乱的。几乎没有什么过程是经过妥善定义的,成功往往依赖于个人或小组的努力和机遇。 Level 1:初始级 2.可重复(repeatable)级:里程碑可见,按计划开发。 建立了基本的项目管理过程来跟踪成本、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功。Lev

8、el 2:可重复级 3.已定义(defined)级:每个阶段的内部活动可见,标准过程和项目定义过程裁剪 己将管理和工程活动两方面的软件过程文档化、标准化,并综合成该机构的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件。Level 3:定义级4. Level 4已管理(managed)级:过程可度量,预测值与结果之间的偏差可控。 收集对软件过程和产品质量的详细度量值,对软件过程和产品都有定量的理解和控制。Level 4 管理级5. Level 5优化(optimizing)级:过程动态调整、新技术的采用。 整个组织关注软件过程改进的持续性、预见及增强自身,防止缺陷及问题的

9、发生。过程的量化反馈和先进的新思想、新技术促使过程不断改进。Level 5 优化级极限编程 极限编程(eXtreme Programming,XP)是一种软件工程方法学,是敏捷开发中最富有成效的方法学之一。 具有强沟通、简化设计、迅速反馈等特点。 适合于规模小、进度紧、需求不稳定、开发小项目的小团队。极限编程 核心有四个要点: 交流 简单 反馈 勇气Pair Programming( 结对编程 )结对编程 结对编程(Pair-Programming) 是XP中非常重要的实践之一。 定义:两个人坐在同一台计算机前面,使用相同的键盘和鼠标来开发同样的一个模块,一个称为驾驶者(Driver),负责代

10、码的键入,另外一个称为领航员(Navigator),负责监看与决策,包括低级错误和方向性的错误。 当出现的一个问题对其中一个人来说,难以解决,而恰好是另外一个人的强项的时候,那么角色就会发生转换。如何结对编程? Driver 写设计文档(Class diagram等),进行编码(Unit Test and Business Object)等XP开发流程。 Navigator 审阅Driver的文档、Driver对编码等开发流程的执行;考虑Unit Test的覆盖程度;是否需要和如何Refactoring;帮助Driver解决具体的技术问题。 Driver和Navigator不断轮换角色,不要连

11、续工作超过一小时,每一小时休息15分钟。Navigator要控制开发时间。 主动参与 虽然每个Engineering Task都有owner,但不能以旁观者的心态来做。任何一个Task都首先是两个人的责任,也是所有人的责任。没有“我的Code”、”你的Code”或“她的Code”,只有“我们的Code”。如何结对编程? 只有水平上的差距,没有级别上的差异。一个Pair,尽管可能大家的级别资历不同,但不管在分析,设计或编码,双方都拥有平等的决策权利。 Pairs之间互换Partner。每个Task都应该和不同的Developer配对。 每隔一天,甚至是半天,互换Partners。但Task的ow

12、ner因该继续留该Task的Pair中。 如果Pair中的一人请假,另一人应尽量不要写 Production Code。 Pair一起加班。软件工程实践 软件工程实践的精髓是理解问题、计划解决方案、实施计划和检查结果的精确度等方面。 通用的框架活动包括: 沟通 计划 建模 部署 普适性活动第3章 软件过程模型 典型的软件过程模型有: 瀑布模型(waterfall model) 演化模型(evolutionary model) 增量模型(incremental model) 原型模型(prototyping model) 螺旋模型(spiral model) 面向对象过程模型喷泉模型(water

13、 fountain model) 基于构件的开发模型(component-based development model) 形式方法模型(formal methods model) 统一过程模型(unified procdss model)软件过程模型 软件过程模型是软件开发全部过程、活动和任务的结构框架。 也称软件开发模型或软件生存周期模型。软件生存周期 软件也有一个从生到死的过程,这个过程一般称之为软件的生存周期或生命周期(Software Development Life Cycle)。 软件生存周期包括可行性分析、项目计划、需求分析、软件设计、编码与测试、维护等阶段,每个阶段包含一系列

14、的活动。一.瀑布模型 瀑布模型将软件生命周期划分为软件计划、需求分析和定义、设计、实现、测试、运行和维护这6个阶段,规定了它们自上而下、相互衔接的固定次序,如同瀑布流水逐级下落。瀑布模型特点 顺序性和依赖性接受上一阶段的结果作为本阶段的输入,上一阶段的输出正确,下一阶段的工作才能获得正确的结果。 推迟实现清楚地区分逻辑设计与物理设计,尽可能推迟程序的编程实现。 质量保证的观点,重视各个阶段的文档齐备。缺点 缺乏灵活性,难以适应需求不明确或需求经常变化的软件开发。 开发早期存在的问题往往要到交付使用时才发现,维护代价大。二.演化模型 许多软件项目在开发早期对软件需求的认识是模糊的、不确定的,因此

15、软件很难一次开发成功。 演化模型的开发过程就是从构造初始的原型出发,逐步将其演化成最终软件产品的过程。 演化模型适用于对软件需求缺乏准确认识的情况。 典型的演化模型有:增量模型、原型模型、螺旋模型。1.增量模型 增量模型(Incremental Model)也称为渐增模型,是在项目的开发过程中以一系列的增量方式开发系统。 增量方式包括: 增量开发:以一定的时间间隔开发部分工作软件。 增量提交:以一定的时间间隔增量方式向用户提交工作软件及相应文档。2.原型模型 原型(prototype)是预期系统的一个可执行版本,它反映了系统性质(如功能、计算结果等)的一个选定的子集。一个原型不必满足目标软件的

16、所有约束,其目的是能快速、低成本地构建原型。 原型方法从软件工程师与客户的交流开始,其目的是定义软件的总体目标,标识需求。然后快速制订原型开发的计划,确定原型的目标和范围,采用快速设计的方式对其建模,并构建原型。3.螺旋模型 螺旋模型(Spiral Model)是结合了瀑布模型和快速原型模型的迭代开发模型,是瀑布模型和演化模型的结合,并增加了风险分析。 强调了其他模型均忽略了的风险分析: 风险识别 风险分析 风险控制 特别适合于大型复杂的系统。 每一个周期都包括需求定义、风险分析、工程实现和评审。螺旋模型活动 四个象限分别代表了以下活动: 制定计划:确定软件目标,选定实施方案,确定项目开发的限

17、制条件; 风险分析:分析评估所选方案,考虑如何识别和消除风险; 实施工程:实施软件开发和验证; 客户评估:评价开发工作,提出修正建议,制定下一步计划。 螺旋模型是风险驱动的模型。 三.面向对象过程模型 面向对象是一种程序设计的方法,或者说它是一种程序设计范型。 基本思想是使用对象,类,继承,封装,消息等基本概念来进行程序设计。 面向对象的要素: 抽象:强调实体的本质、内在的属性,忽略一些无关紧要的属性。类实现了对象的数据(即状态)和行为的抽象,是对象的共性的抽象。 封装性:指所有软件部件内部都有明确的范围以及清楚的外部边界。 共享性。 面向对象的特征:对象惟一性;分类性;继承性;多态性(多形性

18、)。1.喷泉模型 喷泉模型是一种支持面向对象开发的模型。 体现迭代和无间隙特征: 迭代:各开发活动常常重复工作多次,相关的功能在每次迭代中随之加入演进的系统。 无间隙:开发活动之间不存在明显的边界。四.基于构件的开发模型 支持软件复用(reuse)。 利用预先包装好的软件构件(包括组织内部开发的构件和现存商品化构件COTS)来构造应用系统。构件集成模型 构件集成模型是基于构件的开发模型。 构件集成模型: 整个系统模块化。 复用构件库中的软件构件。 构件集成模型是演化形的,开发过程是迭代的。 5个阶段: 软件的需求分析和定义 体系结构设计 构件库建立 应用软件构建 测试和发布五.形式方法模型 形

19、式化方法(formal methods)是建立在严格数学基础上的一种软件开发方法。软件开发的全过程中,从需求分析、规约、设计、编程、系统集成、测试、文档生成、直至维护各个阶段,凡是采用严格的数学语言,具有精确的数学语义的方法,都称为形式化方法。六.统一过程模型 统一过程是用况驱动的。 用况模型(use case model)要素: 用户(user) 用况(use case) 动作(action) 用况驱动(use-case driven):用况可以驱动开发过程,用况不只是确定系统需求的工具,还能驱动系统设计、实现和测试的进行。统一过程模型 统一过程(Unified Process,UP) 是风

20、险驱动的、基于用例技术的、以架构为中心的、迭代的、可配置的软件开发流程。 统一过程是一个软件开发过程,是一个通用的过程框架: 初始 细化 构造 移交统一过程五个核心工作流 需求(Requirements Capture):致力于开发正确的系统。 分析(Analysis):更精确地理解需求。 设计(Design):深入理解与非功能性需求和约束相联系的问题。 实现(Implementation):实现系统与集成。 测试(Test):验证实现的结构。第4章 软件需求分析软件需求 在软件的整个生命周期中,首先是软件计划期,接着是软件开发期,软件需求分析是软件开发的第一个阶段,也是关系到软件开发成功与否

21、的关键一步。需求分析的任务与步骤需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型。主要有两个任务:1、建立分析模型数据、功能和行为模型。2、编写需求说明书。 需求分析的任务与步骤 2.编写软件需求规格说明:主要包括描述目标系统概貌、功能要求、性能要求、运行要求和将来可能提出的要求。用数据流图、IPO图或其他工具简要描述的系统主要算法,都是该份文档的重要组成部分。此外,该份文档还应包括用户需求与系统功能之间的关系、设计约束等等文字描述。 软件需求规格说明是需求分析阶段的最终成果。 需求分析的步骤 1.需求获取 目的:清楚地理解所要解决的问题;完整地获取用户需求。 2.需求提炼 任

22、务:分析建模。 3.需求描述 结果:软件需求说明书。 4.需求验证 改善需求说明的完整性,确保他可作为软件设计和系统验收的依据。 需求获取的常用方法 联合分析小组 用户代表、领域专家和系统分析员。 客户访谈 充分准备,寻找共同语言; 循序渐进、逐步逼近。 问题分析与确认 多个来回。软件需求获取的层次(内容) 1.业务需求与用户需求:源于系统的特定领域的需求和用户使用交互需求。 2.功能需求:描述系统预期提供的功能或服务。定义了系统做什么(描述系统必须支持的功能和过程) 对系统应提供的服务; 如何对输入做出反应; 系统在特定条件下的行为。 3.非功能需求:指那些不直接与系统具体功能相关的一类需求

23、。定义了系统工作时的特性(描述操作环境和性能目标) 产品需求; 机构需求; 外部需求。需求分析过程 需求分析主要是理解客户需要什么、分析要求、评价可行性、协商合理的方案、无歧义地详细说明方案、确认规格说明、管理需求,以至将这些需求转化为可行系统。 过程包括: 沟通 导出需求 精化需求 可行性研究 与客户协商 编写需求规格说明 验证需求 管理需求多视点的需求分析过程 视点识别:包括发现接收系统服务的视点和发现提供给每个视点的特别服务。 视点组织:包括组织相关的视点到层次结构中,通用的服务放在较高的层次,并被较低层次的视点继承。 视点文档编写:包括对被识别的视点和服务描述的精炼。 视点系统映射:包

24、括在面向对象设计中,通过封装在视点中的服务信息识别对象。 场景分析 分析员与项目相关人员共同识别出情景,并捕获这些情景的细节。 把细节加入到一个纲要的需求描述中时,情景特别有用。 情景是对交互实例片断的描述,每个情景可能包含一个或多个交互,它们能在不同的细节层次上提供不同类型的情景信息。 情景开始于一个框架,在导出过程中,细节被逐渐增加,直到产生交互的一个完整的描述。情景内容 在情景开始部分有一个系统状态描述; 关于标准事件流的描述; 关于哪儿会出错,以及如何处理错误的描述; 有关其他可能在同一时间进行的活动的信息; 在情景完成后系统状态的描述。场景分析举例-ATM系统“取款”场景分析 场景名

25、:取款 参与者:银行客户 场景描述: 1插入有效的银行卡; 2ATM机验证该银行卡; 3系统要求输入银行卡密码,用户输入密码; 4系统通过网络向银行内部系统请求验证密码; 5若验证通过,系统请求选择业务,选择取款; 6系统要求输入取款金额,比如1000元; 7系统验证是有足够的现金,并请求验证银行内部服务器处理取款; 8若处理成功,系统计算钞票数目,并送出现金; 9用户取走现金; 10系统打印凭条,用户取走凭条; 11系统退出银行卡,用户取走银行卡。第5章 结构化分析与建模结构化方法 一种面向数据流的传统软件开发方法。 以数据流为中心构建软件的分析模型和设计模型。 分为: 结构化分析(Stru

26、ctured Analysis 简称SA) 结构化设计(Structuresd Design 简称SD) 结构化程序设计(Structured Programmin 简称SP)结构化分析 结构化分析方法是一种传统的系统建模技术,其过程是创建描述信息内容和数据流的模型,依据功能和行为对系统进行划分,并描述必须建立的系统要素。结构化分析过程 理解当前的现实环境,获得当前系统的具体模型(物理模型)。 从当前系统的具体模型抽象出当前系统的逻辑模型。 分析目标系统与当前系统逻辑上的差别,建立目标系统的逻辑模型。 为目标系统的逻辑模型作补充。 结构化分析模型结构面向数据流的建模方法 面向数据流的建模是结构

27、化需求分析方法之一。 表示: 数据字典:模型中的数据信息集合。 数据流图-Data Flow Diagram(简称DFD):描述系统处理过程,即是描述输入数据流到输出数据流的变换(即加工)过程,用于对系统的功能建模。数据流图符号源或宿 存在于软件系统之外的人员或组织,表示软件系统输入数据的来源和输出数据的去向,因此也称为源点和终点。 例如,对一个考务处理系统而言: 考生向系统提供报名单(输入数据流),所以考生是考试系统(软件)的一个源。 考务处理系统要将考试成绩的统计分析表(输出数据流)传递给考试中心,所以考试中心是该系统的一个宿。 源或宿用相同的图形符号表示。 当数据流从该符号流出时表示是源

28、。 当数据流流向该符号时表示是宿。 当两者皆有时表示既是源又是宿。加工和文件 加工:描述输入数据流到输出数据流的变换。 每个加工用一个定义明确的名字标识。 至少有一个输入数据流和一个输出流。 可以有多个输入数据流和多个输出数据流。 文件:保存数据信息的外部单元。 每个文件用一个定义明确的名字标识。 由加工进行读写。 DFD中称为文件,但在具体实现时可以用文件系统实现,也可以用数据库系统实现。数据流 每个数据流用由一组固定成分的数据组成,并拥有一个定义明确的名字标识。 如:运动会管理系统中,报名单(数据流)由队名、姓名、性别、参赛项目等数据组成。 数据流的流向: 从一个加工流向另一个加工。 从加工流向文件(写文件)。 从文件流向加工(读文件)。 从源流向加工。 从加工流向宿。 数据流图举例:飞机机票预订系统:旅行社把预订机票的旅客信息输入机票预订系统。系统为旅客安排航班,打印出取票通知单(附应交的帐款)。旅客在飞机起飞的前一天凭取票通知等交款取票,系统检验无误,输出机票给旅客。出卷系统DFD举例:总体数据流图出卷系统:自动出卷数据流图出卷系统:自动出卷数据流图数据字典 定义: 数据字典是描述数据信息的集合,它对数据流图中的各个元素按规定格式进行详细的描述和确切的解释,是数据流图的补充工具。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1