我们写好的功能模块, 总希望它能重用, 希望只维护一处,其他地方都不用再关心了. 然而现实开发过程中总不是这样的, 我们总希望接口尽可能简单,而且固定,一旦确定了就不改了, 因此说你一旦发现这一模块出现差错, 那么你要改的也只是一个地方,而且已经开发完成的软件不必再重新编译和分发了.
对于模型A中, 功能模块是以源代码的形式存在的, 那么一般来说我们在没次开发的时候总会copy一份源代码到所开发的工程中去, 而且, 一般来说, 我们要完成一个功能模块总不会只是1个cpp文件, 一般都会有几个cpp文件来支持主功能, 因此, 如果要加入的话, 代码, 或者要说要维护的源文档就大大地增加了,.
再则, 虽然一般单个模块都是经过测试的, 但是难保会有差错, 那么, 一旦应用程序已经分发出去了, 要修改这个bug, 代价是非常高的, 要经过重新编译, 重新分发改软件. 而且有时候是会年久失修的.