2016년 1월 25일 월요일

SW 설계의 핵심 이슈

SW설계는 크게 아키텍처 설계와 상세설계로 나누어 볼 수 있다. SW아키텍처 설계(Software Architectural Design)는 상위레벨 설계로 일반적은 설계의 개념과 SW 관점에서의 설계의 역할을 이해하고 프로세스를 인지하여 설계의 다양한 접근방법과 개념을 이해할 수 있게 된다. SW상세설계(Software Detailed Design)는 모든 SW설계에서 다루어져야 하는 핵심이슈를 분별하여 효과적으로 설계의 산출물을 작성하는 것이다.

SW설계를 통해 얻을 수 있는 이점은 SW설계에 대한 기본지식의 이해다. 일반적인 설계의 개념과 SW관점에서의 설계역할을 이해하고 그 프로세스를 인지하여 설계의 다양한 접근방법과 개념을 이해할 수 있게 된다.

또한 설계시 다루어져야할 핵심이슈 인식을 위해 모든 SW설계에서 다루어져야 하는 핵심이슈를 분별하여 효과적으로 설계의 산출물을 작성할 수 있게 되는 것이다. 아울러 다양한 관점에서 SW구조와 아키텍처를 고려함으로서 뷰(View)와 아키텍처 스타일, 설계 패턴 그리고 프로그램 계열(Family of Programs)의 다양한 관점에서 설계를 고려하여 설계를 통해 SW품질을 향상시킬 수 있다. 마지막으로 SW설계에 사용되는 표기법 및 전략을 분류하고 선택하여 공유하기 용이하게 된다.


SW설계시 핵심이슈는 병행성, 이벤트의 통제와 처리, 컴포넌트의 분배, 오류/예외처리/장애의 허용 등 아래의 표와 같다.


아키텍처 구조와 관점 중 뷰(View)라는 것은 SW시스템의 특정 특성들을 보여주는 SW아키텍처의 부분적인 면들을 묘사하는 것으로 특정한 뷰는 SW설계와 관련 있는 특정한 이슈와 연관이 있다. 특정한 뷰는 기능적 요구사항을 표현할 수 있는 논리적 뷰(Logical view), Concurrency 이슈를 표현한 프로세스 뷰(Process view), 분배이슈를 표현한 물리적인 뷰(Physical view), 설계의 구현단위를 표현한 개발 뷰(Development view), 행동적(Behavioral) 뷰, 기능적(Functional) 뷰, 구조적(Structural) 뷰, 데이터 모델링(Dat Modeling) 뷰로 나눌 수 있다.


SW설계는 설계 프로세스로 생성되는 다양한 면(Multi-faceted)들을 가진 산출물(Artifact)이며, 각각 비교적 독립적이며 다른 측에서 바라보는(Orthogonal) 뷰로 이루어진다.
SW아키텍처 구조와 관점은 특정 아키텍처에 대한 제약사항(Constraints)의 집합을 의미하며 SW의 상위 레벨의 구성(Macro-architecture)을 규정 지을수 있는 메타모델이다. 주요 아키텍처 스타일은 아래와 같다.


설계패턴(Micro-architecture patterns)은 아키텍처 스타일이 상위레벨 구성을 설명한다.
패턴이란 주어진 상황 속에서 공통된 문제에 대한 공통된 솔루션을 의미하며, 설계 패턴이란 SW의 하위 또는 조금 더 로컬수준에서 세부사항을 설명하는데 사용한다.

주요 설계패턴은 Creational 패턴, Structural 패턴, Behavioral 패턴으로 나눌 수 있다.

프로그램의 계통과 프레임워크(Families of Programs and Frameworks)는 계통의 구성요소 사이의 공통성을 파악하고 다양성(Variability)을 처리한다. 또한 재사용 가능(Reusable)하고 맞춤 가능(Customizable)한 컴포넌트 사용을 통해 이루어진다.

프레임워크는 객체지향 프로그래밍에서 재사용설계에 관련된 핵심 개념으로 특정 플러그인을 적절하게 인스턴스 생성하여 확장할 수 있는 부분적으로 완성된 SW서브시스템을 의미한다.

프레임워크는 비즈니스 프레임워크와 어플리케이션 프레임워크로 나뉘며 비즈니스 프레임워크는 특정 비즈니스 도메인의 지식을 포착하여 재사용 가능한 비즈니스 클래스와 비즈니스 프로세스를 프레임워크 형태로 가공하여 제공한다.

어플리케이션 프레임워크는 어플리케이션 개발과정에 공통으로 사용되는 기술적인 서비스, 패턴, 아키텍처 등을 기반으로 구성하여 제공하는 것을 의미한다. SW설계와 컴포넌트를 재사용할 수 있도록 접근하는 방법은 SW Product-Line의 설계를 의미하기도 한다.

SW설계의 품질분석과 평가(SW Design Quality Analysis and Evaluation)를 위한 품질속성은(Quality Attributes) 목적의 적합성, 유지보수성(Maintainability), 이식성(Portability), 테스트 가능성(Testability), 추적가능성(Traceability), 정확성(Correctness), 강건성(Robustness)을 의미하며, 운영시점에서 관련된 품질속성은 성능(Performance), 보안성(Security), 가용성(Availability), 기능성(Functionality), 사용성(Usability)이 있다. 개발 시점에 관련된 품질속성은 수정가용성(Modifiability),이식성(Portability), 재사용성(Reusability), 통합성(Integrability), 테스트가능성(Testability)이 있다.

또한 아키텍처에 내재된 품질속성은 개념적 무결성(Conceptual Integrity), 정확성(Correctness), 완전성(Completeness), 구축 용이성(Buildability)이 있다.

댓글 없음 :

댓글 쓰기