층위구조 아키텍처의 복구 및 일치성 검사를 위한 프로그램 분석 방법

A Program Analysis Technique for Recovery of Layered Architecture and Conformance Checking

  • 박찬진 (서울대학교 컴퓨터공학부) ;
  • 홍의석 (성신여자대학교 컴퓨터정보학부) ;
  • 강유훈 (서울대학교 컴퓨터공학부) ;
  • 우치수 (서울대학교 컴퓨터공학부)
  • 발행 : 2005.08.01

초록

층위 구조 아키텍처는 프로그램을 일반성에 따라 분할하는 모듈 구성의 방법이다. 본 논문은 객체지향 프로그램으로부터 층위 구조 아키텍처를 복구하고 아키텍처 문서와의 일치성을 검사하는 방법을 제시한다. 객체지향 프로그램에서의 층위구조 스타일 규칙을 기술하기 위해, 모듈 간 사용 관계에 기반한 모듈들의 부분 순서 집합을 구성하며, 재정의 관계를 통해 모듈 간 층위 관계를 정의한다. 또한, 층위 관계의 의미를 설계 패턴에서의 예를 통해 설명한다. 프로그램으로부터 층위 구조 아키텍처를 복구하기 위한 절차를 기술하며, 복구를 위한 메타 모델을 제시한다. 이를 기반으로 공개 소스 프로젝트를 통해 개발된 소프트웨어의 소스코드들로부터 층위 구조 아키텍처를 복구하고, 복구된 아키텍처로부터 발견된 층위 관계의 의미와 아키텍처 문서와의 불일치 부분들에 대해 논의한다. 검사를 통해 아키텍처 문서와 일치하지 않는 부분들이 발견하였고, 이를 조사한 결과 이들이 층위 구조 아키텍처에서 허용 가능한 예외로 여겨지지만 아키텍트가 이들 부분에 대한 변경을 주의 깊게 관리할 필요가 있다는 것을 지적하였다.

Layered Architecture is a kind of nodule decomposition techniques, which decomposes a program by generality This paper proposes a ]aver based method for recovering layered architecture from object-oriented program and checking conformance against architectural document. To specify the rules for layered style in object-oriented program, we define a partially ordered set on modules by module use relationship and module layer relationship by module override relationship. The meaning of module layer relationship is explained with an example from design patterns. Steps to recover layered architecture from program are described and a metamodel for the recovery is proposed. Architecture recovery is performed on source codes from open-source software project, and the implication of parts that do not conform to its architectural document is discussed. As a result of checking, it is pointed out that, although the parts are considered allowable exceptions of layered architecture, their modifications should be controlled carefully.

키워드

참고문헌

  1. Clements, P., Bachmann, F., Bass, L., Garlan, D., Ivers, J., Little, R., Nord, R. and Stafford, J., Documenting Software Architecture, Addison Wesley, 2003
  2. Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., and Stal, M., Pattern Oriented Software Architecture, Volume 1: A System of Patterns, John Wiley & Sons, 1996
  3. Shaw, M. and Garlan, D., Software Architecture, Prentice Hall, 1996
  4. Griswold, W. G. and Notkin, D., 'Architectural Tradeoffs for a Meaning-Preserving Program Restructuring Tool,' IEEE Trans. on Software Engineering, Vol. 21, No.4, 1995 https://doi.org/10.1109/32.385967
  5. van der Linden, F. J. and Muller, J. K., 'Creating Architectures with Building Blocks,' IEEE Software, Nov., 1995 https://doi.org/10.1109/52.469760
  6. Parnas, D. L., 'On the criteria to be used in decomposing systems into modules,' Communications of the ACM, Vol. 15, Issues 12, Dec., 1972 https://doi.org/10.1145/361598.361623
  7. ArgoUML. http://argouml.tigris.org
  8. Riva, C., 'Reverse Architecting: an Industrial Experience Report,' Proceedings of the 7th Working Conference on Reverse Engineering (WCRE'00), 2000 https://doi.org/10.1109/WCRE.2000.891451
  9. Bowman, I. T., Holt, R. C., and Brewster, N. V., 'Linux as a Case Study: Its Extracted Software Architecture,' Proceedings of the 21st International Conference on Software Engineering, pp.555-563, 1999 https://doi.org/10.1109/ICSE.1999.841045
  10. Stoermer, C. and O'Brien, L., 'MAP - Mining Architectures for Product Line Evaluations,' Proceedings of the 2nd Working IEEE/IFIP Conference on Software Architecture (WICSA'01), 2001 https://doi.org/10.1109/WICSA.2001.948405
  11. Seacord, R. C., Plakosh, D. and Lewis, G. A., Modernizing Legacy Systems, Addison Wesley, 2003
  12. Murphy, G. C., Notkin, D., and Sullivan, K. J., 'Software reflexion models : bridging the gap between design and implementation,' IEEE Transactions on Software Engineering, vol. 27, no. 4, pp. 364-380, 2001 https://doi.org/10.1109/32.917525
  13. Tran, J. B., Godfrey, M. W., Lee, E. H. S., and Holt, R. C., 'Architectural Repair of Open Source Software,' Proceedings of the 8th International Workshop on Program Comprehension (IWPC'00), pp. 48-59, 2000
  14. Koschke, R. and Simon, D., 'Hierarchical Reflexion Models,' Proceedings of the 10th Working Conference on Reverse Engineering (WCRE'03), 2003
  15. Stoermer, C., O'Brien, L., and Verhoef, C., 'Moving Towards Quality Attribute Driven Software Architecture Reconstruction,' Proceedings of the 10th Working Conference on Reverse Engineering (WCRE'03), 2003
  16. Stoermer, C., O'Brien, L., and Verhoef, C., 'Practice Patterns for Architecture Reconstruction,' Proceedings of the 9th Working Conference on Reverse Engineering (WCRE'02), 2002 https://doi.org/10.1109/WCRE.2002.1173073
  17. Riva, C., Selonen, P., Systa, T., Tuovinen, A., Xu, J., and Yang, Y., 'Establishing a Software Architecting Environment,' Proceedings of the 4th Working IEEE/IFIP Conference on Software Architecture (WICSA'04), 2004
  18. Szypersky, C., Component Software. 2nd Ed., Addison-Wesley, 2002
  19. Clark, D. D., 'The structuring of systems using upcalls,' Proceedings of the 10th ACM symposium on Operating systems principles, 1985 https://doi.org/10.1145/323647.323645
  20. Gamma, E., Helm, R., Johnson, R., and Vlissides, J., Design Patterns: Elements of Reusable Object Oriented Software, Addison Wesley, 1994
  21. Fowler, M., Refactoring, Improving the Design of Existing Code, Addison Wesley, 1999
  22. Java Compiler $Compiler^TM$ (JavaCC) The Java Parser Generator. http://javacc.dev.java.net
  23. Graphviz - open source graph drawing software. http://www.research.att.com/sw/tools/graphviz
  24. Mancoridis, S., Mitchell, B. S., Rorres, C., Chen, Y., and Gansner, E. R., 'Using Automatic Clustering to Produce High-Level System Organizations of Source Code,' Proceedings of the 6th International Workshop on Program Comprehension (IWPC'98), 1998 https://doi.org/10.1109/WPC.1998.693283
  25. Shokoufandeh, A., Mancoridis, S., and Maycock, M., 'Applying Spectral Methods to Software Clustering,' Proceedings of the 9th Working Conference in Reverse Engineering (WCRE'02), 2002