※ 공부 내용의 복습 개념으로 정리된 글입니다. - 출처 시나공
소프트웨어 개발 방법론의 개요
소프트웨어 개발 방법론은 소프트웨어 개발, 유지 보수 등에 필요한 여러 가지 일들의 수행 방법과 이러한 일들을 효율적으로 수행하려는 과정에서 필요한 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것입니다.
- 소프트웨어 개발 방법론의 목적은 소프트웨어의 생산성과 품질 향상입니다.
- 소프트웨어 개발 방법론의 종류에는 구조적 방법론, 정보공학 방법론, 객체지향 방법론, 컴포넌트 기반(CBD) 방법론, 애자일(Agile) 방법론, 제품 계열 방법론이 있습니다.
구조적 방법론
구조적 방법론은 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리(Precess) 중심의 방법론입니다.
- 1960년대까지 가장 많이 적용되었던 소프트웨어 개발 방법론입니다.
- 쉬운 이해 및 검증이 가능한 프로그램 코드를 생성하는 것이 목적입니다.
- 복잡한 문제를 다루기 위해 분할과 정복(Divide and Conquer) 원리를 적용합니다.
구조적 방법론의 절차
정보공학 방법론
정보공학 방법론은 정보 시스템의 개발을 위해 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는 자료(Data) 중심의 방법론입니다.
- 정보 시스템 개발 주기를 이용하여 대규모 정보 시스템을 구축하는데 적합합니다.
정보공학 방법론의 절차
객체지향 방법론
객체지향 방법론은 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체(Object)로 만들어, 소프트웨어를 개발할 때 기계의 부품을 조립하듯이 객체들을 조립해서 필요한 소프트웨어를 구현하는 방법론입니다.
- 객체지향 방법론은 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택되었습니다.
- 객체지향 방법론의 구성 요소에는 객체(Object), 클래스(Class), 메시지(Message) 등이 있습니다.
- 객체지향 방법론의 기본 원칙에는 캡슐화(Encapsulation), 정보 은닉(Information Hiding), 추상화(Abstraction), 상속화(Inheritance), 다형성(Polymorphism) 등이 있습니다.
객체지향 방법론의 절차
※ 단어
- 객체(Object)
- 데이터와 데이터를 처리하는 함수를 묶어 놓은 하나의 소프트웨어 모듈
- 클래스(Class)
- 공통된 속성과 연산을 갖는 객체의 집합으로 객체의 일반적인 타입(Type)
- 메시지(Message)
- 객체들 간에 상호작요을 하는 데 사용되는 수단으로, 객체에게 어떤 행위를 하도록 지시하는 명령 또는 요구 사항
- 캡술화(Encapsulation)
- 데이터와 데이터를 처리하는 함수를 하나로 묶는 것
- 정보 은닉(Information Hiding)
- 캡술화에서 가장 중요한 개념으로, 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것
- 추상화(Abstraction)
- 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에 중점을 두어 개략화하는 것
- 상속성(Inheritance)
- 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것
- 다형성(Polymorphism)
- 메시지에 의해 객체가 연산을 수행하게 될 때 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
※ 현실 세계의 개체
사람, 자동차, 컴퓨터, 고양이 등과 같이 우리 주위에서 사용되는 물질적이거나 개념적인 것으로, 명사로 사용됩니다.
컴포넌트 기반(CBD, Component Based Design) 방법론
컴포넌트 기반 방법론은 기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론입니다.
- 컴포넌트의 재사용(Reusability)이 가능하여 시간과 노력을 절감할 수 있습니다.
- 새로운 기능을 추가하는 것이 간단하여 확장성이 보장됩니다.
- 유지 보수 비용을 최소화하고 생산성 및 품질을 향상시킬 수 있습니다.
컴포넌트 기반 방법론의 절차
※ 컴포넌트(Component)
컴포넌트는 문서, 소스코드, 파일, 라이브러리 등과 같은 모듈화된 자원으로, 재사용이 가능합니다.
애자일(Agile) 방법론
애자일은 '민첩한', '기민한'이라는 의미로, 애자일 방법론은 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발 과정을 진행하는 방법론입니다.
- 소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항에 적합합니다.
- 애자일 방법론의 대표적인 종류에는 익스트림 프로그래밍(XP, eXtreme Programming), 스크럼(Scrum), 칸반(Kanban), 크리스탈(Crytal) 등이 있다.
애자일 방법론의 절차
※ 사용자 스토리(User Story)
사용자 스토리는 사용자의 요구사항을 의미합니다.
제품 계열 방법론
제품 계열 방법론은 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론입니다.
- 임베디드 소프트웨어를 만드는데 적합합니다.
- 제품 계열 방법론은 영역공학과 응용공학으로 구분됩니다.
- 영역공학 : 영역 분석, 영역 설계, 핵심 자산을 구현하는 영역입니다.
- 응용공학 : 제품 요구 분석, 제품 설계, 제품을 구현하는 영역입니다.
- 영역공학과 응용공학의 연계를 위해 제품의 요구사항, 아키텍처, 조립 생산이 필요합니다.
제품 계열 방법론의 절차
※ 임베디드 소프트웨어(Embedded Software)
임베디드 소프트웨어란 디지털 TV, 전기밥솥, 냉장고, PDA 등 해당 제품의 특정 기능에 맞게 특화되어서 제품 자체에 포함된 소프트웨어를 말합니다.
'정보처리산업기사' 카테고리의 다른 글
정보처리산업기사 - 애플리케이션 설계 - XP(eXtreme Programming) 기법 (0) | 2024.07.06 |
---|---|
정보처리산업기사 - 애플리케이션 설계 - 스크럼(Scrum) 기법 (0) | 2024.07.02 |
정보처리산업기사 - 애플리케이션 설계 - 소프트웨어 생명 주기 (0) | 2024.06.24 |
정보처리산업기사 - 응용 SW 기초 기술 활용 - 정보 통신망 기술 (2) | 2024.06.19 |
정보처리산업기사 - 응용 SW 기초 기술 활용 - 통신 프로토콜 (2) | 2024.06.18 |