程序内那些冲突或者内部依赖过度一般都和横切关系有直接联系，由于过程性和功能性编程语言的结构完全是步骤化调用，也就没有语法可以同时进行功能实现和横切关系处理，这样一来，解决横切关系的代码就在程序中分散或者重复执行，最终导致了程序模块化的丧失；面向切面的程序设计（AOP）的目的是将这些横切关系封装进切面来保持程序的模块化，也就可以保持自然得模块独立性和处理横切关系代码的可复用性。通过这些对横切关系的设计处理，作为对于面向对象编程的一个补充，软件工程的模块化和维护简单化的优势仍然可以保持。