Software Engineering
-
모듈(Module)이란?Software Engineering 2020. 7. 26. 20:34
모듈화를 통해 분리된 시스템의 각 기능들로 서브루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업 단위 등과 같은 의미로 사용 특징 모듈은 단독으로 컴파일 가능하며 재사용 할 수 있음 모듈의 기능적 독립성은 소프트웨어를 구성하는 각 모듈의 기능이 서로 독림됨을 의미하는 것으로 모듈이 하나의 기능만을 수행하고 다른 모듈과의 과도한 상호작용을 배제함으로써 이루어짐 독립성이 높은 모듈일수록 모듈을 수정하더라도 다른 모듈들에게는 영향을 미치지 않고 오류가 발생해도 쉽게 해결 가능 모듈의 독립성은 결합도와 응집도에 의해 측정되며 독립성을 높이려면 결합도는 약하게, 응집도는 강하게, 모듈의 크기는 작게 만들어야함 결합도(Coupling) 모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계를 의미 결합도가..
-
[소프트웨어 공학] UML이란?Software Engineering 2020. 7. 10. 15:15
Unified Modeling Language의 약어로 시스템 분석, 설계, 구현 등 시스템 개발 과정에서 개발자와 고객 또는 개발자 상호 간의 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어 Rumbaugh, Booch, Jacobson 등의 객체지향 방법론의 장점을 통합하였으며 OMG에서 표준으로 지정 시스템 구조를 표현하는 6개의 구조 다이어그램과 시스템의 동작을 표현하는 7개의 행위 다이어그램이 있음 구성 요소로는 사물, 관계, 다이어그램이 있음 사물(Things) 모델을 구성하는 가장 중요한 기본 요소로 다이어그램 안에서 관계가 형성될 수 있는 대상을 의미 사물에는 구조 사물, 행동 사물, 그룹 사물, 주해 사물이 있음 구조 사물(Structual Things) 시스템의 ..
-
[Design Pattern] 컴퍼지트 패턴(Composite Pattern)Software Engineering 2020. 6. 24. 21:24
구조 패턴 부분-전체의 관계를 갖는 객체들을 정의할 때 사용하는 패턴 전체와 부분을 구분하지 않고 동일한 인터페이스 사용 전체 클래스도 부분 클래스처럼 일반화되기 때문에 전체도 부분이 될 수 있음 트리 구조의 객체를 표현할 때 유용 역할이 수행하는 작업 Componenet 구체적인 부분 Leaf 클래스와 전체에 해당하는 Composite 클래스의 공통 인터페이스를 정의 Leaf 구체적인 부분 클래스로 Composite 객체의 부품 Composite 전체 클래스로 복수 개의 Component를 갖도록 정의 복수 개의 Leaf와 복수 개의 Composite 객체를 부분으로 가질 수 있음
-
TDD란?Software Engineering 2020. 6. 20. 12:14
Test Driven Development의 약자 테스트가 개발을 이끌어 나가는 형태의 개발방법론 테스트를 먼저 만들고 테스트를 통과하기 위한 코드를 작성하는 것 TDD의 3가지 절차 실패 실패하는 테스트 케이스를 먼저 만드는 것 프로젝트의 전체 기능에 대한 테스트 케이스를 작성하는 것이 아니라 가장 먼저 구현할 테스트 케이스 작성 성공 실패하는 테스트 케이스를 통과시키기 위한 코드를 작성하는 것 리팩토링 구현한 코드에 중복되거나 개신시킬 코드가 있다면 리팩토링을 진행 리팩토링 후 테스트 케이스가 성공하는지 확인 TDD의 장점 객체지향적인 코드 개발 코드의 복잡도가 떨어짐 유지보수가 수월해짐 결함이 줄어듬 TDD의 단점 개발 시간이 늘어남
-
[Design Pattern] 추상 팩토리 패턴(Abstract Factory Pattern)Software Engineering 2020. 6. 15. 10:53
생성 패턴 중의 하나 객체를 만들어내는 부분을 서브 클래스에 위임하는 패턴 객체의 생성 코드를 별도의 클래스/메서드로 분리함으로써 객체 생성의 변화에 대비하는 데 유용 스트래티지 패턴, 싱글턴 패턴, 템플릿 메서드 패턴을 활용 사용법 1. 객체 생성을 전담하는 Factory 클래스 이용 객체를 생성하는 코드를 별도의 클래스/메서드로 분리 2. 상속을 이용하여 하위 클래스에서 적합한 클래스의 객체를 생성 객체 생성을 전담하는 별도의 클래스를 두는 대신 하위 클래스에서 적합한 클래스의 객체를 생성 역할이 수행하는 작업 Product 팩토리 메서드로 생성될 객체의 공통 인터페이스 ConcreteProduct 구체적으로 객체가 생성되는 클래스 Creator 팩토리 메서드를 갖는 클래스 ConcreteCreato..
-
[Design Pattern] 팩토리 메서드 패턴(Factory Method Pattern)Software Engineering 2020. 6. 9. 21:31
생성 패턴 중의 하나 객체를 만들어내는 부분을 서브 클래스에 위임하는 패턴 객체의 생성 코드를 별도의 클래스/메서드로 분리함으로써 객체 생성의 변화에 대비하는 데 유용 스트래티지 패턴, 싱글턴 패턴, 템플릿 메서드 패턴을 활용 사용법 1. 객체 생성을 전담하는 Factory 클래스 이용 객체를 생성하는 코드를 별도의 클래스/메서드로 분리 2. 상속을 이용하여 하위 클래스에서 적합한 클래스의 객체를 생성 객체 생성을 전담하는 별도의 클래스를 두는 대신 하위 클래스에서 적합한 클래스의 객체를 생성 역할이 수행하는 작업 Product 팩토리 메서드로 생성될 객체의 공통 인터페이스 ConcreteProduct 구체적으로 객체가 생성되는 클래스 Creator 팩토리 메서드를 갖는 클래스 ConcreteCreato..
-
[Design Pattern] 템플릿 메서드 패턴(Template Method Pattern)Software Engineering 2020. 6. 8. 11:17
Template Method Pattern 행위 패턴 중에 하나 전체적인 알고리즘은 상위 클래스에서 구현하면서 다른 부분은 하위 클래스에서 구현할 수 있도록 하는 디자인 패턴 전체적인 알고리즘은 동일하면서 부분적으로는 다른 구문으로 구성된 메서드의 코드 중복을 최소화할 때 유용 상위 클래스의 메서드를 Template Method라고 부르고 하위 클래스에서 오버라이드될 메서드를 primitive 또는 hook 메서드라고 부름 역할이 수행하는 작업 AbstractClass 템플릿 메서드를 정의하는 클래스 하위 클래스에 공통 알고리즘을 정의하고 하위 클래스에서 구현될 기능을 primitive 혹은 hook 메서드로 정의하는 클래스 ConcreteClass 상속받은 primitive 혹은 hook 메서드를 구현..
-
[Design Pattern] 데커레이터 패턴(Decorator Pattern)Software Engineering 2020. 6. 7. 14:40
Decorator Pattern 구조 패턴 중에 하나 기본 기능에 추가할 수 있는 많은 종류의 부가 기능에서 파생되는 다양한 조합을 동적으로 구현할 수 있는 패턴 객체의 타입과 호출 가능한 메서드를 그대로 유지하면서 객체에 새로운 책임을 추가할 때 사용 역할이 수행하는 작업 Componenet 기본 기능을 뜻하는 ConcreteComponent와 추가 기능을 뜻하는 Decorator의 공통 기능을 정의 클라이언트는 Component를 통해 실제 객체를 사용 ConcreteComponent 기본 기능을 구현하는 클래스 Decorator 많은 수가 존재하는 구체적인 Decorator의 공통 기능을 제공 ConcreteDecorator Decorator의 하위 클래스로 기본 기능에 추가되는 개별적인 기능을 제..