因而,“软件工程”就是科学和数学的某种应用,通过这一应用,使计算机设备的能力借助于计算机程序、过程和有关文档成为对人类有用的东西
为了保证软件管理、软件开发过程的有效性,应该保证这些过程的高质量和过程的持续改进为此我在软件工程的系列教程书中分三册,以案例贯穿讲述了软件项目管理过程、软件项目开发过程、软件过程改进
二、软件工程起源的三段论
高质量的软件工程可以保证软件工业中生产的软件是高质量的产品、用户满意的产品但是,对软件工程的界定,总是存在一定的差异软件工程应该包括哪些知识?这里我们引用 ieee在软件工程知识体系指南(sewbok:guide to the software engineering软件工程未来前景 body of knowledge 2004version)中的定义,它是这样定义软件工程的:1)软件开发、实施、维护的系统化、规范化、质量化的方法的应用,也就是软件的应用工程2)对上述方法的研究
“工程”是科学和数学的某种应用,通过这一应用,使自然界的物质和能源的特性能够通过各种结构、机器、产品、系统和过程,成为对人类有用的东西
在整个开发过程中需要进行项目跟踪管理软件工程活动是“生产一个最终满足需求且达到工程目标的软件产品所需要的步骤”这些活动主要包括开发类活动、管理类活动和过程类活动,这里将它定义为“软件工程的三段论”,或者“软件工程的三线索”一段论是“软件项目管理论”,二段论是“软件项目开发论”,三段论是软件工程专业前景“软件过程改进论”这个三段论可以用一个三角型表示, 如图2,它们类似于相互支撑的三角形的三个边我们知道三角形是最稳定的,要保证三角形的稳定性,三角形的三个边必不可少,而且要保持一定的相互关系
开发过程是软件人员生产软件的过程,例如需求分析、设计、编码、测试等,相当于生产线上的生产过程管理过程是项目管理者规划软件开发、控制软件开发的过程,相当于生产线上的管理过程,管理过程是伴随开发过程进行的过程过程改进相当于对软件开发过程和软件管理过程的“工艺流程”进行管理和改进,如果没有好的工艺生产不出好的产品,它包括对开发过程和管理过程的定义和改进
【凡属支点网原创内容,版权所有,未经授权谢绝转载内容合作,请联系软件工程会计方向市场部,否则支点网将保留追究其法律责任的权利】
1968年北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上第一次提出了“软件危机”(software crisis)这个名词同时,讨论和制定摆脱“软件危机”的对策在那次会议上第一次提出了软件工程(software engineering)这个概念,从此一门新兴的工程学科--软件工程学--为研究和克服软件危机应运而生
-->
作坊式的软件企业中,很多方法、规则都是装在开发人员的脑子里面的,往往会因为一两个开发骨干走了,就造成整个公司的瘫痪赌注完全押在这一两个人的身上,资本投入风险很大,如果研发骨干另谋高就,公司投资就将全部付之流水,作坊式的运作模式严重阻障了软软件工程专业考研件企业的成长
传统工业中知名的生产方式可算是“手工作坊式”生产方式过去的一段时间里,甚至到现在,中国软件业中还有一部分公司的开发方式与之类似公正地说,以此方式还是成就了好多成功的应用开发项目,甚至可以说此法支撑起了软件开发的初期事业但是,在我们的“作坊”里还有太多的项目失败,例如开发周期的不可控制、项目结果为用户所不认可、项目最终的严重亏损,这种失败的惨痛出乎我们的意料,以至于我们无所适从再加上技术人员、资金严重匮乏的困扰,软件开发管理举步维艰
客户的需求起动了一个软件项目,为此我们需要先规划这个项目,即完成项目计划,然后根据这个项目计划实施项目,项目实施的依据是需求,这个需求类似工程项目的图纸,软件工程的目的是开发人员按照这个图纸生产软件即设计、编码,在开发生产线上,将开发过程的半成品,通过配置管理存储和管理,然后进行必要的集成和测试,直到最后提交给客户
第一个写软件的人是ada(augusta ada lovelace),在1860年代他尝试为babbage(charles babbage)的机械式计算机写软件尽管失败了,但他将永远载入了计算机发展的史册1950年代,软件伴随着第一台电子计算机的问世诞生了以写软件为职业的人也开始出现,他们多是经过训练的数学家和电子工程师1960年代美国大学里开始出现授予计算机专业的学位,教人们写软件
让软件工程成为真正的工程,就需要软件项目的开发、管理、过程等方面规范化、工程化,工艺化,机械化软件开软件工程是学什么的发过程中脑力活动的“不可见性”大大增加了过程管理上的困难因此软件工程管理中的一项指导思想就是千方百计地使这些过程变为“可见的”以及事后可以检查的记录只有从一开始就在开发过程中严格贯彻质量管理,软件产品的质量才有保证否则,开发工作一旦进行到后期,无论怎样通过测试和补漏洞,都会无济于事
软件工程(software engineering,简称为se)是针对软件这一具有特殊性质的产品的工程化方法软件工程涵盖了软件生存周期的所有阶段,并提供了一整套工程化的方法,来指导软件人员的工作
ieee的软件工程知识体系指南(swebok)中界定了软件工程的10个知识领域(kas:knowledge areas)即软件需求(softw电子技术及软件工程are requirements)、软件设计(software design)、软件构建(software construction)、软件测试(software testing)、软件维护(software maintenance)、软件配置管理(software configuration management)、软件工程管理(software engineering management)、软件工程过程(software engineering process)、软件工程工具和方法(software engineering tools and methods)和软件质量(software quality)这10个知识领域的每个知软件工程前景分析识领域还包括很多子领域
自从软件工程概念提出以来,经过几十多年的研究与实践,虽然“软件危机”没得到彻底解决,但在软件开发方法和技术方面已经有了很大的进步尤其应该指出的是,自80年代中期,美国工业界和政府部门开始认识到,在软件开发中,最关键的问题是软件开发组织不能很好地定义和管理其软件过程,从而使一些好的开发方法和技术都起不到所期望的作用也就是说,在没有很好定义和管理软件过程的软件开发中,开发组织不可能在好的软件方法和工具中获益
最为突出的例子是美国ibm公司于1963年~1966年开发的ibm360系列机的操作系统难怪该项目的负责人fred brooks(f?d?希罗克斯)在总结该项目时无比沉痛地说:“……正像一只逃亡的野兽落软件工程java方向到泥潭中作垂死挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难,……程序设计工作正像这样一个泥潭……一批批程序员被迫在泥潭中拼命挣扎,……,谁也没有料到问题竟会陷入这样的困境……” ibm360操作系统的历史教训已成为软件开发项目中的典型事例被记入历史史册由于软件危机的产生,迫使人们不得不研究、改变软件开发的技术手段和管理方法从此软件生产进入软件工程时代
软件工程的成果是为软件设计和开发人员提供思想方法和工具,而软件开发是一项需要良好组织,严密管理且各方面人员配合协作的复杂工作软件工程正是指导这项工程的一门科学软件工程在过去一段时间内已经取得了长足的进展,可以说在软件的开发和应用中起到了其应有的作用
其软件工程发展前景中:
第三个阶段是从1970年代止今,为软件工程时代 ,是工程化的生产方式这个阶段的硬件向超高速、大容量、微型化以及网络化方向发展,第三、四代语言出现数据库、开发工具、开发环境、网络 、分布式、面向对象技术等工具方法都得到应用 软件开发技术有很大进步,但未能获得突破性进展,软件开发技术的进步一直未能满足发展的要求软件的数量急剧膨胀,一些复杂的、大型的软件开发项目提出来了,在那个时代,很多的软件最后都得到了一个悲惨的结局很多的软件项目开发时间大大超出了规划的时间表,一些项目导致了财产的流失,甚至某些软件导致了人员伤亡同时软件开发人员也发现软件开发的难度越来越大,在软件开发中遇到的问题找不到解决的办法,使问软件工程嵌入式方向题积累起来,形成了尖锐的矛盾,失败的软件开发项目却屡见不鲜,因而导致了软件危机
软件发展的历史可以大致分为如下的三个阶段:
这里的三段论是指从时间角度看软件工程起源的三个阶段本世纪中期软件产业从零开始起步,在短短的50年的时间里迅速发展成为推动人类社会发展的龙头产业随着信息产业的发展,软件对人类社会性越来越重要软件发展的五十年历史中,人们对软件的认识经历了一个由浅到深的过程
“软件工程”的概念是为了有效的控制软件危机的发生而被提出来的,它的中心目标就是把软件作为一种物理的工业产品来开发,要求“采用工程化的原理与方法对软件进行计划、开发和维护”软件工程是一门旨在开发满足用户需求、及时交付、不超过预算和无故软件工程课程设计障的软件的学科软件工程的主要对象是大型软件它的最终目的是摆脱手工生产软件的状况,逐步实现软件开发和维护的自动化
三、软件工程内容的三段论
一、软件工程定义
第一个阶段是1950年代到1960年代,是程序设计阶段,基本是个体手工劳动的生产方式这个时期,一个程序是为一个特定的目的而编制的,软件的通用性很有限的软件往往带有强烈的个人色彩早期的软件开发没有什么系统的方法可以遵循,软件设计是在某个人的头脑中完成的一个隐藏的过程而且,除了源代码往往没有软件说明书等文档,因此这个时期尚无软件的概念,基本上只有程序、程序设计概念,不重视程序设计方法,主要是用于科学计算,规模很小、采用简单的工具(基本上采用低级语言),硬件的存储容量小、软件工程课程设计运行可靠性差
我们要求工程目标能在一定的时间、一定的预算之内完成软件工程是针对软件危机提出来的从微观上看,软件危机的特征正是表现在完工日期一再拖后、经费一再超支,甚至工程最终宣告失败等方面而从宏观上看,软件危机的实质是软件产品的供应赶不上需求的增长
这里的三段论是指从内容角度看软件工程的三段理论软件工程是为克服软件危机而提出的一种概念,并在实践中不断地探索它的原理,技术和方法在此过程中,人们研究和借鉴了工程学的某些原理和方法,并形成了软件工程学软件工程的目标是提高软件的质量与生产率,最终实现软件的工业化生产既然软件工程是“工程”,那么我们从工程的角度看一下软件项目的实施过程,如图1所示
第二阶段是1960年代软件工程跨专业考研到1970年代,是软件设计阶段,小组合作生产方式在这一时期软件开始作为一种产品被广泛使用,出现了“软件作坊”这个阶段,基本采用高级语言开发工 具,开始提出结构化方法硬件的速度、容量、工作可靠性有明显提高,而且硬件的价格降低人们开始使用产品软件(可购买),从而建立了软件的概念程序员数量猛增,但是开发技术没有新的突破 ,软件开发的方法基本上仍然沿用早期的个体化软件开发方式,软件需求日趋复杂,维护的难度越来越大,开发成本令人吃惊地高,开发人员的开发技术不适应规模大、结构复杂的软件开发,失败的项目越来越多
[1] [2]
软件危机指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题概括来说,软件危机包含两方面问题:软件工程嵌入式方向一、如何开发软件,以满足不断增长,日趋复杂的需求;二、如何维护数量不断膨胀的软件产品落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象
治疗皮肤病最好医院点滴状白癜风