관리 메뉴

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

[소프트웨어 개발] 2장 통합 구현 1 - 모듈 구현 본문

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

[소프트웨어 개발] 2장 통합 구현 1 - 모듈 구현

huenuri 2024. 7. 31. 12:58

2과목을 며칠 전부터 시작했으나 대부분 강의만 듣고 문제만 풀다 보니 머릿속에 잘 들어오지 않는 것 같아 다시 기본 학습으로 돌아가기로 했다. 시간이 많이 걸릴지 모르지만, 모든 공부는 개념을 이해하는 것이 기본이다. 그다음에 암기를 하든 적용을 하든 해야지 기본을 모르는 상태에서는 그저 수박 겉핥기식의 공부밖에 되지 않는다.

 

이러한 학습은 시험이 끝나면 모두 잊어버리는 벼락치기에 불과하다. 진짜 공부를 원한다면 그저 시험 위주의 학습이 아닌 진짜 배움이 되는 공부를 해야 한다.


 

 

 

학습하기 전에 기억할 것

  1. 장비나 도구가 완벽하게 갖추어져야 공부를 할 수 있는 것이 아니다. 지금 내가 갖고 있는 노트북과 책 한 권으로도 충분히 할 수 있다.
  2. 예쁘게 보기 좋게 정리하는 것이 전부가 아니다. 내가 이해되고 기억될 수 있다면 그것으로 충분하다.

 

학습 시간

오후 12시 20분 ~ 12시 50분


 

 

 

 

1. 단위 모듈 구현

 

1) 개념

  • 소프트웨어 개발에 있어 기능을 단위 모듈별로 분할하고 추상화하여 성능을 향상시키고, 유지보수를 효과적으로 하기 위한 구현 기법
  • 모듈은 소프트웨어 구조를 이루며, 다른 것들과 구별될 수 있는 독립적인 기능을 갖는 단위
  • 인터페이스 · 데이터베이스 접근 모듈 등 통합 구현에 필요한 단위 컴포넌트를 구현

 

2) 원리

  1. 정보 은닉 : 어렵거나 변경 가능성이 있는 모듈을 타 모듈로부터 은폐
  2. 분할과 정복 : 복잡한 문제를 분해, 모듈 단위로 문제 해결
  3. 데이터 추상화 : 각 모듈 자료 구조를 액세스하고 수정하는 함수 내에 자료 구조의 표현 내역을 은폐
  4. 모듈 독립성 : 낮은 결합도와 높은 응집도를 가짐

 

 

3) 구현 단계에서의 작업 절차

1. 코딩 계획 : 기능을 실제 수행할 수 있도록 수행방법을 논리적으로 결정

2. 코딩 : 논리적으로 결정한 문제 해결 방법을 특정 프로그래밍 언어를 사용하여 구현

 

3. 컴파일 : 작성한 코드를 다른 언어의 코드(주로 기계어)로 변환하는 단계

 

4. 테스트 : 기능이 요구사항을 만족하는지, 예상과 실제 결과가 어떤 차이를 보이는지 검사하고 평가하는 단계

 

 

 

4) 재사용 기법

 

개념

이미 개발되어 그 기능, 성능 및 품질을 인정 받았던 소프트웨어의 전체 또는 일부분을 다시 사용하는 기법

 

종류

크게 재공학과 재개발로 나뉘어진다.

 

1. 재공학 : 기존 소프트웨어를 버리지 않고 기능을 개선시키거나 새로운 소프트웨어로 재활용

  • 장점 : 위험부담 감소, 비용 절감, 개발 기간 단축, 시스템 명세의 오류 억제

분석(Analysis) : 기존 스프트웨어 명세서를 확인하여 소프트웨어 동작을 이해하고, 재공학 대상을 선정

재구조(Restructing) : 상대적으로 같은 추상적 수준에서 하나의 표현을 다른 형태로 바꿈

역공학(Reverse Engineering) : 기존 소프트웨어를 분석하여 설계도를 추출하거나 다시 만들어냄

이식(Migration) : 소프트웨어 재공학의 주요 활동 중 기존 소프트웨어 시스템을 새로운 기술 또는 하드웨어 환경에서 사용할 수 있도록 변환

 

2. 재개발 : 기존 시스템 내용을 참조하여 완전히 새로운 시스템을 개발하거나 새로운 기능을 추가

 

재사용 규모에 따른 분류

1. 함수와 객체 : 클래스나 메서드 단위의 소스 코드를 재사용

2. 컴포넌트 : 자체에 대한 수정 없이 인터페이스를 통해 통신하는 방법

 

3. 애플리케이션 : 공통된 기능을 제공하는 애플리케이션을 공유


 

 

 

2. 단위 모듈 테스트

 

1) 개념

  • 모듈의 개별적인 코드 단위가 예상대로 작동하는지 확인하는 기법
  • IDE 도구를 활용하여 개별 단위 모듈에 대한 디버깅을 수행

IDE 도구(뒤에서 등장)
코딩, 디버그, 컴파일, 배포 등 프로그램 개발과 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어

 

테스트와 디버그의 차이

테스트 : 시스템이 정해진 요구를 만족하는지 예상과 실제 결과가 어떤 차이를 보이는지 검사하고 평가하는 단계

  • 오류를 찾는 작업

디버그 : 개발 중에 발생하는 시스템의 논리적인 오류나 버그를 찾아서 수정하는 과정

  • 오류를 수정하는 작업

 

 

2) 종류

블랙박스 테스트(명세 기반)

  • 프로그램 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트
    소프트웨어의 특징, 요구사항, 설계 명세서 등에 초점을 맞춤

화이트박스 테스트(구조 기반)

  • 단위 모듈 테스트의 가장 기본적 방법. 모듈 내부의 소스를 보면서 수행하는 테스트
  • 소스 코드를 보면서 테스트 케이스를 다양하게 만들어 테스트를 수행

 

 

 

 

 

틀린 문제 기출문제 분석

 

1. 시스템 재공학의 주요 활동 4가지

 

이 부분은 시험에 출제되는 부분이니 꼭 암기해야 한다. 영어로도 암기하자!


 

 

 

2. 단위 모듈 구현과 컴포넌트의 개념

 

답이 모듈인 줄 알았는데 아니었다. 컴포넌트가 무엇인지 그 차이를 확실히 구별하도록 하자. 단순히 뜻을 암기해서는 문제가 요구하는 답을 찾기 어렵다. 의미를 이해해야 한다.


 

 

 

학습을 마치고

여기까지 해서 2장의 첫 번째 부분 학습을 마쳐보았다. 전에는 표의 내용은 대부분 스캔하여 붙여 넣었는데, 이렇게 하지 않고 일일이 작성하여 쓰니 더 기억이 잘 되는 것 같았다.
분명 학습을 다 마쳤고 강의도 들었고 문제까지 풀었음에도 여전히 머릿속에 정리되지 않음을 느꼈다. 그건 아마도 형식적인 공부를 했기에 그런 것이다.

 

앞으로는 시간이 걸리더라도 귀찮더라도 이렇게 정리하고 학습을 진행할 예정이다. 기본을 건너뛰면 응용을 할 수가 없다. 모든 학습은 개념을 이해하는 것이 먼저 수반되어야 함을 반드시 기억하자!