소개
복잡도는 소프트웨어 개발의 주요 문제입니다. 추상 레벨을 올리면 프로젝트에 필요한 문서량과 복잡도를 줄이는 데 도움이 됩니다. 이는 재사용, 상위 레벨 모델링 도구 사용 및 아키텍처의
초기 안정화를 통해 달성할 수 있습니다.
|
|
이점
|
|
패턴
|
-
기존 자산 재사용
-
상위 레벨 도구 및 언어를 사용하여 문서 생성량 감소
-
처음에 아키텍처에 초점을 맞춤
-
탄력성, 품질, 이해 능력, 복잡도 제어의 설계
|
안티패턴
|
-
불분명한 상위 레벨 요구사항에서 사용자가 작성한 코드로 바로 이동하려면, 다음을 수행하십시오.
-
사용되는 추상이 적으므로 코드 레벨 대 비교적 개념적인 레벨에서 많은 논의가 이루어지고, 그 결과 무엇보다도 재사용의 기회를 많이
놓칩니다.
-
비공식적으로 캡처된 요구사항 및 기타 정보의 경우, 결정 및 스펙을 되풀이하여 다시 찾아야 합니다.
-
아키텍처에 대해 강조하지 않을 경우 프로젝트 후기에 주요 작업을 다시 수행해야 하는 결과를 초래합니다.
|
|
논의
소프트웨어 개발에서 직면하는 기본 문제점 중 하나는 복잡도입니다. 복잡도를 줄이면 생산성에 큰 영향을 미칩니다. 높은 추상 레벨에서 작업하면 복잡도가 감소하고 커뮤니케이션이 촉진됩니다.
복잡도를 줄이는 효과적인 접근 방식은 재사용가능 컴포넌트, 레거시 시스템, 기존 비즈니스 프로세스, 패턴 또는 개방형 소스 소프트웨어 등 기존 자산의 재사용입니다. 지난 10년 동안 소프트웨어
산업에 큰 영향을 준 두 가지 재사용 예제는 다음과 같습니다.
-
미들웨어(예: 데이터베이스, 웹 서버 및 포털) 및 최근
-
다양한 유형의 컴포넌트에 영향을 주는 개방형 소스 소프트웨어
앞으로 갈수록 웹 서비스는 이기종 플랫폼을 통해 서비스의 이용자와 제공자 사이에 느슨한 결합으로도 상당량의 기능성을 재사용하는 단순한 방법을 제공함으로써 재사용에 큰 영향을 미칠 것으로 기대합니다. 즉, 다양한
서비스 조합을 사용하여 보다 쉽게 비즈니스 요구를 처리할 수 있습니다. 또한 재사용은 공개 표준(예: RAS, UDDI, SOAP, WSDL, XML 및 UML)에 의해서도 촉진됩니다.

서비스 지향 아키텍처를 통한 기존 자산 재사용
재사용의 문제점 중 하나는 두 컴포넌트가 개발 시 서로의 존재에 대해 알고 있어야 한다는 점입니다. 서비스 지향 아키텍처는 이른바 느슨한 결합을 제공하여 해당 문제점을 완화시키므로 서비스 이용자가 동적으로
서비스 제공자를 찾을 수 있습니다. 따라서 기존 컴포넌트 또는 레거시 시스템을 서비스에 랩핑하여 다른 컴포넌트 또는 응용프로그램이 플랫폼 및 구현 기술에 관계없이 표준 기반 인터페이스를 통해 관련 기능에 동적으로
액세스할 수 있게 합니다.
복잡도를 줄이고 커뮤니케이션을 개선하는 다른 접근 방식은 다음과 같은 상위 레벨 도구, 프레임워크 및 언어를 이용하는 방법으로 이루어집니다.
-
표준 언어(예: UML(Unified Modeling Language) 및 빠른 응용프로그램 언어(예: EGL))는 비즈니스 프로세스 및 서비스 컴포넌트와 같은 상위 레벨
구조를 표현할 수 있는 능력을 제공하여 상위 레벨 구조를 중심으로 한 협업을 촉진하는 한편 불필요한 세부사항을 숨깁니다.
-
디자인 및 구현/구축(Construction) 도구는 상위 레벨 구조에서 작업 코드로의 이동을 자동화할 수 있습니다.
-
-
코드를 생성하고 코드 스니펫 사용을 가능하게 하여 디자인, 구현/구축 및 테스트 타스크를 자동화하는 마법사를 제공합니다.
-
통합된 개발, 빌드 및 테스트 환경을 통해 통합 및 테스트를 매끄러운 개발 타스크로 변환합니다.
-
포트폴리오 관리 도구를 사용하면 복수 프로젝트의 재정적 측면과 다른 측면을 하나의 엔티티 또는 독립 엔티티 세트로 관리할 수 있습니다.
간단히 말해서, 상위 레벨 도구는 핵심 모델링 정보를 그래픽으로 캡처하여 이 정보를 호소력 있게 요약 설명하는 효과적인 방법입니다. 비주얼 모델링의 이점은 지원 자료: 비주얼 모델링에 자세히 설명되어 있습니다.
복잡도 관리의 세 번째 접근 방식은 아키텍처에 초점을 맞추어 비즈니스를 정의하거나 시스템 또는 응용프로그램을 개발하는 것입니다. 소프트웨어 개발의 목적은 프로젝트 초기에 아키텍처를 디자인, 구현 및
테스트하는 것입니다. 즉, 프로젝트 초기에는 다음 목적에 초점을 맞춥니다.
-
상위 레벨 빌딩 블록 및 가장 중요한 컴포넌트, 관련 책임 및 해당 인터페이스의 정의.
-
아키텍처 메커니즘 즉, 지속성 또는 가비지 콜렉션 처리 방법과 같이 공통 문제점에 대한 기성 솔루션의 디자인 및 구현.
초기부터 아키텍처를 정돈하여 시스템의 스켈레톤 구조를 제공함으로써 프로젝트에 더 많은 인원, 컴포넌트, 기능 및 코드를 추가함에 따르는 복잡도 관리를 보다 더 용이하게 합니다. 또한 이용할 수 있는 재사용가능한
자산과 사용자 정의에 따라 빌드해야 하는 시스템의 측면을 식별합니다.
|