6장

원래벌레·2022년 4월 18일
0

💎 전체적인 설계 과정

  • 계획 -> 분석 -> 설계 -> 구현의 단계를 거친다.

  • 계획 단계에서는 시스템을 계획하여 계획서를 작성한다.

  • 그리고 분석 단계에서는 요구사항을 조사하여 이를 요구분석서로 만들고 결론적으로 여러가지 설계 대안을 만들어서 그 중에서 가장 좋은 것을 선택한다. 여기서 이 설계 대안을 설계의 범위 라고 한다.

  • 설계에서는 아키텍처의 여러 패턴중 하나를 선택하여 설계를 진행하고, 그리고 소프트웨어 설계를 한다.

💎 설계 원리 (분석 단계)

  • 분석 단계에서 여러 설계 원리를 가지고 설계의 범위를 정하고 최적안을 선택하는 과정

1) 분할 정복 : 큰 시스템을 여러가지 서브 시스템으로 나누어 접근하는 방법
2) 응집력 증진 : 분할 정복의 원리를 확장한 개념 : 분할하되 분할할 만한 것들로 분화한다.

  • 기능적 응집 : 가장 최고의 응집력을 가지는 방법으로, 모듈이 단일 연산을 수행하여 하나의 결과만 낼 때 달성됨

  • 순차적 응집 : 모듈 내에서 한 함수가 다른 함수의 입력이 되거나 하는 경우

  • 통신적 응집(교환적 응집) : 특정 데이터에 접근하거나 조작하는 모듈은 함께 배치

  • 절차적 응집 : 모듈 안에서 수행되는 연산이 프로그램에서 수행되는 순서(절차)와 관련이 있다면 절차적 응집

  • 시간적 응집 : 모듈의 내부 요소가 프로그램의 실행의 특정한 시간에 처리

  • 논리적 응집 : 입력 처리 루틴과 같은 유사한 성격을 갖거나, 특정 형태로 분류되는 처리 요소드르이 한 모듈에서 처리됨

  • 우연적 응집 : 서라 간에 어떠한 의미있는 연관 관계도 없는 기능요소로 구성됨
    3) 결합력 감소

  • 결합은 두 모듈 사이에 의존관계가 있을 때 발생함
    1) 내용결합 : 하나의 객체의 메소드가 다른 클래스 타입의 객체의 속성을 바꿈
    2) 공통결합 : 전역변수가 존재함
    3) 외부결합 : 커널과 같은 외부와 정보를 주고 받음
    4) 제어결합 : if문에 사용 flag나 커맨드를 사용하여 하나의 프로시저가 다른 프로시저를 호출함
    5) 스탬프 결합 : 많은 양의 그리고 큰 크기의 인수를 사용함
    6) 자료결합 : 베스트

4) 높은 수준의 추상화

  • 상세하고 구체적인 부분을 숨기거나 상세화를 지연함으로써 복잡도를 줄여야 함

💎 설계안 결정

1) 설계안을 모두 나열하고 기술함
2) 목표와 우선순위를 고려하여 각 설계안에 대하여 장점과 단점을 기술
-보안
-유지보수성
-메모리의 효율성
-CPU 효율성
-네트워크 대역폭 효율성
-이식성

3) 하나 이상의 목표를 만족시키지 못하는 설계안은 배제
4) 목표를 가장 잘 만족시키는 설계안 선택
-목표중 우선순위가 높은 것을 앞쪽에 배열하고 여러 대안에 대한 평가를 낮음~높음으로 작성 한다.
5) 계속되는 설계 의사 결정을 위하여 우선 순위 조정


위까지가 분석 단계

아래 부터는 설계 단계

💎 아키텍처 모델

소프트웨어 아키텍처
1) 소프트웨어 시스템의 전반적인 구조와
2) 서브시스템을의 분할
3) 서브 시스템 간의 상호작용 및 인터페이스를 설계하는 모든 과정을 포함

💎 아키텍처 스타일

  • 패턴이나 스타일이란 말이 아키텍처에도 적용됨

1)계층구조 :
소프트웨어의 기능을 수직으로 상호 작용하는 여러 층으로 분할,
각층 사이는 메시지를 교환, 직접적 연결이 없는 계층 구조 끼리는 메시지 교환이 불가함

2)클라이언트서버스타일 :
서버 : 자원을 관리하며 클라이언트가 요청하는 기능이나 자원을 제공
클라이언트 : 자원의 사용을 위하여 서버를 접속

3)브로커 스타일 : 클라이언트가 브로커를 통해서 원격 객체와 통신을 하는 구조

4)트랜잭션 처리 스타일 : 트랜잭션 사령 이라는 이벤트 처리기가 있어서 어떤 트랙잭션을 입력 받으면 그에 따라서 알맞는 프로시저를 호출하거나 트랜잭션을 처리할 컴포넌트에 배치해줌

5)파이프 필터 스타일 : 데이터 변환등에 사용되는 것으로 필터 사이에 데이터를 이동시키며 단계적으로 처리 하는 스타일

6)MVC 스타일 : 웹같은것

profile
학습한 내용을 담은 블로그 입니다.

0개의 댓글