软件工程要点串讲2016.ppt_第1页
软件工程要点串讲2016.ppt_第2页
软件工程要点串讲2016.ppt_第3页
软件工程要点串讲2016.ppt_第4页
软件工程要点串讲2016.ppt_第5页
免费预览已结束,剩余98页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.1软件工程与软件危机,软件危机是指软件开发过程中出现的一系列严重问题,如开发效率低、成本高、可维护性差等。软件工程被认为是解决软件开发中严重问题的有效方法。什么是软件?软件=与计算机程序相关的文档专业开发的软件包括:能够提供客户要求的功能和性能的计算机程序;(2)用于设置程序的配置文件、用于描述程序结构和开发过程的系统文档以及解释如何使用系统的用户文档。软件产品可以为特定用户或一般市场设计和开发。软件产品可以分为:通用软件定制软件一个新的软件不一定是一个新的开发,但可以由现有的软件或可重用的软件组件形成。什么是软件?什么是软件工程?软件工程是一门工程学科,涉及软件生产的所有方面。软件工程涉及软件生命周期的所有方面,从确定软件需求到软件退役。(1)将系统化、标准化和可测量的方法应用于软件开发、操作和维护的过程,即把工程应用于软件;(2)研究(1)中的方法。什么是软件工程?1.4什么是成功的软件项目?一个成功的软件项目的三个要素包括:在预算内按时交付以满足用户需求。1.5软件过程和软件生命周期的相关概念。软件过程是指开发或制造软件产品的一系列活动和结果。所有软件过程包括四个基本活动。规范)-系统应该提供的功能及其开发限制;2.开发)软件产品的生产过程;3.验证)-检查软件产品是否满足客户的需求;4.进化根据用户的变化需求不断改进软件。软件生命周期是软件过程的另一种形象描述,通常包括需求定义、分析和描述、软件设计、实现、测试、维护和退役。1.6好软件的属性是什么?优秀的软件应该能够交付相应的功能和性能,并且应该具有良好的可维护性、依赖性、有效性和可用性:可靠性软件必须值得信赖;有效性软件不应浪费系统资源;可接受性(Acceptibility)软件由用户指定。ThismeansitMustWithOtherSystems,usableandcompatiblewitheothersystems,1.7专业和道德责任。软件工程不仅涉及技术应用,还涉及许多职业和道德责任。软件工程师必须遵守诚信和诚实的行为准则。道德行为不仅受到遵守法律的限制。职业道德责任,行为准则:保密,严格遵守客户保密规定;工作能力,如实表达自己的能力;知识产权,应了解知识产权的相关法律法规,确保客户的相关权益得到保护;滥用电脑,不能用自己的技能去滥用别人的电脑。第二,软件过程,2.1瀑布模型(序列模型),2.1瀑布模型(序列模型),又名:经典生命周期,瀑布模型的特点和应用,它起源于一个更一般的系统工程过程,反映了工程设计的基本思想。该模型将软件过程粗略地划分为几个具有清晰边界的阶段,这些阶段在前后都有严格的顺序,这使得很难对用户需求的变化做出及时的调整。因此,瀑布模型仅适用于需求非常清晰并且需求变化受到严格限制的情况。2.2、进化开发模型的基本思想:通过开发系统原型和反复的用户交互,来阐明需求,使系统能够在不断的调整和修改中进化和成熟。也称为原型开发方法。,两种基本类型:探索性发展;废弃的原型方法。问题缺乏过程可见性;系统结构通常很差;需要一些特殊的技术(例如原型快速开发技术),这些技术通常与主流技术不兼容。该应用程序适用于中小型交互系统。可以用于大规模系统(如系统接口)的本地开发,也可以与瀑布模型混合使用。生命周期短的系统。2.2进化开发模式,2.3增量开发,增量开发特征,在这种开发模式下,系统不是作为一个整体交付,而是分成几个增量,每个增量交付系统的部分功能。用户的需求按照优先级排队,优先级最高的需求放在最早交付的增量中。这样,具有最高优先级的系统功能将得到最多的测试,并且系统可靠性将更高。2.4、基于组件的软件工程,软件复用是指在两个或多个不同的软件开发过程中复用相同或相似的软件元素(通常称为可复用组件、组件或软件组件)的过程。软件组件是标准的、可互换的、组装后即可使用的软件模块。软件复用的含义,软件复用的出发点是使软件系统的开发不再“从头开始”,能够充分利用现有的知识和经验。软件复用可以避免软件开发中的重复劳动,充分利用现有的开发成果,提高开发效率,降低开发成本。软件重用还可以避免新开发可能引入的错误,从而提高软件开发的质量。基于组件的软件工程相对于需求工程3.1需求工程过程,它没有一个唯一的模型,在所有的过程中涉及一些共同的活动。它们是:可行性研究;需求输出和分析;需求描述;需求有效性的验证;需求管理。需求工程流程,需求工程,P61图4-12,3.2可行性研究,可行性研究确定所提出的系统是否值得做。可行性研究包括三个部分:信息评估、信息总结和报告撰写。3.3两个不同级别要求的描述。从客户的角度来看,用户的需求使用自然语言结合图表来声明目标系统要提供的服务以及对系统操作施加的约束。系统需求系统需求是一个结构化文档,它使用一些专业模型来详细描述系统的功能和约束。系统需求文档,有时称为功能描述,应该是准确的,它可以成为双方合同的重要部分,并作为开发工作的基础。3.4、功能性需求和非功能性需求,功能性需求为系统应提供的功能、系统在特定条件下的输入响应和行为描述。在某些情况下,它还包括系统不应该做的事情。非功能性需求描述了系统在提供服务或功能时受到的限制。如时间限制、开发过程限制和标准。领域需求这个需求来自系统的应用领域,反映了领域的特征。它可以是功能性需求或非功能性需求。3.4、功能性需求与非功能性需求、功能性需求与非功能性需求相比较,非功能性需求往往更为关键,因为非功能性需求代表了系统的整体特征,而功能性需求描述了局部功能。(为了更好地理解,请参见教科书示例),3.5使用自然语言描述需求的指南,并设计标准格式以帮助减少遗漏和避免不必要的详细描述;使用一致的语言,特别强调区分强制需求和希望需求。如果“必须”用于定义强制性要求,而“应该”用于定义期望的要求;使用文本突出显示来突出显示关键要求;尽可能避免使用计算机术语;需求原则(需求的原因)应尽可能与相应的需求联系起来。3.7、要求导出和分析,这一阶段进行了一次3.7需求的推导和分析,需求的发现和识别是整个过程中最关键的活动。它负责在目标系统级别收集现有系统的相关信息,并从这些信息中提取用户需求和系统需求。信息来源包括现有文件、系统信息持有者和类似系统的规范。3.7需求推导和分析。需求应该从多个角度进行分析。应使用观点从不同的角度(信息持有人、其他相关系统和领域)表达需求来源。每个视点代表系统需求的子集。3.8结构化分析建模,结构化方法是一种面向数据流的系统建模技术,它从数据处理的角度描述系统规范。SA帮助分析师理解系统的功能,并使用模型与用户交流。不同的模型从不同的角度描述系统。通过结构化方法建立的分析模型的结构如下图所示。结构分析模型的核心是数据字典,它描述了目标系统中使用和生成的所有数据对象。围绕这个核心有三种图:实体关系图(ERD)描述数据对象和数据对象之间的关系;数据流图(DFD)描述了数据如何在系统中传输或转换,并描述了数据流如何转换的功能(子功能);状态迁移图(STD)描述了系统如何响应外部事件和行为。因此,ERD用于数据建模,DFD用于功能建模,STD用于行为建模。3.9.1理解UML是一种标准的图形建模语言,它为不同领域的人们提供了统一的交流标准。该标准使系统构建者能够建立一个系统蓝图,能够以一种标准的、易于理解的方式表达他们的想象力,并使客户、分析师、设计者、程序员和其他系统涉众能够相互理解并达成一致,从而有效地共享和交换设计结果。3.9.3需求导出工作流、需求细化工作流,要求掌握:1)用例图绘制;2)用例表的基本结构和描述方法(用例规格说明);3)绘制活动图4)用循环冗余校验确定关键抽象;5)用类模型表示关键抽象。3.10要求有效性验证。需求有效性验证的目的是验证需求描述是否正确反映了顾客的愿望。良好的需求对软件系统的开发效率和软件质量起着至关重要的作用。错误发现得越晚,修改它的成本就越高。fixing are requirements error after deliverymay custompto 100 times the stoffelixingancimplementationerror .需求检查。需求文件中定义的需求应以多种方式进行检查。这些检查包括:有效性,系统是否提供了最能支持客户需求的功能?一致性?完整性?现实,能满足需求吗?可考性,可考要求?需求有效性测试技术,需求评审系统手册分析软件需求。prototype using anexecutiblemodelofsystemtocheckrequirements。测试用例生成开发测试需求检查需求(4.1)软件工程中的设计。设计是将问题转化为解决方案的创造性过程。该设计解决了“系统如何实现”的问题。从工程管理的角度来看,软件设计可以分为概要设计(总体设计、系统设计)和细节设计(详细设计)、4.2设计概念、4.2.1模块化、4.2.1模块化、模块化思想,即软件被分成可以独立命名和寻址的组件,每个组件称为一个模块,每个模块完成一个子功能。当所有模块组装在一起形成一个整体时,可以完成指定的功能。模块形成系统或子系统。“将一个复杂的问题分解成几个易于解决和管理的小问题后,就更容易解决了。”模块化在此基础上将系统分成几个模块,并逐一分解。4.2.2信息隐藏和独立性。信息隐藏的原理告诉我们,模块的设计应该使不需要这些信息的模块无法访问其中包含的信息(过程和数据)。每个模块只完成一个相对独立的特定功能;只有完成系统功能必须交换的信息才在模块之间交换,即模块应该功能独立。利用信息隐藏原理来指导模块设计有许多优点:1)支持模块的并行开发;2)减少测试和后期维护的工作量。因为设计和代码在测试和维护阶段不可避免地要被修改,所以模块对大多数数据和过程处理细节的隐藏可以减少错误的向外传播。3)整个系统的扩展功能只需要“插入”新模块,大部分原有模块不需要改动。模块独立性的概念是模块化、抽象和信息隐藏概念的直接产物。模块独立性是通过开发具有单一功能且与其他模块没有太多交互的模块来实现的。独立性好的模块对其他模块依赖性小,修改时对其他模块影响小,易于修改和扩展,可维护性好。模块独立性可以通过两个定性标准来衡量:耦合和内聚。耦合是模块之间相对独立性的度量,而内聚力是模块功能相对强度的度量。模块的内聚性越强,耦合性越弱,独立性越强。体系结构设计的任务是识别组成系统的子系统,并建立子系统的控制和通信框架。架构设计是需求描述和其他设计活动之间的桥梁。系统的组成反映了系统组织所采用的基本策略。三种广泛使用的组件类型:数据中心架构(容器模型);客户端/服务器架构;抽象机器或层次结构。4.3.1数据中心体系结构(容器)和数据中心体系结构(容器模型)的基本特征:所有共享数据都放入一个中央数据库(容器),所有子系统都可以从中访问数据;当系统中有大量数据共享时,数据中心(容器)模型是最常用的体系结构样式。4.3.2客户机/服务器体系结构,客户机/服务器模型是分布式系统模型,数据和处理过程分布在多个处理器之间;该模型的主要组成部分是:一组为其他子系统服务的独立服务器;向服务器请求服务的一组客户端;连接客户端和服务器的网络。4.3.3分层(抽象机器)体系结构,该模型将系统组织成一系列级别(抽象机器),每个级别提供一组服务;该模型支持增量开发,不同级别的服务可以分别交付。这些层通过接口连接在一起。当界面改变时,只有相邻的层会受

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论