阻碍软件复用的技术和非技术有哪些?你复用过很多软件吗?如果没...
软件复用(SoftWare Reuse)是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。
简单的理解,就是把一些软件通过配置等方式连接在一起协同工作。
理想很丰满,但是,现实很骨感。
软件复用面对的第一个阻碍就是不同软件开发商之间并没有一套统一的接口标准,比如同样是做CRM,不同厂家的数据库定义完全不同,提供的API数据定义也千差万别。
再考虑到数据同步、性能、安全性等各种因素,至少在企业领域,软件之间传递数据尚且困难,软件复用的技术难度可想而知。
在非技术层面,软件复用面对的最大问题是体验一致性。
不同的软件有着完全不同的操作风格,这将导致用户使用培训成本居高不下。
对于企业用户,最理想的情况就是只需要学会一套系统的操作方式,就可以完成所有工作。
我认为,软件复用的唯一出路就是平台化,不同的软件基于同一套平台进行开发,互相直接数据共享,配置(包含最重要的用户和权限体系)共享,体验相通。
我们尝试过以“活字格”为代表的一些企业Web应用开发平台,发现除了开发效率非常高之外,开发出来的软件可以很方便的连接到其他用该平台开发的软件。
这样,我们把企业内的业务拆散到若干个软件,根据需要拼接在一起,就实现了真正意义上的软件复用。
软件复用的OO方法对软件复用的支持
支持软件复用是人们对面向对象方法寄托的主要希望之一,也是这种方法受到广泛重视的主要原因之一。
面向对象方法之所以特别有利于软件复用,是由于它的主要概念及原则与软件复用的要求十分吻合。
面向对象方法从面向对象的编程发展到面向对象的分析与设计,使这种方法支持软件复用的固有特征能够从软件生命周期的前期阶段开始发挥作用,从而使OO方法对软件复用的支持达到了较高的级别。
与其它软件工程方法相比,面向对象方法的一个重要优点是,它可以在整个软件生命周期达到概念、原则、术语及表示法的高度一致。
这种一致性使得各个系统成分尽管在不同的开发与演化阶段有不同的形态,但可具有贯穿整个软件生命周期的良好映射。
这一优点使OO方法不但能在各个级别支持软件复用,而且能对各个级别的复用形成统一的、高效的支持,达到良好的全局效果。
做到这一点的必要条件是,从面向对象软件开发的前期阶段---OOA就把支持软件复用作为一个重点问题来考虑。
运用OOA方法所定义的对象类具有适合作为可复用构件的许多特征,OOA结果对问题域的良好映射,使同类系统的开发者容易从问题出发,在已有的OOA结果中发现不同粒度的可复用构件。
在复用技术支持下的OOA过程,可以按两种策略进行组织。
第一种策略是,基本保持某种OOA方法所建议的OOA过程原貌,在此基础上对其中的各个活动引入复用技术的支持;另一种策略是重新组织OOA过程。
第一种策略是在原有的OOA过程基础上增加复用技术的支持,应补充说明的一点是,复用技术支持下的OOA过程应增加一个提交新构件的活动。
即在一个具体应用系统的开发中,如果定义了一些有希望被其它系统复用的构件,则应该把它提交到可复用构件库中。
第二种策略的前提是:在对一个系统进行面向对象的分析之前,已经用面向对象方法对该系统所属的领域进行过领域分析,得到了一个用面向对象方法表示的领域构架和一批类构件,并且具有构件/构架库、类库及相应工具的支持。
在这种条件下,重新考虑OOA过程中各个活动的内容及活动之间的关系,力求以组装的方式产生OOA模型,将使OOA过程更为合理,并达到更高的开发效率。
软件开发人员应具有什么素质?
程序员基本素质? 团队精神和协作能力(? 木桶理论、? 学习性组织)? 文档习惯(? 注释、? 开发过程文档)? 规范化,标准化的代码编写习惯(? 代码编写规范? 界面设计规范)? 复用性,模块化思维能力(? 用户控件 ? 组件技术)? 测试习惯(? 单元测试 ? 集成测试 ? 系统测试 ? 稳定性测试 )? 学习和总结的能力4、职业素质? 交际能力? 表达能力? 职业素养5、个人素质? 信心和恒心? 良好的个人品质? 良好的个人习惯软件开发工程师是从事软件开发相关工作的人员的统称。
软件开发工程师的技术要求是比较全面的,除了最基础的编程语言(C语言/C++/JAVA等)、数据库技术(SQL/ORACLE/DB2等)、.NET平台技术、C#、C/S B/S程序开发,还有诸多如JAVA SCRIPT、AJAX、HIBERNATE、SPRING、J2EE、WEB SERVICE、STRUTS等前沿技术。
生活就是生下来就要干活