정보 시스템을 구현하는 프로그램을 설계하는 방법은 Flowchart에서 UML의 Activity Diagram에 이르기까지 다양하다. 하지만, 이제까지 개발된 프로그램 설계 도구와 방법은 프로그램 코딩 도구와 방법에 비해서 상대적으로 효율적이지 않았다. 또한 프로그램 설계와 코드 간의 쌍방향 절환이 용이하지 않아 개발 생산성과 유지보수성을 개선하는 데 한계가 있었다. 따라서 본 연구에서는 컴포넌트 기반의 SOC(Structured Object Component)을 지원하는 설계 및 코딩 융복합 자동화 도구 SETL(Structured EfficiencyTooL)의 개발을 통해 프로그램 설계와 코딩 단계를 융복합하여 병렬적인 작업이 가능하도록 하는 융복합 개발 방법을 제안한다. 즉, SETL을 사용하면 프로그램 설계와 코딩 간의 절환을 거의 실시간으로 수행할 수 있어, 소프트웨어 개발 공정 단계간의 격차를 해소하여 개발 생산성 및 유지보수성을 극대화 할 수 있다.
정보 시스템을 구현하는 프로그램을 설계하는 방법은 Flowchart에서 UML의 Activity Diagram에 이르기까지 다양하다. 하지만, 이제까지 개발된 프로그램 설계 도구와 방법은 프로그램 코딩 도구와 방법에 비해서 상대적으로 효율적이지 않았다. 또한 프로그램 설계와 코드 간의 쌍방향 절환이 용이하지 않아 개발 생산성과 유지보수성을 개선하는 데 한계가 있었다. 따라서 본 연구에서는 컴포넌트 기반의 SOC(Structured Object Component)을 지원하는 설계 및 코딩 융복합 자동화 도구 SETL(Structured Efficiency TooL)의 개발을 통해 프로그램 설계와 코딩 단계를 융복합하여 병렬적인 작업이 가능하도록 하는 융복합 개발 방법을 제안한다. 즉, SETL을 사용하면 프로그램 설계와 코딩 간의 절환을 거의 실시간으로 수행할 수 있어, 소프트웨어 개발 공정 단계간의 격차를 해소하여 개발 생산성 및 유지보수성을 극대화 할 수 있다.
Methods to design programs which implement IT systems have been developed in various forms from flowchart to activity diagram of UML. However, program design tools and methods developed so far have not been efficient comparing to program coding tools and methods. In addition, Program design methods ...
Methods to design programs which implement IT systems have been developed in various forms from flowchart to activity diagram of UML. However, program design tools and methods developed so far have not been efficient comparing to program coding tools and methods. In addition, Program design methods and tools developed until now have been difficult to support the bidirectional conversion between program design and coding, and the improvement of development productivity and maintainability. Therefore, in this study, we propose Convergence Development Method to enable working with wide bandwidth through fusing the program design and coding phase by using SOC and supporting tool named SETL which automatizes the convergence of design and coding. Thus, by using SETL, it is expected that the efficiency gap between the program design and coding phase is reduced, and development productivity and maintainability is increased. key words.
Methods to design programs which implement IT systems have been developed in various forms from flowchart to activity diagram of UML. However, program design tools and methods developed so far have not been efficient comparing to program coding tools and methods. In addition, Program design methods and tools developed until now have been difficult to support the bidirectional conversion between program design and coding, and the improvement of development productivity and maintainability. Therefore, in this study, we propose Convergence Development Method to enable working with wide bandwidth through fusing the program design and coding phase by using SOC and supporting tool named SETL which automatizes the convergence of design and coding. Thus, by using SETL, it is expected that the efficiency gap between the program design and coding phase is reduced, and development productivity and maintainability is increased. key words.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
따라서 급속히 복잡화 되는 소프트웨어 개발 환경을 효율적으로 지원하기 위해 재공학 기술을 기반으로 하는SETL의 개발을 통해 소프트웨어 융복합 개발 방법을 제시하고자 한다.
본 논문에서는 컴포넌트 기반의 설계 모델링을 위한 SOC과 이를 지원하는 C언어와 Java언어 버전 중에서 자동화 도구인 C언어 버전의 SETL의 연구 개발 성과를 중심으로 결과를 제시하였다.
본 연구에서는, SOC을 지원하기 위해 장기간에 걸쳐서 개발해 온 SETL(Structured Efficiency TooL)의 원리와 이를 사용하여 설계와 코딩을 병행적으로 수행하는 융복합 개발 방법을 제안하고자 한다.
위와 같은 중점 사항들을 포함하여 지속적인 추가 연구를 바탕으로 향후 프로젝트 실무에의 적용을 통한 성공 사례를 축적해 나가고자 한다.
제안 방법
개발 측면에서는 기본적으로 순공학 기술을 기준으로 하지만, 유지보수 측면에서는 기본적으로 역공학 기술을 기준으로 하는 것을 전제로 한다.
본 연구에서는 계산의 객관성을 제고하기 위해"time.h" 헤더 파일을 include하고 clock()함수를 프로그램에 삽입하여 측정하도록 기준을 마련하여 적용하였다.
시간 효율성 측면의 품질 측정 기준을 마련함에 따라순공학과 역공학 기술을 적용할 때 SOC 설계내역을 C언어 및 C++ 언어 소스 코드로 설계 단계와 코딩 단계를 병렬적으로 수행한 후 SOC 설계로부터 소스 코드로 순 공학 변환하거나, 소스 코드를 SOC 설계 내역으로 역공학 변환할 때의 시간 효율성을 측정하여 검증하였다.
이를 크게 정상계, 비상계 및 이상계로 분류하여 각각의 처리 목적에 따라 기능과 SETL이 취급하는 설계 컴포넌트 별로 종류를 세분화 한다.
측정의 객관성을 확보하기 위해 변환 프로그램 내부에 시간을 측정하는 기능을 삽입하여 객관적이고 정량적인 측정을 수행하였다.
하지만, 컴퓨터 기술의 발전에 따라 언어가 C언어 계열과 Java언어 계열로 대세가 결정됨에 따라, VisualBASIC과 같은 일정한 형식을 가진 언어에서 발전하여 자유 양식으로 작성이 가능한 C 및 Java 언어 계열에 대한 지원이 가능하도록 개발 작업을 진행했다.
성능/효과
SETL을 사용하여 C언어와 C++언어 프로그램을 융복합 모드와 코딩 모드에서 각각 별도로 작업한 내용을 10라인 수준의 프로그램부터 1000라인 수준의 프로그램에 이르기까지 101에서부터 103 라인까지의 크기의 파일을 각각 순공학 및 역공학 방법으로 변환한 결과, 평균[Fig. 11]과 같은 측정 결과를 얻었다.
SOC을 지원하는 SETL을 이용하면 컴포넌트 기반의 조립식 설계를 실현할 수 있으며, 프로그램 설계와 코딩을 병행적으로 수행할 수 있어 소프트웨어 개발 및 유지보수 효율성을 획기적으로 향상시킬 수 있다.
검증 결과를 통해, SETL을 사용하면 시간 효율성을 크게 향상시켜 줄 수 있으며 이를 통해 개발 생산성 및 유지보수성을 증대시켜줄 수 있음을 확인하였다.
그 결과, [Fig. 7]에 나타낸 바와 같이, 코딩 모드와는 별도로 융복합 모드를 가지고 있으며, C언어 및 Java언어도 지원하는 혁신적인 SETL을 개발하는데 성공하였다.
넷째, 설계 작업을 하는 과정에서도 코딩 모드로 절환하여 자연스럽게 코딩을 할 수 있으며, 소스 코드는 즉각 융복합 모드로의 절환을 통해 [Fig. 8]과 같은 상태로 복귀하여 개요 및 상세 설계 모델을 재생해 낼 수 있다(역공학 기능).
다섯째, 설계 모델로 재생한 내역은 추상화, 구체화, 추상화 범위 확장 및 범위 축소 등의 기능을 적용하여 재구조화 할 수 있다(재구조화 기능).
다섯째, 설계와 코딩 공정이 분리되어, 언제나 설계가 끝난 후에 코딩 작업을 진행하는 형태의 직렬형 작업 방법을 사용해야 한다. 이는 설계와 코딩을 병행하여 진행하는 형태의 병렬형 작업 방법을 채택할 수 없게 하는 제약요건으로 작용한다.
셋째, Activity Diagram의 기술 시 공간을 차지하는 밀도가 프로그램 코드보다 훨씬 낮아 표현 공간의 낭비가 많다. 이는 한 눈에 파악할 수 있는 정보에 한계를 초래하여 작성한 설계 내역의 이해도를 저하시키는 요인으로 작용한다.
셋째, 융복합 모드에서의 설계 작업을 완료하면 모드변환 기능을 사용하여 [Fig. 9]와 같이 거의 실시간으로 완벽한 소스 코드를 생성해낼 수 있다(순공학 기능).
셋째, 프로그램 설계 내역의 기술 밀도가 코드의 기술밀도와 크게 차이나지 않아야 한다.
위의 측정 기준에서 처리량과 처리속도와 최적성은 시간 효율성에 속하며 기억 장소의 사용량은 공간 효율성에 속한다. 또한 단순성과 정확성은 코드 효율성에 속한다.
이에 비해 본 연구에서 제안하는 SETL은 C를 중심으로 하는 구조적 프로그래밍 언어는 물론 Java를 중심으로 하는 객체지향 언어에 모두 적용이 가능하다. 또한, 설계와 코드 간의 순간 절환은 물론, 복잡하게 작성한 소스 코드 구조의 개선이나 컴포넌트 기반의 조립과 분해를 통한 재구조화를 용이하게 지원해주는 등 작업의 효율성을 극대화 한 것이 특징이다.
첫째, SETL을 실행하면 기본적으로 일반 소스 코드 에디터처럼 편집하는 기능이 작동한다(소스 편집 기능).
첫째, 요구사항 분석을 바탕으로 이해하기 쉽게 도해하여 코딩을 지원하는 설계 수준의 작업이 코딩 수준의 작업보다 시간효율성이 뛰어나야 한다.
첫째, 코딩 작업보다 Activity Diagram의 작업에 소요되는 시간이 훨씬 길다. 이는 설계 작업이 코딩 작업보다 시간 효율성 측면에서 불리함을 의미한다.
측정 결과를 통해서 알 수 있는 바와 같이, SETL은융복합 모드와 코딩 모드를 자유자재로 절환하면서 효율적으로 개발 및 유지보수 작업을 수행할 수 있도록 지원한다. 융복합 모드와 코딩 모드 사이의 절환은 측정 결과와 같이 소스 코드가 1,000라인 내외일 경우 순공학 시 평균 184[ms], 역공학 시 평균 362[ms] 정도로 1초 이내에서 순식간에 이루어지기 때문에 대기 시간을 거의 느끼지 못할 정도이다.
특히, 복잡한 형태의 알고리즘을 간소화하고 알고리즘에 대한 이해도를 향상시켜 줌으로써 개발 및 유지보수공정 작업의 효율성을 급속히 향상시켜 주는 성과를 창출한다.
후속연구
더 나아가서는 프로젝트에 참여하는 여러 구성원들이 설계와 코딩을 각각 나눠서 수행하더라도 그것들을 실시간으로 융복합하여 병행적으로 작업할 수 있도록 병렬적인 개발 방법을 적용할 필요가 있다.
또한 알고리즘의 수정 및 보완을 통해 오류의 확률을 급속히 낮출 수 있어 알고리즘의 정확도를 높여주는 효과를 기대할 수 있다.
이 방법을 실제 프로젝트에 적용하면 개발 생산성과 유지 보수성의 획기적인 증대가 가능할 것으로 예상된다. 특히 융복합 모드에서 작업을 하면 코딩 모드에서 작업을 하는 것보다 빠르고 정확하게 소프트웨어 개발 및 유지보수를 수행할 수 있다.
질의응답
핵심어
질문
논문에서 추출한 답변
UML의 Activity Diagram은 어떤 방법인가?
현재 가장 큰 영향력을 가지고 있는 UML의 Activity Diagram을 살펴보면, Fork, Join, Transition, Branch 등의 표현을 사용하여 프로그램을 설계한 후 프로그램 소스로 코딩하는 전형적인 흐름 중심의 방법이다.
알고리즘을 기반으로 하는 기존의 프로그램 설계 모델링 방법 중 구조 중심 방법이 급속히 하향곡선을 그린 원인은 무엇인가?
그러나 구조 중심 방법은 1990년대 중반 이후에 개발환경이 구조적 방법에서 객체지향 컴포넌트 방법으로 진화함에 따라 급속히 하향곡선을 그리기 시작했다. 이후 2015년 현 시점까지 일본 등 세계 일부 지역을 제외하고는 흐름 중심인 UML의 Activity Diagram이 주도권을 확보하고 있는 실정이다.
Activity Diagram을 포함한 기존 기술의 문제점을 해결하기 위해 고려해야 하는 다섯 가지 사항은 무엇인가?
첫째, 요구사항 분석을 바탕으로 이해하기 쉽게 도해하여 코딩을 지원하는 설계 수준의 작업이 코딩 수준의 작업보다 시간효율성이 뛰어나야 한다.
둘째, 프로그램 Activity를 개방된 형태로 표현하여 설계 내역과 코딩 내역이 1:1로 완벽하게 대응할 수 있도록 하고, 추상화 사다리 구성을 통해 개요와 상세를 동시에 파악할 수 있도록 해야 한다.
셋째, 프로그램 설계 내역의 기술 밀도가 코드의 기술밀도와 크게 차이나지 않아야 한다.
넷째, 특정한 알고리즘에 대해서는 어떠한 경우에도 패턴이 일정하게 나타나야 한다
.다섯째, 설계와 코딩 작업을 병행적으로 수행하여 공정 단계간의 간극을 제거할 수 있어야 한다.
참고문헌 (27)
Hartree and Douglas, Calculating Instruments and Machines, The University of Illinois Press, pp. 112, 1949.
Taub, Abraham, and John von Neumann, Collected Works 5., Macmillan. pp. 80-151, 1963.
Corrado Bohm and Giuseppe Jacopini, Flow Diagrams, Turing Machines And Languages With Only Two Formation Rules, Communications of the ACM, Vol. 9, No. 5, pp. 366 - 371, May 1966.
M. Hamilton and S. Zeldin, Top-Down, Bottom-Up, Structured Programming, and Program Structuring, Charles Stark Draper Laboratory, Document E-2728. Cambridge, Mass : Massachusetts Institute of Technology, December 1972.
I. Nassi and B. Shneiderman, Flowchart techniques for structured programming, SIGPLAN Notices, ACM, Vol. 8, Issue 8, pp. 12 - 26, August 1973.
Nakamura Sadatoshi, Ohara Shiqeyuki, and Odaka Akio, Classification of Control Macros of TS chart [in Japanese], Information Processing Society of Japan (IPSJ), pp. 1563-1564, Oct 1989.
Robert W. Witty, Dimensional flowcharting, Journal of Software : Practice and Experience, Vol 7, Issue 5, pp. 553-584, September / October 1977.
O. Ferstl, Flowcharting by Stepwise Refinement, ACM SIGPLAN Notices, Vol. 13, No. 1, pp. 34-42, January 1978.
ISO / IEC, ISO / IEC 8631, International Standard, Second edition, 1989-08-01, August 1989.
Y. Futamura, and others, Development of Computer Programs by PAD (Problem Analysis Diagram), Proceedings of the Fifth International Software Engineering Conference. New York : IEEE ComputerSociety, pp. 325-332, 1981.
Mikio Aoyama, Kazuyasu Miyamoto, Noritoshi Murakami, Hironobu Nagano, and Yoshihiro Oki, Design Specification in Japan : Tree-Structured Charts, Software, IEEE, Vol. 6, Issue 2, pp. 31-37, March 1989.
C. Jinshong Hwang, Structured D-chart : A diagrammatic methodology in structured programming, AFIPS '82 : Proceedings of the June 7-10, 1982, national computer conference.
Ken Orr, Structured Systems Development, New York : YOURDON Press, 1977.
Jean-Dominique Warnier, Logical Construction of Programs, 3rd ed., translated by B. Flanagan. NewYork : Van Nostrand Reinhold 1976.
Martin, J. and McClure, C., Diagramming Techniques for Analysts and Programmers, Prentice-Hall, Englewood Cliffs, NJ 1985.
Grady Booch, Ivar Jacobson, and Jim Rumbaugh, (2000) OMG Unified Modeling Language Specification [dead link, Version 1.3 First Edition : March 2000. Retrieved 12 August 2008.
OMG, Catalog of OMG Modeling and Metadata Specifications, http://www.omg.org/technology/documents/modeling_spec_catalog.htm. Retrieved 2012-02-21.
OMG, OMG Unified Modeling Language (OMG UML) Superstructure, Version 2.4.1, August 2011.
Raman Ramsin and Richard F. Paige, Process-Centered Review of Object Oriented Software Development Methodologies, ACM Computing Surveys, Vol. 40, No. 1, Article 3, Feb. 2008.
Hong-Jun Yoo, A Study on the Evolved UML Behavioral Modeling Using CPD, Paper for Master's Degree, Dept. of Computer Eng. The Graduate School of Information & Communications Sungkyunkwan University, Oct. 2001.
Yongchang Ren, Tao Xing, Xuguang Chai, Qiang Quan, and Xiaoji Chen, Study of Using Critical Path Method to Formulate the Algorithm of Software Project Schedule Planning, Information Management, Innovation Management and Industrial Engineering (ICIII) 2010 International Conference on, Vol. 4, pp. 126-129, Nov. 2010.
Yoshio Sato and Yohsuke Hosoda, Development of a Web System for Making Problem Analysis Diagram (PAD), Systems Man and Cyber netics (SMC) 2010 IEEE International Conference on, pp. 1108-1114, Oct. 2010.
Len Horton, Tools Are an Alternative to Playing Computer, Software Magazine, pp. 58-67, Jan. 1988.
Carma McClure, THE TH REE Rs OF SOFTWARE ATOMATION, PRENTICE-HALL 1992.
Jean-Marc Desharnais and Alain April, Software maintenance productivity and maturity, Proceedings of the 11th International Conference on Product Focused Software, Jun 2010.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.