Please enable JavaScript.
Coggle requires JavaScript to display documents.
SW 설계1 - Coggle Diagram
개요
알고리즘 + 자료구조, 요구사항 추적 용이성/개념적 무결성 유지/SW 유지보수 용이성/단순 간결 설계
설계 유형: 기술적(데이터, 아키텍처, 인터페이스, 프로시져), 관리적(기본, 상세), 사용자(외부, 내부)
설계 원리
추상화
과정 추상화: 기능 추상화, 알고리즘, Main()
-
제어 추상화: 제어 구조 추상화, C 언어, for 문이나 if 문
-
정보은닉: 모듈 독립성, 변경 용이, 오류 국지화, 재사용성, 고품질
모듈화: 분해하고 추상화, 이해 용이성, 분리, 인터페이스 단순, 결합도 낮은 다른 모듈과 최소한 상호작용, 응집도 높은 하나 기능 수행
응집도
기능적: 단일 기능, 행렬계산, SORT 등, 하나의 타스크
순차적: 한 요소 출력이 다음 요소의 입력 사용, 공동 데이터
통신적: 동일한 입출력 자료 이용 서로 다른 기능 수행, 공동 데이터
절차적: 서로 연관, 특정 순서로 수행, 점수 읽고 평균 계산, 비공동
일시적: 같은 시기 수행 요소 모아, 초기화, 최종작업, 비공동
논리적: 관계있는 요소로 형성, 모든 입력자료 처리 기능, 병행 타스크
-
결합도
-
-
제어 결합: 제어신호 이용해 통신, 권리 전도 현상 발생
-
공통 결합: 동일 전역 자료 영역 공유, 오류 전파 가능성, 자료 무결성
-
결합도를 줄이고 응집도를 높임, Fan-Out(의존성) 최소화, Fan-In(재사용) 개선
아키텍처 스타일
SW 시스템 기본 구조 구성 위한 스키마, 템플릿 역할
파이프와 필터: 필터로 처리, 파이프로 데이터 흐름, 필터 단위 재사용, 필터간 데이터 포맷 동일, 데이터 변환 과부하, 유닉스 쉘
MVC
Model(data), View(UI), Controller(상호작용)
장점: 데이터 구조 변해도 다른 컴포넌프 불변, 다중 뷰 구현
단점: MVC 구조가 많이 나누어짐으로 더욱 복잡, View-Model 의존적
MVP 모델: 항상 Presenter 거쳐 동작, M-V 의존성 제거, V-P 1:1 의존
레이어드 스타일
-
장점은 효과적인 개념의 분리 가능, 단점은 오버헤드
레파지토리 스타일
데이터 집중, 다중 접근자, 중심 문제 수립/논증/유지 복잡한 정보
장점: 대량데이터 저장, 공유모델 발행 가능, 중앙 집중화 관리
단점: 데이터 모델 사전 동의, 데이터 분산 어려움, 응답시간 느림
Blackboard 스타일
미결 문제 해결 유용, Recognition 분야, 여러 알고리즘 경험/학습
장점: 다양한 실험 통해 해결, Knowledge Source 재사용
단점: 테스팅 어려움, 완결책 못함, 많은 개발 노력 필요
클라이언트 서버 스타일
클라이언트와 서비스 분리, 한 컴포넌트가 다른 컴포넌트 요청, 공유된 데이터 원격 공유 위해 사용
-
단점: 서버 의존성, 성능 네트워크 의존, 서버 관리 어려움
클린 아키텍처
세부사항이 추상에 의존(의존관계 역전 원칙), 엔티티/유스케이스/그 외 세부사항
엔티티: 비즈니스 업무규칙, 핵심 엄무 규칙(데이터, 객체화)
유스케이스: 애플리케이션 특화 업무 규칙 표현, 시스템 사용 흐름, 유스케이스 객체 통해서만 엔티티 조작
세부사항: 입출력 장치, 저장소, 웹 시스템, 서버, 프레임워크, 통신 프로토콜, 플러그인처럼 유연 처리
기타 아키텍처
클라이언트-서버 패턴: N-tier아키텍처(UI-비즈니스-DB), 서버단일장애
P2P 패턴, 브로커 패턴, 트랜잭션 처리 패턴(Dispatcher 필요, 동시성 적용, DB 엔진), 이벤트 중심 패턴(상태기반컨트롤러-여러 서브컴포넌트), 객체 영속 아키텍처(다양한 종류의 DB 통일된 접근점 제공)
아키텍처 평가
-
-
ATAM: 속성 모델 기반 시나리오로 평가, 품질 속성 초점, 트레이드-오프, 내부 리스크 발견