您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件的价值与软件工程的发展
页1软件的价值与软件工程的发展一、摘要:本文用思考的眼光描述对软件价值的狭义与广义的区分。狭义上来说,软件的价值软件的价值一定程度上体现在它的售价与开发成本,体现在它所带来的经济价值,广义来讲,软件的价值源自使用,体现在它所给人们带来的便利。结合学习实践对软件工程的发展和软件行业的结构进行分析与描述二、经济学角度看待软件的价值开宗明义,经济学告诉我们,价值的本意是指人类经济产品、关系发展过程中的人类劳动作用,也可以用通俗易懂的“价格”的概念来理解。价值不仅仅局限在经济这一方面,在其他方面,也可以体现出不同的价值。今天我们讨论软件的价值与软件工程的发展,首先应当看清在当今这个大环境下,软件的价值体现在哪些方面。我们不妨从狭义和广义两个方面来看。从狭义上看,软件的价值是指单纯的经济价值,具体体现在软件的销售等。我们每天所接触的软件中就涉及了许许多多软件的这些经济价值。不知不觉中其实我们也是软件的消费者,为软件的价值贡献些许。而从广义上看,软件的价值体现在对国民经济诸多领域的巨大贡献:小到我们身边超市的收银记账软件,大到银行的管理系统,软件在各行各业都体现出了极大的优势,它加速了信息化高效率的进程,使我们的生活更加便捷。在这个共识之下,我们讨论软件工程的发展就有了一个大的背景:如何把软件的价值——包括狭义和广义,发展得越来越好,如何让软件更好地为人们服务呢?也许这便是软件发展的目的也是必然追求。二、中国软件市场发展状况及价值体现我们来看当今现状。软件、IT、计算机可谓是社会上的热词。微博QQ微信智能手机等等字眼也是每天充斥着我们的视野,微博上一则微信即将收费的状态的关注度甚至不亚于现今的禽流感。报纸杂志上经常提及一个词“信息时代”,页2确实,这是一个信息爆炸的时代。在教材中说这是“工业化迈向信息化的时代”。电脑的普及与网络的深入人心,奠定了这是一个软件极其重要的年代。国家每年在软件行业的投入可谓是巨大,中国的IT企业也如雨后春笋般成长起来。可是,在本世纪初,我国的软件行业经历过一次“互联网泡沫”,当时给了所有狂热者当头一棒。我们反思现状,中国的软件业交出的成绩单确实很漂亮,但是仔细想来是不是有许多值得深思的地方呢?比如我们的游戏行业迟迟打不出一张够硬的本土牌;我们自己的操作系统迟迟无法得到足够的重视和发展;我们的从业者很难走到行业的前列成为领头羊等等。需要反思的这些问题,也恰恰是软件工程发展需要重视的问题。三、软件价值的个人理解我对这个问题的看法是,之所以出现这样的情况,是因为中国处在一个社会转型的阶段,不仅仅是软件行业,许多行业都有盲目追求经济价值的大趋势。这是一件无可厚非的事情,但是软件工程想要发展,必须要看得更远。这样仅仅看到软件的经济价值,把软件作为一种单纯的用于牟利的商品,是远远不足以取得长远发展的。所以,我们更应该认识到软件更广更深的价值。不妨同样从狭义和广义价值两方面来思考。从狭义层面,软件的经济价值不仅仅体现在其商品性之上。如果用软件工程的发展眼光来看,软件行业不妨可以用建筑业来做比喻。建筑业有地产商、承包商、设计师、工程师、搬砖的工程队等等,软件行业的大趋势向着分工细化发展,只用代码打天下的想法终将被淘汰。软件获得经济价值的方式也可以用工程的思想来思考。当职责细化之后,这就是一个比较系统的行业,在此行业本身之中就有创造经济价值的许多机会。除传统的销售之外,外包、承包等等新合作模式的出现也是经济价值的体现。另外,在传统的销售中,盗版与反盗版也是不可避免的重要部分。盗版软件让大家能够不花一分钱就享受到原本需要付费的服务,因此国内支持使用盗版软件的人很多。为什么中国收入最高的软件企业华为,一年的销售额还是赶不上其他行业领头羊一年的利润?道理很简单,不管是中关村还是广埠屯还是珠江路,如果中国每个大大小小的城市都能买到5块钱一张的操作系统,中国有志做OS的企业就永远起不来,因为他不可能做的成本比5块钱页3更低。不止盗版操作系统,盗版在中国的密集程度根本没办法统计甚至没办法估计。不得不承认,我现在写这篇报告所使用的Office2010就是盗版。那么软件的价值又在哪里呢?或许苹果的APPSTORE模式值得我们思考和反思。当结构细化,分工明确之后,软件行业的销售是不是也需要与时俱进,找到一个更加科学合理的模式呢?现在我们看到这个趋势已经初显端倪,软件售价,相关服务的售价,用户的会员制以及软件内嵌广告收入等等已经使经济价值从单一的售价走向多元化。虽然中国是windows操作系统最便宜的国家,但是正版普及率远不及其他国家,或许当家庭普通版的售价从三百多降低到几十元,也许这种情况就能够有所改观呢?从广义层面,软件的更广的价值在于信息化社会之中,计算机软件的不可或缺性。当软件本身越来越复杂的时候,软件工程的概念也就凸显出越来越重要的地位。搭建一个茅草屋很容易,盖一座高楼大厦很难。没有组织是无法完成的。当软件本身渗透到国民经济的方方面面的时候,如何高效率地完成要求是最大的问题。软件工程在做的工作类似于把“游击队”组织成为训练有素的“正规军”。当软件危机的出现给了我们教训的之后。有组织、有规划的需求正是我们所需要的。有了软件工程理论的支撑,将软件的制造进行工程化、工业化、标准化的改造,能够显著提高软件开发效率,节约开发的成本。也能更好地满足日益多样化的软件需求,将这个年轻的行业变得更加成熟。就拿《电子商务与政务》这门课举例,这只是软件所创造的社会价值中一个很小的部分,当各级各部门分层管理又互相连通,形成一站式服务,并使部门信息得到及时的汇总与共享,这给行政者以及决策者带来的便利是很可观的。而软件工程的发展必定会将这种优势与便利不断扩大。经济学上讲,利益增长是发展的必然趋势。软件工程的发展不仅局限于经济,在国家行政以及民生问题上的飞速发展也是一个很明显的趋势。四、软件工程的发展历程1.面向对象的软件工程(OOSE)自从1985年首次提出面向对象的概念以来,面向对象技术作为一种全新的软件开发方法开始在软件工程领域越来越被广泛使用。80年代末90年代初,面向对象的软件工程方法呈现百花齐放、百家争鸣的局面。其中,引人注意的是页4Booch、Rumbaugh和Jacobson为代表的三种面向对象技术。这三种主要的面向对象方法各有优缺点,而希望采用面向对象方法的用户并不深知这些方法的优缺点及相互之间的差异,因而很难根据应用特点选择合适的建模方法和建模语言。于是,出现了UML。面向对象技术在软件工程领域的全面应用即是面向对象的软件工程方法。它包括面向对象的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)、面向对象的测试(OOT)和面向对象的软件维护(OOSM)等主要内容。面向对象的分析和设计建模技术是面向对象软件工程方法的重要组成部分[2]。OOA的基本任务是针对问题域和系统责任,运用OO方法,建立一个反映问题域的OOA模型,不考虑与系统实现有关的因素(包括编程语言、图形用户界面、数据库等等),从而使OOA模型独立于具体实现。OOD的基本任务是根据已确立的系统对象模型,运用面向对象技术,进行系统软件设计。其中包括两方面的工作:一是把OOA模型直接搬到OOD,做为OOD的一个部分;二是针对具体实现中的人机界面、数据存储、任务管理等因素补充一些与实现有关的部分。这些部分与OOA采用相同的表示法和模型结构。从OOA到OOD不存在转换,只有很局部的修改或调整,并增加几个与实现有关的独立部分。OOA与OOD的工作是连续的、无缝的,允许有一定的相交,也允许从OOD返回到OOA。OOP的工作就是用同一种面向对象的编程语言把OOD模型中的每个成分书写出来。OOT即是对于用OO技术开发的软件,在测试过程中继续运用OO的概念和原则,进行以对象概念为中心的软件测试。OOSM。面向对象的软件工程方法为改进软件维护提供了有效的途径。程序与问题域一致,各个阶段的表示一致,从而大大降低了理解的难度;系统中最容易变化的因素(功能)作为对象的服务封装在对象内部,对象的封装性使一个对象的修改对其他影响很小,从而避免了波动效应。OOSE可较好的描述系统与其用户之间的信息交换机制,即用于向软件系统提出需求后,软件系统完成这项需求的过程。OOSE方法遵循瀑布式的软件开发过程,首先是描述与系统交互有关的用户视图,然后建立分析模型,最后的构造过程则完成交互设计、实现和测试。页5OOSE方法的最大特点是面向用例。用例(usecase)代表某些用户可见的功能,实现一个具体的用户目标。用例代表一类功能而不是使用该功能的某一具体实例。用例是精确描述需求的重要工具,贯穿于整个软件开发过程,包括对系统的测试和验证过程。2基于组件的软件工程(CBSE)如何更好地实现软件重用一直是软件工程的重要研究课题。OO技术的出现是软件开发技术的巨大进步,但怎样实现大粒度的重用以提高软件的可维护性和可扩展性仍是一个难题,CBSE的发展从根本上解决这一问题:由于COM/DCOM、JavaBeans/EJB等组件标准的出现,CBSE趋向实用。1990年开始在基于面向对象技术的基础上发展了组件技术,它丰富了重用手段和方法,逐渐成为研究的热点。组件(Component)是可用来构成软件系统的即插即用(plugandplay)的软件成分,是可以独立地制造、分发、销售、装配的二进制软件单元。CBSE是指用装配可重用软件组件的方法来构造应用程序。它包含了系统分析、构造、维护和扩展的各个方面,在这些方面中都是以组件方法为核心的。与传统的软件重用方法比较,CBSE有以下特点[4]:1)即插即用。组件可以方便地集成于框架中,不用修改代码,也不用重新编译。2)以接口为核心。组件的接口和实现是分离的。组件通过接口实现与其他组件的框架的交互,组件的具体实现被封装在内部,组装者只关心接口,不必知道其实现细节。3)标准化。组件的接口必须严格地标准化,这是组件技术成熟的标志之一,目前主要的组件标准有Microsoft的COM/DCOM,Java的JavaBeans和EJB,OMG组织的COR-BA。可以说,计算机界很久以前就有用组件来装配成应用软件的想法,但始终未能成为现实,其中的一个主要原因是组件标准的缺乏。正是由于出现了以上较为成熟的组件标准,才使得CBSE由梦想走向现实。4)组件通过市场销售和分发。大量成熟的组件可以通过市场购得,市场的竞争机制也可以保证组件生产的质量的提高、种类的增加和价格的降低。CBSE的意义[5]:(1)CBSE从根本上改变了软件生产方式页6正是福特创造了汽车的流水线制造法,才开创了工业化大规范生产的新纪元。而福特制造的精髓就是将汽车生产的重点从制造每一个零件转到装配,汽车制造者不必自己设计制造每一个零件。大部分零件由外购而来。过去的软件生产方式与旧的汽车生产方式十分相似,开发者往往要编写程序中的绝大多数代码。因此,如果能实现像组装汽车或机器一样地进行软件开发,将是软件工程的巨大进步。(2)CBSE提高了软件重用率,保护了已有的投资生产好的组件可以分发销售给多个其他用户,一方面大大降低单个组件的成本,另一方面大大降低软件开发中的重复劳动。目前在各家企事业单位中存在着许多旧的计算机软件系统,可以将这些系统分成模块后通过组件技术封装起来,成为新系统的组成部分。这种通过标准的接口将旧的程序代码隐藏起来的做法,巧妙地保护了已有的软件投资。(3)CBSE使开发者将更多的注意力放到业务流程和业务规则上去由于开发者的主要工作是构造框架和装配组件,使他们可以摆脱编程的细节问题,将更多的精力投入到与用户交流。另外,一切业务管理者也可以在更高的层次上,用偏近于业务而不是偏近于计算机的语言进行讨论。(4)CBSE开发的系统的维护十分方便由于CBSE是模块化开发,如果某个模块需要修改,只需用修改好的模块替换掉以前的模块,不用重新编译整个系统。若想扩展系统的功能,也只需将符合框架的约束条件的接口要求的扩展模块直接加入到该系统即可。由此可见,CBSE开发的系统的维护和升级都十分方便。(5)CBSE降低了对系统开发者的要求尽管
本文标题:软件的价值与软件工程的发展
链接地址:https://www.777doc.com/doc-4950912 .html