일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 요구사항 확인
- UML
- Unreal Engint4
- UnrealEngine
- 파이프 필터 패턴
- 요구사항 분석
- 기능 모델링
- 아키텍처 패턴
- 팬아웃
- 정보처리기사
- 언리얼엔진 함수
- 알고리즘 문제
- 마스터 슬레이브 패턴
- UML 다이어그램
- 단계적 분해
- 브로커 패턴
- UnrealEngine5
- 데이터 입출력
- 정보처리기사 실기
- 정처기
- 동적 모델링
- 백준
- baekjoon
- 정보 은닉
- 데이터베이스
- 클라이언트 서버 패턴
- 언리얼엔진5
- C++
- 메타 데이터
- DBMS
- Today
- Total
게임 개발자를 향해
소프트웨어 개발 방법론 본문
1. 소프트웨어 개발 방법론
소프트웨어 개발 방법론은 소프트웨어 개발, 유지보수 등을 할 때 필요한 수행방법과 이러한 일들을 효율적을 수행하려는 과정에서 필요한 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것이다.
<주요 소프트웨어 개발 방법론>
- 구조적 방법론
- 정보공학 방법론
- 객체지향 방법론
- 컴포넌트 기반(CBD) 방법론
- 제품 계열 방법론
- 애자일 방법론
<여기서 Tip!>
위 방법론 중 애자일 방법론은 초반 챕터에서 자세히 다루어서 이 챕터에선 설명하지 않는다.
위 개발 방법론 들을 아래에 자세히 설명하겠다.
아래 자세한 세부 설명이 있고 방법론마다 개발 절차가 있는데 많이 복잡하다.
필자는 방법론들의 종류와 특징만 알고 넘어가려 한다.
2. 구조적 방법론
- 구조적 방법론은 정형화된 분석절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리 중심의 방법론이다.
- 1960년대까지 가장 많이 적용되었던 소프트웨어 개발 방법론이다.
- 쉬운 이해 및 검증이 가능한 프로그램 코드를 생성하는것이 목적이다.
- 복잡한 문제를 다루기 위해 분할과 정복 원리를 적용한다.
3. 정보공학 방법론
- 정보공학 방법론은 정보 시스템의 개발을 위해 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는 자료(Data) 중심의 방법론이다.
- 정보시스템 개발 주기를 이용하여 대규모 정보 시스템을 구축하는데 적합하다.
4. 객체지향 방법론
- 객체지향 방법론은 현실 세계의 개체를 기계의 부품처럼 하나의 객체로 만들어, 소프트웨어를 개발할 때 기계의 부품을 조립하듯이 객체들을 조립해서 필요한 소프트웨어를 구현하는 방법론이다.
- 객체지향 방법론은 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택되었다.
- 객체지향 방법론의 구성요소: 객체, 클래스, 메시지 등
- 객체지향 방법론의 기본 원칙: 캡슐화, 정보은닉, 추상화, 상속성, 다형성
<여기서 Tip!>
아래는 간단한 클래스이며 위 기본원칙에 대해 설명하겠다. 만약 모르겠다면 설명한 코드만 확인하자.
class Student{
private:
int 번호;
string 이름;
int 과학점수;
int 수학점수;
protected:
public:
Cls(){}
~Cls(){}
int sum(){
int total = 과학점수 + 수학점수;
return total;
}
int sum(int 국어점수){
int total = 과학점수 + 수학점수 + 국어점수;
return total;
}
int sum(int 국어점수, int 사회점수){
int total = 과학점수 + 수학점수 + 국어점수 + 사회점수;
return total;
}
};
1. 캡슐화: 데이터와 데이터를 처리하는 함수를 하나로 묶는 것
위 코드에서 class를 이용해 학생들의 데이터와 데이터를 활용해 연산할 수 있는 함수로 묶은것이다.
2. 정보은닉: 캡슐화의 가장 중요한 개념으로 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는것.
student 클래스 안을 보면 private, prortected, public로 영역이 나누어져 있는것을 볼 수 있다.
이는 각각 public: 공공의, private: 개인적 ,사적인 이란 단어 뜻 그대로이다.
private 아래 코드들은 캡슐화된 class 외부에서 데이터를 변경할 수 없다.
public 아래에 있는 코드들은 클래스 외부에서도 사용할 수 있게 해준 것이다.
(protected는 상속성에서 다루겠다.)
3. 추상화: 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 데이터에 중점을 두어 관리하는 것이다.
우리는 위와같이 학생(객체)들을 중요한 데이터인 번호와 이름, 과학점수, 수학점수로 나누어 학생(객체)들을 관리한다.
4. 상속성: 이미 정의된 상이 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것
위 코드에 protected: 라고 있을 것이다. 이는 외부에서 그냥 사용할 수는 없고 다른 클래스가 위 클래스를 상속받아야
사용할 수 있는 것이다. (함수도 가능)
5. 다형성: 메시지에 의해 객체가 연산을 수행하게 될 때 하나의 메시지에 대해 각 객체가 가지고 있는 고유한방법으로 응답할 수 있는 능력
지금 위 클래스에는 이름이 같지만 매개변수 개수가 다른 3개의 함수가 있다.
절차지향 언어에서는 함수의 이름이 같아서 명령이 들어오면 어떤 함수를 써야하는지 구분할 수가 없다.
하지만 객체지향 언어는 매개변수의 자료형과 매개변수의 개수 등 들어오는 값이 다르면
알아서 그에 맞는 함수를 사용한다.
매개변수가 들어오지 않으면 첫 번째 함수 응답 sum()
매개변수가 한 개가 들어오면 두 번째 함수 응답 sum(int 국어점수)
매개변수가 두 개가 들어오면 세 번째 함수 응답 sum(int 국어점수, int 사회점수)
또 이름은 같은데 매개변수의 자료형이 다르거나 하면 알아서 인식해줌
위는 개발자로서 무조건 알고있어야 하는 개념이고, 이거 모르면 정처기 따는 것도 의미가 없다.
객체지향의 기초중의 기초이며 이를 모르고있다면 C 이후에 만들어진 객체지향 언어인 C++, Java 등을 다룰 수 없다
5. 컴포넌트 기반(CBD;Component Based Design)
컴포넌트 기반 방법론은 기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론이다.
6. 제품 계열 방법론
- 제품계열 방법론은 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론이다.
- 임베디드 소프트웨어를 만드는데 적합하다.
- 제품 계열 방법론은 영역공학과 응용공학으로 나뉘며 이들의 연계를 위해 제품의 요구사항, 아키텍처, 조립 생산이 필요하다.
임베디드 소프트웨어: 밥통같은 가전제품에 들어가는 소프트웨어로 코드가 간단하고 작아야 하기 때문에 절차지향인 C가 주로 사용된다.

읽어주셔서 감사합니다!
정처기 화이팅!
'정보처리기사 > 1. 요구사항 확인' 카테고리의 다른 글
비용 산정 기법 (0) | 2022.09.01 |
---|---|
S/W 공학의 발전적 추세 (0) | 2022.08.31 |
패키지 다이어그램(Package Diagram) (2) | 2022.08.28 |
동적 모델링 (0) | 2022.08.27 |
정적 모델링 (0) | 2022.08.27 |