min8282

[정보처리기사] 메타코드M, 정보처리기사 필기 1주차(소프트웨어 설계) 본문

카테고리 없음

[정보처리기사] 메타코드M, 정보처리기사 필기 1주차(소프트웨어 설계)

min8282 2024. 11. 30. 19:10

안녕하세요! 오늘은 제가 메타코드에서 제공하는 정보처리기사 필기 강의를 수강하면서 1주차 강의 중 소프트웨어 설계 부분에서 배운 내용을 정리해 보았습니다.

 

이번 포스팅에서는 정보처리기사_소프트웨어 설계에서 중요한 개념 중 하나인 Agile 방법론, GoF 디자인 패턴, 인터페이스 설계에 대해 정리해 보겠습니다.

💡 메타코드 장학생 혜택
저는 이번에 메타코드 장학생으로 선발되어 필기 강의를 무료로 수강하고 있어요.
메타코드 강의를 통해 정보처리기사 필기를 효율적으로 준비하고 있습니다.


1-1-2. 요구사항 확인: Agile 방법론

Agile 방법론이란?

애자일(Agile) 방법론은 변화하는 요구사항에 유연하고 신속하게 대응할 수 있도록 설계된 소프트웨어 개발 방법론입니다.
1990년대 후반부터 전통적인 폭포수(Waterfall) 모델의 한계를 극복하기 위해 등장했으며,
소규모 팀에서 고객과의 긴밀한 협력을 통해 점진적으로 소프트웨어를 개발하는 데 초점을 맞춥니다.

Agile의 특징

Agile 방법론은 다음과 같은 특징을 갖고 있습니다:

  • 절차와 도구보다 개인과 소통을 중시: 팀원 간의 의사소통을 원활하게 하여 문제를 신속히 해결합니다.
  • 변화에 유연하게 대응: 고정된 계획보다 변화하는 요구사항을 우선시합니다.
  • 작동하는 소프트웨어 중시: 문서화보다 실제 실행 가능한 소프트웨어 개발에 가치를 둡니다.
  • 고객 피드백 중시: 개발 중 고객과 지속적으로 협력하여 요구사항에 부합하는 결과물을 만듭니다.
  • 기능 중심 개발: 모듈 중심이 아닌 사용자가 원하는 기능을 중심으로 프로젝트를 진행합니다.

Agile 선언문 속 핵심 가치

Agile 방법론의 근본은 애자일 선언문(Manifesto for Agile Software Development)에서 비롯되었습니다.
이 선언문에는 다음과 같은 4가지 핵심 가치가 포함되어 있습니다:

  1. 프로세스와 도구보다 개인과 상호작용을 중시합니다.
  2. 방대한 문서화보다 작동하는 소프트웨어에 가치를 둡니다.
  3. 계약 협상보다는 고객과의 협력을 우선시합니다.
  4. 계획을 따르는 것보다 변화에 대한 대응을 중요하게 생각합니다.

Agile의 주요 프레임워크

Agile 방법론은 다양한 프레임워크를 통해 구체적으로 구현될 수 있습니다.
그중 대표적인 프레임워크는 다음과 같습니다:

(1) 스크럼(Scrum)

  • 팀이 복잡한 프로젝트를 관리하고 성공적으로 수행하는 데 도움을 주는 프레임워크입니다.
  • 스프린트(Sprint)라는 짧은 작업 주기를 반복하며 소프트웨어를 점진적으로 개발합니다.
    • 스프린트: 1~4주간의 고정된 개발 주기
    • 제품 백로그(Product Backlog): 개발해야 할 기능 목록
    • 스프린트 백로그(Sprint Backlog): 스프린트 기간 동안 수행할 작업 목록
    • 데일리 스크럼 미팅: 매일 15분 이내의 짧은 회의로 진행 상황을 공유스크럼의 핵심 요소

(2) 칸반(Kanban)

  • 작업의 흐름을 시각화하여 효율적으로 관리하는 방법론입니다.
  • 칸반 보드를 사용해 작업의 상태(예: To Do, In Progress, Done)를 한눈에 파악할 수 있습니다.
  • 작업의 병목 현상을 줄이고 지속적인 개선을 추구합니다.

(3) XP(Extreme Programming)

  • 테스트 주도 개발(TDD)과 짧은 개발 주기를 강조하며, 고객과의 협력을 최우선으로 둡니다.
  • 주요 기법: 페어 프로그래밍, 리팩토링, 코드 표준화

Agile의 장점과 단점

장점

  • 고객 요구사항에 신속히 대응 가능
  • 제품 출시 기간 단축
  • 팀원 간의 협력과 소통 강화
  • 점진적 개선과 지속적인 피드백을 통해 품질 향상

단점

  • 명확한 계획이 부족하면 프로젝트가 혼란스러워질 수 있음
  • 고객과 지속적인 협력이 필요한 환경이 아닐 경우 적용 어려움
  • 프로젝트 규모가 크거나 복잡하면 관리가 어려울 수 있음

GoF(Gang of Four) 의 주요 디자인 패턴

소프트웨어 개발 과정에서 디자인 패턴은 반복적으로 발생하는 문제를 해결하기 위한 검증된 설계 방식을 제공한다.
특히 GoF(Gang of Four)는 객체 지향 설계에서 자주 활용되는 23개의 디자인 패턴을 다음 세 가지 범주로 분류했다.

디자인 패턴의 3가지 분류

  1. 생성(Creational) 패턴
    • 객체를 어떻게 생성하고 초기화할지를 다룹니다.
    • 대표 패턴: Builder, Singleton, Prototype, Abstract Factory, Factory Method
  2. 구조(Structural) 패턴
    • 클래스와 객체를 조합하여 더 큰 구조를 형성하는 방법을 정의합니다.
    • 대표 패턴: Adapter, Bridge, Proxy, Decorator, Facade, Flyweight, Composite
  3. 행위(Behavioral) 패턴
    • 객체 간의 상호작용과 책임 분배에 관한 설계를 제공합니다.
    • 대표 패턴: Mediator, Visitor, Command, Observer, State, Strategy

생성(Creational) 패턴

생성 패턴은 객체 생성 과정을 추상화하고 캡슐화하여 코드의 유연성과 재사용성을 높이는 데 초점을 맞춥니다.

1) Factory Method 패턴

  • 정의: 객체 생성에 필요한 인터페이스만 정의하고, 어떤 클래스의 인스턴스를 생성할지는 서브클래스가 결정하도록 하는 패턴입니다.
  • 특징: 클라이언트 코드가 객체 생성 과정을 알 필요 없이, 상위 클래스에서 정의된 인터페이스를 통해 객체를 생성합니다.
  • 활용 사례: 다양한 유형의 객체를 동적으로 생성해야 하는 경우.

2) Prototype 패턴

  • 정의: 미리 정의된 프로토타입 객체를 복제하여 새로운 객체를 생성하는 구조입니다.
  • 특징: 객체 생성 비용이 높을 때 유용하며, 복제된 객체는 원본과 동일한 속성을 가집니다.
  • 활용 사례: 객체 생성 비용이 큰 데이터베이스 연결, 복잡한 계산을 포함한 객체.

3) Singleton 패턴

  • 정의: 특정 클래스의 인스턴스가 단 하나만 존재하도록 보장하고, 이를 어디에서든지 참조할 수 있도록 만드는 패턴입니다.
  • 특징: 애플리케이션 전체에서 공유되는 리소스에 적합하며, 단일 진입점으로 사용됩니다.
  • 활용 사례: 설정 관리, 로그 관리, 데이터베이스 연결 풀.

행위(Behavioral) 패턴

행위 패턴은 객체 간의 상호작용과 역할 분리를 통해 코드의 유연성과 유지보수성을 향상시키는 데 초점을 둡니다.

1) Strategy 패턴

  • 정의: 서로 다른 알고리즘을 캡슐화하여 런타임 시에 알고리즘을 대체할 수 있도록 하는 패턴입니다.
  • 특징: 클라이언트는 알고리즘의 구현 세부 사항을 알 필요 없이, 적절한 전략을 선택하여 사용할 수 있습니다.
  • 활용 사례: 정렬 방식 선택, 결제 방법 설정, 데이터 압축 알고리즘 변경.

2) Mediator 패턴

  • 정의: 객체 간의 직접적인 통신을 피하고, 중재자 객체를 통해 상호작용하도록 만드는 패턴입니다.
  • 특징: 객체 간의 결합도를 낮추고, 시스템의 유연성을 증가시킵니다.
  • 활용 사례: 채팅 시스템에서 채팅 서버가 클라이언트 간 메시지를 중재하는 구조.

 

1-4. 소프트웨어 설계 인터페이스 설계

1-4-1. 시스템이란?

시스템은 하나의 공통된 목적을 달성하기 위한 상호 연관된 구성 요소들의 집합입니다.
소프트웨어 개발에서는 시스템의 각 구성 요소가 유기적으로 작동하여 최종 목표를 달성합니다.

시스템의 주요 구성 요소

  1. 입력(Input):
    • 시스템이 외부로부터 데이터를 받아들이는 과정
    • 예: 사용자 입력, 외부 장치로부터의 데이터 수신
  2. 출력(Output):
    • 처리된 결과를 외부로 전달하는 과정
    • 예: 보고서 출력, 사용자 화면 표시
  3. 처리(Process):
    • 입력된 데이터를 가공하고 조건에 따라 처리하는 작업
    • 예: 계산, 변환, 필터링
  4. 제어(Control):
    • 시스템의 동작과 처리 과정을 조정하고 관리
    • 예: 오류 검출, 작업 스케줄링
  5. 피드백(Feedback):
    • 시스템 성능을 평가하고 필요한 경우 조정
    • 예: 성능 모니터링 및 시스템 최적화

1-4-2. 인터페이스 대상 식별

인터페이스 시스템이란?

인터페이스 시스템은 서로 다른 시스템이나 구성 요소들이 정보를 교환하고 상호작용할 수 있도록 연결해 주는 시스템입니다.
효율적인 인터페이스 설계는 데이터의 정확성과 시스템 간 연계의 신뢰성을 높이는 데 필수적입니다.

인터페이스 시스템 구성

  1. 송신 시스템:
    • 데이터를 연계 테이블 또는 파일 형태로 생성해 송신
    • 데이터는 데이터베이스(DB)나 애플리케이션으로부터 추출
  2. 수신 시스템:
    • 송신 시스템 또는 중계 서버로부터 데이터를 받아 처리
    • 데이터를 저장하거나 사용자에게 제공
  3. 중계 서버:
    • 송신 시스템과 수신 시스템 간 데이터를 중계
    • 경로 관리 및 데이터 변환 역할 수행

인터페이스 설계 시 내외부 송수신 연계 기술

  1. 소켓(Socket):
    • 네트워크 통신을 위해 프로그램에 포트를 할당하여 연결
    • 클라이언트의 요청에 따라 통신을 관리
    • 주로 실시간 데이터 전송 시 사용
  2. DB 링크(Database Link):
    • 데이터베이스 간 테이블을 공유하도록 설정
    • 서로 다른 DB에서 데이터를 조회하거나 처리할 수 있는 기술
    • 주로 분산 데이터베이스 환경에서 사용
  3. API(Application Programming Interface):
    • 서비스와 애플리케이션 간 상호작용을 위한 인터페이스 제공
    • REST API, SOAP API와 같은 다양한 프로토콜 사용
    • 애플리케이션 간 연계 및 데이터 공유를 용이하게 함

인터페이스 설계의 중요성

  1. 시스템 간 데이터 일관성 유지
    • 인터페이스는 송수신 데이터의 정합성을 보장합니다.
  2. 비용 절감
    • 효율적인 인터페이스 설계로 반복 개발을 줄일 수 있습니다.
  3. 확장성 강화
    • 설계가 잘 이루어진 인터페이스는 시스템 확장이나 변경에도 유연하게 대응합니다.

 

메타코드 정보처리기사 강의링크)

https://www.metacodes.co.kr/edu/read2.nx?EM_IDX=15027&EP_IDX=15203&M2_IDX=31635#study_plan

 

정보처리기사 필기 환급 챌린지ㅣ합격 인증 시 100% 환급 (제세공과금 22% 제외)

 

www.metacodes.co.kr

 

메타코드 카페

https://cafe.naver.com/love3339

 

메타코드M | ADsP, SQLD, ... : 네이버 카페

빅데이터분석기사, 정보처리기사, SQLD, ADsP, AWS 자격증 취득 등 빅데이터 전문가 지식 공유 커뮤니티

cafe.naver.com