2008년 11월 27일 목요일

[작성중]{프레임워크}프레임워크에서의 테스트

성능테스트의 의미

성능 테스트 대상 선정

 - 프레임워크 테스트와 연결된 선상의 업무로직 테스트

테스트 용이성(testability)
테스트용이성(testability) 이란 아키텍처를 구성하는 구성요소들이 자동화 테스트에 적합한가를 나타내는 지표라 할수있다. 테스트용이성을 좋게 하기 위해서는 아키텍처를 설계하는 단계에서부터 구성요소들간의 관계와 구성요소 자체를 테스트에 적합하도록 디자인하여야한다.

테스트 용이성 향상 방안

1. 요구사항 정의
요구사항에 대한 정의와 함께 요구사항 발생의 배경을 조사해서 요구사항에 함께 기술한다.
즉, 요구사항의 증상 만이 아닌 원인까지도 포함되도록 하여 요구자의 의도를 알 수 있도록 문서화 한다.
2. 아키텍쳐 선정
TDD가 가능한 아키텍처를 선정하거나 TDD에 적합하도록 아키텍처를 디자인 한다.
3. 분석 및 디자인

4. 코딩

5. 테스팅


2008년 11월 26일 수요일

[작성중]{프레임워크}프레임워크의 생산성

생산성의 측면에서 소프트웨어 개발상의 중복 과정을 최대한 줄이는 것은 중요하다. 중복 과정은 곧 중복 비용을 의미하기 때문이다.  프로젝트는 경제적 측면에서의 검토를 거쳐 자원(예산)을 할당하고 수립된 목표에 대한 실현 가능하고 시행착오를 최소화 할 수 있는 방향으로 개발을 진행한다. 할당된 예산을 초과하지 않는 범위에서 계획된 기간 내에 부여된 임무를 완수하는 것이 목표이다. 늘 그렇지만 목표 수행능력에 비해 기간은 짧고, 예산은 여유있게 활용할 만큼 주어지지는 않는다. 가령 당초 수립된 목표의 실현 가능성에 지장을 초래하는 사건이 발생하거나 실현가능하지 않았음이 뒤늦게 밝혀지더라도 프로젝트는 차선의 방안을 찾아 계속 진행되어야 하며 이것은 고객과 공급자 간의 계약이기 때문이다.

 이러한 가정에서 수립된 목표의 달성을 예측(천재지변을 제외한) 가능하게 하는 것이 바로 잘 구성된 프레임워크이며 프레임워크는 어플리케이션의 실행을 위한 구체적이고 확장 가능한 기반 코드로 구성되어 있으며 어플리케이션의 구현에 대한 규칙(패턴)을 담고 있다. 제시된 규칙(패턴)을 준수하면 프레임워크에 의하여 구현 되어 질 수 있는 결과물에 대한 평균적인 기간에서의 달성을 가능하게하는 것이 프레임워크의 기능이다. 계획된 목표의 기술적 필요사항이 프레임워크의 확장을 통하여 충족될 수 있도록 프레임워크를 선정하여야하며, 프레임워크를 통한 어플리케이션의 구현이 계획된 기간 내에 이루어지도록 운영하는 것이 프레임워크의 기능이다.

소프트웨어 개발 상의 시행착오를 부정적으로만 볼 수는 없다. 프로젝트 진행 중의 시행착오는 프로젝트팀의 역량을 강화 시켜 주고 참여자들의 경험을 향상시키는 효과를 기대 할 수 있겠으나 기간의 지연을 초래하게 되거나 추가적인 비용이 발생하는 바람직하지 않은 결과를 낳을 수도 있다. 그러나 프레임워크는 이러한 시행착오를 축소하며, 참여자의 다양한 시행착오 가능성을 배제하여 성공 가능한 구성에 대한 규칙들(디자인패턴)을 제시한다.



1. 플랫폼 구성(개발 환경)

  프레임워크는 개발자의 로컬 테스트 환경에서 부터 엔터프라이즈급의 대용량 비즈니스 서버에 까지 공통적으로 사용 될 수 있으며, 특정 연결에 대한 목 오브젝트(Mok Object)나 스텁(Stub)으로 대체하는 기능을 제공하여 자바의 이식성을 십분 활용 할 수 있다.


2. 유지보수(운영계획)

기업 혹은 조직은 시간이 흐름에따라 혹은 시장이나 서비스의 수요자의 패턴에 따라서 유기적으로 변화하며 이미 구현이 완료된 소프트웨어의 변경이 필요하게 된다. 이러한 변경을 위한 확장성은 차세대 시스템 도입의 시점까지 이어지게되며 소프트웨어의 설계 단계에서 고려해야하는 사항이 바로 조직의 변화로 인한 시스템의 확장 및 축소에 대한 탄력성을 유지하는 것 이다. 기존 구축된 시스템에서 확장한 새로운 서비스의 연결을 고려하고 시스템의 증설이나 분할에 대한 원격통신 기법을 적용하여야하고, 사소한 데이터 변경에서 부터 코드시스템의 재정의로 인한 변화에 대해서도 대한 소프트웨어 수정을 최소화 할 수 있도록 데이터 구조와 서비스 구조 패턴에 대한 분리를 제공하여야한다.


3. 테스트(검수:검증절차)

프레임워크는 실행가능하고 검증된 구체적인 기능의 조합을 제공함으로서 업무 구현을 위한 POJO 로직에 대한 테스트에 비중을 실을 수 있어 테스트와 검증 절차에 대한 효율성을 제공한다.


4. 인력 수급

프레임워크는 소프트웨어 개발에 대한 규칙(디자인패턴)들을 제시하며 준수하도록 요구하므로 프레임워크의 기본 활용에 대한 교육을 받은 개발자를 필요로 하게 된다. 이로 인하여 잘 알려진 프레임워크일 수록 인력의 수급에 더욱 유리하다.



5. 개발 속도

숙련된 개발자에게는 개발을 쉽고 편하게 해주며 가독성이 높은 코드의 작성을 유도함으로서 개발생산성을 높이고 반복적인 작업을 단순화시켜 POJO의 구현에 집중할 수 있도록 하며 사용하는 프레임워크에 익숙하지 않은 개발자들도 일정 정도의 교육을 통하여 개발 업무를 수행 할 수 있다.

6. 기술 종속

프레임워크를 채용하여 시스템을 구축하는 경우 기반 시스템과 결합된 프레임워크의 프로토타입에 따라서 코드를 작성하여야 함으로 인하여 프레임워크에서 지원되는 기능 으로 구현 가능 범위가 한정되어 질 수 있으며, 프레임워크를 통하여 개발하기 위해서는 일정 정도의 교육이 필요하다.
프레임워크의 설계자가 프로젝트 내에 있다면 업무변화에 따라 새로운 코드를 포함시키며 기존 코드를 리팩토링 할 수 있을 것 이다.  그러나 외부의 프레임워크를 도입하여 프로젝트를 수행하는 경우 프레임워크에 의한 기술 종속 현상이 발생 할 수 있다.

2008년 11월 25일 화요일

[작성중]{프레임워크}프레임워크의 구조

1. Listener / Batch Loader
 프레임워크를 기동 시키고, 필요한 서비스의 로딩 및 실행 시점을 찾아내는 기능.

2. Repository / Registry
 설정 및 공통 변수를 저장하고 있는 저장체.
 XML로 정의된 파일을 읽어들여 메모리에 적재한다.

3. Logging
 실행 내역에 대한 모니터링 및 로깅을 위한 기능.
 기본 로거를 제공하고 Log4j로의 확장을 지원한다.

4. Collection
 데이터 저장 및 운반 객체.
 Java의 Collection Framework를 확장한 객체를 제공하며 Object기반의 VO와 DTO 규격을 규정한다.

5. Connectivity
 DataBase, Soap 등에 대한 연결 기능.

6. Exception
 예외처리 기능.

7. Helper
 Login, File, XML처리, Session, Cookie 등 공통 처리를 위한 기능

8. Test
 자동화된 테스트 시나리오 작성을 위한 기능


[작성중]{프레임워크}프레임워크의 정의

구체적이며 확장 가능한 기반 코드를 통하여 어플리케이션의 구조를 결정하며, 이를 기반으로 작성되는 코드를 프레임워크의 설계자가 의도하는 방향으로 작성되도록 제어하는 디자인 패턴의 집합으로 구성되어 있다.

1. 구체적이며 확장 가능한 코드

2. 어플리케이션의 구조를 결정

3. 프레임워크 설계자가 의도하는 방향으로 제어

4. 디자인 패턴의 집합

텍큐에 블로그 열었습니다.


 새로운 마음으로 다시 해 보고 싶어져서 블로그로 왔습니다. 홈피 만들어서 좀 오래(96년 부터 2008년까지) 운영을 하다가 문득 블로거가 되고 싶어졌습니다-누군가 이미 정성들여 만들어서 갖춰져 있는 서비스의 편안함을 느끼고 싶었던거죠. 일일이 수작업을 벗어나서 올리고 싶은 글 올리고 사진도 올리고, 사용료나 도메인 연장같은거 잊고 살고 싶었다고나 할까요.

다시 개인 홈피 만들러 갈 생각은 없구요. 새로운 마음으로, 새로운 주제를 가지고 처음부터 다시 시작해보려고합니다. 자바프로그래밍이라는 주제가 일반적인건 아니어서 누구나 공감 할 수 있는 건 아니지만 글 올릴때마다 좋은 그림 하나씩 넣어보려구요..  그럼 글이 이상해도 그림이라도 즐길 수 있을거 잖아요.

여러가지 기능이 다 만들어져 있어서 참 좋습니다.
글구 속도가 빠른게 맘에 들어요.

^^