软件的可重用性一直是软件工程所追求的目标之一,软件工程界希望有一天能和其它工业领域一样,利用标准化的软件模块快速构建特定的应用系统。事实上,这种努力也取得了相当大的进展,但是与人们所期望的目标还是有不少差距,软件模块还远没有象汽车上的轮胎那样拆卸、维修、更换方便和简单。
大多数情况下所讨论的软件可重用性指软件本身的可重用性,即软件代码实现的可重用性。而实际上,软件的可重用性远不止这些,软件开发的全生命周期都有可重用的价值,包括项目的组织、软件需求、设计、文档、实现、测试方法和测试用例都是可以被重复利用或借鉴的有效资源。可以说,一个成功的软件项目的全过程都是宝,就看你会不会利用。
当然,软件代码的可重用性是最直观、最容易想到的部分,也是程序员们最乐意追求和有成就感的部分。但怎样才能开发可重用的代码呢?
也许有些程序员会说:这很容易啊,我用C++封装了很多类,我用Visual Studio开发了很多COM组件,不都是可以重用的吗?事实是如此吗?就我所了解和经历过的很多软件开发项目,很多类和组件都是昙花一现,项目一过就再也没人提起。很多程序员认为利用C++开发的类或COM组件天然就是应该可重用的,这是错误的想法,开发工具只是促进代码可重用性的工具而不是决定性的因素,决定代码是否可重用的关键还是对于软件系统所面向的问题域的分解方式,即将一个复杂问题分解成简单问题或独立个体的方法和策略。我一直确信,如果一个程序员使用C的时候,不能很好的使用模块化的结构构造一个软件系统,你就不能期望他能使用C++写出可重用性很高的类结构。不是开发工具决定了软件的可重用性,而是如何分解一个复杂问题。无论是分层的软件思想(TCP/IP协议栈)、模块化的软件思想(C / Fortran)、还是可重用组件的软件思想(C++/COM),它们之间并非是矛盾和排斥,而是一个问题的三个方面,是对同一个问题域的不同视角。
还有些程序员可能会说:我们开发的软件都是针对特定的用户需求,要求都不一样,没有办法实现软件的可重用。听起来似乎也有道理,其实不然,软件的可重用性也是有应用范围的,当然不能期望很多程序员能开发放之四海而皆准的通用软件模块,也许有些程序员永远也不会去开发这样的软件,是不是软件的可重用性就跟他没关系了呢?当然不是,可重用性体现在软件的各个层次,通用的、可复用性高的软件模块往往已经由操作系统或开发工具提供,如通用库、标准组件、标准模板库等,并不需要程序员重新开发。那么一般的程序员如何开发可重用的软件呢?而正常情况下,一个软件企业或软件小组往往专注于解决某一领域的问题,针对这一领域的软件项目虽不完全相同,但也有很多共同之处,比如财务或ERP领域的软件大多需要各种各样定制的表格和图表。所以开发软件时,开发针对某一特定领域或问题域的可重用软件是大多数程序员需要重点考虑的问题和方向。
那么在实际开发过程中,程序员们如何提高自己开发可重用软件的能力呢,我有几个小小的建议也许会对大家有所帮助。
建立开发可重用软件的意识:
首先建立开发可重用软件的意识,不管你所开发的软件有多么特殊,其中必定含有一些公共的逻辑和功能,将公共的逻辑或模块同真正特定的逻辑分开,学会从一个特定的问题集中抽象出几个逻辑层次,分开实现。可重用软件模块将作为一个特定软件产品的副产品而重放光芒。
保持类或模块的简单和纯粹:
保持类或模块的简单和纯粹,越是简单、功能纯粹的软件越可能被重用。越是简单,越是复杂,就象搭积木,提供的积木越简单,就越有可能搭建复杂的形状和物品。
也许有一天,你的一位同事对你说:嘿,哥们,我刚刚用了你在上一个项目开发的那个模块,挺不错。你已经实现了软件的可重用
软件成分重用有哪些方式 要简答,比较容易写的,谢谢啦
因为软件重用技术众多,一种重用技术可以包括多种重用形式。比如说:框架即可以包括代码级重用,也可以包括设计级重用。有一种分类方法是按照软件重用所应用的领域范围,把重用划分为两种:横向重用和纵向重用。
1. 横向重用是指重用不同应用领域中的软件元素,例如数据结构、分类算法、人机界面构件等。标准函数库是一种典型的原始的横向重用机制。
2. 纵向重用是指在一类具有较多公共性的应用领域之间进行软部品重用。因为在两个截然不同的应用领域之间实施软件重用非常困难,潜力不大,所以纵向重用才广受瞩目,并成为软件重用技术的真正所在。纵向重用活动的主要包括以下几个步骤:
1) 首先进行域分析。根据应用领域的特征及相似性预测软部件的可重用性。
2) 然后进行软部品的开发。一旦确认了软部件的重用价值,即可进行软部品的开发并对具有重用价值的软部品进行一般化,以便它们能够适应新的类似的应用领域。
3) 最后,软部件及其文档即可进入软部品库,成为可供后续项目使用的可重用资源。
在java中什么是一种软件重用形式?在这种形式中可以增加新的功能
java很容易重用,因为他使用接口->类的模式,接口中规定好令很多必须实现的功能,类继承接口,那么在实现了接口中规定的功能后,就可以自行添加很多新功能。
同时,也可以使用类->类模式,类继承类,那么新类中,就直接具有了父类的所有功能,同时还可以添加新功能。
实际上,java的所有类,都继承了最顶级的类Object,你可以在java文档里看到。
至于软件重用,这个不清楚你指的哪一方面,通常只是重用某些功能模块,使用继承模式,那么很多功能都不用再重新实现,只要用已有的就行了,只有没有的功能需要自己添加。
呐,最简单的重用方式就是,Ctrl+C,Ctrl+V,然后继承,哈哈哈哈!
软件生产中有三种级别的什么重用
内部重用:在同一应用中能公共使用的抽象块。
代码重用:将通用模块组合成库或工具集以便在多个应用和领域都能使用。
应用框架的重用:为专用领域提供通用的或现成的基础结构以获得最高级别的重用性
就项目管理而言,软件重用项目与非重用项目有哪些不同之处
软件重用项目需要考虑生产可重用软部件的机制。同时,软件重用项目可以减少
开发活动中大量的重复性工作,能提高软件生产率,降低开发成本,缩短开发周期。
同时由于大量使用软构件,软件的灵活性和标准化程度也可望得到提高。因此,软件
重用项目在管理是比非重用项目更节约管理资源,同时管理起来更方便。
函数和类两种程序模块都可以实现软件重用,它们之间的区别是什么
在任何类之外的函数是一种全局函数,当全局函数很多的时候,就会增加程序的尺寸,使程序变大.并且全局函数无法加const和static修饰符.但在类里面可以有内联函数,工具函数(也就是private成员函数),静态函数和const成员函数.而且类的大小取决于它的数据成员而不取决于它的成员函数,因此类对数据的封装做得更好.如果一个全局函数返回一个堆内存中的数据,那么每次调用该函数之后都得自己去释放这块内存,但如果在类中,这种工作则可以由析构函数来自动完成.
转载请注明出处51数据库 » 软件重用的基本要求是什么? 软件的可重用性是什么意思
太学生Ailean