多项选择题

面向方面软件开发大致有以下()的过程。

A.根据软件系统的需求,分解和确定软件系统的横切关注点和核心级关注点。
B.利用面向方面的程序设计语言分别实现各个关注点,得到目标软件系统的程序代码。
C.通过定义程序代码的重组规则和织入机制,实现不同关注点的代码组合。
D.利用SpringAOP模块实现AOP。