Separation of concerns, if appropriately applied, brings many software engineering benefits such as complexity reduction, reusability, evolvability, and so forth [6]. Long ago, object-oriented programming made more advancements than the former paradigm, structured programming did in terms of separation of concerns. Now, Aspect Oriented Programming (AOP) is being accepted as a more advanced solution to the complexity of the software.
As an extension to the separation of concerns [4] which is one of the principles in software engineering, separation of crosscutting concerns increases the modularity and as a result, the software quality can be improved. The AOP technique has been more used at the programming level but for systematic application of AOP,, this technique is more and more widely used from the early stages of software development, which is called the 'early aspect'.
Quality requirements are typical crosscutting concerns. Many researches have been performed on the modularization of quality requirements especially in the field of requirement engineering. However the module captured in the requirement phase does not match well with the programming construct 'aspect' in the implementation.
In this paper, to overcome the problem in handling aspects in the requirement phase, the aspect concept is applied just after the architecture is set up with the proper quality requirements of the system being developed. With the architecture, quality scenarios and tactics as inputs, we introduce a way to aspectize the tactics. And with examples in various quality attributes, we show the aspect extracted from tactic can be easily connected to the implementation. Because we aspectize quality requirements from the solution arena, quality requirements can be more seamlessly connected to the implementation construct in the name of aspect.
With this approach we can aspectize the only aspect that can be realized in the programming construct. This means that we do not have to waste time for aspectization that can't be implemented, which has been done in requirement engineering.
Aspect Oriented Programming (AOP)이 점차 프로그램 수준에서 활용도가 높아짐에 따라 좀 더 체계적인 AOP 기술의 적용을 위해 소프트웨어 개발 전반에 걸친 Aspect Oriented Software Development(AOSD)로 연구의 방향이 넓어지고 있다. 이에 따라 각 단계별로 기존 방법론에 Aspect개념을 확장한 방법들 또는 새로 창안된 방법들이 제안되고 있다.
Quality Requirement는 AOP가 모듈화하고자 하는 대표적인 Crosscutting Concern이다. Requirement Engineering, Architecture 단계에서 이를 AOP의 개념으로 모듈화하려는 노력이 다각도로 이루어 지고 있다.
이 논문은 아키텍처 설계 단계 후까지의 Artifact를 통해 Quality Requirement를 모듈화하려는 노력이다. 이는 Aspect의 프로그래밍 레벨로의 연결을 원활히 하기 위해서는 솔루션의 영역에서 Aspect를 찾는 것이 더 효율적이라는 생각에서 출발하였다. Quality Requirement는 서로 Trade-off관계가 존재하고 이것이 결정되는 과정에 관한 성숙한 방법론이 많이 존재하므로 그 방법을 이용해 어느 정도 솔루션의 실체를 만든 후에 Aspect를 다루는 것이 효율적이고 프로그래밍 레벨로도 연결이 쉽다.
이를 위해 아키텍처 설계 후의 Artifact인 Quality Attribute Scenario와 사용된Tactic을 이용해서 Quality Requirement를 모듈화하려고 하였다. 렌 바스가 분류한 6개의 Quality Attribute별로 tactic을 모듈화하였으며 Run-time tactic의 경우 AOP의 construct로의 모듈화가 용이하였고 Design-time tactic의 경우 정적crosscutting기법을 사용하였으나 이는 모듈화라기 보다 Design 결정을 만족시키기 위한 방법 중 하나라 할 수 있다. 이를 통해 Quality Requirement들을 일관되게 관리될 수 있게 하였으며 이는 개발 시스템 내에서 Quality가 어떻게 발현되는지를 명확히 한다.
이 논문을 통해 run-time tactic이 AOP를 통해 모듈화가 가능함을 보였다. 하지만 모든 tactic에 대해 모두 다룬 것이 아니고, 렌 바스가 제안한 tactic외에도 다양한 tactic들이 존재할 수 있다. 이에 대한 해결은 tactic들을 aspect화 하는 방법들을 일반화하거나 패턴화하는 방법을 이용 해 볼 수 있다.