객체지향 설계의 원리 1. 단일책임의 원칙 ( SRP : Single Response Principle ) [응집도 향상]
- 시스템의 모든 객체는 하나의 책임만을 가지며, 객체가 제공하는 모든 서비스는 그 하나만의 책임만을 수행해야 한다는 설계 원칙
2. 개방 폐쇄 원칙 ( OCP : Open Closed Principle) [전략패턴]
- 확장에는 열려있고 수정에는 닫혀있어야 한다는 설계 원칙
- Open(클래스 수직관계), Close(클래스 수평관계)
3. 리스코프 치환의 원칙 (LSP :Liskov Substitution Principle)
- 부모 클래스의 객체들이 자식 클래스 사용되는 곳에 대체되야한다는 원칙
4. 인터페이스 분리의 원칙 (ISP : Interface Segregation Principle)
- 어떤 클래스가 다른 클래스에 종속될 때는 최소한의 인터페이스만을 사용해야 한다는 설계 원칙
5. 의존성 역전의 원칙(DIP/Dependency Inversion Principle)
- 높은 레벨의 모듈은 낮은 레벨의 모듈을 의존하면 안되서로 추상에 의존해야 한다는 설계 원칙
SOLID
토픽 이름 객체지향 설계의 원리
분류 소프트웨어 > 개발방법론 > 객체지향 설계의 원리
키워드(암기) 객체지향방법론, GoF Design Pattern ,  SOLID
SRP (Single Response Principle), OCP ( Open Closed Principle), LSP (Liskov Substitution Principle), ISP (Interface Segregation Principle), DIP (Dependency Inversion  Principle)
암기법(해당경우) SOLID

 

기출문제

번호 문제 회차
1 4. 소프트웨어 재사용성과 유지보수 향상을 위하여 객체지향 설계 5대 원칙을 적용하고 있다. 다음에 대하여 답하시오.
 . 의존성 역전 원칙(Dependency Inversion Principle) 설명하시오
 . 의존성 주입(Dependency Injection) 구현하는 3가지 방식을 설명하고 각 방식별 아래의 조건을 고려하여 구현 예시를 작성하시오
121..2
2 LSP(Liskov Substitution Priciple) 105..1.2
3 1. 객체지향 소프트웨어 설계에 많은 도움을 주는 GoF 디자인 패턴(Design Pattern)영역을 목적과 범위에 따라 분류하고, 분류별 특성을 설명하시오.
또한, 객체지향시스템에서 개발된 기능의 재사용을 위해 사용되는 대표적 기법인
화이트박스 재사용(White-box Reuse), 블랙박스 재사용(Black-box Reuse)
위임(Delegation) 패턴과 어떤 관계가 있는 설명하시오.
104..3.1
4 객체지향기법의 기본원칙을 기술하고, 구조적 기법과 차별화되는 개념을 설명하시오. 응용98.2
5 객체지향 언어로 알려진 C++ JAVA 대하여
클래스(class) 관점에서 차이점을 설명하시오
응용93.2
6 소프트웨어 개발방법론은 구조적방법론, 정보공학방법론, 객체지향방법론, 컴포넌트기반 방법론의 형태로 발전되어 왔다. 정보공학방법론의 특징과 의의를 타 방법론과 비교하여 설명하시오. 관리90.4

 

  1. 재사용성과 유지보수 향상을 위한, 객체지향 설계 5 원칙의 개요
  • 소프트웨어 개발 및 유지보수성 향상을 위한 설계관점의 기본원칙
  • 코드를 좀더 유지보수하기 쉽고, 유연하고, 확장하기 쉽게 만들기 위한 설계
  • 재 사용성, 유지 보수성, 이식성 통한 생산성 품질의 향상
  • 모형의 적합성: 현실 세계 인간의 사고 방식과 유사
  • 일관성, 추적성: 전체 공정에서 단계간의 전환과 변경이 자연스럽고 신속함

 

  1. 객체지향 설계 원칙 ( 5 원칙, SOLID )
구분 설명
정의 - 시스템의 모든 객체는 하나의 책임만을 가지며,
객체가 제공하는 모든 서비스는 그 하나만의 책임만을 수행해야 한다는 설계 원칙
특징 - 응집도 향상으로 유지보수성 향상
- 하나의 책임만을 수행하기 때문에 변화에 적응도 높음
- 이상의 책임을 가지면, 온전한 책임을 다할 있도록 분리
예시
예시 설명 -  (a) 단일책임 원칙을 따르지 않은 클래스로 메서드가
 DB관련 메서드들과 비즈니스 관련 메서드들로 구성되어 있음.
- 단일책임의 원칙을 지키기 위해 (b) 같이 각각의 책임을 갖는 개의 클래스로 분할

 

  1. 개방 폐쇄 원칙 ( OCP : Open Closed Principle)
구분 설명
정의 - 소프트웨어 Entity(classes, Modules, Function)
확장에는 열려있고 수정에는 닫혀있어야 한다는 설계 원칙

특징 - 기존 코드의 변경 없이 확장을 통한 코드의 변경을 허용
- 오버라이딩 - 상속을 의미하지만, 크게 유연석 확보 차원의 원리
- 기능의 상속이 아닌 설계의 유연성을 강조
Open(클래스 수직관계),   Close(클래스 수평관계)
- Strategy 패턴 : 인터페이스 변경은 어려우나 구현은 열려 있음

예시
예시 설명 - 원칙을 따르지 않고 설계 , 삼각형, 사각형, 원 등의 면적을 구하려면 (a) 같이 도형의 면적을 구하는 메서드가 하나의 클래스에 모두 존재하게 됨.
- 상속의 개념을 적용하여 (b) 같이 설계하면 클라이언트가 추상클래스에 의존하므로 구체클래스의 내부 변경에 영향을 받지 않음.

 

  1. 리스코프 치환의 원칙 (LSP :Liskov Substitution Principle)
구분 설명
정의 부모 클래스의 객체(타입과 매소드의 집합)들이 자식 클래스 사용되는 곳에 대체될 수 있어야 한다는 설계 원칙
that objects of a superclass shall be replaceable with objects of its subclasses without breaking the application.
특징 - 클래스의 생성 목적에 맞게 설계하기 때문에 /하위 클래스의 호환성 향상
- 하위 클래스는 상위 클래스의 책임을 넘지 않음
- 하위 클래스는 사용자의 요구 사항대로 설계됨.
예시
예시 설명 - LSP 위배하는 예제
- Introduce 상속한 DetailIntroduce 클래스가 함수 q 요구하는 행동을 하지 않고,
엉뚱한 소리를 하고 있음
- 위의 예는 error 클래스를 만들때 주로 나타날 있음
- 하위 클래스의 행동 또한 상위 클래스의 책임범위 내에서 생성되어야 함

 

  1. 인터페이스 분리의 원칙(ISP/Interface Segregation Principle)
구분 설명
정의 - 어떤 클래스가 다른 클래스에 종속될 때는 최소한의 인터페이스만을 사용해야 한다는 설계 원칙
특징 - 인터페이스의 단일 책임을 강조
- 하나의 인터페이스에 해당 인터페이스의 목적에 부합되지 않는 기능을 선언하지 않기 때문에 구현 클래스에서 불필요한 기능의 구현 방지
- 소스 레벨의 가독성 향상
예시
예시 설명 - 클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안 된다는 것.
- 클래스는 사용자에게 꼭 필요한 메서드만 갖는 인터페이스를 제공
- 인터페이스 분리의 원칙은 (b)처럼 클라이언트에 맞는 인터페이스만 분리하여 사용

 

  1. 의존성 역전의 원칙(DIP/Dependancy Inversion Priciple)
구분 설명
정의 - 높은 레벨의 모듈은 낮은 레벨의 모듈을 의존하면 안되며 서로 추상에 의존해야 한다는 설계 원칙
- 클라이언트 변경 최소화를 위해 클라이언트는 구체 클래스가 아닌
인터페이스나 추상 클래스에 의존한다는 설계 원칙
특징 - 구현 클래스에 의존성이 제거하여 낮은 결함도 유지
- 추상화된 클래스에 의존하기 때문에 확장성이 높아져서 유지보수성 향상
예시
예시 설명 - 의존관계 역전의 원칙은 상속 개념을 적용할 때 (a) 같이 구체 클래스에서 상속을 받는 구조로  설계하지 말라는 , 이유는 구체 클래스는 추상 클래스(인터페이스)보다 변하기 쉽기 때문
- 의존 관계를 구체 클래스에서 추상 클래스로 바꾸면 향후 변경에 따른 영향을 최소화할 수 있고, 느슨한 결합도를 유지할 수 있다.
- (b)처럼 변화에 따른 충격에서 자유롭도록 추상 클래스를 만들고 그 추상 클래스와 상속 관계를 유지하도록 설계

 

  1. 객체 지향 설계의 향후 전망 및 실무 적용 시 고려 되어야 될 사항
측면 내용
방법 -소프트웨어 개발이 복잡, 다양해 짐으로 Prototype 개발하여 위험 요인 사전 제거 활동 필요
- 개발 환경의 보편성으로 유사 반복 내용에 대한 디자인 패턴 개발 적용 소프트웨어 시스템 관점으로 접근하고 있음
-개발의 생산성을 위해 Case도구 Repository 환경을 토대로 버전 형상 관리를 위한 자동화 추세
기술 -최근 프로그래밍 언어가 분산 객체 환경을 지원하는 서비스가 가능한 플랫폼 지원
-객체 지향 기술은 기업 비즈니스 또는 산업 차원에서 소프트웨어 재사용성을 높이기 위해 CBD 프로젝트가 활성화 전망임

 

  1. 객체 지향 기술 적용 시 고려 되어야 할 항목
항목 내용
프로젝트 착수 시 -프로젝트 착수 시에 객체지향은 재사용에 대한 규모 산정,
재사용 체계 구축에 대한 계획 수립 및  활용도 측면에서의 고려 필요
프로젝트 수행 시 -분석 / 설계 시에 클래스의 책임과 역할 분석을 위한
CRC (Candidate, Responsibility, Collaboration) 카드 작성
- 사용성을 극대화 하기 위한 Design Pattern 활용
유지보수 수행 시 - 사용 컴포넌트 관리와 프로세스(기능) 연계 관리가 필요
-컴포넌트의 조립으로 결합 컴포넌트 생성
반응형

'정보관리기술사 > 소프트웨어공학' 카테고리의 다른 글

SW Architecture  (0) 2024.03.30
(외부)EPMO  (0) 2024.03.11
객체지향 프로그래밍 특징  (0) 2024.03.09
Architecture  (0) 2024.03.08
번다운차트  (0) 2024.03.07
객체지향 프로그래밍 특징 [객체지향] 현실 세계에서 개체(Entity)를 속성(Attribute)과 메소드(Method)를 결합된 형태의 객체(Object)로 표현하는 개념
[구성요소] 클래스, 객체, 메소드, 인스턴스
[특징] 캡슐화, 추상화, 다형성, 정보은닉, 상속성

클객메인
캡추다정상
토픽 이름() 객체지향 프로그래밍 특징(캡슐화, 추상화, 다형성, 정보은닉, 상속성)
분류 SW > 개발방법론 > 객체지향 프로그래밍 특징
키워드(암기) 캡슐화, 추상화, 다형성, 정보은닉, 상속성
암기법(해당경우) 캡추다정상

 

기출문제

번호 문제 회차
1 5. 소프트웨어 설계에 있어서 중심이 되는 원리인 추상화, 정보은닉, 단계적 분해, 모듈화에 대하여 설명하시오. 118_관리_2
2 4. Information Hiding 114_컴시응_1
3 5. 객체 지향적 프로그래밍에서 재사용성을 구현하려면 클래스의 추상화(abstraction), 정보은폐(encapsulation) 및 정보의 상속(inheritance) 같은 개념이 필요하다. 이와 관련하여 클래스의 메소드는 어떤 방법으로 작성되어야 하는지 설명하시오. 90_조직응용_4교시
4 3. 다음의 문제에 대하여 설명하시오.
. 다형성의 개념
. 사례 기반한 Overloading Overriding 설명
. Overloading Overriding의 비교
모의_2017.04_응용_2
5 객체지향 프로그래밍에서 다형성 기법은 중요한 특징 중 하나이다. 다음 다형성에 대한 질문을 설명하시오.
. 다형성의 정의와 특징
. 다형성의 유형
. 다형성의 다이어그램과 코드
모의_2015.10_응용_2교시
6 객체지향 설계와 관련된 다음 질문에 답하시오.
. 다형성에 대하여 설명하시오.
. 객체지향 설계원칙 LSP(Liskov. Substitution Principle) 대하여 설명하시오.
. Strategy Pattern 대하여 설명하시오.
모의_2015.05_관리_2교시
7 객체지향 언어의 특징과 설계원칙을 기술하고, 구조적 기법과 차별화되는 개념을 설명하시오. 또한 private, public 접근 제어자(Access Modifier)를 사용하여 외부로부터 데이터를 보호하기 위한 정보은닉 방법을 실제 객체 지향 언어(JAVA) 간단히 구현하시오. 모의_2014.01_관리_2교시
8 객체지향 다형성과 상속성을 비교 설명하시오 모의_2013.10_통합_1교시
9 객체지향개념 중 다형성의 개념 및 구현기법에 대하여 설명하시오. 모의_2012.07_관리_1교시
10 6. 객체지향 프로그래밍에서 다형성(Polymorphism)에 대하여 설명하시오. 모의_2011.12_관리_1교시
11 Polymorphism 대하여 설명하시오. 모의_2009.12_조직_1교시
12 information hiding                                모의_2009.09_공통_1교시
13 10.Polymorphism 설명하시오. 모의_2009.08_관리_1교시

 

I. 객체지향(Object Oriented)의 개요

  . 객체지향의 정의

- 현실 세계에서 개체(Entity) 속성(Attribute) 메소드(Method) 결합된 형태의 객체(Object) 표현하는 개념

- 구현대상을 하나의 객체로 보고, 객체를 객체와 객체들 간의 관계로 모델링하는 방법

 

  . 객체(Object Oriented) 구성 구성요소

- Class간의 Relation, Object간의 상호작용은 메시지를 통해 이루어짐.

 

특징 설명
클래스
(Class)
-객체의 타입을 정의하는 템플릿
-여러 객체가 공통적으로 가지고 있는 속성과 메소드를 클래스로 정의하고 클래스에 의해 객체가 재 정의 되는 구조

객체
(Object)
-클래스의 인스턴스(실제로 메모리상에 할당된 것)
- 자신 고유의 데이터(Attribute)를 가지며 클래스에서 정의한 행위(Behavior) 수행
- 객체의 행위는 클래스에 정의된 행위에 대한 정의를 공유함으로써 메모리를 경제적으로 사용

메소드
(Method)
- 클래스로부터 생성된 객체를 사용하는 방법
- 객체에 명령을 내리는 메시지라 있음.
- 객체 간의 통신은 메시지를 통해 이루어 .
인스턴스
(Instance)
- 프로그램에서 클래스를 통해 만든 실제의 실행 객체, 프로그램의 실행 단계에서 나타냄.

 

II. 객체지향(Object Oriented) 프로그래밍의 특징(기법)

. 캡슐화(Encapsulation)

구분 상 세 내 용
정의 - 객체의 속성(Data Fields) 행위(메소드, Methods) 하나로 묶고, 실제 구현 내용 일부를 일부에 감추어 은닉하는 객체지향의 특성
- 객체 정보은닉의 확장 캡슐화
특징 - 클래스를 선언하고 클래스를 구성하는 객체에 대하여 public 선언 외부에서 사용가능, private 선언 불가
- 메시지 통해 접근
장점 - 소프트웨어의 유지보수 생산성 증대
- 재사용성이 높은 소프트웨어 개발
- 정보은닉으로부터 내부자료에 대한 일관성 유지
Code

. 추상화(Abstraction)

구분 상 세 내 용
정의 - 현실세계의 사실(물체 ) 객체로 공통적인 속성과 기능을 묶어 이름을 부여하는 기법
- 공통 성질을 추출하여 슈퍼클래스를 설정하는 특성
특징 객체지향 언어에서는 클래스를 이용함으로써 데이터와 프로세스를 함께 추상화의 구조에 넣어 보다 완벽한 추상화 실현
1) 기능 추상화(Method 부여): 클래스 메소드를 정의(obj.getName())
2) 데이터 추상화(Type 부여): 객체 클래스 자체를 테이터 타입으로 사용(String, Class)
3) 제어 추상화: 제어행위에 대한 개념화, 명령 이벤트(if, for, while)
장점 복잡한 프로그램을 간단하게 해줌
Code public class Clock{
    int hour;
    int minute;
    int second;
public void display(){
    //시간 출력
  }
}

. 다형성(Polymorphism)

구분 상 세 내 용
정의 - 같은 함수(Method) 이름으로, 여러 개의 메서드를 만들 있는 기법
특징 - 동적바인딩 : 프로그램이 실행되는 시점에 호출할 번지나 함수를 연결함
- 확장성 지원 : 수직적 확장성인 Overriding 수평적 확장인 Overloading 지원
- 재사용성 지원 : 기존에 구현된 부분은 동일하게 사용하고 필요한 부분만 수정하여 활용 가능
장점 - 확장성 : 기존 코드(부모 클래스) 수정하지 않고, 새로운 기능 새로운 클래스 추가 쉬움
- 유연성 : 실제 실행될 오퍼레이션이 실행 시에 결정. Dynamic Binding

   

- 오버라이딩과 오버로딩 특징

구분 오버라이딩(overriding) 오버로딩(overloading)
메소드 이름 같아야 함 같아야 함
파라미터 개수
자료형
같아야 함 달라야 함


같을 경우 자료형이 달라야 함
리턴 타입 같아야 함 상관없음
기타 상위 클래스에 메소드 존재 상위 클래스에 같은 이름의 메소드가 없어야 함

 

- 오버라이딩과 오버로딩 사례

구분 Overloading Overriding
개념 메소드의 이름은 같으나 인자의 타입 및 개수가 다른 경우, 동일 클래스의 동일 메소드로 매개변수 다르게 하여 정의하는 기법 상속관계에 있는 두 클래스 중 하위클래스에서 상위클래스의 메소드를 재정의하여 사용하는 기법
클래스
다이어그램
샘플코드

- Java에서는 가상(virtual) 따로 선언하지 않아도 되나 C++에서는 다형성을 구현하기 위해서는 상위 클래스에 멤버 메소드를 가상(virtual)으로 선언해야 .

 

. 정보은닉(Information Hiding)

구분 상 세 내 용
정의 - 캡슐화 방법으로 class 내부 정보를 은닉하고, 접근 제한의 단계를 두어 보안적인 구현 가능
- 클래스 내부에서 사용되는 변수(필드) 들을 private 이나 protected 등으로 선언해 줌으로, 자기 클래스, 혹은 자식 클래스 외에는 직접적으로 제어를 불가능하게 해주는 성질
- 복잡하거나 변경가능 한 부분을 캡슐 내부에 감추고 외부에는 추상화되고 변경가능성이 낮은 인터페이스만을 제공하는 객체지향의 원리
특징 - 복잡성 제거 : 외부에는 불필요한 내부적으로만 사용되는 부분을 감춰서 복잡성을 줄임
- Data 보호 : 외부로부터 데이터를 보호하기 위함
Code

- 접근제어자의 종류

. 상속성(Inheritance)

 

구분 상 세 내 용
정의 - 상속은 클래스에서만 통용되는 개념으로 미리 만들어 둔 클래스를 다시 이용하는 방법
특징 - 하위 클래스가 상위 클래스를 상속 받았을 때, 하위 클래스는 상위 클래스의 모든 권한 소유
- 상속을 받는 순간 현재의 클래스는 곧 상위 클래스에서 출발
- 단일 : 부모와 자식 클래스 간의 관계가 수퍼클래스와 서브클래스로 유지
- 다중 : 하나의 클래스가 하나 이상의 클래스로부터 상속
- 반복 : 같은 조부모 클래스로부터 상속 받은 부모 클래스로부터 상속
Code

    - C++에서는 콜론(:) 상속의 키워드로 사용하며, 자바에서는 extends라는 키워드를 사용

반응형

'정보관리기술사 > 소프트웨어공학' 카테고리의 다른 글

(외부)EPMO  (0) 2024.03.11
객체지향 설계의 원리  (0) 2024.03.10
Architecture  (0) 2024.03.08
번다운차트  (0) 2024.03.07
CI, CD  (0) 2024.03.06


누런 원버튼이 거슬리기도 했고, 화장실에 입실시 자동으로 불이 켜지도록 하기위해 보탬 스위치를 장착을 하려고하였습니다.


그.러.나 구축 아파트여서 그런지 이전 똑딱이 스위치만큼만 콘크리트가 파져있어서, 좀 두께감이 있는 정사이즈의 보탬스위치는 2/3쯤 밖에 들어가지 않았습니다.

- 낙담하던 그때 스위치 박스를 알게되었고, 좀 튀어나오더라도 자동화에 의의를 두고 시공을 진행했습니다.

구매한 스위치박스 뒤에 전선구멍이 나있어서, 그 구멍으로 전선을 뺐습니다.

스위치 박스는 실리콘이나 접착용 실란트를 사용해서 고정하면되는데, 저는 접착용 실란트를 사용해서 테두리만 발라서 고정했습니다.




- 작동 잘됩니다. 툭 튀어나와있지만, 만족스러웠고 벽과 스위치 사이에 깔끔하게 실리콘으로 마무리할 예정입니다.

시공만족도 :
시공난이도 : 하
시공시각 : 5분내외
시공비용 : 3000원
준비물 : 무타공 접착제 혹은 실리콘, 스위치 박스



https://link.coupang.com/a/bttihf

성삼 PVC 노출박스 스위치박스 콘센트 박스, 13228.콘센트박..., 1개

COUPANG

www.coupang.com


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

반응형


셀프시공명 : 셀프 도배시트지
셀프시공난이도 :
면적 : 122cm x 122cm
시공시간 : 40분
인력 : 혼자가능
비용 : 1.4만원
준비물 : 의자, 헤라(공기 안들어가게 붙일때 필요, 없어서 책받침으로 쭉쭉 밀어줌)

- 현관은 중문과 현관사이에 있어서, 온도를 완충해 주는 구간으로  습기가 도배지에 스며들기 쉽습니다. 5년전 도배가 많이 얼룩덜룩하네요.
( 미리 현관 등은 제거해줍니다 )


- 돌돌 말려온 시트지를 제단해줍니다. 자를때 잘못잘라서 4부분을 이어붙였네요. 이것때문에 시간이 오래걸렸습니다.


- 시공 완료된 모습, 이어 붙인 모습도 그렇게 티 나지 않네요, 혼자서도 충분히 가능해서 해볼만 한거같습니다.

* Tip
1) 천정은 들고있어야 해서 좀 수평을 잡는부분이 힘드니 가장자리 부분을 처음에 잘 맞춰주는게 중요.
2) 밀어줄때 가장자리가 아닌 중앙 부분부터 가장자리로 나아가게 밀어주어야 공기와 울지 않음.

시공만족도 :


https://link.coupang.com/a/bts4Gv


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."



반응형
84   Architecture [모노리식 아키텍처] 기존의 전통적인 웹 시스템 개발 스타일로, 하나의 애플리케이션 내에 모든 조직들이 들어 가 있는 구조
[마이크로 서비스 아키텍처] 대규모 웹 분산 환경에서 응용소프트웨어를 독립적으로 배치 가능한 서비스 조합으로 설계하는 아키텍처 스타일
조직구성 = 아키텍처  
토픽 이름 Architecture
분류 PM > Agile > Architecture
키워드(암기) 모놀리식, 마이크로서비스 아키텍처
암기법(해당경우)  

기출문제

번호 문제 회차
1 4. 최근 대규모의 소프트웨어 개발에 적용을 하기 위한 다양한 아키텍처가 사용되고 있다. 아래의 항목에 대해 설명하시오.
. 마이크로 서비스 아키텍처(Micro Service Architecture) 필요성과 개념
. 마이크로 서비스의 장단점
. 블루그린배포(Blue Green Deployment) 카나리아 배포(Carnary Deployment)


모의_2018.07.관리.3교시.4
2 7. 마이크로 서비스 아키텍처(Micro Service Architecture) 대하여 설명하시오. 모의_2017.01.관리.1교시.7

 

  1. 대용량 웹서비스를 위한 Agile Architecture 개요
구분 정의
모노리식
아키텍처
기존의 전통적인 웹 시스템 개발 스타일로, 하나의 애플리케이션 내에 모든 조직들이 들어 가 있는 구조
마이크로 서비스 아키텍처 대규모 웹 분산 환경에서 응용소프트웨어를 독립적으로 배치 가능한 서비스 조합으로 설계하는 아키텍처 스타일

 

  1. 모노리식 아키텍처, 마이크로 서비스 아키텍처 구성도 아키텍쳐 특성

  1. 모노리식 아키텍처, 마이크로 서비스 아키텍처 특성
구분 특성
모노리식
아키텍처
  1. 각 컴포넌트들은 상호 호출을 함수를 이용하는 call-by-reference 구조
  2. 전체 애플리케이션을 하나로 처리하기 때문에, 개발 툴 등에서 하나의 애플리케이션만 개발
  3. 배포 역시 간편하며 테스트도 하나의 애플리케이션만 수행하면 되기 때문에 편리
마이크로 서비스 아키텍처 서비스는 데이터에서부터 비즈니스 로직까지 독립적으로 상호 컴포넌트간의 의존성이 없이 개발된 컴포넌트(이를 버티컬 슬라이싱 / Vertical Slicing - 수직적 분할이라고 한다.)로 REST API와 같은 표준 인터페이스로 그 기능을 외부로 제공.

 

  1. 모노리식 아키텍처, 마이크로 서비스 아키텍처 비교
구분 모노리식 아키텍쳐 마이크로 서비스 아키텍처
데이터 저장관점 중앙 집중화된 하나의 통합
데이터베이스(보통 RDBMS) 사용
서비스 별로 별도의 데이터 베이스를 사용

서비스가 API에서부터 데이터 베이스까지 분리되는 수직
분할 원칙(Vertical Slicing)에 따라서 독립된 데이터 베이스 사용
컴포넌트 전체 애플리케이션을 재 컴파일하여 전체를 다시 통으로 재배포 변경이 있는 서비스 부분만 부분 배포
확장성 전체 서버의 수를 늘리거나 각 서버의 CPU수를 늘려줘야 함 부하를 많이 받는 서비스 컴포넌트만 가능
특징
작은 크기의 애플리케이션에서는 용이.

시스템 컴포넌트들이 서로 참조에 의한 호출 (call-by-reference)기반으로 타이트하게 연결
컴포넌트를 되도록이면 업무 단위로 잘게 자르는
fine grained(작은 덩어리)의 서비스를 지향.
단점
잦은 배포가 있는 시스템의 경우 불리.

컴포넌트 별로 기능/비기능적 특성에 맞춰서 다른 기술을 도입하고자 할 때 유연하지 않음.


특정 컴포넌트나 모듈에서의 성능 문제나 장애가 다른 컴포넌트에까지 영향.
서비스를 컴포넌트의 URL 수 증가.

API를 사용하는 클라이언트에서 서버간의 통신이나,
서버간의 API 통신의 경우 p2p(Point to Point)형태로
토폴로지가 복잡해지고 거미줄 모양의 서비스 컴포넌트간의 호출 구조는 향후 관리의 문제 발생 가능.

[추가 자료: Agile Architecture 배경적 지식]

1) Agile Architecture 개념

 - S/W 개발 , 상세함을 대체하면서 결과 verify 용이하게 있는 Architecture.

 - Agile Manifesto 6원칙에 기초하여 등장하게

2) Microservice 배경

 - Agile 적용된 조직Organization이 비대 또는, 시스템 Scale 커지면, Scrum of scrum/SAFe(Scaled Agile Framework) 의사소통 채널 시스템 Iteration(Sprint) 증가. 이는 Agile 사상에 벗어나는 고민에서 출발한 개념 (MicroserviceSOA 개념/등장배경에 견주어 설명하기도 )

 - 독립적인 적용이 가능한 unit으로 구성된 Microservice-based 시스템일 경우, 기능이 명확히 분리된 단위라서 상호 서비스 영향이 없기 때문에 빠르고 쉽게 적용이 가능, 장점이라고 얘기함

[그림해설] S/W 개발을 예로 들면, Microservices Agile 진행에서 하나의 구조적 단계로 볼 수 있다는 의미

[참고] Agile Working Group MSA

반응형

'정보관리기술사 > 소프트웨어공학' 카테고리의 다른 글

객체지향 설계의 원리  (0) 2024.03.10
객체지향 프로그래밍 특징  (0) 2024.03.09
번다운차트  (0) 2024.03.07
CI, CD  (0) 2024.03.06
Lean(린)  (1) 2024.03.05
82
출제예상 번다운차트 [정의] Agile 프로젝트기반 조직에서 점수(Story Point)를 산정하여 Sprint 계획대비 현재진행을 파악할 수 있는 차트
스토리포인트(Story Point) 산정, Sprint 진척률 가시화
-----
Burn down(소멸차트) 상세설명
기울기를 통하여 작업수행 속도 판단
Story Point 산정 및 담당 업무할당에 너무 많은 시간이 소요되면 진척에 역효과 발생. 적절한 이해관계자 들간의 범위 및 일정조율 중요.
Burn-dwon Chart, Burn-up Chart, 기능 차트
토픽 이름 번다운차트(Burn down)
분류 PM > Agile > 번다운차트
키워드(암기) 번업차트, 스토리포인트(Story Point), Sprint 진척률 가시화
암기법(해당경우) 번쓰 (번다운/스토리포인트/스프린트)

 

기출문제

번호 문제 회차
1 Burn-down chart EVM 비교하시오. 합숙.2014.7.26.1교시.3
2 11. Burn down chart 대하여 설명하시오. 모의.2011.01.1교시.11
3 Agile 프로세스가 국내에 많이 도입이 되고 있다. 프로젝트 관리자로서, 프로젝트마다 개별 개발방법론과 프로세스의 테일러링이 필요하다. 다음 질문에 대해 설명하시오.
. SW 획득가치기법인 EVM Burn Down Chart 비교하시오.
. 프로세스를 정의하고 7 원칙에 대해 5가지 이상 설명하시오. . Kanban 프로세스를 비교하시오.
2016.01.27() 5일차
2교시 7. 108회 대비
4 Burn-down chart EVM 비교하시오. 2014.07.28() 3일차 1교시 3. 104 대비

 

I. ScrumSprint 일정관리 도구, 번다운차트 개요.(서론)

- Agile 프로젝트기반 조직에서 점수(Story Point) 산정하여 Sprint 계획대비 현재진행을 파악할 있는 차트

- 스토리포인트(Story Point) 산정, Sprint 진척률 가시화

 

II. 개념도(구성도) 및 기술요소

. Burn down(소멸차트) 개념도

- 점수(User Point) 지정하여 Sprint 기간에 계획대비 완료한 현재의 진행을 가시화

. Burn down(소멸차트) 상세설명

구분 설명
가로축 시간 축으로 스프린트 반복 주기 날짜수
세로축 완료된 작업의 추정 일수(스토리 포인트로 표현)
계획 그래프 처음 계획을 세웠을 때 날짜로 남은 작업량 표현
실제 그래프 작업을 수행하면서 실제로 남은 작업량

- 기울기를 통하여 작업수행 속도 판단

- Story Point 산정 담당 업무할당에 너무 많은 시간이 소요되면 진척에 역효과 발생. 적절한 이해관계자들간의 범위 및 일정조율 중요.

 

III. Burn-Down ChartEVM 비교

[참고] EVMBurn Down Chart 프로젝트 적용 방안

반응형

'정보관리기술사 > 소프트웨어공학' 카테고리의 다른 글

객체지향 프로그래밍 특징  (0) 2024.03.09
Architecture  (0) 2024.03.08
CI, CD  (0) 2024.03.06
Lean(린)  (1) 2024.03.05
Kanban  (4) 2024.03.04
78
출제예상 CI, CD [CI의 정의]
- 개발자 별로 소스코드를 지속적/연속적 통합하여 자동화된 빌드, 테스트 및 배포 기능을 통하여 단기간에 고품질의 SW를 획득하는 기술 (형상관리 필수적용)
[CD의 정의]
변경된 요구사항에 대한 개발/통합/배포/테스트/릴리즈를 자동화함으로써 SW의 개발과 운영을 통합하여 DevOps를 지원하는 소프트웨어 연속적인 배포 출시 전략
CI, 자동화, 통합, 빌드, 배포, Jenkins 연속적 소스 머지, 연속 배포 CI : 소스파일을 실행파일(바이너리파일)로 컴파일, 테스트, 테스트서버에 배포까지 프로 세스(Build Tool)
토픽 이름 CI (Continuous Integration), CD (Continuous Delivery)
분류 PM > Agile > CI, CD
키워드(암기) 소스파일의 연속적인 통합(CI) 연속적 배포(CD)
CI : 소스코드의 통합/테스트/배포 자동화를 통한 고품질 SW 획득
CD : S/W 개발 운영 통합을 통한 DevOps 지원하는 연속적인 배포
암기법(해당경우)  

 

기출문제

번호 문제 회차
1 12. CI(Continuous Integration) 대해 설명하시오. 합숙_2019.04.관리.Day-5
2 4. CI(Continuous Integration) CD(Continuous Delivery) 설명하고, 이를 통한 SW 생산성 향상방안에 대해 제시하시오. 합숙_2018.08.공통.Day-5
3 1. 클라우드 환경 확산 따라 DevOps 중요성이 증가하고 있다. DevOps 구성요소에 대해서 설명하고, CD(Continuous Delivery) 개념과 절차에 대해서 설명하시오. 모의_2017.04.관리.4
4 다양한 요구 변화에 대한 품질을 확보하며 안정적인 시스템 운영을 위해 스타트업 기업 위주로 DevOps 사상을 도입하는 경우가 증가하고 있다. DevOps 부각 배경과 CI(Continuous Integration) 도구, 그리고 DevOps 적용 고려사항에 대해서 설명하시오. 모의_2016.04.관리.4
5 1. CI(Continuous Integration), CD(Continuous Delivery) 대해 설명하시오. 합숙_2014.07.공통.Day-3

 

I. SW 품질개선과 위험 완화를 위한 Agile Practice, CI (Continuous Integration)) 개요

. CI 정의

- 개발자 별로 소스코드를 지속적/연속적 통합하여 자동화된 빌드, 테스트 배포 기능을 통하여 단기간에

고품질의 SW 획득하는 기술 (형상관리 필수적용)

. CI 목적/필요성

필요성 내용
에러의 조기 발견 - 에러를 초기에 발견할 있어, 흔히 발생하는 일반적인 위험을 줄여줌
- 자주 통합할수록 에러가 발생하는 반경(소스Gap) 좁아짐
배포 용이성 확보 - 언제 어느 때라도 배포할 있는 소프트웨어를 생성
가시적 관리 및 자동화 - 프로젝트 가시성 향상, 반복적인 수작업 최소화

 

II. CI 개념도 기술요소

. CI 개념도

 

. CI 기술요소

구성요소 설명 CI 도구
버전관리 저장소 모든 프로젝트 파일의 중앙 저장소가 있어 팀원들의 작업을 전부 동기화 공간을 제공 - CVS
- Subversion
- GIT
지속적인 통합서버(CI시스템) 컴파일, 테스트, 릴리즈, 디플로이, 결과보고등의 작업을 통합적 자동화 SW - Hudson
- Jenkins
빌드스크립트 자동화된 절차를 위한 셀 스크립트(또는 배치파일) 작성(소트 코드 컴파일, 테스트 수행 등) - 스크립트
- 배치파일
Project Management Tool 빌드 결과를 모니터링하거나 자동적으로 피드백을 받을 수 있는 관리도구 - 이메일, UC
- 문자메시지
자동화된 테스트 결과를 스스로 확인하는 자동화된 테스트 - SonarQube

 

III. CI 위험요소와 프렉티스를 성공적 수행하기 위한 자동화 프로세스 Tools

소프트웨어 위험요소 CI 자동화 프로세스 CI 자동화 Tools
배포 가능한 SW 부재
빌드 실패
DB 동기화 실패
배포 실패
소스 컴파일 자동화
DB Script 테스트
릴리즈 자동화
Ant, Maven
뒤늦은 결함 발견
회귀테스트 부재
테스트 적용범위 부재
테스트 자동화 JUnit, TestNG, Selenium
프로젝트 가시성 부재 통합 결과 피드백 Hudson, CruiseControl
저품질 SW
코딩표준, 설계지침 위반
중복/복잡한 코드
코딩 표준, 설계 지침, 중복코드, 코드복잡도 검사 자동화 Checkstyle, PMD, JDepent, Findbugs

 

[CD(Continuous Delivery)]

I. SW 개발/운영 통합관리, DevOps 위한 CD(Continuous Delivery) 개요

 

 

- 변경된 요구사항에 대한 개발/통합/배포/테스트/릴리즈를 자동화함으로써 SW 개발과 운영을 통합하여 DevOps 지원하는 소프트웨어 연속적인 배포 출시 전략

II. CI CD 관계도

 

- Commit 코드를 CI를 수행하고 CD 수행하여 지속적인 Deploy 수행

 

[추가_2018.08.합숙풀이]

- 발전된 오픈소스를 통해 CI/CD 넘어서 DevOps 환경 구성가능

반응형

'정보관리기술사 > 소프트웨어공학' 카테고리의 다른 글

Architecture  (0) 2024.03.08
번다운차트  (0) 2024.03.07
Lean(린)  (1) 2024.03.05
Kanban  (4) 2024.03.04
XP  (0) 2024.03.03
74
Lean(린) / 린 경영 /
린(Lean software development)
[정의] TPS(Toyota Production System)을 재정립한 경영방법론인 린시스템의 품질기법을
소프트웨어 개발에 적용한 개발방법론
[7대원칙]
낭비제거, 배음증폭, 늦은결정, 팀에 권한위임, 빠른 배포, 통합성 구축, 전체를 볼것

[7대낭비]
미완성 작업, 가외기능, 재학습, 이관, 작업전환, 지연 결함

낭배늦팀빠통전
미가재이작지결
토픽 이름() Lean() / 경영 / (Lean software development)
분류 프로젝트 관리 > Agile 프로세스 > Lean() / 경영 / (Lean software development)
키워드(암기) 린 프로세스, Lean manufacturing or lean production, Toyota Production System, 방법론보단 사상과 프로세스임.
낭비 제거
1.Partially done work
2.Extra processes
3.Extra features
4.Task switching
5.Waiting
6.Motion
7.Defects
8.Management activities
 
7 원칙 Practice
2.1 Eliminate waste
2.2 Amplify learning
2.3 Decide as late as possible
2.4 Deliver as fast as possible(빠른 인도)
2.5 Empower the team
2.6 Build integrity in
2.7 See the whole
암기법(해당경우) 원칙 : [낭배결빠위통씨] 낭비제거, 배움증폭, 늦은 결정, 빠른 인도, 권한위임, 통합성 구축, 전체를 볼것
낭비 : [재미가결이작지] 재학습, 미완성작업, 가외기능, 결함, 이관, 작업전환, 지연

기출문제

번호 문제 회차
1 Lean SW 개발 방법론에 대하여 설명하시오. 합숙_2019.08 1일차
2 소프트웨어 Agile개발방법론에 대해 다음 질문을 설명하시오.
. XP, SCRUM, KANBAN 대해 비교 설명
. LEAN개발방법론에 대해 설명
모의_2016.10 4교시
3 (Lean) 개발방법론을 정의하고, 7 가지 개발원칙 5 가지 이상을 제시하시오. 모의_2015.01 1교시
4 (Lean) 소프트웨어 개발 방법에 대해 설명하시오. 모의_2014.07 1교시
5 소프트웨어 공학에 린 제조업의 원리를 적용시킨 린(Lean) 소프트웨어 개발기법에 대해 설명하고, 칸반(Kanban) 스크럼(SCRUM)을 비교하시오. 모의_2014.06 3교시
6 Lean 개발방법론에 대하여 설명하시오. 모의_2014.01 1교시

 

I. Just in Time 달성 낭비제거, Lean 개요

. Lean 정의

 - 빠른 프로토타입과 신속한 고객 피드백을 통해 JIT(Just in Time) 달성과 함께 낭비를 제거하는 개발 방법론

 

. Lean 특징

린 공학 품질기법 도요타의 린 공학 품질기법을 SW개발 프로세스에 적용
낭비요소 제거 낭비요소를 제거하고 7가지 원칙을 준수

 

II. Lean 7 원칙과 7대 낭비

  1. Lean 7 원칙
원칙 설명
Eliminate Waste (비 제거) - 불필요한 코드나 기능, 불분명한 요구사항 등의 낭비요소 제거
Amplify Learning (움증폭) - 프로젝트 진행 학습의 필요성 존재, 고객의 학습도 필요
Decide as Late as Possible
(늦은 )
- 중요한 문제에 대한 의사결정을 최대한 미룸
- 요구사항 변경에 적극적으로 대응할 있게
Deliver as Fast as Possible
(른 인도)
- 결과물을 최대한 빨리 제공할
- 고객이 요구사항을 변경할 시간을 주지 않음
Empower the Team
(팀에 권한 )
- 직원들의 동기부여 자기의사결정권으로 잠재력 극대화
Build Integrity In
(합성 구축)
- 개발 초기부터 품질을 향상시키도록 하는
- 작은 개발 단계마다 오류를 발견하고 수정하는 작업
See the Whole
(전체를 )
- 요구사항 수집부터 제품 릴리즈 하는 시점까지 모든 프로세스를 최적화해야

 

. Lean 7대 낭비

낭비 설명
완성 작업
(Partial Done Work)
- 코드로 옮기지 않은 문서, 동기화되지 않은 코드 빠지지 않게 흐름을 진행해야 재고를 줄일 수 있음
외기능
(Extra Feature)
- 필요하지 않는 기능을 추가하는 것으로 업무에 집중하고 되도록 기능을 추가하지 않는 방향으로 생각
학습
(Relearning)
- 지식을 가진 사람들을 개발 과정에 끌어들이지 못해 작업 공간에 제공할 있는 지식을 놓여 학습하는 활동
- 테스트에 결함 유입을 걸러주는 실수 방지 테스트가 반드시 포함하고 자주 테스트

(Handoff)
- 업무의 이관은 상당량의 암묵지가 전수되지 못하고 암묵지를 문서로 전달하기 어렵기 때문에 이관할 항상 정보가 손실됨
작업전환
(Task Switching)
- 작업 다른 작업으로 전환하는 것은 집중이 분산되고 시간을 소모시키므로 전환 시간 낭비 최소화
지연
(Delay)
- 필요한 인원이 정기적인 피드백이 있는 Iteration 지연을 극적으로 줄일 수 있음

III. Kanban Lean 비교

구분 Kanban Lean
개념 Workflow 표현하는 Kanban보드를 통해, 개발공정을 시각화하고 작업제한, 소요시간 최적화 기법을 통해 적시개발을 지원하는 Agile방법론 적시개발(Just in time development) 달성하고 낭비제거를 목표로 하는 Agile방법론
수행원리 Workflow 시각화, WIP(work-in-process) 제한 낭비 제거
원칙 Workflow 시각화를 통한 일의 진척도 관리 늦은 결정, 빠른 인도 등의 7 원칙
사상 여부 개발 방법론 중의 하나 사상 및 아이디어를 총칭

 

반응형

'정보관리기술사 > 소프트웨어공학' 카테고리의 다른 글

번다운차트  (0) 2024.03.07
CI, CD  (0) 2024.03.06
Kanban  (4) 2024.03.04
XP  (0) 2024.03.03
SCRUM  (0) 2024.03.02

+ Recent posts