2008년 11월 26일 수요일

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

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

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

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



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

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


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

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


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

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


4. 인력 수급

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



5. 개발 속도

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

6. 기술 종속

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

댓글 1개: