所谓功能分解就是将一个难以解决大问题划分为若干个容易解决的小问题,即分而治之的思想,它本身不考虑复用性,灵活性。功能分解也可以称为是模块化。结构化和面向对象都采用功能分解的思想。
结构化采用功能分解的思想,从实现功能的角度,将系统划分为函数集和数据集,数据通过参数传递。一个功能就是一堆函数和数据的集合。这可以解决问题,但是复用性,灵活性,扩展性较差,维护代价较高。而且从软件周期模型的角度看,从实际系统到分析模型到设计模型再到编码有明显的断层。
面向对象采用功能分解的思想,将系统划分为对象集,对象封装数据和行为,暴露接口由其它对象调用。从工程的角度看,这种方法更加符合人们认识客观世界的方法,使软件开发的各个阶段过渡自然;从技术的角度看,封装了易变的部分,暴露稳定的部分,提高了复用性,灵活性,扩展性,提高了软件的开发效率。