您好,欢迎访问三七文档
《现代软件工程》第一部分软件工程的基本问题综述《现代软件工程》软件危机与软件工程基本问题-1软件生存周期与模型-2传统软件工程的方法-3软件企业的现代软件工程实践-4第一部分软件工程的基本问题综述第一部分现代软件工程的基本概念第四章软件企业的现代软件工程实践现代软件工程的目标-4.1软件生产过程的流程与工艺特性-4.2软件生产过程的支撑与支持特性-4.3软件生产过程的综合与协同特性-4.4现代软件企业的核心竞争力-4.5软件企业的现代软件工程实践让我们暂时从理论探讨,回到现实中来。进入21世纪,还有没有软件危机呢?我们借助计算机媒体的关注,我们来看看现实的情况。2005年3月《计算机世界报》开展了一轮“中国软件新思维”的大讨论。策划这次讨论的编辑说:“公元2005年初,当大量的注意力被锁定在印度软件外包服务优势以及中印软件业的比较研究之后,中国软件产业忽然陷入了一种集体危机感”。编辑问:这种集体危机意识,会是一种中国软件真正起飞的前兆吗?编辑自己的回答是:“但愿如此”。80年代以后,面向对象的方法和技术受到广泛的重视,软件工程的重点,转向OO。以Smalltalk-80语言的出现,标志着面向对象的程序设计与分析,进入实用化阶段,演化成一套完整的软件开发方法和系统设计体系。一般把面向对象的设计,称为软件工程的第二代,也称为面向对象的软件工程80年代中期,人们在研究和实践中发现,为了提高软件生产率,并使软件质量得到保证,其关键在于软件开发和维护中的管理和支持能力,这其中的关键,是所谓“软件过程”。从1984年开始,掀起了“软件过程运动”,91年出现CMM,是软件过程的典型代表。以后,逐渐形成了“软件过程工程”,这可以称为软件工程的第三代。4.1现代软件工程的目标进入90年代以后,软件工程的一个重要进展,就是基于构件的开发。尽可能地利用可复用的构件,组装成新的系统,提高了软件的生产率、减少了故障和成本。基于构件的系统,更适应了Internet技术和分布式系统开发的需要。因此,有人把基于构件的软件开发,称为第四代软件工程总结一下:软件工程——第一代:传统的软件工程第二代:面向对象的软件工程第三代:软件过程工程第四代:基于构件开发的软件工程4.1现代软件工程的目标4.2软件生产过程的流程与工艺特性1、软件产业阶段划分与阶段特征一个产业通常都可以分为婴儿期、青少年期、壮年期和老年期四个阶段。在产业的婴儿期阶段,整个产业还没有真正的形成,仅以某一形式与其母体产业结合在一起,并慢慢从母体产业中分离出来。这个阶段的主要矛盾是新概念的有与无。在产业的青少年期阶段,产业开始形成规模,技术日新月异,公司如雨后春笋般出现,产业经营处于暴利阶段。这个阶段的主要矛盾是有没有新技术,谁掌握了新技术,谁就将获得“垄断”地位,从而获得“暴利”。第三个阶段为壮年期。在该阶段,产业所需技术已基本成熟,分工越来越细,产业进入稳定持续发展期。在这个阶段,产业链已经形成,公司经互相兼并,在产业链中都已找到了相对稳定的定位。因为技术不再是某几个公司的专利,因而,这个阶段的主要矛盾是谁将稳定地掌握“新工艺”——只有通过工艺的不断创新,才能降低成本、提高质量,才能在“价格战”中取胜,获得长期稳定的发展。第四个阶段是老年期,俗称“夕阳工业”。在这个阶段,技术已经非常成熟,工艺也已无太大的改进空间,于是劳动力成本上升成为主要矛盾,新的替代技术和产业在这个阶段的后期已经开始慢慢地萌芽,最终取而代之。4.2软件生产过程的流程与工艺特性当前全球的软件产业正处于壮年期,它期待通过软件开发工艺的创新,来获得长期稳定的发展。应用软件作为产业出现于20世纪70年代末、80年代初(在此之前还不能叫产业),80年代末至今是新概念、新技术的爆发期,多种技术思想各领风骚三五年,随着技术越来越成熟,分工越来越细,基本上形成了操作系统、数据库、中间件和应用系统这样一个完整的产业链雏形,其主流厂家的竞争地位,难于撼动。所以,从全球角度来看,软件新平台与开发新技术风行的局面已经少见了。但软件产业还是“高级劳动力密集型”的手工作坊式生产,不管是软件产品开发,还是项目开发,都是靠人力的堆积来完成任务。生产效率、质量严重依赖软件开发者的个体素质,没有形成规模化效应。即使有些采用了软件工程思想,或ISO、CMM管理思想的企业,仍然以人日效率来计算软件开发的成本,软件生产的规模化、工业化效果还没看到。也就是说,在技术日新月异的同时,软件开发工艺(软件工程所研究的对象)并没有太大的进步。软件产业已经进入成熟期,影响软件产品与应用的关键因素是成本与质量。4.2软件生产过程的流程与工艺特性2、软件生产流程与工艺的特征软件产业的工艺与传统产业的工艺并没有本质的区别,它同样由生产过程、原料/零件配送流程、操作参数优化、公用工程等四个主要方面组成。(1)要工艺革新,首要的任务就是改变我们现有的软件的生产方式。我们要采用流水线自动化的生产方式,并且要如同传统产业一样工厂化的管理。(2)要优化质量,而应用软件的优化,将体现在两方面:一是作为应用软件业务组成的惟一原材料,业务对象与业务对象间关系的优化。这就是业务组件的划分大小的优化。如果业务组件大了,灵活性就小了;如果业务组件粒度过小了,其耦合度和组装成本就高了。所以,必须找到一个最佳点。另一方面是优化客户需求中的业务流程。4.2软件生产过程的流程与工艺特性(3)要工艺革新,我们就必须解决原材料的来源问题。应用软件的惟一原材料就是业务组件。所以,我们必须能够完成业务组件的自动生成、自动配送。(4)要资源配置,在应用软件里,有非常多的资源是可以公用的。比如处理操作系统间关系的支撑体系、处理和数据库间高效交互的技术体系,都是可公用的资源,这些资源,也就构成我们今天所提的“中间件”的概念。应用软件是企业管理活动的映射,在一定意义上说,它就是虚拟的企业。企业的管理活动一直在变,但是,随着它成熟度的增加,已经有一部分管理活动变得越来越规范,比如企业组织架构等。这些资源,在任何一个应用软件中基本都是同质的,也就是说,可以形式化成为我们的业务支撑体系,即业务通用平台进行公用。以上种种资源都不应该由应用软件集成商去完成其生产,必须由专业的厂商来完成,这样才能够真正降低我们应用软件生产的成本。以上四大部分构成了我们今天所阐释的软件工艺。4.2软件生产过程的流程与工艺特性.3、软件工艺改进的方向北美软件业正在将许多老产品的服务与二次开发转向印度等海外市场,其实质是北美软件业正寻求和酝酿着一场新的革命。这一革命,肯定会在最短的时间内转向以软件开发自动化和业务组件灵活组装为核心的软件开发工艺革命。面向服务和面向事件的构架等理念的提出,并不是一种巧合,而是业界发展阶段的必然。这次工艺革命可能在几年内将应用软件开发效率提高数倍,甚至数十倍。软件开发自动化是多少年来无数人的梦想,但最多还只是停留在理论层次,在实用性上几乎都失败了。主要原因之一是技术还不成熟,在技术不成熟的时候谈工艺是奢望。其次,大多数研究都是针对整个开发流程的某一点上的自动化,没有成链的自动化,不能产生太大的实际效益。其三,工艺化改革必须是对先进工艺技术、优秀工程师经验的固化,所以,没有丰富的软件从业经验的积累,工艺化也将仅仅是想法,而不是现实。思考:为什么讲中国软件企业全面地向印度学习这个提法是错误的。4.2软件生产过程的流程与工艺特性.顺利实现软件工艺的问题上,有关专家提出了“软件四化”的解决方案。所谓“软件四化”就是构架平台化、组件业务化、编码自动化和管理工厂化。这四大部分既是独立的,又是相辅相成的,它们共同协作,完成软件工艺化的整体功能。构架平台化解决的是公用工程的问题,组件业务化解决了产品优化策略的问题,编码自动化解决了产品原材料的自动化生产与配送的问题,管理工厂化解决了生产过程中的管理问题。将一个先进的工艺配以相应的工具和环境来辅助实现,这就是一个产业走向工业化、工艺化的过程。今天的软件产业还非常年轻,虽然概念已经成熟,但技术还在不断发展。对于整个产业发展方向上的探讨,已经有了非常多的讨论,而最为统一的观点就是软件需要工业化。任何一个产业的工业化都是一个漫长而痛苦的过程。从成熟的产业来看,工业化真正完成的标志,就是工艺的成熟。软件需要工业化,我们不能仅仅做出一条自动化的生产线,或者仅仅能够自动化的生产业务组件;这些仅仅是工业化过程中的一个点,而我们追求的应该是整个工业化的面的总体层次的上升,这就是要实现软件工艺。4.3软件生产过程的支撑与支持特性先进软件工艺化过程的实现,不能离开相应的环境和工具的支持。这就是我们要讨论的下一个课题:软件生产过程的支撑与支持特性。(1)支撑与支持的“硬环境”一般来讲,软件生产过程的的支撑环境和工具,首先,被理解为是指集成化软件工程环境(IntegratedSoftwareEngineeringEnvironment,ISEE),即所谓一套“硬环境”。而ISEE是按照软件过程模型对支持软件开发的计算机系统软件、工具集、信息库、网络管理、人员与场地设施等全部开发资源进行有效灵活的集成,使其系统地支持基于软件工程理论、技术、方法和规范所进行的软件开发的全部过程和所有活动,在提高软件生产力的同时,全面保证软件质量。其最终目的是实现软件生产的工业化和自动化。因此,ISEE集成化软件工程环境的实质,是集成在一起的一组工具集,这些工具分别支持软件生存周期的不同阶段,能够很好地协同工作来支持软件生存周期的活动,并且将软件工程的思想贯穿于始终。4.3软件生产过程的支撑与支持特性(2)支撑与支持的“软环境”第三代集成环境则是动态的,因为,第三代集成已经不是简单的工具的集成,而是“过程”的集成。它把现代软件工程的全部过程和管理理念,通过工具与集成环境平台,规范、综合在了一起。特别是在符合过程定义、规范标准、控制和约束的条件下,可根据具体项目的需要,就目标、内容、时机等实际要求,进行裁剪的机制,构成了针对某一具体软产品生产过程的支持与支撑的“软环境”。集成化软件工程环境的“集成”主要分为数据集成、控制集成、表达集成与过程集成等4个方面。数据集成考虑环境中数据的共享和重用能力;控制集成体现在工具间的通讯和互操作能力;表达集成主要体现在提供统一友好的用户界面和高度透明的用户操作;而过程集成则是第三代集成的核心,它解决的是集成的目的问题、集成的内容问题以及何时集成的问题。这时的集成环境便不再是僵死的紧耦合的一个软件工程开发工具环境,而是通过“过程”这一线索将分布于各阶段、各开发现场的软件工具集成在一起。因此集成化软件工程环境不再是一个开发工具的“硬环境”,而上升为一个软件工程管理的抽象的概念。所以,集成化软件工程环境的第三代,是以软件生产“过程”为中心,集成的核心是支持软件工程过程,集成的关键是软件过程的定义。4.4软件生产过程的综合与协同特性为了充分说明和理解软件生产过程的综合与协同特性,结合相关知识点和企业实践需要,在课程中,我们将围绕四个核心过程,进行讲解。即:产品过程、开发过程、支持过程、管理过程。在开发技术方面,我们将突出以UML为主要技术手段的需求工程、面向对象和构件的体系结构设计为重点的开发技术方法,在工程和管理方面,我们重点突出产品、研发和项目三大管理以及相配套的支持技术和方法。有关综合与协同性,将体现在这些过程中。•四个方面:–工程与模型(产品过程)–方法与技术(开发过程)–工具和环境(支持过程)–标准和规范(管理过程)4.4软件生产过程的综合与协同特性•软件工程框架模型工程与模型(工程过程)方法与技术(开发过程)工具与环境(支持过程)标准与规范(管理过程)用可性正确性性济经软件分析实现与维护软件设计4.4软件生产过程的综合与协同特性4.4软件生产过程的综合与协同特性现代软件工程从过程看产品、开发支持、管理从方法看面向过程、数据、对象、架构从职能看产品、研发、项目管理从阶段看生命周期模型4.4软件生产过程的综合与协同特性4.5现代软件企业的核心竞争力仅仅依靠软件
本文标题:软件工程1-4
链接地址:https://www.777doc.com/doc-4007956 .html