Search

Software Architecture

[- Disclaimer -] 아래 내용은 정보보안 공부 목적으로 작성된 것이나, 이를 토대로 허가되지 않은 대상에 실습을 진행할 경우 해킹 시도로 간주하여 법적 처벌을 받을 수 있음을 알려 드립니다.
Software Architecture 설계
✦ S/W 기본 골격
✧ 개발 시 적용되는 원칙, 지침
✧ 이해 관계자들 간 의사 소통 도구
✧ 기능적/비기능적 요구 사항 반영: Application 분할 방법, Module에 할당될 기능, Module 간 Interface 결정
S/W 개발 설계 단계
✦ 상위 설계
✧ 별칭: Architecture 설계, 예비 설계
✦ 설계 대상
✧ 시스템 전반적 구조
✧ 세부 목록: 구조, DB, Interface
✦ 하위 설계
✧ 별칭: Module 설계
✧ 설계 대상: 시스템 내부 구조 및 행위
✧ 세부 목록: Component, 자료 구도, 알고리즘
Software Architecture 설계 기본 원리 - Modularity (=모듈화)
✦ 시스템 기능을 성능 향상, 수정 및 재사용, 유지 관리에 용이하게 나눈 것
✧ 너무 적게 나눌 경우 개수 증가로 통합 비용 증가
✧ 너무 많이 나눌 경우 개수가 적어 통합 비용이 감소하나 단위 Module당 개발 비용 증가
✧ 자주 사용되는 계산식, 사용자 인증 등은 공통 Module로 구성해 재사용성 향상
Abstraction (=추상화)
✦ 전체적, 포괄적 개념 설계 후 차례로 세분화해 구체화
✧ 불필요 부분 생략 및 필요 부분 Model화
✧ 시스템 구조 대략적 파악 가능
✧ 시스템 완전 구축 전 유사 Model들로 Test 가능
✧ 최소 비용으로 실제 상황 대처 가능
✦ 과정 추상화
✧ 추상화 과정 미정의, 전반적 흐름만 파악
✦ Data 추상화
✧ 세부적인 속성 및 옵션 미정의, 대표 표현으로 대체
✦ 제어 추상화
✧ 정확한 이벤트 발생 절차 미정의, 대표 표현으로 대체
Stepwise Refinement (=단계적 분해)
✦ Niklaus Wirth가 제안
✦ 하향식 설계
✧ 상위에서 하위 개념으로 S/W 기능에서 시작해 점진적 구체화
✧ 알고리즘, 자료 구조 등 상세 내역은 가능한 뒤로 미룸
✧ 추상화 반복에 의한 세분화
✧ Ex) 건물 구조 설계 층과 방 경계 지정 방 내 인테리어 구성 지정
Intformation Hiding (=정보 은닉)
✦ Communication 용도 외 한 Module이 다른 Module에 접근 및 변경 근지
✧ Module 내 절차, 자료 등 보호
✧ 한 Module이 다른 Module에 영향 없이 Module 간 독립적 수행
S/W Architecture 품질 평가 요소
✦ 시스템 측면
✧ 성능: 사용자 요청 등 이벤트 발생 시 적절, 빠른 처리
✧ 보안: 접근 제어
✧ 가용성: 무중단 운영
✧ 기능성: 만족도
✧ 사용성: 편리
✧ 변경 용이성: 이식성
✧ 확장성: 용량, 처리 능력 증대에 따른 효과
✧ 기타 속성: Test 용이성, 배치성, 안전성 등
✦ 비즈니스적 측면
✧ 시장 적시성: 정해진 시간 내 프로그램 출시
✧ 비용과 해택: 개발 비용 추가 투자로 유연성 상승 여부, 유연성 낮을 시 유지 보수 비용 증가
✧ 예상 시스템 수명: 얼마나 오래 쓸 건지, 수명 길 경우 시스템 품질 중 변경 용이성, 확장성 고려, 기타 속성 (목표 시장, 공개 일정, 기존 시스템 간 통합 등)
✦ 아키텍쳐 측면
✧ 개념적 무결성: 시스템/시스템 구성 요소 간 일관성
✧ 정확성, 완결성: 요구 사항/제약 사항 충족
✧ 구축 가능성: Module 단위 분리로 인한 유연성
✧ 기타 속성: 변경성, 시험성, 적응성, 일치성, 대체성 등
S/W Architecture 설계 과정
✦ 설계 목표 설정
✧ 개발 방향 명료화: 비즈니스 목표 분석, 우선 순위 등 요구 사항 분석
✧ 시스템 타입 결정: 시스템/시스템 서브 타입 선정, 설계 목표를 고려한 Architecture Pattern 선택
// 시스템 타입 결정 시스템 타입 대화형 시스템 사용자 요구 발생 시 처리/반응 Ex) 온라인 쇼핑몰 등 대부분의 Web Application 이벤트 중심 시스템 외부 상태 변화에 따른 동작 시스템 Ex) 전화, 비상벨 등 내장 S/W 변환형 시스템: 데이터 입력 시 정해진 작업 수행 객체 연속형 시스템: 저장, 검색, 갱신 등 DB 사용 Ex) Server 관리 S/W
Plain Text
복사
✦ Architecture Pattern 적용
✧ Architecture Pattern을 참조해 표준 Architecture 설계
✦ 서브 시스템 구체화
✧ 서브 시스템 기능/서브 시스템 간 상호 작용을 위한 동작 및 Interface 정의
✦ 검토
✧ Architecture 설계 목표 부합 여부, 요구 사항 반영 여부, 설계 기본 원리 만족 여부 등
Contract (=협약)에 의한 설계
✦ Component 설계 시 Class의 여러 가정들을 공유할 수 있도록 명세에 포함될 조건들 미리 협약
✦ Precondition (=선행 조건)
✧ Operation 호출 전 참이 되어야 할 조건
✦ Postcondition (=결과 조건)
✧ Operation 수행 후 만족하여야 할 조건
✦ Invariant (=불변 조건)
✧ Operation 실행 중 항상 만족하여야 할 조건