概念培训课件软件工程基础_第1页
概念培训课件软件工程基础_第2页
概念培训课件软件工程基础_第3页
概念培训课件软件工程基础_第4页
概念培训课件软件工程基础_第5页
已阅读5页,还剩127页未读 继续免费阅读

下载本文档

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

文档简介

软件工程基础朱云峰江苏微软技术中心zhuyf@软件工程基础朱云峰姓名:朱云峰QQ:448149546TEL:13961881969202JiangsuMicrosoftTechnologyCenter2姓名:朱云峰JiangsuMicrosoftTechno前言《大道至简—软件工程实践者的思想》---周爱民

在大学时代、在课桌上令人昏昏欲睡的《软件工程》才是软件开发中的髓质与灵魂选择什么语言、如何重构、有没有或应不应该采用某种模式,都是软件开发的细微末节我们常常陷于行动而没有思想,思想与行为脱节。常常知道做什么,但不知道为什么要这样做JiangsuMicrosoftTechnologyCenter3

“停下来思考,才是进步的本质!”前言《大道至简—软件工程实践者的思想》---周爱民Ji主题软件工程的定义软件工程的研究内容软件工程的基本原理软件工程的作用软件开发的4种常用方法软件工程的5个面向理论软件的支持过程软件的管理过程软件生存周期及开发模型JiangsuMicrosoftTechnologyCenter4RogerS.Pressman软件过程改善和软件工程技术方面国际知名的权威。30多年来,他作为软件工程师、管理人员、教授、作者及咨询顾问始终投身于软件工程领域。主题软件工程的定义JiangsuMicrosoftTec哪些活动是项目?JiangsuMicrosoftTechnologyCenter5上课野餐活动集体婚礼社区保安开发微软的操作系统每天的卫生保洁神州飞船计划?哪些活动是项目?JiangsuMicrosoftTech项目定义项目是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力。JiangsuMicrosoftTechnologyCenter6项目定义项目是为了创造一个唯一的产品或提供一个唯一的服务而进项目的特征有明确的目标项目之间的活动具有相关性限定的周期有独特性资源成本的约束性项目的不确定性JiangsuMicrosoftTechnologyCenter7项目的特征有明确的目标JiangsuMicrosoftT项目与日常运作JiangsuMicrosoftTechnologyCenter8上课

野餐活动集体婚礼社区保安开发操作系统每天的卫生保洁神州飞船计划日常运作项目项目与日常运作JiangsuMicrosoftTechn软件项目的特殊性逻辑实体相互作用的系统变更渐近明细JiangsuMicrosoftTechnologyCenter9软件项目的特殊性逻辑实体JiangsuMicrosoft实现项目目标的制约因素JiangsuMicrosoftTechnologyCenter10实现项目目标的制约因素JiangsuMicrosoftT软件项目实例JiangsuMicrosoftTechnologyCenter11社保系统目标:实现社会保险管理的七大保险功能时间:1年资金:200万资源:10人、设备、资料等等软件项目实例JiangsuMicrosoftTechno软件管理定义软件管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。JiangsuMicrosoftTechnologyCenter12软件管理定义软件管理是为了使软件项目能够按照预定的成本、进度软件工程的定义软件工程:研究软件生产和软件管理的工程学科,包括市场调研、正式立项、项目策划、需求分析、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、销售、实施、系统维护、版本升级等。计算机由硬件和软件组成计算机工程由硬件工程和软件工程组成硬件工程:研究硬件生产和硬件管理的工程学科,包括计算机及网络硬件的分析、设计、生产、采购、验收、安装、培训、维护等。系统集成工程:有时也称网络工程,介于硬件工程和软件工程之间的系统工程(如:规划设计安装一个校园网)JiangsuMicrosoftTechnologyCenter13软件工程的定义软件工程:研究软件生产和软件管理的工程学科,包程序与软件定义程序的定义面向过程的程序=算法+数据结构面向对象的程序=对象+消息面向构件的程序=构件+构架软件的定义软件=程序+数据+文档JiangsuMicrosoftTechnologyCenter14“人生就是一段程序,这段程序是用特殊代码写成的,只是算法极其复杂而已。”程序与软件定义程序的定义JiangsuMicrosoft软件≠程序越早开始写代码的人,就是越迟完成代码的人!JiangsuMicrosoftTechnologyCenter15年代对软件定义的认识20世纪50年代软件就等于程序,软件系统就是程序系统20世纪60年代软件等于程序加文档,这里的文档仅指开发文档,即软件开发过程中的分析、设计、实现、测试、维护文档,还不包括管理文档20世纪70年代软件等于程序加文档和数据,这里的文档指开发文档和管理文档,这里的数据不仅包括初始化数据、测试数据、而且包括研发数据、运行数据、维护数据,也包括软件企业积累的项目工程数据和项目管理数据中的大量决策原始记录数据软件≠程序越早开始写代码的人,就是越迟完成代码的人!Jian

不关注过程图示

JiangsuMicrosoftTechnologyCenter16过程B产品过程C过程A用户需求关注点产品产品

不关注过程图示

JiangsuMicrosoftTec关注过程图示JiangsuMicrosoftTechnologyCenter17产品过程关注点产品产品用户需求关注过程图示JiangsuMicrosoftTechno软件工程的定义1993年,权威组织IEEE对软件工程定义为:软件工程是将系统化的、严格约束的、可量化的方法,应用于软件开发、运行和维护中去。2001年,RogerS.Pressman对软件工程的定义是:软件工程是一个过程、一组方法和一系列工具。现在的定义,软件工程是研究软件开发和软件管理的一门工程科学。

JiangsuMicrosoftTechnologyCenter18软件工程的定义是与时俱进的软件工程的定义1993年,权威组织IEEE对软件工程定义为:软件工程的作用从软件项目团队来讲,解决在规定的时间内,按照规定的成本,完成预期质量目标(软件的功能、性能和接口达到需求报告标准)的软件。从软件企业本身来讲,解决持续地规范软件开发过程和软件管理过程,不断地优化软件组织的个人素质和集体素质,从而逐渐增强软件企业的市场竞争实力。避免“三边六拍”项目。从软件发展进程来讲,克服软件危机,控制软件进度,节约开发成本,提高软件质量。从院校来讲,以前它只是作为一门课或一本书。现在它成为一个学科,一个体系,一个计算机学位,即软件工程硕士学位和软件工程博士学位。JiangsuMicrosoftTechnologyCenter19软件工程的作用从软件项目团队来讲,解决在规定的时间内,按照规JiangsuMicrosoftTechnologyCenter20软件工程研究的方面软件开发项目管理过程改进JiangsuMicrosoftTechnologyC软件工程研究的内容JiangsuMicrosoftTechnologyCenter21研究方面具体内容软件开发模型(开发)瀑布模型、增量模型、迭代模型、原型模型…软件开发方法(开发)面向过程的方法、面向数据的方法、面向对象的方法…软件支持工具(开发+管理)建模工具、开发工具、测试工具、文档工具、配置工具、安装工具…软件管理过程(改进)ISO9000、CMM/CMMI、微软企业文化(MSF)、IBM企业文化、敏捷文化现象(XP)...软件工程三要素:方法、工具、过程软件工程研究的内容JiangsuMicrosoftTec软件开发的8个基本原理用分阶段的生命周期计划,严格管理软件开发。坚持进行阶段评审。实行严格的产品版本控制。采用现代程序设计技术。结果应能清楚地审查。文档要有严格要求。开发小组的成员要少而精。要不断地改进软件工程实践的经验和技术。牢记二八定律JiangsuMicrosoftTechnologyCenter22软件开发的8个基本原理用分阶段的生命周期计划,严格管理软件开软件开发中的二八定律对软件项目进度和工作量的估计:一般人主观上认为已经完成了80%,但实际上只完成了20%对程序中存在问题的估计:80%的问题存在于20%的程序之中对模块功能的估计:20%的模块,实现了80%的功能对人力资源的估计:20%的人,解决了软件中80%的问题对投入资金的估计:企业信息系统中80%的问题,可以用20%的资金来解决。JiangsuMicrosoftTechnologyCenter23这条原理特别重要,项目经理与高层经理,要特别牢记!软件开发中的二八定律对软件项目进度和工作量的估计:一般人主观软件工程中的4个开发方法面向过程的方法面向对象的方法面向数据的方法形式化方法(*)JiangsuMicrosoftTechnologyCenter24软件工程中的4个开发方法面向过程的方法JiangsuMic面向过程的方法内容:面向过程需求分析、面向过程设计、面向过程编程、面向过程测试、面向过程维护、面向过程管理。面向过程的方法,又称为面向功能的方法,或称为结构化方法,强调以模块(即过程)为中心,采用模块化、自顶向下、逐步求精设计过程,系统是实现模块功能的函数和过程的集合。(典型的用C语言编程)特点:程序的执行过程,完全由程序员控制(灵活性)优点:结构清晰、可读性好,简单实用。缺点:企图用有穷的方法(枚举法)来描述无穷的(随机的)信息世界,所以不能完全描述信息世界;维护困难。JiangsuMicrosoftTechnologyCenter25面向过程的方法内容:面向过程需求分析、面向过程设计、面向过程面向对象的方法内容:面向对象需求分析、面向对象设计、面向对象编程、面向对象测试、面向对象维护、面向对象管理。在分析、设计、实现中用到“对象、类、继承、消息通信”这四个基本概念,就是面向对象的方法。即万物皆为对象!UML开发软件,就是面向对象的方法。

特点:(1).程序的执行过程,不由程序员控制,完全由用户控制。(2).分析设计时面向类,编程时面向对象。优点:用无穷的方法来描述无穷的(随机的)信息世界,所以能完全描述信息世界;这样设计出的系统模型往往能较好地映射问题域模型易于维护。缺点:这就需要对问题域中的对象作整体分析,类和类间关系的设计要求较高(设计模式),否则设计出的并不是真正意义上的面向对象的软件系统,而只是一些类的堆砌而已,不能体现出面向对象设计方法的优势之处所以较难掌握。JiangsuMicrosoftTechnologyCenter26面向对象的方法内容:面向对象需求分析、面向对象设计、面向对象面向数据的方法内容:是建设信息系统数据库和数据仓库的基本方法。1)数据位于信息系统的中心。2)由元数据构成的数据模型是稳定的。3)对元数据的处理方法是可变的。4)企业信息系统的核心是数据模型。5)系统的实现方法主要是面向数据。6)用户始终参与信息系统的开发。

特点:程序的执行过程,有时由程序员控制,有时由用户控制。优点:适合数据层设计与实现。

缺点:实现窗口界面较困难。JiangsuMicrosoftTechnologyCenter27面向数据的方法内容:是建设信息系统数据库和数据仓库的基本方法形式化方法软件工程的形式化方法是建立在严格数学基础上、以逻辑推理为出发点、并且具有精确数学语义的开发方法。作为一种以数学逻辑为基础的方法,形式化方法以其严密性越来越受到众多领域的重视,尤其是在安全性和可靠性作为关键问题的系统,如核电站、航空航天、铁路运输系统中得到了较为广泛的应用。但是对于形式化方法在工业领域的实际应用问题,在软件工程界,尤其是在系统开发人员当中,还存在着相当多的疑问。软件工程中的形式化方法是软件工程研究的领域之一,其内容包括:有限状态机、Statecharts、Petri网、通信顺序进程、通信系统演算、一阶逻辑、程序正确性证明、净室软件工程、时态逻辑、模型检验、Z形式规约语言、B语言和方法、VDM系统、Larch等。JiangsuMicrosoftTechnologyCenter28形式化方法软件工程的形式化方法是建立在严格数学基础上、以逻辑四种开发方法的比较JiangsuMicrosoftTechnologyCenter29方法名称优点缺点适合的场合面向过程的方法简单好学不适应窗口界面,维护困难大型工程计算,实时数据跟踪处理,各种自动化控制系统,以及系统软件实现等领域面向对象的方法功能强大,易于维护

不易掌握

互联网络时代,完全由用户交互控制程序执行过程的应用软件和系统软件的开发面向数据的方法通俗易懂不适应窗口界面

以关系数据库管理系统为支撑环境的信息系统建设形式化方法准确、严谨难于上手和应用对安全性要求极高,不容许出错的软件系统,如军事、医药、交通等领域四种开发方法的比较JiangsuMicrosoftTec软件工程中的5个面向原则面向流程分析。面向数据设计面向对象实现面向功能测试面向过程管理JiangsuMicrosoftTechnologyCenter30软件工程中的5个面向原则面向流程分析。JiangsuMic面向流程分析面向流程分析,就是面向流程需求分析。在需求分析时,系统分析员要面向业务流、资金流、信息流进行分析。只有将这“三个流”分析透了,才建立好系统的业务模型和功能模型。因为计算机网络在本质上只认识数据及数据流(严格地讲,它只认识二进制数和二进制数据的流动),而且这“三个流”,可以用“数据流”这一个流程来代替,或者说“三个流”是“数据流”在三个不同方向的投影。JiangsuMicrosoftTechnologyCenter31面向流程分析面向流程分析,就是面向流程需求分析。Jiangs面向数据的设计面向数据设计,就是面向元数据进行概要设计。在系统设计时,系统设计师要采用面向数据的方法进行概要设计。面向数据就是面向“元数据”(Metadata)。概要设计的主要任务是建立系统的数据模型,包括概念数据模型CDM和物理数据模型PDM,以及体现业务规则的存储过程和触发器,然后以数据模型为支撑,去实现系统的业务模型和功能模型(包括性能模型和接口模型)。为此,要对元数据进行分析,只有将元数据分析透了,才能建立好由元数据所构成的数据模型。这里讲的面向数据设计,主要表现在数据库服务器上的关系数据库设计。JiangsuMicrosoftTechnologyCenter32面向数据的设计面向数据设计,就是面向元数据进行概要设计。Ji面向对象的实现面向对象实现,就是面向对象进行详细设计和编程实现。在两层结构(C/S)的客户层上,在三层结构(B/A/S)的表示层和业务逻辑层上,进行详细设计和编程实现时,要采用面向对象的方法。当然,在数据服务层上的设计和编程实现,仍然要采用面向数据的方法,因为主要是设计和编写存储过程,它们是面向数据的,不是面向对象的。详细设计和编程实现,实质上是用构件加上程序来实现系统的业务模型和功能模型。只有对系统的三个模型思想(业务模型、功能模型、数据模型)吃透了,才能设计和编写出合格的程序。面向对象实现,实质上是面向类实现,因为实例化的类称为对象。JiangsuMicrosoftTechnologyCenter33面向对象的实现面向对象实现,就是面向对象进行详细设计和编程实面向功能的测试面向功能测试,就是面向功能进行单元测试、集成测试、Alpha测试和Beta测试(或系统测试和验收测试)。在进行测试时,测试人员要采用面向功能的方法。这里讲的功能,包括系统的功能、性能和接口三部分内容。面向功能测试的方法就是黑盒子测试方法,随着第四代程序设计语言和构件技术的发展,该测试方法会越来越广泛。今后采用白盒子测试方法(面向程序执行路径测试)的人,只有从事软件构件生产和核心代码编程的极少数人员。JiangsuMicrosoftTechnologyCenter34面向功能的测试面向功能测试,就是面向功能进行单元测试、集成测面向过程的管理面向过程管理,就是面向过程对软件生命周期各个阶段进行管理和控制。因为软件产品质量的提高与改进,完全取决于软件企业生产过程的改善。无论是CMM/CMMI、ISO9000、微软企业文化,都是站在软件生命周期过程的观念上去提高软件企业的素质。那种认为“只要有几个优秀的程序员就能办好软件企业,就能生产出高质量的软件产品”的观点,在上世纪80年代理直气壮,在90年代还能解决温饱问题,在本世纪就站不住脚了,混不下去了,因为他们是手工作坊式的开发方法,忽视了软件中的面向过程管理。JiangsuMicrosoftTechnologyCenter35面向过程的管理面向过程管理,就是面向过程对软件生命周期各个阶软件的支持过程软件工程中的过程,是指软件生命周期(LifeCycle)中的时间序列。过程作为一个时间序列,它自然有起始点和终止点。例如,可以将一个软件的生命周期划分为市场调研、立项、策划、需求分析、概要设计、详细设计、编程、单元测试、集成测试、运行、维护这几个过程,前一过程的终止点就是后一过程的起始点。过程与阶段(Phase)相对应,阶段与里程碑(Milestone)相对应。某些重要的里程碑的产出物又称为基线(baseline)。JiangsuMicrosoftTechnologyCenter36软件的支持过程软件工程中的过程,是指软件生命周期(Life软件的生产工具软件工程的支持过程,由支持软件生命周期各个阶段的生产工具所组成。生产工具如需求分析工具、设计工具、实现工具、测试工具、维护工具、配置工具,开发环境。支持过程是通过支持工具来实现的。每一种支持工具都是当前软件界的热点之一,但它不是软件工程的重点内容。JiangsuMicrosoftTechnologyCenter37软件的生产工具软件工程的支持过程,由支持软件生命周期各个阶段软件工程常用支持工具系统分析设计与建模工具IBMRationalRoseMicrosoftVisualStudioTeamSystemMicrosoftOfficeVisioforEnterpriseArchitects数据库设计与建模工具SybasePowerDesignerCAERWinMicrosoftVisualStudioTeamSystemMicrosoftOfficeVisioforEnterpriseArchitects开发工具MicrosoftVisualStudioTeamSystem(.NET平台)开源Eclipse(JAVA平台)单元测试工具MicrosoftVisualStudioTeamSystem开源NUnit(.NET平台)开源JUnit(JAVA平台)JiangsuMicrosoftTechnologyCenter38软件工程常用支持工具系统分析设计与建模工具JiangsuM软件工程常用支持工具安装工具MicrosoftVisualStudio.NETInstallShield开源NSIS(编写安装脚本)文档工具MicrosoftHelpWorkshop(制作HLP文件)MicrosoftHTMLHelpWorkshop(制作CHM文件)开源NDoc(根据代码注释自动生成文档)画图工具MicrosoftOfficeVisio源代码管理工具MicrosoftVisualStudioTeamSystemMicrosoftVisualSourceSafe(VSS)开源ConcurrentVersionsSystem(CVS/CVSNT)项目管理工具MicrosoftVisualStudioTeamSystemMicrosoftOfficeProjectJiangsuMicrosoftTechnologyCenter39软件工程常用支持工具安装工具JiangsuMicrosof软件的管理过程“外行关注结果,内行关注过程”。1974年,美国人认识到“软件需要管理”。1984年,美国人认识到“软件管理是过程管理”。软件工程中主要存在3类过程管理模型:

ISO9000质量管理和质量保证体系

CMM/CMMI过程能力成熟度模型企业文化(微软企业文化、敏捷文化现象等)JiangsuMicrosoftTechnologyCenter40牢记:软件管理过程比开发技术更重要!软件的管理过程“外行关注结果,内行关注过程”。Jiangsu软件工程中的3类过程管理模型JiangsuMicrosoftTechnologyCenter41序号名称来源特点1ISO9000质量管理和质量保证体系国际标准化组织

ISO

按20多个质量要素管理2CMM/CMMI软件能力成熟度模型美国卡内基-梅隆大学软件工程研究所(CMU/SEI)按25个过程域PA,分阶段模型和连续模型两种方式管理属于重载过程管理3软件企业文化Microsoft公司、IBM公司、敏捷方法属于轻载过程管理软件工程中的3类过程管理模型JiangsuMicrosof软件的管理过程JiangsuMicrosoftTechnologyCenter42过程定义过程改进项目规划项目监控项目实施软件的管理过程JiangsuMicrosoftTechn软件的管理过程软件管理用于保证项目的成功,过程管理用于管理最佳实践。这两项管理不是相互孤立的,而是有机地紧密地结合的。JiangsuMicrosoftTechnologyCenter43软件的管理过程软件管理用于保证项目的成功,JiangsuM软件生存周期概论任何有生命的动物、植物和人,都有一个生存周期(LifeCycle),例如人的生存周期为胎儿、婴儿、幼儿、儿童、少年、青年、中年、老年、死亡。没有生命的事物或实体,例如PC机、路由器、家具、房子、汽车,它们也有一个生存周期,这个生存周期就是使用寿命,即生产周期加上使用周期。生存周期与开发模型有关。JiangsuMicrosoftTechnologyCenter44软件生存周期概论任何有生命的动物、植物和人,都有一个生存周期软件的生存周期(常规)JiangsuMicrosoftTechnologyCenter45周期序号周期名称周期序号周期名称1立项(或签合同)、下达任务书6软件测试2需求分析7软件发布与实施3概要设计8软件维护4详细设计9版本更新或退役5编码实现///////////////////////////////软件的生存周期(常规)JiangsuMicrosoftT瀑布模型(WaterfallModel)定义:1970年温斯顿•罗伊斯(WinstonRoyce)提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被广泛采用的软件开发模型。瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。瀑布模型是最早出现的软件开发模型,在软件工程中占有重要的地位,它提供了软件开发的基本框架。其过程是从上一项活动接收该项活动的工作对象作为输入,利用这一输入实施该项活动应完成的内容给出该项活动的工作成果,并作为输出传给下一项活动。同时评审该项活动的实施,若确认,则继续下一项活动;否则返回前面,甚至更前面的活动。对于经常变化的项目而言,瀑布模型毫无价值。JiangsuMicrosoftTechnologyCenter46瀑布模型(WaterfallModel)定义:1970年温瀑布模型图JiangsuMicrosoftTechnologyCenter47瀑布模型图JiangsuMicrosoftTechnol瀑布模型优缺点优点:提供了软件开发的基本框架为项目提供了按阶段划分的检查点当前一阶段完成后,您只需要去关注后续阶段可在迭代模型中应用瀑布模型(*)缺点:在项目各个阶段之间极少有反馈由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险通过过多的强制完成日期和里程碑来跟踪各个项目阶段。而且各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果JiangsuMicrosoftTechnologyCenter48瀑布模型优缺点优点:JiangsuMicrosoftTe瀑布模型选择条件选择模型的条件:在开发时间内需求没有或很少变化。分析设计人员对应用领域很熟悉。低风险项目(对目标、环境很熟悉)。用户使用环境很稳定。用户除提出需求以外,很少参与开发。JiangsuMicrosoftTechnologyCenter49瀑布模型选择条件选择模型的条件:JiangsuMicros增量模型增量模型将软件产品看作一组增量构件,每次设计、实现、集成、测试和交付一块构件,直到所有构件全部实现为止。要开发一个大的软件系统,先开发其中的一个核心模块,后再开发其他模块,这样一个个模块地增加上去,直至整个系统开发完毕为止。增量模型的特点是引进了增量包的概念,无须等到所有需求都出来,只要某个需求的增量包出来即可进行开发。虽然某个增量包可能还需要进一步适应客户的需求并且更改,但只要这个增量包足够小,其影响对整个项目来说是可以承受的。JiangsuMicrosoftTechnologyCenter50增量模型增量模型将软件产品看作一组增量构件,每次设计、实现、增量模型图JiangsuMicrosoftTechnologyCenter51增量模型图JiangsuMicrosoftTechnol增量模型的优缺点优点采用增量模型的优点是人员分配灵活,刚开始不用投入大量人力资源。如果核心产品很受欢迎,则可增加人力实现下一个增量。当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径。这样即可先发布部分功能给客户,对客户起到镇静剂的作用。增量能够有计划地管理技术风险。缺点由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。如果增量包之间存在相交的情况且未很好处理,则必须做全盘系统分析,这种模型将功能细化后分别开发的方法较适应于需求经常改变的软件开发过程。JiangsuMicrosoftTechnologyCenter52增量模型的优缺点优点JiangsuMicrosoftTe增量模型的选择条件选择模型的条件:在项目开发过程中,客户接受分阶段交付。开发人员对应用领域不熟悉,难以一步到位。工期过紧的中等或高风险项目。用户可参与到整个软件开发过程中。使用面向对象语言或第四代语言。软件公司自己有较好的类库、构件库。JiangsuMicrosoftTechnologyCenter53增量模型的选择条件选择模型的条件:JiangsuMicro迭代模型(IterativeModel)迭代被定义为:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:(至少包括)需求工作流程、分析设计工作流程、实施工作流程和测试工作流程。实质上,它类似小型的瀑布式项目。所有的阶段(需求及其它)都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。JiangsuMicrosoftTechnologyCenter54迭代模型(IterativeModel)迭代被定义为:迭代模型图JiangsuMicrosoftTechnologyCenter55迭代模型图JiangsuMicrosoftTechnol迭代模型的优缺点优点降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。缺点对项目组成员要求很高。必须掌握先进的开发工具JiangsuMicrosoftTechnologyCenter56迭代模型的优缺点优点JiangsuMicrosoftTe迭代模型的选择条件选择模型的条件:在项目开发早期需求可能有所变化。分析设计人员对应用领域很熟悉。高风险项目。用户可不同程度地参与整个项目的开发过程。使用面向对象的语言或UML语言。使用CASE(ComputerAidedSoftwareEngineering,计算机辅助软件工程)工具,如Rose。具有高素质的项目管理者和软件研发团队。JiangsuMicrosoftTechnologyCenter57迭代模型的选择条件选择模型的条件:JiangsuMicro增量模型和迭代模型区别JiangsuMicrosoftTechnologyCenter58增量模型和迭代模型区别JiangsuMicrosoftT原型模型先借用已有系统作为原型模型,通过“样品”不断改进,使得最后的产品就是用户所需要的。原型法里面的原型包括两种抛弃型,只是为了获得用户需求,可能采用不同的技术实现,得到用户需求以后抛弃迭代型,开始完成的是系统核心功能或者是系统架构,逐步求精和完善在初步需求分析之后,马上向客户展示一个软件产品原型,对客户进行培训,让客户试用,在试用中收集客户意见,修改原型,再让客户试用,反复循环几次,直到客户确认为止。原型驱动。因此,开发者必须先有一个原型,至少要有一个原型的核心。JiangsuMicrosoftTechnologyCenter59原型模型先借用已有系统作为原型模型,通过“样品”不断改进,使原型模型图JiangsuMicrosoftTechnologyCenter60原型模型图JiangsuMicrosoftTechnol原型模型的优缺点优点开发人员和用户在“原型”上达成一致。这样一来,可以减少设计中的错误和开发中的风险,也减少了对用户培训的时间,而提高了系统的实用、正确性以及用户的满意程度缩短了开发周期,加快了工程进度降低成本缺点因为事先有一个展示性的产品原型,所以在一定程度上,不利于开发人员的创新当告诉用户,还必须重新生产该产品时,用户是很难接受的。这往往给工程继续开展带来不利因素。不宜利用原型系统作为最终产品。采用原型模型开发系统,用户和开发者必须达成一致:原型被建造仅仅是用户用来定义需求,之后便部分或全部抛起,最终的软件是要充分考虑了质量和可维护性等方面之后才被开发。JiangsuMicrosoftTechnologyCenter61原型模型的优缺点优点JiangsuMicrosoftTe原型模型的选择条件选择模型的条件:已有产品或产品的原型,只需客户化的项目。简单而熟悉的行业或领域。有快速原型开发工具。进行产品移植或升级。JiangsuMicrosoftTechnologyCenter62原型模型的选择条件选择模型的条件:JiangsuMicro开发模型的对比与关联原型与迭代是包含的关系,一次迭代的过程可以采用原型法,也可以采用其它方法增量和迭代的区别在于增量模型是从功能量上来划分的,每阶段完成一定的功能。迭代模型是从深度或细化的程度来划分的,每阶段功能得到完善、增强。增量和迭代的共同点是每个迭代和增量结束后都有产品发布。在实际应用中,增量、迭代经常一起使用,如迭代时加入新的功能进行开发,这也是他们经常一起出现的原因。JiangsuMicrosoftTechnologyCenter63开发模型的对比与关联原型与迭代是包含的关系,一次迭代的过程可开发模型小结进入IT企业参与软件开发或软件管理时,首先要明确:当前的项目或产品开发到底采用什么开发模型,由此确定软件的生存周期和当前的软件开发进度;合理安排项目组成员的工作。迅速适应IT企业文化,并很快进入角色。瀑布模型、增量模型、迭代模型和原型模型。因为4个模型各有所长,所以它们有各自的生存空间。因为它们各有所短,所示才会产生相互竞争,共同构成一个丰富多彩的多个模型竞争的世界。一个成熟的软件组织,根据上述通用的4个软件开发模型的普遍原则,结合本单位的开发经验和行业特点的具体实际,还需要定制适合本单位的“生存周期模型裁剪指南”,有针对性地对选定的软件开发模型中定义的生存周期,进行恰当的裁剪,使它完全适合于本单位的需求。从而构成了完全适合本单位的“生存周期模型裁剪指南”。该“指南”在软件组织内部,专供高层经理和项目经理在软件策划中选取软件开发模型时使用。JiangsuMicrosoftTechnologyCenter64开发模型小结进入IT企业参与软件开发或软件管理时,首先要明确感谢

ThankYou朱云峰江苏微软技术中心zhuyf@感谢

ThankYou朱云峰演讲完毕,谢谢观看!演讲完毕,谢谢观看!软件工程基础朱云峰江苏微软技术中心zhuyf@软件工程基础朱云峰姓名:朱云峰QQ:448149546TEL:13961881969202JiangsuMicrosoftTechnologyCenter68姓名:朱云峰JiangsuMicrosoftTechno前言《大道至简—软件工程实践者的思想》---周爱民

在大学时代、在课桌上令人昏昏欲睡的《软件工程》才是软件开发中的髓质与灵魂选择什么语言、如何重构、有没有或应不应该采用某种模式,都是软件开发的细微末节我们常常陷于行动而没有思想,思想与行为脱节。常常知道做什么,但不知道为什么要这样做JiangsuMicrosoftTechnologyCenter69

“停下来思考,才是进步的本质!”前言《大道至简—软件工程实践者的思想》---周爱民Ji主题软件工程的定义软件工程的研究内容软件工程的基本原理软件工程的作用软件开发的4种常用方法软件工程的5个面向理论软件的支持过程软件的管理过程软件生存周期及开发模型JiangsuMicrosoftTechnologyCenter70RogerS.Pressman软件过程改善和软件工程技术方面国际知名的权威。30多年来,他作为软件工程师、管理人员、教授、作者及咨询顾问始终投身于软件工程领域。主题软件工程的定义JiangsuMicrosoftTec哪些活动是项目?JiangsuMicrosoftTechnologyCenter71上课野餐活动集体婚礼社区保安开发微软的操作系统每天的卫生保洁神州飞船计划?哪些活动是项目?JiangsuMicrosoftTech项目定义项目是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力。JiangsuMicrosoftTechnologyCenter72项目定义项目是为了创造一个唯一的产品或提供一个唯一的服务而进项目的特征有明确的目标项目之间的活动具有相关性限定的周期有独特性资源成本的约束性项目的不确定性JiangsuMicrosoftTechnologyCenter73项目的特征有明确的目标JiangsuMicrosoftT项目与日常运作JiangsuMicrosoftTechnologyCenter74上课

野餐活动集体婚礼社区保安开发操作系统每天的卫生保洁神州飞船计划日常运作项目项目与日常运作JiangsuMicrosoftTechn软件项目的特殊性逻辑实体相互作用的系统变更渐近明细JiangsuMicrosoftTechnologyCenter75软件项目的特殊性逻辑实体JiangsuMicrosoft实现项目目标的制约因素JiangsuMicrosoftTechnologyCenter76实现项目目标的制约因素JiangsuMicrosoftT软件项目实例JiangsuMicrosoftTechnologyCenter77社保系统目标:实现社会保险管理的七大保险功能时间:1年资金:200万资源:10人、设备、资料等等软件项目实例JiangsuMicrosoftTechno软件管理定义软件管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。JiangsuMicrosoftTechnologyCenter78软件管理定义软件管理是为了使软件项目能够按照预定的成本、进度软件工程的定义软件工程:研究软件生产和软件管理的工程学科,包括市场调研、正式立项、项目策划、需求分析、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、销售、实施、系统维护、版本升级等。计算机由硬件和软件组成计算机工程由硬件工程和软件工程组成硬件工程:研究硬件生产和硬件管理的工程学科,包括计算机及网络硬件的分析、设计、生产、采购、验收、安装、培训、维护等。系统集成工程:有时也称网络工程,介于硬件工程和软件工程之间的系统工程(如:规划设计安装一个校园网)JiangsuMicrosoftTechnologyCenter79软件工程的定义软件工程:研究软件生产和软件管理的工程学科,包程序与软件定义程序的定义面向过程的程序=算法+数据结构面向对象的程序=对象+消息面向构件的程序=构件+构架软件的定义软件=程序+数据+文档JiangsuMicrosoftTechnologyCenter80“人生就是一段程序,这段程序是用特殊代码写成的,只是算法极其复杂而已。”程序与软件定义程序的定义JiangsuMicrosoft软件≠程序越早开始写代码的人,就是越迟完成代码的人!JiangsuMicrosoftTechnologyCenter81年代对软件定义的认识20世纪50年代软件就等于程序,软件系统就是程序系统20世纪60年代软件等于程序加文档,这里的文档仅指开发文档,即软件开发过程中的分析、设计、实现、测试、维护文档,还不包括管理文档20世纪70年代软件等于程序加文档和数据,这里的文档指开发文档和管理文档,这里的数据不仅包括初始化数据、测试数据、而且包括研发数据、运行数据、维护数据,也包括软件企业积累的项目工程数据和项目管理数据中的大量决策原始记录数据软件≠程序越早开始写代码的人,就是越迟完成代码的人!Jian

不关注过程图示

JiangsuMicrosoftTechnologyCenter82过程B产品过程C过程A用户需求关注点产品产品

不关注过程图示

JiangsuMicrosoftTec关注过程图示JiangsuMicrosoftTechnologyCenter83产品过程关注点产品产品用户需求关注过程图示JiangsuMicrosoftTechno软件工程的定义1993年,权威组织IEEE对软件工程定义为:软件工程是将系统化的、严格约束的、可量化的方法,应用于软件开发、运行和维护中去。2001年,RogerS.Pressman对软件工程的定义是:软件工程是一个过程、一组方法和一系列工具。现在的定义,软件工程是研究软件开发和软件管理的一门工程科学。

JiangsuMicrosoftTechnologyCenter84软件工程的定义是与时俱进的软件工程的定义1993年,权威组织IEEE对软件工程定义为:软件工程的作用从软件项目团队来讲,解决在规定的时间内,按照规定的成本,完成预期质量目标(软件的功能、性能和接口达到需求报告标准)的软件。从软件企业本身来讲,解决持续地规范软件开发过程和软件管理过程,不断地优化软件组织的个人素质和集体素质,从而逐渐增强软件企业的市场竞争实力。避免“三边六拍”项目。从软件发展进程来讲,克服软件危机,控制软件进度,节约开发成本,提高软件质量。从院校来讲,以前它只是作为一门课或一本书。现在它成为一个学科,一个体系,一个计算机学位,即软件工程硕士学位和软件工程博士学位。JiangsuMicrosoftTechnologyCenter85软件工程的作用从软件项目团队来讲,解决在规定的时间内,按照规JiangsuMicrosoftTechnologyCenter86软件工程研究的方面软件开发项目管理过程改进JiangsuMicrosoftTechnologyC软件工程研究的内容JiangsuMicrosoftTechnologyCenter87研究方面具体内容软件开发模型(开发)瀑布模型、增量模型、迭代模型、原型模型…软件开发方法(开发)面向过程的方法、面向数据的方法、面向对象的方法…软件支持工具(开发+管理)建模工具、开发工具、测试工具、文档工具、配置工具、安装工具…软件管理过程(改进)ISO9000、CMM/CMMI、微软企业文化(MSF)、IBM企业文化、敏捷文化现象(XP)...软件工程三要素:方法、工具、过程软件工程研究的内容JiangsuMicrosoftTec软件开发的8个基本原理用分阶段的生命周期计划,严格管理软件开发。坚持进行阶段评审。实行严格的产品版本控制。采用现代程序设计技术。结果应能清楚地审查。文档要有严格要求。开发小组的成员要少而精。要不断地改进软件工程实践的经验和技术。牢记二八定律JiangsuMicrosoftTechnologyCenter88软件开发的8个基本原理用分阶段的生命周期计划,严格管理软件开软件开发中的二八定律对软件项目进度和工作量的估计:一般人主观上认为已经完成了80%,但实际上只完成了20%对程序中存在问题的估计:80%的问题存在于20%的程序之中对模块功能的估计:20%的模块,实现了80%的功能对人力资源的估计:20%的人,解决了软件中80%的问题对投入资金的估计:企业信息系统中80%的问题,可以用20%的资金来解决。JiangsuMicrosoftTechnologyCenter89这条原理特别重要,项目经理与高层经理,要特别牢记!软件开发中的二八定律对软件项目进度和工作量的估计:一般人主观软件工程中的4个开发方法面向过程的方法面向对象的方法面向数据的方法形式化方法(*)JiangsuMicrosoftTechnologyCenter90软件工程中的4个开发方法面向过程的方法JiangsuMic面向过程的方法内容:面向过程需求分析、面向过程设计、面向过程编程、面向过程测试、面向过程维护、面向过程管理。面向过程的方法,又称为面向功能的方法,或称为结构化方法,强调以模块(即过程)为中心,采用模块化、自顶向下、逐步求精设计过程,系统是实现模块功能的函数和过程的集合。(典型的用C语言编程)特点:程序的执行过程,完全由程序员控制(灵活性)优点:结构清晰、可读性好,简单实用。缺点:企图用有穷的方法(枚举法)来描述无穷的(随机的)信息世界,所以不能完全描述信息世界;维护困难。JiangsuMicrosoftTechnologyCenter91面向过程的方法内容:面向过程需求分析、面向过程设计、面向过程面向对象的方法内容:面向对象需求分析、面向对象设计、面向对象编程、面向对象测试、面向对象维护、面向对象管理。在分析、设计、实现中用到“对象、类、继承、消息通信”这四个基本概念,就是面向对象的方法。即万物皆为对象!UML开发软件,就是面向对象的方法。

特点:(1).程序的执行过程,不由程序员控制,完全由用户控制。(2).分析设计时面向类,编程时面向对象。优点:用无穷的方法来描述无穷的(随机的)信息世界,所以能完全描述信息世界;这样设计出的系统模型往往能较好地映射问题域模型易于维护。缺点:这就需要对问题域中的对象作整体分析,类和类间关系的设计要求较高(设计模式),否则设计出的并不是真正意义上的面向对象的软件系统,而只是一些类的堆砌而已,不能体现出面向对象设计方法的优势之处所以较难掌握。JiangsuMicrosoftTechnologyCenter92面向对象的方法内容:面向对象需求分析、面向对象设计、面向对象面向数据的方法内容:是建设信息系统数据库和数据仓库的基本方法。1)数据位于信息系统的中心。2)由元数据构成的数据模型是稳定的。3)对元数据的处理方法是可变的。4)企业信息系统的核心是数据模型。5)系统的实现方法主要是面向数据。6)用户始终参与信息系统的开发。

特点:程序的执行过程,有时由程序员控制,有时由用户控制。优点:适合数据层设计与实现。

缺点:实现窗口界面较困难。JiangsuMicrosoftTechnologyCenter93面向数据的方法内容:是建设信息系统数据库和数据仓库的基本方法形式化方法软件工程的形式化方法是建立在严格数学基础上、以逻辑推理为出发点、并且具有精确数学语义的开发方法。作为一种以数学逻辑为基础的方法,形式化方法以其严密性越来越受到众多领域的重视,尤其是在安全性和可靠性作为关键问题的系统,如核电站、航空航天、铁路运输系统中得到了较为广泛的应用。但是对于形式化方法在工业领域的实际应用问题,在软件工程界,尤其是在系统开发人员当中,还存在着相当多的疑问。软件工程中的形式化方法是软件工程研究的领域之一,其内容包括:有限状态机、Statecharts、Petri网、通信顺序进程、通信系统演算、一阶逻辑、程序正确性证明、净室软件工程、时态逻辑、模型检验、Z形式规约语言、B语言和方法、VDM系统、Larch等。JiangsuMicrosoftTechnologyCenter94形式化方法软件工程的形式化方法是建立在严格数学基础上、以逻辑四种开发方法的比较JiangsuMicrosoftTechnologyCenter95方法名称优点缺点适合的场合面向过程的方法简单好学不适应窗口界面,维护困难大型工程计算,实时数据跟踪处理,各种自动化控制系统,以及系统软件实现等领域面向对象的方法功能强大,易于维护

不易掌握

互联网络时代,完全由用户交互控制程序执行过程的应用软件和系统软件的开发面向数据的方法通俗易懂不适应窗口界面

以关系数据库管理系统为支撑环境的信息系统建设形式化方法准确、严谨难于上手和应用对安全性要求极高,不容许出错的软件系统,如军事、医药、交通等领域四种开发方法的比较JiangsuMicrosoftTec软件工程中的5个面向原则面向流程分析。面向数据设计面向对象实现面向功能测试面向过程管理JiangsuMicrosoftTechnologyCenter96软件工程中的5个面向原则面向流程分析。JiangsuMic面向流程分析面向流程分析,就是面向流程需求分析。在需求分析时,系统分析员要面向业务流、资金流、信息流进行分析。只有将这“三个流”分析透了,才建立好系统的业务模型和功能模型。因为计算机网络在本质上只认识数据及数据流(严格地讲,它只认识二进制数和二进制数据的流动),而且这“三个流”,可以用“数据流”这一个流程来代替,或者说“三个流”是“数据流”在三个不同方向的投影。JiangsuMicrosoftTechnologyCenter97面向流程分析面向流程分析,就是面向流程需求分析。Jiangs面向数据的设计面向数据设计,就是面向元数据进行概要设计。在系统设计时,系统设计师要采用面向数据的方法进行概要设计。面向数据就是面向“元数据”(Metadata)。概要设计的主要任务是建立系统的数据模型,包括概念数据模型CDM和物理数据模型PDM,以及体现业务规则的存储过程和触发器,然后以数据模型为支撑,去实现系统的业务模型和功能模型(包括性能模型和接口模型)。为此,要对元数据进行分析,只有将元数据分析透了,才能建立好由元数据所构成的数据模型。这里讲的面向数据设计,主要表现在数据库服务器上的关系数据库设计。JiangsuMicrosoftTechnologyCenter98面向数据的设计面向数据设计,就是面向元数据进行概要设计。Ji面向对象的实现面向对象实现,就是面向对象进行详细设计和编程实现。在两层结构(C/S)的客户层上,在三层结构(B/A/S)的表示层和业务逻辑层上,进行详细设计和编程实现时,要采用面向对象的方法。当然,在数据服务层上的设计和编程实现,仍然要采用面向数据的方法,因为主要是设计和编写存储过程,它们是面向数据的,不是面向对象的。详细设计和编程实现,实质上是用构件加上程序来实现系统的业务模型和功能模型。只有对系统的三个模型思想(业务模型、功能模型、数据模型)吃透了,才能设计和编写出合格的程序。面向对象实现,实质上是面向类实现,因为实例化的类称为对象。JiangsuMicrosoftTechnologyCenter99面向对象的实现面向对象实现,就是面向对象进行详细设计和编程实面向功能的测试面向功能测试,就是面向功能进行单元测试、集成测试、Alpha测试和Beta测试(或系统测试和验收测试)。在进行测试时,测试人员要采用面向功能的方法。这里讲的功能,包括系统的功能、性能和接口三部分内容。面向功能测试的方法就是黑盒子测试方法,随着第四代程序设计语言和构件技术的发展,该测试方法会越来越广泛。今后采用白盒子测试方法(面向程序执行路径测试)的人,只有从事软件构件生产和核心代码编程的极少数人员。JiangsuMicrosoftTechnologyCenter100面向功能的测试面向功能测试,就是面向功能进行单元测试、集成测面向过程的管理面向过程管理,就是面向过程对软件生命周期各个阶段进行管理和控制。因为软件产品质量的提高与改进,完全取决于软件企业生产过程的改善。无论是CMM/CMMI、ISO9000、微软企业文化,都是站在软件生命周期过程的观念上去提高软件企业的素质。那种认为“只要有几个优秀的程序员就能办好软件企业,就能生产出高质量的软件产品”的观点,在上世纪80年代理直气壮,在90年代还能解决温饱问题,在本世纪就站不住脚了,混不下去了,因为他们是手工作坊式的开发方法,忽视了软件中的面向过程管理。JiangsuMicrosoftTechnologyCenter101面向过程的管理面向过程管理,就是面向过程对软件生命周期各个阶软件的支持过程软件工程中的过程,是指软件生命周期(LifeCycle)中的时间序列。过程作为一个时间序列,它自然有起始点和终止点。例如,可以将一个软件的生命周期划分为市场调研、立项、策划、需求分析、概要设计、详细设计、编程、单元测试、集成测试、运行、维护这几个过程,前一过程的终止点就是后一过程的起始点。过程与阶段(Phase)相对应,阶段与里程碑(Milestone)相对应。某些重要的里程碑的产出物又称为基线(baseline)。JiangsuMicrosoftTechnologyCenter102软件的支持过程软件工程中的过程,是指软件生命周期(Life软件的生产工具软件工程的支持过程,由支持软件生命周期各个阶段的生产工具所组成。生产工具如需求分析工具、设计工具、实现工具、测试工具、维护工具、配置工具,开发环境。支持过程是通过支持工具来实现的。每一种支持工具都是当前软件界的热点之一,但它不是软件工程的重点内容。JiangsuMicrosoftTechnologyCenter103软件的生产工具软件工程的支持过程,由支持软件生命周期各个阶段软件工程常用支持工具系统分析设计与建模工具IBMRationalRoseMicrosoftVisualStudioTeamSystemMicrosoftOfficeVisioforEnterpriseArchitects数据库设计与建模工具SybasePowerDesignerCAERWinMicrosoftVisualStudioTeamSystemMicrosoftOfficeVisioforEnterpriseArchitects开发工具MicrosoftVisualStudioTeamSystem(.NET平台)开源Eclipse(JAVA平台)单元测试工具MicrosoftVisualStudioTeamSystem开源NUnit(.NET平台)开源JUnit(JAVA平台)JiangsuMicrosoftTechnologyCenter104软件工程常用支持工具系统分析设计与建模工具JiangsuM软件工程常用支持工具安装工具MicrosoftVisualStudio.NETInstallShield开源NSIS(编写安装脚本)文档工具MicrosoftHelpWorkshop(制作HLP文件)MicrosoftHTMLHelpWorkshop(制作CHM文件)开源NDoc(根据代码注释自动生成文档)画图工具MicrosoftOfficeVisio源代码管理工具MicrosoftVisualStudioTeamSystemMicrosoftVisualSourceSafe(VSS)开源ConcurrentVersionsSystem(CVS/CVSNT)项目管理工具MicrosoftVisualStudioTeamSystemMicrosoftOfficeProjectJiangsuMicrosoftTechnologyCenter105软件工程常用支持工具安装工具JiangsuMicrosof软件的管理过程“外行关注结果,内行关注过程”。1974年,美国人认识到“软件需要管理”。1984年,美国人认识到“软件管理是过程管理”。软件工程中主要存在3类过程管理模型:

ISO9000质量管理和质量保证体系

CMM/CMMI过程能力成熟度模型企业文化(微软企业文化、敏捷文化现象等)JiangsuMicrosoftTechnologyCenter106牢记:软件管理过程比开发技术更重要!软件的管理过程“外行关注结果,内行关注过程”。Jiangsu软件工程中的3类过程管理模型JiangsuMicrosoftTechnologyCenter107序号名称来源特点1ISO9000质量管理和质量保证体系国际标准化组织

ISO

按20多个质量要素管理2CMM/CMMI软件能力成熟度模型美国卡内基-梅隆大学软件工程研究所(CMU/SEI)按25个过程域PA,分阶段模型和连续模型两种方式管理属于重载过程管理3软件企业文化Microsoft公司、IBM公司、敏捷方法属于轻载过程管理软件工程中的3类过程管理模型JiangsuMicrosof软件的管理过程JiangsuMicrosoftTechnologyCenter108过程定义过程改进项目规划项目监控项目实施软件的管理过程JiangsuMicrosoftTechn软件的管理过程软件管理用于保证项目的成功,过程管理用于管理最佳实践。这两项管理不是相互孤立的,而是有机地紧密地结合的。JiangsuMicrosoftTechnologyCenter109软件的管理过程软件管理用于保证项目的成功,JiangsuM软件生存周期概论任何有生命的动物、植物和人,都有一个生存周期(LifeCycle),例如人的生存周期为胎儿、婴儿、幼儿、儿童、少年、青年、中年、老年、死亡。没有生命的事物或实体,例如PC机、路由器、家具、房子、汽车,它们也有一个生存周期,这个生存周期就是使用寿命,即生产周期加上使用周期。生存周期与开发模型有关。JiangsuMicrosoftTechnologyCenter110软件生存周期概论任何有生命的动物、植物和人,都有一个生存周期软件的生存周期(常规)JiangsuMicrosoftTechnologyCenter111周期序号周期名称周期序号周期名称1立项(或签合同)、下达任务书6软件测试2需求分析7软件发布与实施3概要设计8软件维护4详细设计9版本更新或退役5编码实现///////////////////////////////软件的生存周期(常规)JiangsuMicrosoftT瀑布模型(WaterfallModel)定义:1970年温斯顿•罗伊斯(WinstonRoyce)提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被广泛采用的软件开发模型。瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。瀑布模型是最早出现的软件开发模型,在软件工程中占有重要的地位,它提供了软件开发的基本框架。其过程是从上一项活动接收该项活动的工作对象作为输入,利用这一输入实施该项活动应完成的内容给出该项活动的工作成果,并作为输出传给下一项活动。同时评审该项活动的实施,若确认,则继续下一项活动;否则返回前面,甚至更前面的活动。对于经常变化的项目而言,瀑布模型毫无价值。JiangsuMicrosoftTechnologyCenter112瀑布模型(WaterfallModel)定义:1970年温瀑布模型图JiangsuMicrosoftTechnologyCenter113瀑布模型图JiangsuMicrosoftTechnol瀑布模型优缺点优点:提供了软件开发的基本框架为项目提供了按阶段划分的检查点当前一阶段完成后,您只需要去关注后续阶段可在迭代模型中应用瀑布模型(*)缺点:在项目各个阶段之间极少有反馈由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险通过过多的强制完成日期和里程碑来跟踪各个项目阶段。而且各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果JiangsuMicrosoftTechnologyCenter114瀑布模型优缺点优点:JiangsuMicrosoftTe瀑布模型选择条件选择模型的条件:在开发时间内需求没有或很少变化。分析设计人员对应用领域很熟悉。低风险项目(对目标、环境很熟悉)。用户使用环境很稳定。用户除提出需求以外,很少参与开发。JiangsuMicrosoftTechnologyCenter115瀑布模

温馨提示

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

评论

0/150

提交评论