Top Banner
- 305 - 소프트웨어 개발 생산성과 품질 향상을 위한 어플리케이션 프레임워크 구현방안 기반 (J2EE Data Access Logic 자동 생성 기술 중심) 오기창 김삼남 최광준 , , [email protected] 육군전산소 충남 계룡시 남선면 부남리 사서함 501-29, (042)550-5720 키워드 프레임워크 품질 자바 : , , , J2EE 요약 - - 수시로 변화하는 비지니스 요구에 부응하여 개발 생산성 향상과 고품질의 어플리케이션 개발을 위한 방안은 끊임없이 연구되어 왔으며 이를 지원하기 위한 대표적인 방안으로 어플리케이션 프레임워크가 대두 되였다. 본 연구에서는 프레임워크의 용어 및 필요성에 대해 정의하고 오픈소스 프레임워크의 , 출현과 적용 개발 사례를 통한 문제점을 분석한 후 웹 기반 정보 시스템에서 재사용 빈도가 가장 높고 또한 어플리케이션 성능측면에서 중요도가 가장 높은 계층의 , Data Access 자동 생성기를 설계 및 구현한다 어플리케이션 개발 시 본 DAO(Data Access Object) . 연구에서 구현한 어플리케이션 프레임워크를 적용함으로써 개발 생산성 향상으로 개발 공정을 단축 하고 검증된 코드 및 표준화된 코딩 규칙에 따라 소스 코드를 자동 , 생성시킴으로써 품질 향상을 이룰 수 있을 것이다.
26

소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

Sep 12, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 305 -

소프트웨어 개발 생산성과 품질 향상을 위한

어플리케이션 프레임워크 구현방안

기반(J2EE Data Access Logic

자동 생성 기술 중심)

오기창 김삼남 최광준, ,

[email protected]

육군전산소

충남 계룡시 남선면 부남리 사서함 501-29, (042)550-5720

키워드 프레임워크 품질 자바: , , , J2EE

요약- -

수시로 변화하는 비지니스 요구에 부응하여 개발 생산성 향상과 고품질의 어플리케이션

개발을 위한 방안은 끊임없이 연구되어 왔으며 이를 지원하기 위한 대표적인 방안으로

어플리케이션 프레임워크가 대두 되였다.

본 연구에서는 프레임워크의 용어 및 필요성에 대해 정의하고 오픈소스 프레임워크의,

출현과 적용 개발 사례를 통한 문제점을 분석한 후 웹 기반 정보 시스템에서 재사용 빈도가

가장 높고 또한 어플리케이션 성능측면에서 중요도가 가장 높은 계층의, Data Access

자동 생성기를 설계 및 구현한다 어플리케이션 개발 시 본DAO(Data Access Object) .

연구에서 구현한 웹 어플리케이션 프레임워크를 적용함으로써 개발 생산성 향상으로

개발 공정을 단축 하고 검증된 코드 및 표준화된 코딩 규칙에 따라 소스 코드를 자동,

생성시킴으로써 품질 향상을 이룰 수 있을 것이다.

Page 2: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 306 -

본 연구에 대한 절차를 도표로 표기하면 아래와 같다.

그림[ 1 연구절차]

Page 3: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 307 -

목 차

연구의 배경과 목적1.

프레임워크 정의 및 구조2.

프레임워크의 정의2.1

프레임워크 아키텍쳐2.2

오픈소스 기반 프레임워크 적용 개발3.

오픈소스 프레임워크의 출현3.1

기반 프레임워크 구현3.2 Struts

기반 프레임워크 적용 및 문제점3.3 Struts

새로운 프레임워크 개발4.

새로운 프레임워크의 필요성4.1

새로운 프레임워크 분석 및 설계4.2

아키텍쳐 요구사항4.2.1

개념적 아키텍쳐 개략 설계4.2.2 ( )

논리적 아키텍쳐 상세 설계4.2.3 ( )

새로운 프레임워크 구현4.3

생성기 구현4.3.1 VO

생성기 구현4.3.2 DAO

새로운 프레임워크를 적용한 개발 품질향상 사례5.

개발 생산성 검증5.1

소프트웨어 품질특성별 검증5.2 (ISO/IEC 9126)

기능성5.2.1

신뢰성5.2.2

사용성5.2.3

효율성5.2.4

유지 보수성5.2.5

이식성5.2.6

결론6.

연구 내용의 요약 및 토론6.1

차후 연구방향6.2

Page 4: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 308 -

연구의 배경과 목적 서론1. ( )

기존 정보 시스템의 주를 이루었던 클라이언트서버 방식에서 년대 후반부터- (CS) 90 웹 기반의

정보시스템이 비약적으로 발전하였다 그러나 웹 기반의 정보시스템은. 클라이언트서버 방식- (CS)에서 제공하던 고객의 다양한 비지니스 요구를 수용하지 못하는 한계를 갖고 있었다 이를.극복하기 위해 타 시스템과의 통합 및 확장이 대안으로 출현하였다 따라서 로. HTML, PHP, ASP기 개발된 웹 어플리케이션은 성능 및 확장성에 있어 고객의 비지니스 요구를 충족시키지 못해

새로운 대형 엔터프라이즈 웹 어플리케이션으로의 전환 및 타 웹 시스템과의 통합이 필요하게

되었다 이를 지원하기. 위해 다양한 플랫폼과 강력하고 유연하게 네트워크 환경을 지원하는

기반의 엔터프라이즈J2EE 웹 어플리케이션이 각광받기 시작하였다 플랫폼은. J2EE Servlet,등의JSP, EJB, JDBC, JMS 다양한 서비스를 포함하여 분산 환경 및 멀티 쓰레딩 지원 다양한,

표준 인터페이스 제공 등의 장점을 제공하고 있으나 이러한 다양한 기술의 지원은 새로 구,축되는 엔터프라이즈 웹 어플리케이션마다 각기 다른 아키텍쳐 설계로써 기반의 웹J2EE어플리케이션 구조는 다양성만을 추구한 채 표준적인 아키텍쳐를 제시하지 못하고 있다.

표준 웹 어플리케이션 아키텍쳐의 부재는 개발자 개개인의 경험도 및 기술력에 의존한

어플리케이션 설계로 반영 될 수 있으며 이는 협업 소프트웨어 개발이 필수적인 웹 어플리케이션,개발에 있어 개발 생산성 및 소프트웨어 품질 저하와 운영 및 유지보수 측면에서의 비효율성을

초래하게 된다 개발 생산성 소프트웨어 품질 및 유지보수성 향상을 위해 최근 들어 각광. ,받고 있는 기술이 프레임워크 기반 개발 로써 개발자는 해당(Framework Based Development)프로젝트에서 표준으로 제공한 프레임워크에 맞추어 해당 어플리케이션을 설계하고 해당

도메인의 특성에 맞는 비즈니스 로직 구현에만 집중하고 어플리케이션 하부 서비스에 대해서는

프레임워크에서 제공하는 개발 방법이 선호되고 있다 이러한 프레임워크는 점차 소프트웨어.개발의 필수 요소로 그 입지를 확고히 하고 있으며 새로 등장하는 프레임워크는 그 수를,헤아리기조차 어려울 정도다 말 그대로 프레임워크의 홍수 프레임워크의 춘추전국시대가. ,도래하기 시작하였다 이제는 해당 프로젝트에서 적합한 프레임워크를 식별하는 기술이 프로젝트.성공의 주요 기술로 자리 잡게 되는 시대가 왔다.

본 연구보고서는 재사용 레벨에 따른 일반적 프레임워크 정의 및 구조에 대해 분석하고,오픈소스 프레임워크 출현 및 오픈소스 프레임워크의 적용 개발사례를 통한 문제점을 분석

하여 이를 해결하기 위한 새로운 프레임워크를 구축하여 실제 프로젝트에 적용함으로써 얻을

수 있는 개발 생산성 및 에서 제시하는 품질 특성별 향상 사례에 대한 연구ISO/IEC 9126결과이다 본 연구를 통하여 구현된 생성기는 실제 프로젝트에 적용함으로써 기본적인. DAO

을 자동 생성하여 개발 생산성을 향상 시키고 성능 및 품질적인 측면이Data Access Logic ,검증된 표준 코드를 제공하여 소프트웨어의 품질을 향상 시키는 이득을 가져올 것이다.

Page 5: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 309 -

프레임워크 정의 및 구조2.

프레임워크의 정의2.1

사전적 의미로써의 프레임워크 정의는 뼈대 하부구조 틀 등으로 내릴 수 있다‘ , , ’ . 이러한

의미에서 직감할 수 있듯이 프레임워크란 소프트웨어를 개발하는 데 있어 하부구조를 이루는

중요한 축이라는 것을 생각할 수 있다.

다음은 다양한 사람들에 의해 정의 된 프레임워크의 정의 이다.

Erich Gamma

A set of cooperating classes that makes up a reusable design for a specific class of

software.

The unitedmodeling language user guide

An architecture pattern that provides an extensible template for application within a

domain.

Johnson & Foote

Framework is a reusable, semi-complete application that can be specialized to

produce custom applications.

Carey

A set of components working together so they address a umber of problems in one

or more domains.

Johnson & Russo

A framework is the design of a set of objects that collaborate to carry out a set of

responsibilities.

[johnson-foote 1988; Wirfs-Brock 1990]

프레임워크는 재사용을 목적으로 전체 시스템이 몇 개의 컴포넌트로 분할되고 각 컴포넌트가

어떻게 상호작용 하는지를 묘사한다.

위와 같이 프레임워크의 다양한 정의가 존재하나 소프트웨어 개발에서의 프레임워크는 재사용,

확장 이라는 공통적인 키워드를 포함하고 있으며 이러한 키워드를(reuse)’, (extension)’ ,

통해 이라는 프레임워크의 특징을 도출 해 낼 수 있다 즉‘semi-complete application‘ . ,

반쯤 완성된 어플리케이션에서의 반은 이미 만들어진 재사용 가능한 모듈을 의미하며(reuse) ,

이 재사용 가능한 모듈을 기반으로 나머지 반 해당 어플리케이션의 특정 비즈니스 로직 을( )

확장 하여 하나의 완결된 어플리케이션을 완성할 수 있다(extension) .

Page 6: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 310 -

프레임워크 아키텍쳐2.2

프레임워크는 재사용 모듈을 체계적이고 효율적으로 제공하기 위해 체계화된 아키텍쳐를

구성하고 있다 이러한 아키텍쳐 기반의 프레임워크 확장점 을 통하여 추상. (hook point)

클래스 상속 및 인터페이스 확장 구현 의 방법으로 프레임워크를(extends) (implementation)

이용할 수 있다 일반적으로 프레임워크 아키텍쳐는 아래와 같이 구성하고 있다. .

Presentation Tier

사용자와 시스템 사이의 인터페이스로써 등의 로HTML, JSP, Image file Resource

이루어진 시스템의 관점에서의 계층이다View .

Business Tier

어플리케이션 비즈니스 로직 담당하는 부분으로써 등의EJB, Java Beans, Servlet

로 이루어진 시스템의 관점에서의 계층이다Resource Controller .

Data Tier

등의 데이터 저장 메커니즘에 접근을 통하여 데이터의 영속성을DataBase, LDAP, File

보장하기 위한 시스템의 관점에서의 계층이다Model .

Integration Tier

등의 시스템 지원기능을Security service, Logging service, Utility, Message service

포함하는 계층이다.

그림 일반적 프레임워크 아키텍쳐[ 2]

Page 7: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 311 -

오픈소스 기반 프레임워크 적용 개발3.

오픈소스 프레임워크의 출현3.1

년대 후반 아파치 웹 서버와 톰캣 등 자바를 지원하는 오픈소스90 , Resin 1) 솔루션에 대한

우수함의 검증과 더불어 년대에 들어서 와 같은 많은 오픈소스2000 JUnit, CVS, Ant, log4j

기술과 과 같은 공개된 오픈소스 프레임워크가 일반화 될Struts, Turbine, Velocity, Spring

정도로 오픈소스 시장이 성숙해 있다 최근에 들어서는 국내에서 이러한 오픈소스 프레임워크가.

실제 프로젝트에 적용되는 사례도 늘어가고 있는 추세이다J2EE .

1) 소프트웨어의 근간이 되는 프로그램인 소스코드를 개발 오픈 한다는 데에서 유래했다 년 전 부터 이런( ) . 20

개념은 있었지만 인터넷 보급에 따라 참가자가 급증 그 효력이 커지고 있다 개발된 소프트웨어는 공유재산, .

으로 취급되어 누구나 무상으로 이용할 수 있다는 사상을 내포한다 엠파스 사전.[ ]

Page 8: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 312 -

기반 프레임워크 구현3.2 Struts

가장 널리 사용되어 보편화된 오픈소스 프레임워크 중 프레임워크를 손꼽을 수 있다Struts .

프레임워크는 프로젝트로써 오픈소스 웹Struts Apache Software Foundation(ASF)

어플리케이션 프레임워크이다 이러한 프레임워크는 그 자체만으로 실제 프로젝트에. Struts

적용하기보다는 해당 도메인에 적합한 독창적인 프레임워크로 확장하여 적용하는 것이 일반

적이다 이러한 오픈 소스 프레임워크 기반의 프레임워크 구축은 독자적인 프레임워크 구축에.

비해 개발 및 유지보수 측면에서 투자 대비 효과가 우월하고 일반적으로 성능 면에서 검증된,

기술로 이루어진 프레임워크로써 안정성 면에서도 보장 받을 수 있다는 장점을 가지고 있다.

년도에 프로젝트에서도 기반으로 자체 독자적인 프레임워크로2004 XXX Struts 확장 구축하였다.

이 독자적인 프레임워크의 전체적인 아키텍쳐는 아래와 같다.

위와 같은 아키텍쳐를 통해 독자적으로 구축한 프레임워크 기반으로 적용한 프로젝트는

자료의 CRUD2)와 자료 통계 화면 약 본 정도로 구성된 소규모 웹 어플리케이션으로20

프로젝트 초기에 월까지의 개발계획과 명의 개발자로써 개발을 착수 하였다‘04. 4 ~ 7 2 .

하지만 결과적으로 개발 완료하는데 있어 개월이 더 소요되었고 개발인원 또한 프레임워크3 ,

지원팀 위주로 개발이 되어 추가비용을 발생시켰다 이에 대한 주원인으로 초기 개발인원의.

언어에 대한 숙련도의 미숙 및 프레임워크 구조 이해 및 사용법 미숙으로 정의JAVA Struts

하였다 하지만 일반적 프레임워크 구조에 대한 이해에 대해서는 프레임워크 사용자 입장에서는.

최소화 되어야 하며 사용법 또한 복잡하여 학습기간이 길어져 전체 개발일정을 늦추게,

2) 일반적으로 입력 조회 수정 삭제 기능을 의미한다CRUD(Create, Read, Update, and Delete) : , , , .

그림[ 3 기반 프레임워크 아키텍쳐] Struts

Page 9: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 313 -

하여서는 프레임워크 적용의 본 취지를 잃을 수 있다 따라서 개발 경험 및 관련 기술에 대한.

숙련도가 낮은 개발자도 최소한의 학습 및 사용 방법 숙지를 통하여 어플리케이션을 구축할

수 있어야 한다 위와 같은 점에서 기반의 독자적인 프레임워크는 복잡도를 사용자에게. Struts

직접 노출하여 확장 이용하게 함으로써 전체적인 시스템의 복잡도 및 유연성 측면에서 비

효율적인 소프트웨어를 생산하게 되었다.

다음은 기반 프레임워크에서 사용자정보관리 라는 유스케이스에 대해 개발자가Struts ‘ ‘

직접 코딩 및 설정을 하여야 하는 요소에 대한 목록이다.

사용자정보관리 Presentation Tier Integration Tier

사용자정보입력 insert.jsp

UserInfoActionForm.java UserInfoVO.java사용자정보수정 update.jsp

사용자정보삭제 delete.jsp

사용자정보조회 list.jsp

사용자정보관리 Business Tier

사용자정보입력 UserInsertAction.java

UserInfoDelegate.java

<<EJB SessionBean>>UserInfoRemote.java

UserInfoRemoteHome.javaUserInfoSessionBean.java

사용자정보수정 UserUpdateAction.java

사용자정보삭제 UserDeleteAction.java

사용자정보조회 UserListAction.java

위의 목록에서 총 개의 클래스 파일과 개의 의 코딩 외에 초급 개발자들의15 Java 4 JSP

접근이 쉽지 않은 개의 설정파일까지 다루어야 하나의 유스케이스 구현이 이루어진다5 XML .

기반 프레임워크는 에서 정의한Struts Sun Microsystems Model23) 방식 기반의 프레임워크로써

에 포함된 비즈니스로직을 의 로 위임하여 는 단순히 사용자에게JSP Backend Java Class , JSP

결과 정보만 보여주는 역할을 수행하는 구조로 개발자가 를 포함한 클래스와DAO Java

을 구현하고 디자이너가 및 이미지 작업을 수행하는 분업화된 프로젝트에Servlet , JSP

용이하다 하지만 이러한 장점은 기반 프레임워크에 대한 이해도가 높아야 얻을 수. Struts

있으며 그렇지 않다면 오히려 개발 생산성의 저하 및 어플리케이션의 전체적인 품질도,

떨어뜨릴 위험요소가 될 수 있다.

3) 기반의 웹 어플리케이션 구조를 의미하며 컨트롤러 역할로써 서블릿과 모델MVC(Model-View-Controller) ,

로써의 뷰 역할로의 로 분리하여 개발하는 방식DAO JavaBeans, JSP

사용자정보관리 Data Tier Configuration

사용자정보입력 <<EJB EntityBean>>UserInfo.java

UserInfoHome.javaUserInfoEntityBean.java

IUserInfoDAO.javaUserInfoDAO.java

web.xmlstruts-config.xml

ejb-jar.xmltiles-defs.xmlvalidation.xml

사용자정보수정

사용자정보삭제

사용자정보조회

Page 10: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 314 -

새로운 프레임워크 개발4.

새로운 프레임워크 개발 및 적용 절차4.1

그림 새로운 프레임워크 개발 및 적용 절차[ 4]

Page 11: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 315 -

새로운 프레임워크 분석 및 설계4.2

아키텍쳐 요구사항4.2.1

신규 프레임워크의 품질 목표에 따른 아키텍쳐 요구사항은 아래와 같다.

모듈성Modularity( )

별로 구현해야 할 요소들을 모듈화하여 하나의 어플리케이션을 구현한다Tier .

또한 별로 최소한의 클래스 및 스크립트로 구성하여Tier 시스템 전체의 간결성을 유지

하여야 한다.

재사용성Reusability( )

공통적으로 사용되는 기능은 클래스 및 컴포넌트 형태로 캡슐화하여 개발자들이 세부구현

내용을 파악하지 않아도 재사용할 수 있도록 한다 기본적인 기능의 코드 및 전체적인.

코드 골격을 코드 자동 생성기를 구현하여 생성해 주어야 한다.

확장성Extensibility( )

사용자 정의 기능 추가 및 확장이 용이할 수 있도록 확장 포인트 를(Hook Point) 제공하며 사용,

가이드를 제시하여야 한다.

유지보수성Manageability( )

최대한 프레임워크에서 제공한 소스코드 및 전체 어플리케이션 구조는 복잡도를 낮추어

간결하게 함으로써 유지보수성을 높여야 한다.

표준기반Standards-Based( )

체계적인 프레임워크 아키텍쳐를 제시함으로써 어플리케이션 설계의 표준을 제공하고,

코딩 표준을 준수한 기본 소스코드 골격을 제공하여 어플리케이션 전체 코드를 표준화

할 수 있어야 한다.

Page 12: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 316 -

개념적 아키텍쳐 개략 설계4.2.2 ( )

위와 같이 신규 프레임워크에 대한 개념적 아키텍쳐를 구성하였다. 그림[ 5 기반] Struts

프레임워크 구조 아키텍쳐 와 비교해서 전체적인 구조에 대한 개발자의 이해를 용이하게

하기 위해 아키텍쳐를 단순화하고 각각의 마다 최소한의 클래스로 구성하여 개발자가, Tier

직접 코딩해야 하는 부분을 최소화하며 와 자동 생성기 구현으로 개발자의 부담을, DAO VO

덜어주는데 집중 하였다.

그림[ 5 개념적 아키텍쳐]

Page 13: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 317 -

논리적 아키텍쳐 상세 설계4.2.3 ( )

다음은 개략 설계를 통해 도출한 개념적 아키텍쳐를 기반으로 각각의 마다 구성해야Tier

하는 클래스의 기능적 인터페이스 및 역할을 정의하여 논리적 아키텍쳐를 도출한 그림이다.

그림[ 6 논리적 아키텍쳐]

Page 14: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 318 -

위에서 정의한 논리적 아키텍쳐 기반으로 사용자정보관리 라는 유스케이스에 대해 개발자가‘ ‘

직접 코딩 및 설정을 하여야 하는 목록이다.

사용자정보관리 Presentation Tier Business Tier

사용자정보입력 insert.jsp insert_proc.jsp

UserInfoMgr.java사용자정보수정 update.jsp update_proc.jsp

사용자정보삭제 delete.jsp delete_proc.jsp

사용자정보조회 list.jsp list_proc.jsp

와 의 와 클래스는 자동생성기의 구현을 통해 자동생성Data Tier Integration Tier DAO VO

해 줌으로써 개발자는 실제 의 개의 와 단지 의 을Presentation Tier 8 JSP DAO Function

호출하는 기능만을 가진 클래스 개만 구현하면 하나의 유스케이스를 구현 할 수 있다Mgr 1 .

이는 기반 프레임워크 구현3.2 Struts 에서 정의한 구현 목록에 비해 개발자는 무려 개의14

클래스를 구현하지 않아도 되며 개의 설정파일에 대해 관여하지 않아도 하나의Java , 5 XML

유스케이스를 손쉽게 구현할 수 있다.

사용자정보관리 Data Tier Integration Tier

사용자정보입력

UserInfoDAO.java UserInfoVO.java사용자정보수정

사용자정보삭제

사용자정보조회

Page 15: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 319 -

새로운 프레임워크 구현4.3

본 연구서에서는 논리적 아키텍쳐 설계를 통해 와 자동 생성을 위한 프레임워크DAO VO

개발을 주요 활동으로 기술한다 최초 작업은 표준 코딩 룰을 준수하고 개발자가Tool . ,

이해하기 쉽게 코드를 단순화하며 다양한 성능 테스트를 통해 검증된 와 표준, DAO VO

템플릿 코드를 생성한다.

생성기 구현4.3.1 VO

는VO(Value Object) 사용자 입력 값 및 데이터베이스에서 추출한 데이터 값들을 저장하여

별로 전송하기 위한 자바빈즈 이다 만약 개별적으로 사용자 데이터 값들을 각각 전송하게 되면Tier .

네트워크 부하 및 로직처리의 번거러움이 존재하나 하나의 에 각각의 값들을 저장해 전달함으로써VO

복잡함을 제어할 수 있는 역할을 수행한다 의 구조는 아래와 같이 해당 어플리케이션에서. VO

사용하는 데이터베이스내의 테이블에 대한 필드와 자바 클래스의 객체변수와 매핑하여 테이블의 한

레코드에 대한 데이터 값을 저장하고 불러오는 메소드로 구성되어 있다, setter, getter .

그림[ 7 테이블과 와의 매핑관계] DB VO

Page 16: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 320 -

위 그림과 같이 는 사용자가 생성한 테이블의 필드와 같은 이름의 변수에 대한 선언과 해당VO

변수값을 저장하는 형태의 메소드와 변수값을 불러오는 형태의 메소드로setXXX() getXXX()

이루어진다 이처럼 어플리케이션 구현에 따른 자바 클래스 로직 중 는 가장 단순한 형태의. VO

로직을 포함하나 가장 많이 만들어야 되는 클래스 중의 하나이며 개발자에게 단순 코딩의, ,

소요를 발생시킨다 따라서 클래스명과 사용자 테이블의 필드정보만을 입력하면 클래스. VO VO

생성을 자동화 할 수 있다는 전제로 아래와 같이 생성 도구를 구현 하였다VO .

이처럼 구현한 생성기를 통하여 개발자는 단순 반복 작업 및 에러 없이VO VO Syntax VO

클래스를 손쉽게 만들어 자신의 어플리케이션에 반영할 수 있다.

그림[ 8 생성기 구현을 통한 코드 자동생성] VO VO

Page 17: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 321 -

생성기 구현4.3.2 DAO

는 에 접근하는 모든 접근 로직 및 데이터를 획득하고 저장하기DAO(Data Access Object) DB

위한 객체이다 데이터 접근 로직 및 커넥션에 관련된 기능은 어플리케이션 전반의 성능면에서. DB

가장 중요한 역할을 수행하며 개발자가 어플리케이션 구현에 있어 예외사항 및 에러가 가장 많이,

발생하는 객체 중에 하나이다 또한 는 유지보수 및 체계화된 아키텍쳐를 유지하기 위해 하위. DAO

계층의 데이터 접근 로직과 상위 계층의 비즈니스 로직을 분리하는 중요한 역할을 수행한다. DAO

안에 구현되는 로직을 도식화하면 아래와 같다.

위 그림과 같이 는 기본적으로 데이터의 기능을 수행하는DAO CRUD INSERT, UPDATE,메소드로 이루어져 있다DELETE, SELECT(findAll, findByPrimaryKey) . INSERT, UPDATE,

즉 은 어플리케이션에서 데이터베이스에 저장된DELETE , DML(Data Manupulation Language)에 대해 일종의 수정을 가하는 액션으로써 결과 값 이 존재하지 않으나Data SQL (Result Data) ,

즉 테이블의 모든 데이터를 조회하는 기능 과 해당 기본키SELECT , findAll( ) findByPrimaryKey(값에 따라 해당 데이터를 조회하는 기능 메소드는 테이블의 데이터 조회 기능으로써)

로부터 결과 값 을 되돌려 받는다 안의 와 메소드의 내부DBMS (Result Data) . DAO insert findAll세부 로직은 다음과 같다.

그림[ 9 구현 로직] DAO

Page 18: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 322 -

사용자 화면으로부터 입력 받은 데이터 정보를 라는 의 변수에 저장하여ArmyinfoVO VO에게 메소드의 인자로 넘겨주면 해당 메소드는 와의 연결을 수행DAO insert() insert() DBMS

하고 인자로 넘겨받은 로부터 메소드를 통해 사용자로부터 입력받은 데이터를VO getXXX()추출하여 을 통해 실제적으로 로 저장하고 최종적으로 와의 연결을INSERT SQL DBMS DBMS해제하는 세부로직이다.

그림[ 10 내부 메소드 세부구현 로직] DAO insert

Page 19: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 323 -

메소드 또한 최초 와의 연결을 수행하고 을 통해 해당 테이블로findAll() DBMS , SELECT SQL부터의 결과값 을 돌려받고 결과값을 의 메소드를 통하여 변수에(Result Data) , VO setXXX()각각 저장하여 다시 메소드를 호출한 나 에게 리턴하며 최종적으로findAll() JSP Java Class ,

와의 연결을 해제하는 로직이다DBMS .

그림[ 11 내부 메소드 세부구현 로직] DAO findAll

Page 20: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 324 -

위에서 설명한 메소드 이외에 메소드insert(), findAll() update(), delete(), findByPrimaryKey()역시 공통적으로 사용자 테이블로부터의 데이터 처리로직을 포함한다 따라서 또한. DAO관련 테이블 정보 및 명 에서 사용할 명만을 입력 받으면 위와 같은 로직을DAO , DAO VO자동 생성하는 도구를 구현 할 수 있다는 전제로 다음과 같은 생성기를 구현하였다DAO .

그림[ 12 생성기 구현을 통한 코드 자동생성] DAO DAO

Page 21: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 325 -

새로운 프레임워크 적용 개발 품질향상 사례5.

개발 생산성 검증5.1

위에서 예로 든 사용자정보관리라는 하나의 유스케이스를 새로운 프레임워크를 적용하여

개발한다는 전제하에 실제적으로 구현되어야하는 요소는 개의 와 개의 이며8 JSP 3 Java Class ,입력 수정 삭제 조회 기능의 아래와 같이 본의 업무화면으로 이루어진다, , , 4 .

그림[ 13 사용자 정보관리 화면분류]

Page 22: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 326 -

프레임워크를 적용하지 않고 사용자정보관리 유스케이스를 구현할 때 는 기본적인 기능으DAO 로

라인 정도의 분량이며 한명의 초중급 자바개발자가 코딩 및 디버깅까지 완료하는데 평균285 , ․시간이 소요된다10 .는 사용자 테이블의 필드 수에 따라 코드라인 수는 가변적이나 개의 필드를 가진 사용자VO , 9

정보 테이블 관련 를 코딩하는데 총 코드라인은 라인이며 또한 코딩 및 디버깅을VO 70 , VO완료하는데 평균 분정도의 시간이 소요된다10 .그 외에 개의 와 개의 를 만드는데 약 시간 정도의 시간이 소요된다8 JSP 1 Mgr Class 20 .즉 기본적으로 입력 수정 삭제 조회로 이루어진 하나의 유스케이스를 실체화하여 구현, , , ,하는데 있어 총 평균 시간의 시간이 걸린다는 결론을 얻을 수 있다30 .

하지만 새로운 프레임워크를 통해 사용자정보관리 유스케이스를 구현 시 생성기를DAO통해 위에서 시간을 소요하여 완성한 코드를 분 안에 생성할 수 있으며 또한10 DAO 1 , VO생성기를 통해 위에서의 사용자정보 테이블 관련 를 초 이내에 생성 시킬 수 있다VO 30 .따라서 총 시간이 소요되는 유스케이스 구현 작업에 있어 프레임워크를 통해 시간을30 10단축시킬 수 있게 된다.

유스케이스 별로 평균 시간의 소요시간 단축은 일반적으로 기본적인 기능으로10 CRUD이루어진 개 이상의 유스케이스로 설계된 중50 ․ 대형 어플리케이션 개발 시 약 시간의500개발기간이 단축됨으로써 개발 생산성 향상을 가져 올 수 있다.

Page 23: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 327 -

소프트웨어 품질 특성별 검증5.2 (ISO/IEC 9126)

신규 프레임워크는 다양한 측면에서의 사용자 요구사항을 충족시키기 위해 분석 설계 하여/구현되어 자동생성기 자체의 소프트웨어 제품 품질 및 프레임워크를 적용하여, DAO/VO완성된 사용자 어플리케이션의 품질을 보장하기 위해 다양한 측면에서의 노력을 기울였다.따라서 소프트웨어 제품 평가 와 관련된 표준인 에서(Software product evaluation) ISO/IEC 9126정의하고 있는 기능성 신뢰성 사용성 효율성 유지 보수성 이식성 측면에서 새로운 프레임워크, , , , ,자체 및 새로운 프레임워크 적용 어플리케이션의 품질 특성을 본 절에서 기술하였다.

기능성5.2.1

에서는 품질특성 중 기능성 은 소프트웨어가 특정 조건에서 사용ISO/IEC 9126 (functionality) “될 때 명시된 요구와 내재된 요구를 만족하는 기능을 제공하는 소프트웨어 제품의 능력, ”이라고 정의하고 있다.정보시스템은 데이터베이스 및 그외 저장 메커니즘으로부터 주로 입력 수정 삭제 조회, , ,기능으로 이루어져 있다 따라서 생성기를 통해 동의된 코드 생성 정확성 준수성. DAO/VO ( / )및 동일한 효과의 적절한 기능을 제공 적합성 하는 소프트웨어 제품의 능력을 보장 할 수 있다( ) .

신뢰성5.2.2

에서는 품질특성 중 신뢰성 은 명세된 조건에서 사용될때 성능 수준을ISO/IEC 9126 (reliability) “ ,유지할 수 있는 소프트웨어 제품의 능력 이라고 정의하고 있다” .새로운 프레임워크 적용을 통한 검증되고 에서 정의한Sun Microsystems JAVA Convention코딩 명명규칙 을 준수한 코드의 자동생성 준수성 은 소프트웨어 결함 발생시 결함원인의( ) Rule ( )신속한 발견 및 조치 성숙성 를 용이하게 하며 트랜잭션 처리를 고려한 자동생성코드의( ) , DAO설계는 어플리케이션 및 시스템의 예외사항 발생시 데이터의 복구 기능 회복성 을 수행할( )수 있는 소프트웨어 제품의 능력을 보장한다.

사용성5.2.3

에서는 품질특성 중 사용성 은 명시된 조건에서 사용될 경우 사용자에 의해ISO/IEC 9126 (usability) “ ,이해되고 학습되고 사용되고 선호될 수 있는 소프트웨어 제품의 능력 이라고 정의하고 있다, , ” .새로운 프레임워크는 별로 체계화된 아키텍쳐를 정의 준수성 하여 표준적인 소프트웨어Tier ( )생산을 도모하며 아키텍쳐 및 코드의 간략화는 사용자가 쉽게 프레임워크 적용 방법을,단시간에 학습 이해성 학습성 할 수 있으며 응용 방법 또한 쉽게 이해하여 운영 및 제어( / ) ,운용성 를 손쉽게 할 수 있어 다른 개발 방법 및 프레임워크에 비해 선호 선호성 되는( ) ( )소프트웨어 제품의 능력을 보장한다.

Page 24: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 328 -

효율성5.2.4

에서는 품질특성 중 효율성 은 명시된 조건에서 사용되는 자원의ISO/IEC 9126 (efficiency) “양에 따라 요구된 성능을 제공하는 소프트웨어 제품의 능력 이라고 정의하고 있다 체계화된” .유스케이스별 아키텍쳐 분리를 통한 효율성 많은 단위 테스트 및 통합 테스트를 거친 DAO코드는 어플리케이션 규모에 따른 기능 수행 시 적절한 반응 및 처리시간과 처리율을 제공

시간 반응성 하며 유스케이스별 기능구현을 위한 에 대한 정의는 필요로( ) , JSP, DAO, Mgr, VO하는 적절한 양과 종류의 자원을 사용 자원 활용성 하는 소프트웨어 제품의 능력을 보장한다( ) .

유지 보수성5.2.5

에서는 품질특성 중 유지보수성 은 소프트웨어 제품이 변경되는ISO/IEC 9126 (maintainability) “능력 변경에는 환경과 요구사항 및 기능적 명세에 따른 소프트웨어의 수정 개선 혹은 개, , ,작 등이 포함 이라고 정의하고 있다” .새로운 프레임워크의 확장 및 응용을 위한 가이드라인 제시는 어플리케이션의 변경 및 확장을

용이 변경성 하게 하고 변경으로 인한 예상치 않은 결과를 최소화 안정성 하며( ) ( ) , DataBase접근 로직에 대한 와 비즈니스 로직 구현을 위한 와 사용자 화면 로직의Data Tier Business Tier

의 분리는 어플리케이션 결함 발생 시 원인에 대한 식별 및 진단을 가능하게Presentation Tier하는 소프트웨어 제품의 능력을 보장할 수 있다.

이식성5.2.6

에서는 품질특성 중 이식성 은 한 환경에서 다른 환경으로 전이될ISO/IEC 9126 (portability) “수 있는 소프트웨어 제품의 능력 이라고 정의하고 있다” .

스펙을 준수한 코드 및 을 지원하는 새로운 프레임워크는Servlet 2.3 JAVA ANSI SQL스펙을 준수하는 모든 상용 비상용 와 를 지원Servlet 2.3 / WAS(Web Application Server) DBMS

적응성 하며 다른 및 에 대한 대체 및 코드상의 확장과 대체를 가능 대체성 하게( ) , WAS DBMS ( )하고 추가적인 서버나 그 외 운용환경을 설치하지 않아도 운용이 가능한 체계로 프레임워크를,구축함으로써 기존 명세된 환경에서 용이하게 설치 운용 설치성 될 수 있는 소프트웨어( )제품의 능력을 보장할 수 있다.

Page 25: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 329 -

결론6.

연구 내용의 요약 및 토론6.1

지금까지 본 논문에서는 프레임워크의 정의 및 아키텍쳐 수립에서부터 신규 프레임워크

구현 및 적용을 통한 소프트웨어 품질향상의 결과까지 검토하였다 본 연구에서 제안한.코드의 자동생성을 통한 어플리케이션 개발은 지금까지 많은 분야에서 활발한 연구가 이루어져

왔으나 본 연구에서는 이론적인 방안보다는 실제 어플리케이션 개발 적용 방안 측면 중,데이터 액세스 로직 자동생성에 초점을 맞추었으며 그에 따른 개발 생산성 향상 및 품질향상,측면에 집중하였다.데이터 액세스 로직 자동생성 메커니즘은 어플리케이션 전반의 성능측면에서 많은 고려사항

들이 존재하며 이 사항들은 본 논문에서 상세히 다루지는 않았다 또한 유스케이스별로, .구성된 프레임워크 아키텍쳐는 비즈니스 모델의 체계화된 분석을 통하여 적절한 유스케이스

모델 도출이 전제되어야 한다 또한 생성기의 효율적인 활용을 위해서는 잘 설계된. DAO모델이 필요로 한다DB .

어플리케이션 개발자가 위와 같은 전제 조건만을 충족시키고 프레임워크를 적용하여

어플리케이션을 개발한다면 주요 접근로직은 자동생성기를 통해 체계적이고DB DAO/VO자동적으로 생성하고 다른 작업으로 진행할 수 있는 새로운 방향을 제시할 수 있다.

차후 연구방향6.2

본 연구에서는 데이터 액세스 로직의 입력 수정 삭제 조회라는 일반적인 정보시스템의, , ,기능분야를 재사용 요소로 추출하여 자동생성도구를 구현하여 적용하는 방향을 제시하였다.하지만 어플리케이션 전체의 개발을 위해서는 의 클래스 외에도Data Tier DAO, VO Business

의 클래스와 의 즉 사용자 화면 구현의 추가적인 작업이 필요로Tier Mgr Presentation Tier JSP한다 따라서 클래스와 또한 재사용 요소를 추출하여 자동생성기로 구현한다면. Mgr JSP더욱 향상된 개발생산성을 도모할 수 있을 것이다.따라서 클래스에서는 기본적으로 단순히 의 기능과 연계하는 기능으로 이루어짐으로Mgr DAO

메소드와 매핑 시키는 메소드를 자동생성하며 즉 사용자 화면부분은 일반적으로DAO , JSP정보시스템에서 자주 사용되는 화면을 패턴화 하여 화면생성기를 구현하여 적용하고 기존에,생성한 과 연계되어야 하는데 필요로 하는 요소에 대한 사용자 입력만으로DAO, VO, Mgr어플리케이션 전체의 자동생성을 이룰 수 있을 것이다 이렇게 제안한 아이디어를 실현하는.것은 차후 연구 과제가 될 것이다.

Page 26: 소프트웨어개발생산성과품질향상을위한 … · html, php, asp 기개발된웹어플리케이션은성능및확장성에있어고객의비지니스요구를충족시키지못해

- 330 -

참고자료

[1] Reusing Software : Issues and Research Directions, IEEE

Transactions on Software Engineering , 1995

[2] Reusability Framework, Assessement, and Directions , IEEE

Software , 1987

[3] Object-Oriented application frameworks, Ted Lewis, Erich

Gamma, 1995

[4] Pattern-Oriented software architecture: A System of Patterns,

John wiley & Sons, 1996

[5] Designing an Application Framework, Dr. Dobb's Journal,

February 1994

[6] Advanced DAO programming, IBM DeveloperWorks Sean C.

Sullivan, 2003

소프트웨어 품질 향상을 위한 품질평가 모델에 관한 연구 국방대학교[7] , ,

2004. 12

[8] Java Service Framework: An Approach to Open-Standards

Service Development, 2001 3, white paper

[9] Building Application Frameworks : Fayad, Schmidt, Johnson

잘 고른 프레임워크는 프로젝트 성공의 열쇠 마이크로 소프트웨어[10] , ,

2004. 12

기반의 웹 애플리케이션을 위한 프리젠테이션을 위한 계층[11] J2EE

자동생성 템플릿 개발 전북대학교, , 2002. 8. 5

컴포넌트 재사용에 의한 소프트웨어 아키텍쳐 생성 프레임워크 김행곤[12] ,

손이경・[ 개발을 위한 객체지향 프레임워크와 컴포넌트13] e-Business Application

생성도구 장진영 이성용 최용선, ,・ ・국민대학교 전문대학원[14] Enterprise Web Application Framework, BIT

양승익, 2003, 5