리그캣의 개발놀이터

소프트웨어 설계 - 중간고사 정리 본문

프로그래밍 기본/소프트웨어 설계

소프트웨어 설계 - 중간고사 정리

리그캣 2018. 1. 25. 19:40

모델링의 6단계

비즈니스 모델링 -> 요구사항 -> 분석 및 설계 -> 구현 -> 시험 -> 배치

소프트웨어 생명주기

폭포수 모델

폭포수 모형은 각 단계의 활동이 명확하게 구분되어 있고 단계별로 산출물이 지정되어있기 때문에 큰 규모의 소프트웨어 프로젝트 관리에 적절한다. 그러나 한 단계가 끝나야 다음 단계로 넘어가기 때문에 소프트웨어 개발 프로젝트의 불활실성을 다루기에는 적절하지 않다.

반복적 개발(iterative Development)

시스템의 기능을 나누어서 여러번의 작은 폭포수 모형을 반복하면서 개발하는 것. 반복적인 개발은 프로젝트를 기능에 따라 구분하여 일부 기능을 먼저 개발하고 나머지 기능을 그 다음에 개발 하는 방식, 주요 기능이나 기술적 위험이 높은 기능을 먼저 구현함으로써 프로젝트의 불확실성을 초기에 감소시킬 수 있고 실패의 위험을 줄일 수 있다.

기민함(agile) 프로세스

종류로는 Extreme  프로세스가 있으며 문서작성 업무를 최소화하고 프로젝트 구성원 간의 관계를 우선으로 함으로써 실무 적용성을 높이고자 하였다.

결합도

결합도는 모듈 간에 얼마나 강하게 결합되어 있는 가를 나타내는 척도이다. 결합도가 높다는 것은 두 모듈간의 의존도가 높다는 것이므로 결합도가 낮은게 좋은 모듈이다.

응집도

응집도는 하나의 모듈이 얼마나 한 가지 기능에 집중하고 있는지를 나타내는 척도이다.  응집도가 높아야 좋은 모듈이라 할 수 있다.

객체

객체는 상태와 행동과 정체성을 가진다. 객체의 상태는 멤버변수에 의해 표현된다.

클래스

클래스는 동일한 특성과 행동을 가지는 객체의 집합이다.

캡슐화와 다형성

캡슐화

캡슐화는 관련된 자료와 함수를 객체안에 모아놓고 외부에 공개하지 않는 것을 의미한다.

다형성

다형성은 메시지를 받는 객체에 따라서 동일한 메시지가 다르게 해석될 수 있음을 의미한다.

상속과 구현

상속

상속은 상위 클래스가 가지는 성질을 하위 클래스가 물려받는 것을 의미한다.

추상 클래스

추상클래스는 추산 오퍼레이션을 가지는 클래스이다. 추상 오퍼레이션은 구현이 없는 오퍼레이션을 뜻한다.

인터페이스와 구현

인터페이스

인터페이스는 서비스를 정의하기 위하여 만들어진 특수한 클래스이다. 인터페이스에는 추상 오퍼레이션 형태로 서비스가 정의된다.

UML View(4+1)

use case view

시스템을 외부에서 보았을때 시스템이 어떻게 행동하는지, 즉 유스케이스와 액터와 관련된 정보를 표현한다.

design view

시스템이 요구되는 기능을 수행하기 위해서 시스템 내부에서 구현되어야 할 서브시스템, 모듈, 클래스 등과 관련된 정보를 표현한다.

interaction view

시스템의 프로세스나 쓰레드, 태스크와 관련된 정보 표현

implementation view

시스템 구현에 사용되는 컴포넌트나 파일에 대한 정보로써 형상관리와 밀접한 관계가 있다.

deployment view

시스템이 설치되고 운용되는 것과 관련된 관점이다.

클래스

클래스의 속성

클래스의 인스턴스가 가지는 값을 의미한다.

클래스의 오퍼레이션

클래스의 오퍼레이션은 클래스가 속하는 객체가 클라이언트에게 제공하는 서비스이다.

클래스 간의 관계

연관association 일반화generalization 실현realization 의존dependency  등이 있다.

가시성

가시성은 클래스가 가지고 있는 멤버를 외부에서 접근할 수 있는지를 나타내는 것이다.

클래스간의 관계

association 연관관계

연관관계는 두 클래스의 어떤 인스턴스 간에 연결이 존재함을 의미한다.

multiplicity 다중성

다중성은 두 클래스 사이에 연관 관계가 있을때, 어떤 클래스의 인스턴스 하나에 대하여 연결이 되어있는 상대방 클래스의 인스턴스 수 를 나타낸다.

navigability 도달성

두 클래스 사이에 연관 관계가 있을때, 한 클래스의 인스턴스를 알면 연결되어 있는 상대방 클래스 인스턴스를 알 수 있으면 도달성이 있다고 한다.

qulifier 한정자

한정자는 연관관계에서 검색 문제를 해결하기 위한 방법이다.

집합 관계와 복합 관계

aggregation 집합 관계

집합 관계는 연관관계의 일종이다. 연관관계는 서로 동등한 관계를 표현하지만 집합 관계는 한쪽은 전체이고 다른쪽은 부분인 특수한 연관 관계이다.

composition 복합 관계

복합 관계는 집합 관계의 일종이다. 복합 관계는 두 클래스 중 전체 역할 인스턴스가 부분 역할 인스턴스를 소유하는 특수한 집합 관계이다.

일반화 관계

generalization 일반화

일반화는 일반적인 상위클래스를 확장하여 특수한 하위클래스를 정의하는 관계이다.

abstract 추상 클래스

추상 클래스는 추상 오퍼레이션을 가지는 클래스이다. 추상 오퍼레이션은 구현이 없는 오퍼레이션, 즉 메소드가 없는 오퍼레이션이다.

실현관계

인터페이스 클래스

인터페이스는 구현이 없는 특수한 클래스이다.추상오퍼레이션과 상수만 포함될 수 있다. 서비스를 정의하기 위한 것이다.

실현관계

실현관계는 인터페이스와 클래스 사이에 존재하는 관계이다.  인터페이스와 클래스의 실현관계는 클래스가 인터페이스에 정의된 추상 오퍼레이션을 구현한다는 의미이다.

의존관계

의존 관계는 한쪽의 내용이 변경되었을 때 다른 쪽이 영향을 받을 수 있을 때 존재하는 관계이다.

연관클래스

연관 클래스는 연관관계가 가지는 속성을 나타내는 방법이다.

시퀀스 다이어그램

시퀀스 다이어 그램은 상호작용에 참여하는 객체들과 그들 간에 어떤 순서로 메시지를 주고 받는지를 보여준다.

비동기 메시지와 액티브 클래스

메시지를 보낸 객체의 제어 흐름이 메시지를 받은 객체의 오퍼레이션을 실행하는 동기 메시지와 메시지를 보낸 객체의 제어 흐름과 관계없이 독립적으로 실행되는 객체에 신호를 전송하는 비동기 메시지가 있다. 별도의 프로세스이거나 독립적인 실행 스레드를 가지고 있는 클래스를 액티브 클래스라고 한다. 액티브 클래스의 객체만이 비동기 메시지를 받을 수 있다.

유스케이스 다이어그램

유스케이스는 시스템에서 수행되는 기능이고 액터는 시스템과 상호작용하는 모든 것을 의미한다.

시나리오

시나리오는 시스템과 사용자와의 상호절차를 순서대로 자세하게 기술한 것이다.

액터

액터는 시스템 외부에서 시스템과 직접 상호작용하는 모든 것을 의미한다.

유스케이스와 액터간의 관계

유스케이스와 액터간에는 연관 관계를 가질 수 있다. 연관관계를 시스템이 유스케이스 기능을 수행하면서 액터와 상호 작용한다는 것, 즉 액터가 유스케이스 수행에 참여한다는 것을 의미한다.

Comments