목차
💡 이 장을 공부하면서 반드시 알아두어야 할 키워드
파이프-필터 패턴, 캡슐화, 럼바우의 분석 기법, 객체지향 설계 원칙, 결합도, 응집도, 효과적인 모듈 설계 방안, 생성 패턴, 구조 패턴 , 행위 패턴
📌 소프트웨어 아키텍처는 소프트웨어의 골격이 되는 기본 구조이자, 소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체이다.
📌 소프트웨어 개발의 설계 단계는 크게 상위 설계와 하위 설계로 구분할 수 있다.
구분 | 상위 설계 | 하위 설계 |
별칭 | 아키텍처 설계, 예비 설계 | 모듈 설계, 상세 설계 |
설계 대상 | 시스템의 전체적인 구조 | 시스템의 내부 구조 및 행위 |
세부 목록 | 구조, DB, 인터페이스 | 컴포넌트, 자료구조, 알고리즘 |
📌 모듈화란 소프트웨어의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지 관리 등이 용이하도록 시스템의 기능들을 모듈 단위로 나누는 것을 의미한다.
💡 모듈 ? 모듈화를 통해 분리된 시스템의 각 기능들로 서브루틴, 서브 시스템 소프트웨어 내의 프로그램, 작업 단위 등과 같은 의미로 사용된다.
📌 추상화는 문제의 전체적이고 포괄적인 개념을 설계한 후 차례로 세분화하여 구체화시켜 나가는 것이다.
과정 추상화 | 자세한 수행 과정을 정의하지 않고, 전반적인 흐름만 파악할 수 있게 설계하는 방법 |
데이터 추상화 | 데이터의 세부적인 속성이나 용도를 정의하지 않고, 데이터 구조를 대표할 수 있는 표현으로 대체하는 방법 |
제어 추상화 | 이벤트 발생의 정확한 절차나 방법을 정의하지 않고, 대표할 수 있는 표현으로 대체하는 방법 |
📌 단계적 분해는 Niklaus Wirth에 의해 제안된 하향식 설계 전략으로, 문제를 상위의 중요 개념으로부터 하위의 개녕으로 구체화시키는 분할 기법이다.
📌 정보 은닉은 한 모듈 내부에 포함된 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 하는 기법이다.
💡 정보 은닉의 예 : 캡슐로 된 감기약을 예로 들면, 정보 은닉은 감기약 캡슐에 어떤 재료가 들어 있는지 몰라도 감기가 걸렸을 때 먹는 약이라는 것만 알고 복용하는 것과 같은 의미로 볼 수 있다.
📌 소프트웨어 아키텍처의 품질 속성은 소프트웨어 아키텍처가 이해 관계자들이 요구하는 수준의 품질을 유지 및 보장할 수 있게 설계되었는지를 확인하기 위해 품질 평가 요소들을 시스템 측면, 비즈니스 측면, 아키텍처 측면으로 구분하여 구체화시켜 놓은 것이다.
품질 속성 | 내용 |
성능 | 사용자의 요청과 같은 이벤트가 발생했을 때, 이를 적절하고 빠르게 처리하는 것이다. |
보안 | 허용되지 않은 접근을 막고, 허용된 접근에는 적절한 서비스를 제공하는 것이다. |
가용성 | 장애 없이 정상적으로 서비스를 제공하는 것이다. |
기능성 | 사용자가 요구한 기능을 만족스럽게 구현하는 것이다. |
사용성 | 사용자가 소프트웨어를 사용하는데 헤매지 않도록 명확하고 편리하게 구현하는 것이다. |
변경 용이성 | 소프트웨어가 처음 설계 목표와 다른 하드웨어나 플랫폼에서도 동작할 수 있도록 구현하는 것이다. |
확장성 | 시스템의 용량 처리능력 등을 확장시켰을 때 이를 효과적으로 활용할 수 있도록 구현하는 것이다. |
기타 속성 | 테스트 용이성, 배치성, 안전성 등이 있다. |
품질 속성 | 내용 |
시장 적시성 | 정해진 시간에 맞춰 프로그램을 출시하는 것이다. |
비용과 혜택 | - 개발 비용을 더 투자하여 유연성이 높은 아키텍처를 만들 것인지를 결정하는 것이다. - 유연성이 떨어지는 경우 유지보수에 많은 비용이 소모될 수 있다는 것을 고려해야 한다. |
예상 시스템 수명 | - 시스템을 얼마나 오랫동안 사용할 것인지를 고려하는 것이다. - 수명이 길어야 한다면 시스템 품질의 '변경 용이성', '확장성'을 중요하게 고려해야 한다. |
기타 속성 | 목표 시장, 공개 일정, 기존 시스템과의 통합 등이 있다. |
품질 속성 | 내용 |
개념적 무결성 | 전체 시스템과 시스템을 이루는 구성 요소들 간의 일관성을 유지하는 것이다. |
정확성, 완결성 | 요구사항과 요구사항을 구현하기 위해 발생하는 제약사항들을 모두 충족시키는 것이다. |
구축 가능성 | 모듈 단위로 구분된 시스템을 적절하게 분배하여 유연하게 일정을 변경할 수 있도록 하는 것 이다. |
기타 속성 | 변경성, 시험성, 정응성, 일치성, 대체성 등이 있다. |
📌 아키텍처의 설계 과정은 설계 목표 설정, 시스템 타입 결정, 아키텍처 패턴 적용, 서브 시스템 구체화, 검토 순으로 진행된다.
📌 시스템 타입은 일반적으로 다음 네 가지 타임으로 나눌 수 있다.
📌 컴포넌트를 설계할 때 클래스에 대한 여러 가정을 공유할 수 있도록 명세한 것으로, 소프트웨어 컴포넌트에 대한 정확한 인터페이스를 명세한다.
선행 조건 (Precondition) | 오퍼레이션이 호출되기 전에 참이 되어야 할 조건 |
결과 조건 (Postcondition) | 오퍼레이션이 수행된 후 만족되어야 할 조건 |
불변 조건 (Invariant) | 오퍼레이션이 실행되는 동안 항상 만족되어야 할 조건 |
📌 애플리케이션 설계 - 객체 지향(Object-Oriented) (0) | 2024.01.22 |
---|---|
📌 애플리케이션 설계 - 아키텍처 패턴 (2) | 2024.01.18 |
📌 화면 설계 - HCI/UX/감성공학 (0) | 2024.01.17 |
📌 화면 설계 - UI 상세 설계 (0) | 2024.01.17 |
📌 화면 설계 - 유용성 평가 (0) | 2024.01.16 |