정보처리기사

[정보처리기사 요약 1-5] 개발 방법론부터 재공학까지

Hong's_Computer 2026. 2. 23. 16:14
반응형
본문에 오류가 있을 수 있음을 감안하고 봐주시길 바랍니다.
# 문제 풀이 중 오답노트 하면서 나온 내용을 정리한 것

 

소프트웨어 개발 방법론: 소프트웨어 개발, 유지보수 등에 필요한 여러 가지 일들의 수행 방법과 이러한 일들을 효율적으로 수행하려는 과정에서 필요한 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것이다. 목적은 소프트웨어의 생산성과 품질 향상이다.

  • 구조적 방법론: 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리(Process) 중심의 방법론이다. 1970년대까지 가장 많이 적용되었던 소프트웨어 개발 방법론이다. 분할과 정복 원리를 적용한다.  # 자료 흐름도(DFD)·자료 사전(DD)·소단위 명세서의 특징을 갖는 소프트웨어 개발 방법론
    • 타당성 검토 단계 → 계획 단계 요구사항 단계 설계 단계  구현 단계 시험 단계 운영/유지보수 단계
  • 정보공학 방법론: 정보 시스템 개발을 위해 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는 자료(Data) 중심의 방법론이다. 데이터베이스 설계를 위한 데이터 모델링으로 Entity-Relationship Diagram(개체 관계도) 사용
    • 정보전략 계획 수립 단계 → 업무 영역 분석 단계 → 업무 시스템 설계 단계 → 업무 시스템 구축 단계
  • 객체지향 방법론: 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체(Object)로 만들어 소프트웨어를 개발할 때 기계의 부품을 조립하듯이 객체들을 조립해서 필요한 소프트웨어를 구현하는 방법론이다. 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택되었다. # UML
    • 객체지향 방법론의 구성 요소: 객체(데이터와 데이터를 처리하는 함수를 하나로 묶어놓은 소프트웨어 모듈, 객체의 상태는 속성값에 의해 정의된다. 자료 구조 + 함수, 상태·동작·고유 식별자를 가진 모든 것), 클래스(데이터를 추상화하는 단위), 메시지 등
    • 객체지향 방법론의 기본 원칙: 캡슐화, 정보 은닉, 추상화, 상속성, 다형성 등
    • 요구사항 분석 단계 → 설계 단계 → 구현 단계 → 테스트 및 검증 단계 → 인도 단계

        - 캡슐화(Encapsulation): 데이터와 데이터를 처리하는 함수를 하나로 묶는 것

        - 정보 은닉(Information hiding): 다른 객체로부터 자신의 정보를 감추어 다른 모듈이 접근 및 변경하지 못하도록 하는 기법

        - 다형성(Polymorphism): 하나의 메시지에 다르게 응답할 수 있는 것(메소드 오버라이딩)

        - 추상화(Abstraction): 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 개략화하는 것 

        - 상속(Inherutance): 이미 정의된 상위 클래스의 모든 속서오가 연산을 하위 클래스가 물려받는 것

  • 컴포넌트 기반(CBD) 방법론: 기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론이다. 컴포넌트(역할을 가지고 독립적으로 존재할 수 있는 시스템의 부분으로 인터페이스를 통해서만 접근할 수 있다.)의 재사용이 가능하여 시간과 노력을 절감할 수 있다. 새로운 기능을 추가하는 것이 간단하여 확장성이 보장되며 유지보수 비용을 최소화하고 생산성 및 품질을 향상시킬 수 있다.
    • 개발 준비 단계 분석 단계(사용자 요구사항 정의서) → 설계 단계 → 구현 단계 → 테스트 단계 → 전개 단계 → 인도 단계
  • 제품 계열 방법론: 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론이다. 임베디드 소프트웨어를 만드는 데 적합하다.
    • 영역 공학: 영역 분석, 영역 설계, 핵심 자산을 구현하는 영역이다.
    • 응용 공학: 제품 요구 분석, 제품 설계, 제품을 구현하는 영역이다.
  • 애자일 방법론: 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발 과정을 진행하는 방법론이다. 절차와 문서보다 사람과 작동하는 소프트웨어를 중시하며 익스트림 프로그래밍(XP), 스크럼(Scrum) 등이 대표적이다.

 

 

소프트웨어 재사용: 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용하는 것이다. 소프트웨어 개발의 품질과 생산성을 높이기 위한 방법이다.

  • 합성 중심(Composition-Based): 전자 칩과 같은 소프트웨어 부품, 즉 블록을 만들어서 끼워 맞춰 소프트웨어를 완성시키는 방법으로 블록 구성 방법이라고도 한다.
  • 생성 중심(Generation-Based): 추상화 형태로 써진 명세를 구체화하여 프로그램을 만드는 방법으로 패턴 구성 방법이라고도 함
  • 이점: 개발시간과 비용을 단축시킨다. 소프트웨어 개발의 생산성을 높인다. 프로젝트 실패의 위험을 줄여 준다. But, 새로운 개발 방법론의 도입은 어렵다.

 

 

소프트웨어 재공학: 새로운 요구에 맞도록 기존 시스템을 이용하여 보다 나은 시스템을 구축하고 새로운 기능을 추가하여 소프트웨어 성능을 향상시키는 것이다. 유지보수의 생산성 향상을 통해 소프트웨어 위기를 해결하는 방법이다.

  • 장점: 소프트웨어의 품질 향상, 소프트웨어의 생산성 증가, 소프트웨어의 수명 연장, 소프트웨어의 오류 감소
  • 단점: 기존 시스템에 대한 깊은 이해가 필요하여 분석에 많은 시간이 소요되며 유지보수에 대한 장기적 고려와 함께 많은 초기 비용과 노력이 필요하다.
  • 이식(Migration): 기존 소프트웨어 시스템을 새로운 기술 또는 하드웨어 환경에서 사용할 수 있도록 변환하는 작업

 

소프트웨어 역공학(Reverse Engineering): 기존 소프트웨어를 분석하여 소프트웨어 개발 과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만들어내는 활동, 주로 원시 코드(Source Code)를 분석하여 설계 명세서나 UML 다이어그램 등을 추출해 내는 유지보수 단계의 작업

 

 

소스 코드 인스펙션(Inspection): 프로그램을 직접 실행하지 않고, 전문가 또는 동료들이 프로그램의 소스나 코드에서 결함을 찾아내고 이를 확인하려는 공식적인 정적 리뷰(Static Review) 작업

 

 

CASE(Computer-Aided Software Engineering): 소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것이다.(표준화된 개발 환경 구축 및 문서 자동화 기능을 제공), 정형화된 구조 및 방법을 소프트웨어 개발에 적용하여 생산성 향상을 구현한다. 소프트웨어 모듈의 재사용성이 향상되고 유지보수를 간편하게 수행할 수 있다. 소프트웨어의 품질이 향상된다. 다양한 시스템에서 활용되는 소프트웨어이다.

  • 원천 기술: 구조적 기법, 프로토타이핑 기술, 응용 프로그래밍 기술, 정보 저장소 기술, 분산처리 기술

 

 

코드 오류(Code Error)

  • 필사 오류(Transcription Error, 오자 오류): 데이터 입력 시 임의의 한 자리를 다른 글자로 잘못 기입해서 발생하는 오류(예시: 원래 코드 12345 → 입력 코드 12349 (5를 9로 잘못 입력))
  • 전위 오류(Transposition Error): 입력 시 인접한 두 문자의 자리가 서로 뒤바뀌어 기입되는 오류(예시: 원래 코드 12345 → 입력 코드 12435 (3과 4의 자리가 바뀜))
  • 추가 오류(Addition Error): 데이터 입력 시 실수로 불필요한 한 자리(또는 그 이상)를 더 기입해서 발생하는 오류(예시: 원래 코드 12345 → 입력 코드 123456 (끝에 6이 추가됨))
  • 생략 오류(Omission Error): 데이터 입력 시 실수로 한 자리(또는 그 이상)를 빼먹고 기입해서 발생하는 오류(예시: 원래 코드 12345 → 입력 코드 1245 (3이 누락됨))
  • 이중 오류(Double Error): 필사 오류나 전위 오류 등 두 개 이상의 문자에 오류가 동시에 발생하는 경우(예시: 원래 코드 12345 → 입력 코드 12439 (3과 4가 바뀌고, 5가 9로 잘못 입력됨))
  • 임의 오류(Random Error): 위의 특정 규칙에 속하지 않거나 여러 오류가 무작위로 결합되어 발생한 알 수 없는 형태의 오류(예시: 원래 코드 12345 → 입력 코드 98765 (전혀 다른 값으로 입력됨))
반응형