软件架构非功能需求——可复用性

是什么

可复用性指软件的整体或其中一部分可以在其他软件的开发过程中重复使用的能力。

可复用性表现在两个方面:一个是重复使用现有代码的软件开发;另一个是以重复使用为目的的软件开发。

  • 重复使用现有代码的软件开发

重复使用现有代码的软件开发指在开发过程中重复使用项目内的既有模块、以往项目的模块和各种库等。将可重复使用的现有代码直接或变形后整合至正在开发的软件中。

  • 以重复使用为目的的软件开发

以重复使用为目的的软件开发指在当前软件开发中创造出来可供未来项目重复使用的模块。为其他软件提供可重复使用的模块是这类软件开发的目的。

为什么

为了提高软件开发的效率和软件质量,我们应该尽量避免从零开发。也就是说,从其他地方借用代码是最好的选择。

重复使用现有代码可以让我们少编写一些代码,降低软件开发的成本,缩短周期。同时,使用已取得成绩的成熟模块能够提高软件的质量。

怎么做

如果是重复使用现有代码的软件开发,我们就要设计出能作为现有结构或模块插件使用的软件架构。

这么做是为了支持软件合成。软件合成指通过利用现有模块来组成软件。为达到这一目的,我们需要实现能够作为黏合剂使用的模块,从而使现有模块适应当前的开发需求。

如果是以重复使用为目的的软件开发,我们就要设计出能将自给自足部分从正在开发的软件中分离出来的软件架构。自给自足的部分要能在不进行任何修改的情况下直接被其他系统使用。这部分最好能做成可独立构建的模块或包。

重复使用的“三之法则”

  • 三倍难度法则

该法则指开发可重复使用的模块的难度是开发在单一软件中使用的模块的难度的三倍。

在开发可重复使用的模块时,程序员需要考虑一般化问题的处理。除了模块自身要做到一般化,模块的测试也必须能在普通实例中使用。

因此,模块的可复用性越高,复杂度就越高,对想象力的要求也就越高。整个过程的难度陡然提升。在设计方面,我们必须考虑“什么是一般化问题”;在编程和测试方面,我们还需要考虑“如何处理一般化问题”。

  •        三种测试法则

该法则指可重复使用的模块在共享之前需要在三个不同的软件中通过测试。

可重复使用的模块不能满足于解决当前面对的问题,解决更加一般化的问题才是这些模块要达到的目标。

然而,在开发模块时,我们很难将一般化问题想的足够全面,很多问题只有在实践中才会暴露出来。

因此,我们不可能一开始就做出完美的一般化模块。比较明智的做法是先发开出原型,然后把它放到实际的问题领域中不断完善。所以,用于重复使用的模块在开发完成之后,最少要在三个问题领域中进行测试。

 

猜你喜欢

转载自blog.csdn.net/u012069234/article/details/113916156