본문 바로가기

소프트웨어 공학

(11)
(디자인 패턴) Facade Pattern 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com Facade Pattern 1. 종류 - Structural Pattern에 속한다. 2. 사용 의도 - 여러 subsystem을 위한 인터페이스가 있을 때 하나의 통합된 인터페이스를 제공하고자 할 때 높은 레벨의 인터페이스를 정의하여 사용하기 편리하게 한다 - 즉, 시스템이 복잡하여 외부에 노출 시 사용의 난이도나 의존성이 높아질 것 같을 때 단순화하기 위해 3. 구성도 출처: 학부 수업 높은 레벨의 인터페이스를 facade interface라고 한다. 4. 장점 1. 클라이언트에게 구현 숨김 - 클라이언트에서 다뤄야 할 객체 적어짐 -> 사용이 쉬워진다. 2. 클라이언트와 subsystem 간 의존성 낮춤 - 안쪽..
(디자인 패턴) Composite Pattern 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com Composite Pattern 1. 종류 structural pattern의 한 종류이다. 2. 사용 의도 - 객체를 부분-전체 계층 구조로 나타낼 때 - 클라이언트는 leaf와 composite의 차이를 무시하고 component만 바라본 채 사용 가능하다. - composite와 recursive를 통한 타입의 일관적인(uniformly) 처리를 위해 사용한다. 3. 장점 - 상속한 모든 type을 일관적으로 처리할 수 있다. 4. 구조도 출처 : 학부 수업 여기서 주의해야 할 것은, 형광펜 친 부분인, composite객체의 doOperation부분은 반드시 고정되어야 합니다. 왜냐하면 composite는 자신..
(디자인 패턴) Adaptor 패턴 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com Adaptor 프로그래머들이 가장 많이 사용하는 패턴 중 하나입니다. 1. 종류 - structural 패턴에 속합니다. 2. 사용 의도 (intent) - 클래스의 인터페이스를 클라이언트가 기대하는 다른 인터페이스로 변환합니다. - 호환되지 않는 인터페이스가 함께 작동할 수 있습니다. - 라이브러리를 사용하는데 내가 가진 인터페이스와 호환되지 않는다고 해서 라이브러리를 변경할 수는 없습니다. (외부 라이브러리는 보통 바이너리 형태로 제공) - 우리가 가진 인터페이스를 바꾸는 것도 리스크가 큽니다 (많은 곳에서 해당 인터페이스를 사용하고 있을 수 있기 때문) 3. 장점 - 호환되지 않는 인터페이스와 협력하는 재사용 가..
(디자인 패턴) Factory Method Pattern 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com Factory Method Pattern 1. 분류 - Design Pattern 분류 중, Creational Pattern에 속합니다. 2. 사용의 의도(intent) - 객체를 생성하기 위한 인터페이스를 정의하고, 어떤 클래스(자료형)의 인스턴스를 생성할지는 서브클래스가 결정하도록 합니다. 3. 장점 - 애플리케이션별 클래스를 인스턴스화 하지 않음으로써 더욱 유연하고 재사용이 가능합니다. - 코드는 Product 클래스의 인터페이스만 다루지만 이 인터페이스를 지원하는 모든 Concrete Product클래스를 사용하는 것이 가능합니다. 4. 구성 요소 - Product, ConcreteProduct, Creato..
디자인 패턴 기본 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com 정의와 사용 이유 소프트웨어 공학을 배우는 이유는 낮은 비용으로 높은 퀄리티의 소프트웨어를 만들기 위해서입니다. 소프트웨어 비용 절감과 생산성 증가, 퀄리티 증가를 위해서 재사용 가능한 소프트웨어 개발에 힘써야 하는데, 이때 사용할 수 있는 것들이 라이브러리, 디자인 패턴 등등이 있습니다. 디자인 패턴에 대해서 제대로 공부하고 활용한다면, 재사용성이 좋고 퀄리티가 좋은 소프트웨어를 만들 수 있겠습니다. 단, 주의할 점이 있다면 디자인 패턴을 아무 곳에나 갖다 붙인다고 좋은 소프트웨어를 만들 수 있는 게 아니라, 해당 디자인 패턴이 필요한 상황을 명확하게 인지하고 분석해야 적재적소에 활용하여 좋은 소프트웨어를 만들 수 ..
(UML) Activity Diagram & State Machine Diagram 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com Activity Diagram Activity Diagram -> 시퀀스 다이어그램(링크)과 비슷하긴 한데 다른 점들이 있습니다. Activity Diagram은 1. use case의 흐름을 기술할 때 (시퀀스 다이어그램과 비슷한 경우) 2. use case 간 흐름을 기술할 때 3. 특정 알고리즘이나 로직의 흐름을 기술할 때 사용합니다. Activity Diagram에서는 한 단위를 Activity로 봅니다. 일단 예시부터 먼저 보겠습니다. 출처: 학부 수업 구성 요소 왼쪽 : initial node 오른쪽 : final node 1개밖에 없다 Action - 특정 함수 or 메서드 화살표가 flow의 흐름이다. ..
(UML) Sequence Diagram 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com Sequence Diagram sequence diagram 시퀀스 다이어그램은 시간 순서로 정렬된 객체 상호작용을 보여준다. - 위키백과 - class diagram이 데이터와 정적인 것들 간 관계를 표현한 것이었다면 sequence diagram은 그 반대입니다. 소프트웨어의 동작, 논리의 흐름에 관한 것입니다. Use Case Diagram에 대해서 배워본 적이 있었죠?(링크) Use Case Diagram의 각 Use Case마다 Use Case Description을 써야 한다고 말씀드렸었는데요, UCD를 참고하여 Sequence Diagram까지 만들어주면 됩니다. 정리하면, Use Case Descript..
(UML) Class Diagram 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com Class Diagram Class Diagram 소프트웨어 공학에서 클래스 다이어그램은 시스템의 클래스, 클래스의 속성, 동작 방식, 객체 간 관계를 표시함으로써 시스템의 구조를 기술하는 정적 구조 다이어그램의 일종이다 -위키백과- 간단히 말해서, 소프트웨어의 객체지향적 설계 틀을 클래스로서 표현하는 것입니다. 클래스 다이어그램은 소프트웨어를 디자인할 때 사용합니다. Class Class 클래스는 객체 지향 프로그래밍에서 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀이다. 객체를 정의 하기 위한 상태와 메서드로 구성된다. -위키백과- 클래스는 속성과 기능으로 구성됩니다. 간단 예시 접근자 1. + p..