多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### 从重构联想到软件复用和技术传播 前面所提的现实世界问题,并不仅仅存在于重构中。它们广泛存在于软件的演化(evolution)和复用(reuse)中。 过去数年,我用了很多时间来关注软件复用性、平台、框架、模式、遗留系统(往往涉及「非面向对象」软件)的发展相关问题。除了在朗讯(Lucent)和贝尔实验室(Bell Labs)开发项目,我还参加了其他公司的员工讨论会——他们也曾经与类似问题搏斗过。.[19], [20], [21], [22] 「可复用法」的现实问题,和重构的相关问题很类似: - 技术人员可能不知道「该复用什么」或「如何复用」。 - 技术人员可能对于采用「可复用法」(reuse approach )缺乏动力,除非他们能够获得短期利益。 - 如果要成功适应「可复用法」(reuse approach ),额外开销(Overhead)、学习曲线(learning curve)和发现成本(discovery cost )都必须考虑。 - 因釆用「可复用法」(reuse approach )不该引起项目混乱。项目中可能有很大压力:尽管面对遗留系统的束缚,仍应让现有资产或实现品获得杠杆作用。 新的实现品应该与现有系统协同工作,或至少向下兼容于现有系统。 Geoffrey Moore[23] 把「技术的接纳过程」描述为一条钟型(bell-shaped )曲线:前段包括先行者(innovators )和早期接受者(early adopters),中部急剧增加的人群包括早期消费群体(early majority )和晚期消费群体( late majority),后段则是那些行动缓慢者(laggards)。一个思想或产品如果要成功,必须得到早期消费者和晚期消费者的广泛支持。另一方面,许多对于先行者和早期接受者很有吸引力的想法, 最终彻底失败,因为它们没能跨越鸿沟,让早期消费者和晚期消费者接纳它们。之所以有这样的鸿沟是因为,不同的消费人群有着不同的消费动机。先行者和早期接受者感兴趣的是新技术、「范式移转和突破性思想」的愿景(visions of paradigm shifts and breakthroughs)。早期和晚期消费群则主要关心成熟度、成本、支持,以及这种新思想或新产品是否被「与他们有着相似需求」的其他人成功套用。 要打动并说服软件开发者,所需方式和打动并说服软件研究者是完全不同的。软件研究者通常是Moore 所说的「先行者」,软件开发者(尤其是软件经理)则往往属于早期或晚期消费者。如果想要让你的思想深入所有人心,了解这一差异是非常重要的。是的,无论软件复用或重构,要想打动软件开发者,这一点都至关重要。 在朗讯(Lucent)和贝尔实验室(Bell Labs )中我发现,鼓励「复用性」应用及运行其必要平台,得冒一点风险。这需要主管人员精心制定策略、在中阶经理层组织领导会议、与项目开发组协商、通过研讨会和出版物向广大研究人员和开发人员宣扬这些技术的好处。在这整个过程中,很重要的几件事是:对员工进行培训、尽量获取短期利益、减少额外开销、安全引入新技术。这些见识,都是从我对重构的研 究中得来的。 我的论文指导教授Ralph Johnson 审查本章草稿时指出:这些原则不仅可应用于重构和软件复用性,同时也是技术传播时的常见问题。如果你正试图说服别人重构(或采用其他某种技术或实践),请注意保证自己随时关注这些问题,这样才能深入人心。技术的传播是很困难的,但不是做不到。