게임 개발자를 향해

소프트웨어 개발 방법론 본문

정보처리기사/1. 요구사항 확인

소프트웨어 개발 방법론

뿌단이 2022. 8. 31. 20:55

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