线上期刊服务咨询,发表咨询:400-808-1701 订阅咨询:400-808-1721

软件工程8篇

时间:2022-05-18 19:25:25

软件工程

软件工程篇1

英文名称:Software Engineer

主管单位:辽宁省教育厅

主办单位:东北大学;计算机软件国家工程研究中心

出版周期:月刊

出版地址:辽宁省大连市

种:中文

本:大16开

国际刊号:1008-0775

国内刊号:21-1378/TP

邮发代号:8-198

发行范围:国内外统一发行

创刊时间:1994

期刊收录:

核心期刊:

期刊荣誉:

联系方式

软件工程篇2

关键词:软件工程;含义;特点;传统;构件

1.软件工程的含义与特点

软件工程 (Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。

在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。软件工程师是对应用软件创造软件的人们的统称,软件工程师按照所处的领域不同可以分为系统分析员,软件设计师,系统架构师,程序员,测试员等等。人们也常常用程序员来泛指各种软件工程师。软件工程没有一个权威的定义, 比较认可的定义为:软件工程是一门交叉学科,它是解决软件问题的工程,是对软件开发、运作、维护的系统化的、有规律的、可定量的研究方法。软件工程有明确的目标。那就是研制开发与生产出具有良好的软件质量和费用合算的产品。软件质量可用六个特性来评价:功能性、可靠性、易使用性、高效率性、可维护性、易移植性。软件工程不同于一般工程, 具体表现在以下几点。

(1) 软件是逻辑产品而不是实物产品,所以费用集中在研制开发上而不在生产上。软件不会用坏、磨损、老化,但有一个过时的问题。(2)由于软件是逻辑产品,使得它的功能只能依赖于硬件和软件的运行环境以及人们对它的操作,才能得以体现。(3)软件产品的功能比一般产品的功能复杂得多。(4)软件设计比一般产品复杂得多。具体表现在:功能的多样性,实现的多样性。推动软件工程发展的原动力是提高软件质量和软件开发的生产效率。

2.传统软件工程

    传统软件工程采用面向过程,即结构化程序设计方法, 即有很多成功的例子,例如DOS操作系统,也有很多失败的例子,例如美国阿波罗登月飞行计划的软件错误。因为传统软件工程不能驾驭复杂系统的开发, 曾经一度产生了软件危机。面对越来越复杂的软件系统, 传统软件工程已经不能胜任, 在实践中, 人们呼唤能适应复杂系统开发的软件工程方法学和软件

开发技术的诞生, 面向对象软件工程应运而生。进入20世纪90年代以来,Internet飞速发展, 人们碰到了另一个难题, 快节奏地开发基于Web的大型应用程序,面向对象软件工程及其技术已经不能胜任, 人们尝试利用基于构件的技术来解决, 于是诞生了CORBA、COM及COM+、J2EE及EJB等基于构件的技术和软件开发方法。然而, 今天的构件技术离人们追求的目标——软件工厂还相差甚远。面向过程的优点:面向过程的思维方法是符合人类认识规律的, 因为人们解决问题,总是一步一步进行的,其中,有顺序,条件和循环,利用这三大结构,可以解决世界上的任何问题。这些方法是优秀的,被面向对象和面向构件所吸收, 成为类或构件内部实现的有力工具。面向过程的缺点:着眼于细节,不能很好地从宏观上把握系统。

3.面向对象软件工程

    面向对象软件工程是运用面向对象方法,符合人类认识规律的一种软件工程。20世纪60年代后期出现了面向对象的编程语言, 2 0 世纪7 0 年代初Xerox公司推出了Smailtalk语言。奠定了面向对象程序设计的基础,1980年出现的Smatltalk-80标志着面向对象程序设计进入了实用阶段。自20世纪80年代中期起,人们注重于面向对象分析和设计的研究,逐步形成了面向对象软件工程方法学。典型的方法有ECoad和E.YourDon的面向对象分析和设计,GBooch的面向对象开发方法,J.Rumbaugh等人提出的对象建模技术(OMT),Jacobson的面向对象软件工程等。20世纪90年代中期,由GBooth,J.Rumbaugh、Jacobson等人发起,在Booch方法、OMT方法、OOSE方法的基础上推出了统一的建模语言(UML),1997年被国际对象组织(OMG)确定为标准的建模语言。面向对象方法的出现受到了计算机软件界的亲睐,并成为20世纪90年代的主流开发方法。面向对象方法的优点如下。

(1)从认知学的角度来看,面向对象方法符合人们对客观世界的认识规律很长一段时间里,我们分析、设计、实现一个软件系统的过程与我们认识一个系统的过程存在着差异。例如结构化方法分析的结果是数据流图,设计的结果是模块结构, 实现的结果是由程序模块组成的源程序。(2)开发的软件系统易于维护,其体系结构易于理解、扩充和修改面向对象方法开发的软件系统由对象类组成,对象的封装性很好地体现了抽象和信息隐蔽的特征。(3)面向对象方法中的继承机制有力支持软件的复用.

4.构件软件工程的概念模型

构件和基于构件的方法是电子商务革命的驱动力,它们是Internet时代开发企业级解决方案的方法。在任何行业中,复杂情况通常是通过很多关键概念来解决的。这些概念是通过抽象、分解、选代、细化等方法来表达的。其中的关键是分解技术——把一个较大的问题分解成较小的、可管理的单元,这样每一个单元都是可以单独处理的,这个技术是软件工程的许多方法的核心。这些方法可以称为结构化设计,模块化编程,面向对象程序设计,基于构件的程序设计,它们产生的单元称为模块、包、对象或构件。基于构件软件开发是历史发展的必然,基于构件的软件开发(Component Based Software Development),简称CBD。基于构件的软件工程(Component Based Software Engineering),简称CBSE。CBD追求的目标是软件的“即插即用”。回顾经典的工业化革命,不难得出一些有益的启示:功能再复杂的产品都是由大量标准的零件(领域构件)组成,零件在生产线上装配成一个产品,所有零件在产品中共同发挥作用。分工越细致, 专业生产的程度越高,总体生产效率就越高。把这些启示运用于软件开发,那就是:标准的零件就是软件生产的构件, 构件在软件生产线上通过集成得到新开发的软件。

软件工程篇3

软件工程管理的发展

要了解软件工程管理首先应该清楚什么是软件工程。软件工程这一概念最早是北大西洋公约组织(NATO)成员国的软件工作者在1968年、1969年的软件研讨会上首次提出的。在我国,根据国家标准GB/T11457-1995,其定义是:“软件开发、运行、维护和引退的系统方法。”虽然,已经有了如此权威的定义,但仍然有很多人错误的将软件工程理解为简单的软件编程。其实我们不难看出,软件工程有其严谨的专业性。而软件工程管理的概念,就是从工程学角度出发,对软件工程的项目范围、项目周期、产品质量、知识资源、人力资源、项目成本等六大要素进行管理。

软件工程管理引起业界的广泛注意源于20世纪70年代中期人们对“软件危机”的认识。当时美国国防部曾立题专门研究软件项目成败的原因,发现70%的项目是因为管理不善而引起,而并不是因为技术实力不够,进而得出一个结论,即管理是影响软件研发项目全局的因素,而技术只影响局部。尽管如此,到了20世纪90年代中期,软件工程管理不善的问题仍然存在。根据世界著名IT系统项目论证与决策权威机构Gartner的报告显示,全球80%-90%的信息化项目没有达到预定目标,80%的项目超出预算,40%的项目失败或最终放弃。而中国的数字比这个还要大的多,只有小于25%的项目达到了需求和技术目标,10%满足了即定的工作目标。这些现象和数字表现出来的软件产品质量不高、生产率过低、资金大量浪费、进度无法保证的局面就是“软件危机”。而软件工程管理的失控就将造成软件危机。对于我国正如火如荼地进行着的信息化建设,“软件危机”就意味着大量国有资产的流失。由此可见,软件工程管理的意义至关重要。

新背景下的再探索

随着中国信息化事业的深入发展,政府主管部门和更多的国内企业已经开始关注如何保证软件建设的质量与可靠性问题,并已初步达成一个统一的认识,那就是走“软件工程化”道路,遵循系统工程的思想,对软件开发全过程通过可定义、可量化的工程实践方法进行控制管理。然而由于软件工程管理和其它工程管理相比有其特殊性,故而在软件工程管理的实施上仍然存在很多困难。例如,软件是知识产品,建设进度和质量都难以度量,生产效率也难以保证;同时,软件系统的复杂程度也是超乎想象的。例如,宇宙飞船的软件系统源程序代码多达2000万行,如果按过去的生产效率一个人一年只能写1万行代码的话,那么需要2000人年的工作量,这是非常惊人的。正因为软件如此复杂和难以度量,软件工程管理的发展还很不成熟。

针对这种状况,国内一些先锋软件企业已经开始深度探索解决软件工程管理问题的途径。其中,北京万维易化系统软件开发有限公司作为国内屈指可数的几家专门从事“软件工程管理”的企业之一,通过多年来在相关领域的深入研究,对软件工程管理的概念进行了全新的阐释并提出了完善的解决方案,为软件工程管理开辟了一条新的途经。

在万维易化认看来,传统的软件工程管理内容过于单一,主要只是聚焦于软件开发过程中的管理。但随着信息化建设事业的深入发展,软件承建方单方面的开发管理已经不能满足信息化建设的全部需要。因此万维易化提出了全新的“软件工程管理(SEM)”概念,将软件工程管理细分为软件开发管理、软件工程监理、软件集成应用等三大组成部分。对于信息化建设项目中通常包括的建设方、监理方和承建方而言,分别需要对软件集成应用、软件工程监理和软件开发过程实现有效的管理,只有这样才能切实保证信息化建设的最终成功。

万维易化认为,实现有效的软件工程管理的关键因素在于客观、有效的管理工具。软件工程属于知识高度密集,开发过程复杂多变,显现度很低。以软件工程监理为例,传统的软件工程监理很大程度上是参考了建筑行业的监理模式,在建筑项目中,监理方在施工现场随时可以对工程的进行、质量进行现场监理,而软件工程建设项目根本就没有什么施工现场可以考察,工程进度、资金使用情况、软件质量、合同执行情况也难以掌控。这就造成软件工程管理在实际操作过程中“可操作性”差、“能见度”低。因此,无论是软件工程监理、还是软件开发、集成应用管理,一个好的管理工具最迫切需要解决的问题就是为软件工程建设过程营造一个“建设现场”,将软件工程建设的过程实现“可视化”。为此,万维易化提出了平台化的解决方案,主张通过搭建一个软件工程管理平台,将软件开发的代码、费用、人员、文档、项目实施进度、资金控制等情况都纳入一个统一的平台,实现建设各方的实时沟通,对软件建设的过程进行可视化、可控制的协调管理。

成功的实践

基于以上这些认识,结合中国软件业目前的现状,万维易化推出了“精研_软件工程管理平台”,并将其细分为了三个解决方案,即针对软件开发企业的“精研_软件开发管理解决方案”、针对信息化项目监理的“精研_软件工程监理解决方案”和针对信息化建设过程中项目管理的“精研_软件集成应用解决方案”,全面推进我国信息化建设进程。2001年,“精研软件工程管理平台”,已经率先在万维易化的公司内部获得了成功的应用。在这套先进的管理平台上,万维易化所承担的软件工程建设项目的开发进度、文档管理、版本信息以及缺陷跟踪等方面都能有据可查,财务、人力、行政审批过程全部按照既定程序执行,切实保证了软件工程建设项目和企业内部工作的高效进行,为万维易化在电子商务和电子政务领域不断取得突出的成绩奠定了坚实基础。

软件工程篇4

(1)对软件开发成本和进度的估计经常很不准确。实际成本比估计成本有可能高出一个数量级,实际进度比预期进度拖延几个月甚至几年的现象并不罕见。这种现象降低了软件开发组织的信誉。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量,从而不可避免地会引起用户的不满。

(2)用户对“已完成的”软件系统不满足的现象经常发生。软件开发人员经常在对用户要求只有模糊的了解,甚至对所要解决的新问题还没有确切熟悉的情况下,就仓促上阵匆忙着手编写程序。软件开发人员和用户之间的信息交流往往很不充分,“闭门造车”必然导致最终的产品不符合用户的实际需要。

(3)软件产品的质量往往靠不住。软件可靠性和质量保证的确切的定量概念刚刚出现不久,软件质量保证技术(审查、复审和测试)还没有坚持不懈地应用到软件开发的全过程中,这些都导致软件产品发生质量新问题。

(4)软件经常是不可维护的。很多程序中的错误是非常难改正垢,实际上不可能使这些程序适应新的硬件环境,也不能根据用户的需要在原有程序中增加一些新的功能。“可重用的软件”还是一个没有完全做到的、正在努力追求的目标,人们仍然在重复开发类似的或基本类似的软件。

(5)软件通常没有适当的文档资料。计算机软件不仅仅是程序,还应该有一整套文档资料。这些文档资料应该是在软件开发过程中产生出来的,而且应该是“最新式的”(即和程序代码完全一致的)。软件开发组织的管理人员可以使用这些文档资料作为“里程碑”,来管理和评价软件开发工程的进展状况;软件开发人员可以利用它们作为通信工具,在软件开发过程中准确地交流信息;对于软件维护人员而言,这些文档资料更是至关重要必不可少的。缺乏必要的文档资料或者文档资料不合格,必然给软件开发和维护带来许多严重的困难和新问题。

(6)软件成本在计算机系统总成本中所占的比例逐年上升。由于微电子学技术的进步和生产自动化程度不断提高,硬件成本逐年下降,然而软件开发需要大量人力,软件成本随着通货膨胀以及软件规模和数量的不断扩大而持续上升。美国在1985年软件成本大约已占计算机系统总成本的90。

(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋向。软件产品“供不应求”的现象使人类不能充分利用现代计算机硬件提供的巨大潜力。

软件工程的七条基本原理:1、用分阶段的生命周期计划严格管理有人经统计发现,在不成功的软件项目中有一半左右是由于计划不周造成的,可见把建立完善的计划作为第一条基本原理是吸取了前人的教训而提出来的。在软件开发和维护的漫长的生命周期中,需要完成许多性质各异的工作。这条基本原理意味着,应该把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发和维护工作进行管理。Boehm认为,在软件的整个生命周期中应该制定并严格执行六类计划,它们是项目概要计划,里程碑计划,项目控制计划,产品控制计划,验证计划,运行维护计划。不同层次的管理人员都必须严格按照计划各尽其职地管理软件开发和维护工作,绝不能受客户或上级人员的影响而擅自背离预定计划。2、坚持进行阶段评审当时已经熟悉到,软件的质量保证工作不能等到编码阶段结束之后再进行。这样说至少有两个理由:第一,大部分错误是在编码之前造成的,例如,根据Boehm等人的统计,设计错误占软件错误的63,编码仅占37;第二,错误发现和改正得越晚,所需付出的代价也越高。

因此,在每个阶段都进行严格的评审,以便尽早发现在软件开发过程中所犯的错误,是一条必须遵循的重要原则。3、实行严格的产品控制在软件开发过程中不应随意改变需求,因为改变一项需求往往需要付出较高的代价,但是,在软件开发过程中改变需求又是难免的,由于外部环境的变化,相应地改变用户需求是一种客观需要,显然不能硬性禁止客户提出改变需求的要求,而只能依靠科学的产品控制技术来顺应这种要求。也就是说,当改变需求时,为了保持软件各个配置成分的一致性,必须实行严格的产品控制,其中主要是实行基准配置管理。所谓基准配置又称基线配置,它们是经过阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。

基准配置管理也称为变动控制:一切有关修改软件的建议,非凡是涉及到对基准配置的修改建议,都必须按照严格的规程进行评审,获得批准以后才能实施修改。绝对不能谁想修改软件(包括尚在开发过程中的软件),就随意进行修改。4、采用现代程序设计技术从提出软件工程的概念开始,人们一直把主要精力用于探究各种新的程序设计技术。60年代末提出的结构程序设计技术,已经成为绝大多数人公认的先进的程序设计技术。以后又进一步发展出各种结构分析(SA)和结构设计(SD)技术。实践表明,采用先进的技术既可提高软件开发的效率,又可提高软件维护的效率。5、结果应能清楚地审查软件产品不同于一般的物理产品,它是看不峥摸不着的逻辑产品。

软件开发人员(或开发小组)的工作进展情况可见性差,难以准确度量,从而使得软件产品的开发过程比一般产品的开发过程更难于评价和管理。为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得所得到的结果能够清楚地审查。6、开发小组的人员应该少而精这条基本原理的含义是,软件开发小组的组成人员的素质应该好,而人数则不宜过多。

开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。素质高的人员的开发效率比素质低的人员的开发效率可能高几倍至几十倍,而且素质高的人员所开发的软件中的错误明显少于素质低的人员所开发的软件中的错误。此外,随着开发小组人员数目的增加,因为交流情况讨论新问题而造成的通信开销也急剧增加。

软件工程篇5

高投入投向何处

软件工程属于计算机大类,但很多学校已经把其独立出来,成立软件学院。在选择软件工程专业时,不仅要考虑专业所在院校的客观条件,还要考虑该专业在教学过程中提供的教学方法和教学环境,比如是否提供双语教学,是否提供实习单位,是否有学生动手的实验课程等。

软件工程专业一年的学费一般是普通专业的三倍,大多接近1.5万元每年。我国开设软件工程专业的院校较多,相对来说,北京理工大学、北京邮电大学、北京工业大学、天津大学、哈尔滨工业大学、吉林大学、东北大学、大连理工大学、同济大学、南京大学、华南理工大学、西北工业大学、西安电子科技大学、西安交通大学等37所软件工程示范性高校在软件人才培养和科技研发方面走在了众多院校的前列。

和其他专业一样,软件工程专业的学习也是从最基础的学科起步的。一开始的课程主要有微积分、数据结构、C/C++语言、计算机组成原理、编译原理、网络工程等。在打牢基础后,就开始学习诸如项目管理、软件质量与测试、Java语言、离散数学、电子电路等专业课。相对于其他计算机类专业,软件工程专业的学生动手的机会要多一些,而且其对动手能力的要求也更高。

要知道对于软件工程专业,课堂上学习的内容只是基础,课下的练习才是关键,你要经常练习编写程序,去开创一些新的功能,实现某个程序,将课堂学到的知识用到程序的开发中去,这才能学好软件工程专业。该专业很多同学会在本科期间考取各种证书,如各企业认证的卓越工程师、软件测试工程师、数据库工程师等等,但证书不是目的,通过考取证书而进行的学习实践才是目的,真正的牛人是不需要证书装点的。由于IT行业变化很快,发展也很迅猛,相比证书,具备自主学习能力才是保障就业路途坦荡的通行证。在我看来,无论是编写软件程序还是架构系统,具备缜密的思考能力和开阔的设计思路才是“王道”。

高产出产于哪里

我国的软件工程专业非常年轻,只有十年,与国际先进国家还存在一定差距,这个差距主要是在标准和经验上。这就需要我们与国外高校多进行交流合作,也就是互派学生学习或者进行联合培养。比如哈尔滨工业大学在本科阶段会选拔优秀的学生成立HIT-DIT(哈尔滨工业大学—爱尔兰都柏林工业大学)国际班,并于大三时派送到爱尔兰学习,那些去留学的同学可以接触到国际项目。毕业找工作的时候你会发现,在大学期间有项目经验的,接触实际工程多的学生很受用人单位欢迎。不过等到毕业进入工作岗位后,你也会发现,大学所学的知识,在实际工作中往往是不够用的。课本知识和实际操作应用其实相差很远,就算大学期间主攻了市面上很热的Java,到了工作时仍有许多需要继续充电的地方。

总体来说,软件工程毕业的学生绝大多数就业于北京、上海、深圳等一线发达城市,此外其他的省会城市、沿海大城市也是学生就业的主要去向。国家示范性软件学院的就业率都保持较高水平,薪资待遇也相对较高。我们以哈尔滨工业大学2007~2010届毕业生为例,四届本科毕业生的平均就业率达到了93%,外企、国内500强企业、科研院所是学生就业的主要去向,其他的企业中,包括银行系统及企事业单位、政府机关。四届毕业生整体薪酬呈正态分布,月薪在2000以下和6000元以上的大约占20%,约80%的毕业生月薪在3000元到6000元之间,本科毕业生平均起薪在4000元/月左右。

唯有创新才能发展

软件工程篇6

杨芙清教授是中国计算机软件领域著名专家,中国科学院院士。她现任北京大学软件学院理事长、软件工程国家工程研究中心主任,致力于构件技术的研究和应用推介。

软件工程的发展对于一个国家的软件产业有着至关重要的意义,推进卓越软件工程,推

动我国软件产业的发展更是一个非常紧迫的任务。

软件解决的是逻辑问题

在上个世纪八十年代初期,业界就曾对大型复杂软件系统开发的关键问题展开了讨论。经过近二十年的发展和探索,解决这些问题的关键主要集中在以下三个方面。

首先,必须有好的软件开发风范,也就是要确定软件开发不同的抽象层次;

其次,需要先进的软件开发方法和技术,就是要解决整个开发过程的途径问题,通常也被称为实现不同抽象层次之间的样式;

其三,进行全面和合理的规划与控制,通过过程的规划和控制,来提高软件产品的质量和软件项目的开发效率。这需要一种高效的管理方法,以及实际工作中贯彻执行的能力。

从1970年开始,软件市场上出现了各式各样的软件开发风范,如:瀑布风范、迭代风范等。整体而言,开发软件的主要目的是解决逻辑的问题,软件开发的一系列基本活动,就构成了软件生命周期。

在需求分析阶段,软件开发组织要建立正确的系统模型;软件设计阶段,则要实现需求所需要的结构,解决系统结构和框架的问题。而所谓的需求实现,实际上就是代码的转换,这是贯穿整个软件开发生命周期的行为。而要最终设计形成一个成熟的软件产品,还需要测试、变更和维护等许多工作。

软件技术的发展,也是这样一个活动和变化的过程。从软、硬件角度来看,软件开发风范是要解决概念和处理逻辑之间的问题,要屏蔽不同操作系统之间的异构性,屏蔽架构在操作系统之上的不同应用软件之间的异构性。于是,就发展形成了各种软件框架、设计模式等相关技术。总体而言,软件风范是为了使得开发活动更符合人性化,提高开发质量。

就操作系统发展的角度而言,从单机操作系统、网络操作系统到并行操作系统,再到嵌入式操作系统,这个不断发展和演变的进程支撑着所有软件开发技术发展过程。因此,发展软件产业,应该尽可能多地提炼其中的共性,并且加以复用,从而降低开发应用软件的复杂度,提高软件开发的效率,改善软件产品的质量。毕竟软件开发不应该是个体劳动和手工劳动的结果,更应该是一种工业化了的生产活动。这就要求产业内部形成提倡软件开发过程及软件产品高效、可信的氛围。

从面向数据的开发方法到面向对象的开发方法,再到如今基于构件的开发方法,所有这些都提出了不同的开发技术,支持软件开发者能够实现不同抽象层次之间的映射。

从软件工程技术的发展过程可以分析,每个时期都有不同的特点和重点。但是,总体上仍然存在两条共性:其一,一贯重视方法与技术的研究,使得软件开发结构元素的力度不断增大;其二,就是重视过程的管理,不仅重视开发的结果,更重要的是开发过程管理和控制领域的研究。

软件作品不是产品

卓越软件工程作为软件工程的一种理念,拥有一定的内涵。作品不等于产品。如果单个用户提出应用需求之后,软件公司或者其它专业开发组织在与用户沟通之后开发出一个软件。这样的软件仅仅是实验室里面的一个原型、一个作品,并不是可以推而广之的产品。

把作品变成产品,必须执行标准化和规范化的流程,经过不断和反复的测试和修改工作,才能把软件作品最终变成软件产品。

如果把作品的形成比作技术创新的话,那么产品形成的过程就不仅要有技术创新,更要有工程创新。因此,成功的软件产品,不仅要符合必需的标准规范,还应该拥有结构合理的组织团队以及团队之间的良好合作。只有这几个要素齐备,才有可能获取一个成熟的软件产品。

软件的本质特性是构造性和演化性。客观世界本身是有结构的,软件是一个知识性的产品,所以软件具有更加严谨的结构性。要把客观事物的活动用软件表达出来,就是必须把客观活动的结构性提炼出来。和其它客观事物一样,软件系统也就具有演变性,并在不断的演化中促使技术不断发展。同样,技术的发展会反作用于系统,促进系统的演化。

软件也有“美”的特性,美的软件是指一个成熟的而且能够贴近应用需求的软件。从产业角度讲,软件之美体现在三个方面:

第一,软件系统结构之“美”。对于软件设计人员而言,软件设计的本质是为现实问题提炼一个清晰而又简洁的结构。如何把复杂的问题简单化,这就是一个技术创新,也是在卓越软件过程本身要做到的一个事情。而这样一个体系结构,必须使得软件产品易于扩展和演化,只有能够随需应变的结构才是最美的。

第二,人机交互之“美”。软件的应用者是人,所以必须要从用户出发。“美”的软件应该能够进行良好的人机交互。对于用户来说,软件是要通过直观简单的界面,提供自然化、个性化的功能。

第三,团队文化之“美”。软件开发和管理团队,必须强调标准、研究和实践的有机结合。只有组建一个完美的团队,才能做出完美的软件产品。

软件之美要求的三个方面,正是卓越软件工程所期望达到的效果。可以说,卓越软件工程的内涵就是通过软件之美的三个方面,开发“美”的软件。

在理解了卓越软件工程的理念和内涵之后,我们必须找到实现途径才能真正享受软件工程的卓越成果。途径之一是采用软件复用和软件构件技术,其二是要实现软件生产方式的变革,另外,还要重视软件产业基础设施的建设,最后就是要形成良好的软件产业组织模式。

任何一个软件都是代表一个客观世界特性的提炼,那么任何一个软件都有其领域特征。所有领域的特征和系统基本需求决定了软件的结构性。实现软件生产方式变革,即软件必须从手工作坊式转变为工业化的生产方式,要有工业化的开发方法和工业化的生产技术。生产过程中不但要有支撑环境和工具,更要有标准规范和体系。重视软件基础设施建设,也就是要为软件的实施创建优良的产业发展环境。因为软件工程需要有一定的平台。既然软件不仅是作品,更要成为用户所用的产品。那么,就要求有良好的产业组织模式,只有这样才能够真正的形成软件产业,才能够有产品。只有这样,中国软件产业才能够得到真正的发展,才能够取得巨大成就。

相关链接

2004年12月16日,来自国内软件行业的100多位企业高级管理人员及高校软件学院、计算机学院的院长们参加了微软亚洲工程院成立一周年的庆祝活动及“卓越软件工程” 论坛,就如何将中国打造成“一流软件产品原创国” 进行了积极的、富有建设性的探讨。

微软亚洲工程院目前已吸纳了110位来自国内外优秀的软件工程人员;所从事的短期及中长期大型软件工程项目达15项;并已促成30项技术向微软产品的转化。

软件工程篇7

1软件体系结构

1.1软件体系结构的定义

软件体系的结构有很多种不同描述方式的定义,现阶段比较认可的定义为软件的体系结构是:设计软件时的一种层次,其是计算过程之外的数据架构设计和算法设计。软件的体系结构主要处理以下几方面的问题,即对全局或者组织的有效性控制、数据的存取、同步、协议通信,以为设计元素提供特定化的性能,与设计方式,从而使得设计方案具有较高的功能与可选择性。

1.2软件体系结构的形成与发展

在初期,为满足较大规模主机的需求,软件采用的是mainframe类型的结构,此结构需要在主机上集中数据、程序与客户,GUI界面是非常少的,同时在访问远程数据库方面也是较为困难的。随着计算机科学技术的发展、个人电脑的迅速推广,这一结构在应用中也逐步被淘汰掉了。互联网的出现与发展深刻影响着应用软件传统的开放方式。以web与互联网为基础的应用与软件系统则需要更加灵活与开放的体系结构。伴随着日益增多的商业性系统在互联网架构上的应用,一种更为灵活、功能性更为丰富的结构日益为人们所熟知并使用起来,,即“三层或者多层计算”形式的结构。客户层:用户端请求与接口的生成地,为人师所熟知的应用包括胖客户等。服务器层:较为普遍使用的应用是业务代码运行应用服务器和web服务器。数据层:具有代表性的应用是关系式数据库与后端数据信息资源,如SAP\Oracle等。

1.3软件体系结构的发展趋势

(1)信息交换;现在的ADLS绝大一部分是和领域有一定关系的,因此并不利于说明不同类型的体系结构。但是这些不同领域的、具有针对性的ADLS在一些方面又存在的共通性与相似性,进而导致资源的重复冗余。实际上,大部分的ADLS都有着相同的概念。采取怎样的方式方法将各种语言以同一公共形式的方式综合起来,使得各类型的体系结构能够交换各自的描述信息,将会是未来软件系统结构实践与研究的一个重点。

(2)设计环境与工具;软件体系结构的研发设计工作是软件工程中相当重要的一部分,其计算机辅助设计手段是非常重要的。应开发出一些列的工具性软件以对体系结构进行更好地分析与描述,在开发阶段进行工具的转换,进而实现阶段性成果的自动化转换,比如,将需求规格的说明转化成构建等。到目前为止,很少在这一方面的进行较为深入细致地研究,尤其是可应用在实际开发项目中的环境与工具就更少了,因此这也将会是未来软件系统结构实践与研究的一个重点。

(3)体系结构的再次开发;当下,软件系统越来越具规模,结构也变得愈加复杂,但系统数量却没有明显增多,反而呈下降趋势,这样很多剩下的系统就被重复利用了。这种重复利用也就是软件体系结构的再次开发,其利用方式就是将软件系统的代码抽取出来,找出其中有用的结构信息,然后再经过一些必要处理方式,如实例化和统一描述处理,以此构建系统化的体系结构。通过这样的利用过程,软件体系结构的再次开发就显得尤为重要,因为这样可以将以往本应淘汰的系统结构升级过后搭建进化型的系统,再次开发过后的软件系统不仅使人们对原件的水平了有了更深层次的提高,而且也是目前软件体系结构的升级和进步。而这种软件的开发方式其目的就是在于为一些特定领域搭建需要的结构构件,比如当下比较流行的人机交互界面和机器人。正是如此,软件体系结构的开发就变得越来越重要,其应用也开始变得越来越广。

2组建软件工程

组建是有着一定的功能,可以独立地进行工作或者可以与其他的组建配合起来协同工作的程序体,组建使用的方式与组件的生产、开发并没有直接联系。若将软件系统看作为众多组件的集合,从外部形态看,构成系统的组件被分为下列类型:

(1)成熟且独立的组件。这种类型的组件隐藏了全部的接口,用户只要输入按照预先设定的命令便可进行使用。操作系统、DBMS等都属于这种类型的组件。

(2)有限制条件的组件。这种类型的组件可以提供结构,同时指出使用的前提与条件,其在装配的过程中,资源会产生覆盖、冲突等影响,在使用前应对其进行测试,比如各种数据库等。

(3)适应型组件。采用接口技术或者进行了包装,处理了资源冲突与不兼容性,可以直接地进行使用。

(4)装配型组件。在安装这一类型的组件时,已装配在信息系统、DBMS或者操作系统等不同的层次之上,使用胶水代码便可实现连接使用。当下,很多软件提供商所研发的软件就属于这一类型。

3结语

软件工程篇8

Project是一个项目管理网络计划软件,它是基于关键路径法(CPM)和项目评审技术(PERT)两种技术,主要用于大中型项目的计划制定、评审、优化、资源合理调配和现场动态跟踪的通用的肯定型网络计划软件包。Project提供了一套完整的项目描述和计算的方法及模型,通过这个软件生成图、表或文件。

1.1快速地建立项目计划

建立项目计划,需要完成一份正确的网络计划图,这至少需要一个星期的时间进行设计、参数计算、核对、成图。如果需要在原方案上做些修改,就不得不重新算一遍。耗费更多的时间、人力、物力、财力,无法适应当前飞速发展的形势。Project则能把这些工作都承担起来,能轻松愉快地完成项目计划的制定工作。如果需要修改、增删、优化,只需要把修改的地方输入给Project,它会按新的意图重新计算,在几秒内就给出结果。而且Project会自动计算出关键路径,计算每个任务的时差和整个项目的开工、完工日期,告诉能否如期竣工,资源分配是否合理。

1.2按工期管好项目中的任务

Project把一个任务划分为四个阶段进行管理,即:比较基准计划(原始计划)、当前计划、实际计划和待执行计划(剩余计划或未完成计划)。它为每个阶段的计划都设置了数据域,用户随时都可以查看。比较基准计划$原始计划’里的计划数据记录了最初制定项目计划时项目的状态情况。这个计划数据在项目调整过程中始终保持不变,无论何时需要原始计划数据时都可以从这个计划数据域中得到。

当前计划是根据实际已经发生的计划和任务间的制约关系面计算出来的,它作为整个计划的重点向用户提供了极为详细的数据。例如开始时间、完成时间、工期、总时差、自由时差、工作量、费用等。

实际计划是指已经开始实施,但未完成或已经全部完成的任务计划。Project设置“实际计划”数据域,可使用户把已经完成的工作和未完成的工作区分开来。而且一旦一个任务的实际计划生效,Project会按实际计划自动修正当前计划。并且据此计算和预测整个项目计划。

待执行计划是需要完成的剩余工作量,Project会根据完

成情况自动计算剩余工作量。

总之,用户把采集到的项目任务完成和变动情况输入到Project后,系统就按项目实际发生的数据进行整个项目计划的计算,确定新的关键路径,预测整个项目前景,使得项目动态跟踪就变得非常容易。

1.3对人员设备和资金资源进行分配

Project把在完成项目任务活动中投入的人员、机械台班设备和材料、资金等抽象化为“资源”,建立起资源库。Project根据每个任务的资源使用情况计算整个项目的资源需求曲线,自动指出“超负荷分配”发生在那些任务上,能够帮助用户自动进行资源平衡,并能自动排出每个资源承担的任务上的日程、工作量和成本表。

1.4提供丰富图表

Project提供了与国际上接轨的单代号网络图,中国科学院计算所在Project配套的软件“中文伴侣”中开发了双号网络图处理系统。

Project把横道图和表结合在一起,这样既能以图形方式形象地查看任务信息,又能看到具体的数据,便于理解项目。横道图上不仅可以显示出工序的关系线,而且工序信息也可直接显示在横道条的四周。

资源图是以反映资源使用状况为重点的信息,Project为资源分析和跟踪提供了8种图形,即:资源需求曲线图、资源工作量图、资源累计工作量图、超分配工作量图、资源已经分配的百分数图、资源当前可用工作量、成本图、累计费用图。

总之,Project提供项目各个方面信息,使项目的管理更高效有序。无论用于项目投标、项目计划的组织施工,还是对工程项目实行监理都是一个不可多得的软件。

2Project与山西水利建设

近年来,我省的水利事业发展良好,按国家规定逐步实行了项目法人责任制、招标投标制、工程监理制,使工程项目管理日趋规范化。

随着计算机技术的迅猛发展,应用计算机进行管理已成为必然。然而,在我省大多项目管理仍延用传统的方式,依赖自己的老经验,总认为不使用计算机辅助管理,工程也照样能进行下去。尽管绝大多数项目部都购买了计算机,但大多数单位使用它打字、制表,由人工画道改成“计算机画道”,计算机没能发挥出其强大优势。项目施工单位用手工编制项目计划不仅要耗费大量的时间及人力,而且经常是工程已经开工,计划还没有做好,使计划管理总处于被动局面。然而,计算机在优化进度计划方面及时、快速、准确、便捷等特点是人工无法比拟的。针对传统管理的弊端,Project中文版为项目管理人员提供了众多有实用价值的功能,以及简单且方便的解决方法,使生产计划人员能高效地处理这些变化。

在我国许多建筑单位选择了Project,在应用过程中普遍反映这个软件操作简单,更改、调整非常方便,确实体会到该系统在建筑项目计划的制定管理与信息交流等方面的强大功

能,尝到了先进管理方式的甜头,认识到工程项目施工中开展全面的计算机应用,实在是非常必要的。

在我国市场经济发展日益完善的今天,建筑施工行业也面临着优胜劣汰的竞争选择。在激烈的市场竞争中,不允许任何企业偏安于一隅,任何一个拥有关键技术的小企业,都可以在很短时间里迅速成长为区域性的大企业,技术和管理的创新日益成为企业间竞争的根本,而一些大的水利工程已率先引用了先进管理软件,如我省的引黄工程,利用P3作管理软件。水利水电监理公司利用自己研制的软件进行监理控制等。这仅仅是一个开始,我们应在掌握原有技术、经验的基础上,利用先进的管理软件进行高效管理,这应该是山西水利发展方向。当然,把计算机用于工程项目施工管理不是一个简单问题,对于选择什么样的工程项目管理软件也是非常重要的。每项目工程都有各自的特点,Project作为微软的最新项目管理产品,国外项目管理的首选软件,在应用过程中,针对工程中的不同特点也会表现出一定的不足,但计算机用于工程项目施管理已成为发展的必然趋势。计算机的强大功能必须得到充分发挥。这是我省水利项目管理的需要,也是水利事业发展的必然趋势。

6Project在工程建设中的前景展望

推荐期刊