最新消息:

软件模块可以复用吗(哪个知道软件复用是什么意思)

媒体模版 admin 浏览 评论

软件的可重用性一直是软件工程所追求的目标之一,软件工程界希望有一天能和其它工业领域一样,利用标准化的软件模块快速构建特定的应用系统。事实上,这种努力也取得了相当大的进展,但是与人们所期望的目标还是有不少差距,软件模块还远没有象汽车上的轮胎那样拆卸、维修、更换方便和简单。

大多数情况下所讨论的软件可重用性指软件本身的可重用性,即软件代码实现的可重用性。而实际上,软件的可重用性远不止这些,软件开发的全生命周期都有可重用的价值,包括项目的组织、软件需求、设计、文档、实现、测试方法和测试用例都是可以被重复利用或借鉴的有效资源。可以说,一个成功的软件项目的全过程都是宝,就看你会不会利用。

当然,软件代码的可重用性是最直观、最容易想到的部分,也是程序员们最乐意追求和有成就感的部分。但怎样才能开发可重用的代码呢?

也许有些程序员会说:这很容易啊,我用C++封装了很多类,我用Visual Studio开发了很多COM组件,不都是可以重用的吗?事实是如此吗?就我所了解和经历过的很多软件开发项目,很多类和组件都是昙花一现,项目一过就再也没人提起。很多程序员认为利用C++开发的类或COM组件天然就是应该可重用的,这是错误的想法,开发工具只是促进代码可重用性的工具而不是决定性的因素,决定代码是否可重用的关键还是对于软件系统所面向的问题域的分解方式,即将一个复杂问题分解成简单问题或独立个体的方法和策略。我一直确信,如果一个程序员使用C的时候,不能很好的使用模块化的结构构造一个软件系统,你就不能期望他能使用C++写出可重用性很高的类结构。不是开发工具决定了软件的可重用性,而是如何分解一个复杂问题。无论是分层的软件思想(TCP/IP协议栈)、模块化的软件思想(C/ Fortran)、还是可重用组件的软件思想(C++/COM),它们之间并非是矛盾和排斥,而是一个问题的三个方面,是对同一个问题域的不同视角。

还有些程序员可能会说:我们开发的软件都是针对特定的用户需求,要求都不一样,没有办法实现软件的可重用。听起来似乎也有道理,其实不然,软件的可重用性也是有应用范围的,当然不能期望很多程序员能开发放之四海而皆准的通用软件模块,也许有些程序员永远也不会去开发这样的软件,是不是软件的可重用性就跟他没关系了呢?当然不是,可重用性体现在软件的各个层次,通用的、可复用性高的软件模块往往已经由操作系统或开发工具提供,如通用库、标准组件、标准模板库等,并不需要程序员重新开发。那么一般的程序员如何开发可重用的软件呢?而正常情况下,一个软件企业或软件小组往往专注于解决某一领域的问题,针对这一领域的软件项目虽不完全相同,但也有很多共同之处,比如财务或ERP领域的软件大多需要各种各样定制的表格和图表。所以开发软件时,开发针对某一特定领域或问题域的可重用软件是大多数程序员需要重点考虑的问题和方向。

那么在实际开发过程中,程序员们如何提高自己开发可重用软件的能力呢,我有几个小小的建议也许会对大家有所帮助。

建立开发可重用软件的意识:

首先建立开发可重用软件的意识,不管你所开发的软件有多么特殊,其中必定含有一些公共的逻辑和功能,将公共的逻辑或模块同真正特定的逻辑分开,学会从一个特定的问题集中抽象出几个逻辑层次,分开实现。可重用软件模块将作为一个特定软件产品的副产品而重放光芒。

保持类或模块的简单和纯粹:

保持类或模块的简单和纯粹,越是简单、功能纯粹的软件越可能被重用。越是简单,越是复杂,就象搭积木,提供的积木越简单,就越有可能搭建复杂的形状和物品。

也许有一天,你的一位同事对你说:嘿,哥们,我刚刚用了你在上一个项目开发的那个模块,挺不错。你已经实现了软件的可重用

是指编程吗,说的是以前的程序的整体或部分可以在今后的程序编写中被引用,并实现功能

软件复用是将已有的软件及其有效成分用于构造新的软件或系统。它不仅是对软件程序的复用,还包括对软件生产过程中其它劳动成果的复用,如项目计划书、可行性报告、需求分析、概要设计、详细设计、编码(源程序)、测试用例、文档与使用手册等等。因此,软件复用包括软件产品复用和软件过程复用两部分的内容。

软件复用不同于软件移植。软件移植是指对软件进行修改和扩充,使之在保留原有功能、适应原有平台的基础上,可以运行于新的软硬件平台。而复用则指在多个系统中,尤其是在新系统中使用已有的软件成分。

从对复用产品的了解程度和复用方式看,也可分为白盒复用与黑盒复用。黑盒复用指对已有产品或构件不需作任何修改,直接进行复用,这是理想的复用方式。它主要基于二进制代码的复用,包括可执行程序的复用和基于库(包括动态链接库和静态库)的复用。白盒复用指根据用户需求对已有产品进行适应性修改后才可使用。白盒复用一般为源代码一级的复用,以及相应的测试用例、文档等的复用。

无论白盒复用还是黑盒复用,都需要花费一定的代价熟悉和掌握被复用的软件系统。作为经济上的考虑,要求复用的代价必须大大小于重新开发的代价,否则就不应该考虑。

软件复用的一个关键因素是抽象。抽象是对软件可复用对象的提炼和概括,即将可复用对象的基本属性和相应的操作,从具体的语言、环境和其他细节中提炼出来。软件的复用性很大程度上取决于对可复用对象的认识深度或者说可复用对象的抽象层次。抽象层次越高、与具体环境和特定细节越无关,则它被未来系统复用的可能性也越大。领域分析则是进行抽象的有力工具。领域分析借助特定领域、特定行业的专业知识与技能,对软件系统对象进行抽象和分类,提炼认知的对象及其相互关系,获得系统整体结构,从而生成可复用的软件构件。

通过软件复用,在应用系统开发中可以充分地利用已有的开发成果,减少了包括分析、设计、编码、测试等在内的许多重复劳动,从而提高了软件开发的效率,同时,通过复用高质量的已有开发成果,避免了重新开发可能引入的错误,从而提高了软件的质量。

软件复用有三个基本原则,一是必须有可以复用的对象;二是所复用的对象必须是有用的,三是复用者需要知道如何去使用被复用的对象。软件复用包括两个相关过程:可复用软件(构件)的开发(Development for Reuse)和基于可复用软件(构件)的应用系统构造(集成和组装)(Development with Reuse)。解决好这几个方面的问题才能实现真正成功的软件复用。

可复用软件(构件)的开发是实现软件复用的基本条件,对象技术的广泛使用,提供了建造和使用构件的概念基础和实用工具,有了可复用软件,基于可复用软件(构件)的应用系统构造(集成和组装)才能得以实现。软件的生产也可以象硬件的生产一样,在设计好框架后通过标准的构件组装而成。一般认为构件是具有一定功能、能够独立工作或同其他构件组合起来协调工作的程序体,一经产生,就与它的具体实现语言无关,可以认为是一段二进制码和数据段,其内部具体实现是无法看到的,可将成熟的构件当作商品出售,在保证开发者的利益同时最大地满足社会需求。采用构件来开发软件可以更有效地重用他人已有的劳动成果。

在复用软件设计中,如何设计和构造可复用的软件是软件设计者首先要面对的问题。根据面向对象的设计原理,应着眼于以下几个方面:

(1)封装性

在软构件的定义中,用户只关心事件的输入输出,对事件内部不必关心,方法和事件是独立于应用的,用户可以在软构件中定义自己的事件,对于内部的复杂性调用这并不知晓,从而提高了隐蔽性。

(2)重载

重载就是在同一软件构件中用同一名字来表示不同的方法名。一般有两种实现方法,一是方法参数的个数重载,二是方法参数的类型重载。

(3)继承

继承就是高层的类在不同范围的复用。

(4)聚合

聚合就是把一个难以复用的大软件分成若干部分构件,使其中的某些构件成为可以复用的构件。

(5)多态性

多态性指某方法不仅可以处理有相同结构的对象,也可以处理不同结构的对象。

中间件及相关软件是商业化的软件复用。仅看程序方面,软件复用后的制品也不只包括中间件软件,还包括软件框架、应用框架、通用业务构件等多种可复用形式。

软件开发学习算简单的,还是比较容易上手的。

软件开发其实并不难,就拿国内从业比较广泛的Java开发工程师来讲,高中毕业生都可以做。既然高中生都能从事于Java开发,说明软件开发实际上并不难。至于前景,仍然要看个人在职场上的打磨和学习能力。

想要让软件开发变得简单,我们需要选择一门容易上手的编程语言。

所谓的软件开发,是指项目开发商根据客户的要求去实现相关业务功能的过程。而这个过程的实现,需要通过专业的编程语言来实现。

既然软件开发的整个过程需要通过编程语言来实现,我们首先肯定要选择一门编程语言进行基础性的学习,才能有机会接触软件开发。

从国内软件行业来看,目前Java的开发者数量还是相当庞大的,而且可从事的领域也比较广。当然,我并不是在这里劝你学习Java,而是让自己选择适合的编程语言,并知道自己使用的编程语言能做什么,用在哪些地方。

刚开始,很多新人对软件开发的误解,认为学软件开发就是搞科研,于是担心自己没基础怕学不会!其实,零基础的人,千万不要害怕,不要觉得没基础就学得很吃力,学不会等等。排除杂念,一心学习java。学习java并不是一件困难的事情,难的是排除杂念。

刚开始,零基础入门的学习进度是很慢的,不用着急,慢工才能出细活,说白了Java入门阶段也就是个熟练的过程花费的学习时间比较长。不可否认,大家在开始接受新事物的时候都会陷入困境,但学习是循序渐进的,零基础入门Java到底难不难,只有自己接触到课程才知道。

如果轻易的就被别人的一句学Java太难了所击倒,盲目选择一个自己不感兴趣的职业方向,后期的困境将会更大。

没接触之前学起来可能会觉得有点难,但是当你入门后你就会发现越来越有趣了,不光是学习java语言,其他语言也一样。

而且许多大型企业都很缺Java,开的工资也很高,只要你努力学,是不难的。

结语:想要成为软件开发者,你必须要选择合适的编程开发语言(新手建议学java),这样才能让软件开发不会成为难事。至于前途,不要把希望过多的寄托于公司,而是更多地考虑你要用软件来干什么,软件的开发到底有没有市场。

至于零基础学java所用的时间,我以培训时间为标准,大学生一般的学习时间是5-6个月,高中生确在两年左右。

转载请注明:片头模版 » 软件模块可以复用吗(哪个知道软件复用是什么意思)

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)

网友最新评论 ()