관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

요구사항 확인 7 - Session 19~20 : 소프트웨어 개발 방법론 및 S/W 공학의 발전적 추세 본문

자격증 공부/정보처리기사 실기

요구사항 확인 7 - Session 19~20 : 소프트웨어 개발 방법론 및 S/W 공학의 발전적 추세

huenuri 2024. 9. 23. 10:27

이어서 소프트웨어 개발 방법론에 대해서 학습해보려고 한다. 추가로 2차 학습을 시작해 본다.


 

 

 

 

세션 19 - 소프트웨어 개발 방법론

 

1. 소프트웨어 개발 방법론

 

소프트웨어 개발 방법론의 종류를 기억하고, 어떤 개발 방법론을 말하는지 알아낼 수 있도록 각각의 특징을 잘 정리하기


 

 

 

2. 구조적 방법론

 

전에는 절차적인 순서에 따라 프로그램을 개발했다. 구조적 방법론은 특정한 기능을 따로 분리시켜 놓고 필요할 때 불러다 쓰는 것을 말한다. 프로그램의 각각의 기능을 모듈화, 부품화를 시켜 필요한 기능들을 가져다 쓴다.

분할과 정복이란 어려운 코드가 있을 때 이것을 하나하나 분리해서 접근하는 것이다.

 

구조적 방법론, 정보공학 방법론, 객체지향 방법론은 진행 절차를 나열하여 쓸 수 있도록 해야 한다.


 

 

3. 정보공학 방법론

 

예전에 수기로 작성했던 것들을 실제 업무 위주로 프로그램을 개발하기 위해 만든 것이다. 만약에 창고에서 물건을 관리한다면 물건 하나하나가 자료가 된다.


 

 

 

4. 객체지향 방법론

 

현실 세계의 개체는 사람, 자동차, 컴퓨터, 고양이 등과 같이 우리 주위에서 사용되는 물질적이거나 개념적인 것으로 명사로 사용된다.

 

 

 

객체지향 방법론의 구성 요소와 기본 원칙을 정리해 보면 다음과 같다.

  1. 객체(Object) : 데이터와 데이터를 처리하는 함수를 묶어놓은 하나의 소프트웨어 모듈
  2. 클래스(Class) : 공통된 속성과 연산을 갖는 객체의 집합으로 객체의 일반적인 타입
  3. 메시지(Message) : 객체들 간에 상호작용을 하는 데 사용되는 수단으로, 객체에 어떤 행위를 하도록 지시하는 명령 또는 요구 사항
  4. 캡슐화(Encapsulation) : 데이터와 데이터를 처리하는 함수를 하나로 묶는 것
  5. 정보 은닉(Information Hiding) : 캡슐화에서 가장 중요한 개념으로, 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것
  6. 추상화(Abstraction) : 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에 중점을 두어 개략화하는 것
  7. 상속성(Inheritance) : 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것
  8. 다형성(Polymorphism) : 메시지에 의해 객체가 연산을 수행하게 될 때 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력

 

 

 

5. 컴포넌트 기반(CBD)

 

자주 사용하는 모듈을 묶어서 지원해 주는 것을 라이브러리라고 한다. 이것은 수많은 기능들을 종류별로 따로 묶어 놓아 지원하는 것을 컴포넌트라고 한다. 예를 들어 통신, 네트워크, 데이터베이스별로 분류하는 것이다.


 

 

 

6. 제품 계열 방법론

 

임베디드 소프트웨어(Embedded Software)란 디지털 TV, 전기밥솥, 냉장고, PDA 등 해당 제품의 특정 기능에 맞게 특화되어 제품 자체에 포함된 소프트웨어를 말한다. 옛날에는 컴퓨터는 사무실에 한정되어 사용해서 한 가지 기능만 되었다. 하지만 요즘에는 TV에 인터넷이 되고, 스마트폰, 스마트팜 등 적용시키고 싶은 다양한 분야에 접목시킬 수 있다.

 

 

강의 시간이 정말 길었지만 다 시청해 보았다. 중간중간에 딴생각도 많이 나고 집중력이 흐려졌지만 그래도 다시 집중하려고 노력하는 중이다.

별로 재미는 없지만 해야 하니까 하는 거다. 난 공부할 때 음악을 틀으면 집중이 진짜 안 되는데 선생님들은 꼭 음악을 트는 걸 좋아하신다. 헤드폰을 껴도 소리가 다 들려 정말 몰입이 되지 않고 있다.


 

 

 

 

세션 20 - S/W 공학의 발전적 추세

 

1. 소프트웨어 재사용

 

이미 만들어놓은 것 중 잘 만든 것을 뽑아내는 것을 생성 중심이라 하고, 모듈 단위로 만들어놓은 것을 가져다 쓰는 것을 합성 중심이라고 한다.

소프트웨어를 재사용함으로써 얻을 수 있는 이점과 소프트웨어 재사용 방법을 명확히 파악해 두기

 


 

 

 

2. 소프트웨어 재공학

 

 

다음에도 사용할 수 있도록 프로그램 소스로 문서를 만든다. 원래는 문서를 보고 소스 코드를 구현하는 것을 역공학이라고 한다. 문서를 수정하고 소스 코드를 수정하는 것을 재공학이라고 한다. 건물을 완전히 허물고 새로 짓는 것이 아니라 리모델링을 하는 것이다.

★ 소프트웨어 재공학은 유지보수의 생산성을 향상한다는 것을 중심으로 개념을 파악해 두기


 

 

 

3. CASE

 

자동화 도구는 소프트웨어 공학과 관련된 작업 중에서 하나의 작업을 자동화하는 패키지를 의미한다.


 

 

학습을 마치고

 

필기 때 공부했지만 그때는 이처럼 자세히 학습하지 않고 이론만 알고 넘겼던 것 같다. 선생님이 정말 설명을 잘해주신다. 이 책을 선택하길 정말 잘했다는 생각이 든다.