계획 -> 분석 -> 설계 -> 구현의 단계를 거친다.
계획 단계에서는 시스템을 계획하여 계획서를 작성한다.
그리고 분석 단계에서는 요구사항을 조사하여 이를 요구분석서로 만들고 결론적으로 여러가지 설계 대안을 만들어서 그 중에서 가장 좋은 것을 선택한다. 여기서 이 설계 대안을 설계의 범위 라고 한다.
설계에서는 아키텍처의 여러 패턴중 하나를 선택하여 설계를 진행하고, 그리고 소프트웨어 설계를 한다.
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 스타일 : 웹같은것