관리 메뉴

나구리의 개발공부기록

1장 - 소프트웨어 개발 방법론 활용 | 섹션1. 소프트웨어 개발 방법론, 섹션2. S/W 공학의 발전적 추세 본문

2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비)/필기 5강 - 정보시스템 구축 관리

1장 - 소프트웨어 개발 방법론 활용 | 섹션1. 소프트웨어 개발 방법론, 섹션2. S/W 공학의 발전적 추세

소소한나구리 2024. 5. 7. 15:25

2024년도 시나공 필기 책 내용 정리 


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

 

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

 

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

2. 구조적 방법론

 

  • 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리 중심의 방법론
  • 1960년대까지 가장 많이 적용되었던 소프트웨어 개발 방법론
  • 쉬운 이해 및 검증이 가능한 프로그램 코드를 생성하는 것이 목적
  • 복잡한 문제를 다루기 위해 분할과 정복(Divide and Conquer)원리를 적용함
구조적 방법론의 절차 (왼쪽부터 오른쪽으로 진행)
타당성 검토 단계 계획 단계 요구사항 단계 설계 단계 구현 단계 시험 단계 운용/유지보수 단계

3. 정보공학 방법론

 

  • 정보 시스템의 개발을 위해 계획, 분석, 설계, 구축에 정형화된 기법을들 상호 연관성 있게 통합 및 적용하는 자료(Data) 중심의 방법론
  • 정보 시스템 개발 주기를 이용하여 대규모 정보 시스템을 구축하는데 적합
  • 데이터베이스 설계를 위한 데이터 모델링으로 개체 관계도(ERD; Entity-Relationship Diagram)를 사용
정보공학 방법론의 절차 (왼쪽부터 오른쪽으로 진행)
정보 전략 계획 수립 단계 업무 영역 분석 단계 업무 시스템 설계 단계 업무 시스템 구축 단계

4. 객체지향 방법론

 

  • 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체로 만들어 소프트웨어를 개발할 때 기계의 부품을 조립하듯이 객체들을 조립해서 필요한 소프트웨어를 구현하는 방법론
  • 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택되었음
  • 설계 과정에서 주로 사용되는 모델링 언어에는 패키지 다이어그램(Package Diagram), 배치 다이어그램(Deployment Diagram), 상태 전이도(State Transition Diagram) 등이 있음
객체지향 방법론의 절차 (왼쪽부처 오른쪽으로 진행)
요구 분석 단계 설계 단계 구현 단계 테스트 및 검증 단계 인도 단계

5. 컴포넌트 기반(CBD; Component Based Design) 방법론

 

  • 기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
  • 컴포넌트의 재사용이 가능하여 시간과 노력을 절감할 수 있음
  • 새로운 기능을 추가하는 것이 간단하여 확장성이 보장됨
  • 유지 보수 비용을 최소화하고 생산성 및 품질을 향상시킬 수 있음
컴포넌트 기반 방법론의 절차 (왼쪽부터 오른쪽으로 진행)
개발 준비 단계 분석 단계 설계 단계 구현 단계 테스트 단계 전개 단계 인도 단계

6. 애자일(Agile) 방법론

 

  • 민첩한, 기민한 이라는 의미로 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발 과정을 진행하는 방법론
  • 소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항에 적합
  • 대표적인 종류에는 익스트림 프로그래밍(XP), 스크럼, 칸반, 크리스탈 등이 있음
애자일 방법론의 절차 (왼쪽부터 오른쪽으로 진행)
사용자 스토리 반복 주기
계획  개발  승인 테스트

7. 제품 계열 방법론

 

  • 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법
  • 임베디드 소프트웨어를 만드는데 적합
  • 영역공학 : 영역 분석, 영역 설계, 핵심 자산을 구현하는 영역
  • 응용공학 : 제품 요구 분석, 제품 설계, 제품을 구현하는 영역
  • 영역공학과 응용공학의 연계를 위해 제품의 요구사항, 이키텍처, 조립 생산이 필요

제품 계열 방법론의 절차

https://velog.io/@alpaka206/126.-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EA%B0%9C%EB%B0%9C-%EB%B0%A9%EB%B2%95%EB%A1%A0 / 출처


섹션2. S/W 공학의 발전적 추세

 

1. 소프트웨어 재사용의 개요

 

  • 이미 개발되어 인정받은 소프트웨어의 전체 혹은 일부분을 다른 소프트웨어 개발이나 유지에 사용하는 것
  • 소프트웨어 개발의 품질과 생산성을 높이기 위한 방법으로 기존에 개발된 소프트웨어와 경험, 지식 등을 새로운 소프트웨어에 적용
  • 재사용의 이점

    • 개발 시간과 비용을 단축
    • 소프트웨어 품질을 향상
    • 소프트웨어 개발의 생산성을 향상
    • 프로젝트 실패의 위험을 감소
    • 시스템 구축 방법에 대한 지식을 공유하게 됨
    • 시스템 명세, 설계, 코드 등 문서를 공유하게 됨

2. 소프트웨어 재사용 방법

합성 중심
(Composition - Based)
전자 칩과 같은 소프트웨어 부품, 즉 블록(모듈)을 만들어서 끼워 맞추어 소프트웨어를 완성시키는 방법으로 블록 구성 방법이라고도 함
생성 중심
(Generation - Based)
추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방법으로 패턴 구성 방법이라고도 함

3. 소프트웨어 재공학의 개요

 

  • 새로운 요구에 맞도록 기존 시스템을 이용하여 보다 나은 시스템을 구축하고 새로운 기능을 추가하여 소프트웨어 성능을 향상시키는 것
  • 유지보수 비용이 소프트웨어 개발 비용의 대부분을 차지하는 문제를 염두에 두어 기존 소프트웨어의 데이터와 기능들의 개조 및 개선을 통해 유지보수성과 품질을 향상 시키려는 기술
  • 기존 소프트웨어의 기능을 개조하거나 개선하므로 예방(Preventive) 유지보수 측면에서 소프트웨어 위기를 해결하는 방법임
  • 소프트웨어의 수명이 연장되고 소프트웨어 기술이 향상될 뿐 아니라 소프트웨어 개발 기간도 단축됨
  • 소프트웨어에서 발생할 수 있는 오류가 줄어들고 비용이 절감됨
분석 (Analysis) 기존 소프트웨어의 명세서를 확인하여 소프트웨어의 동작을 이해하고 재공학할 대상을 선정하는 활동
재구성
(Restructuring)
기존 소프트웨어의 구조를 향상시키기 위하여 코드를 재구성하는 활동
소프트웨어의 기능과 외적인 동작은 바뀌지 않음
역공학
(Reverse
Engineering)
기존 소프트웨어를 분석하여 소프트웨어 개발 과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만들어 내는 활동
일반적인 개발 단계와는 반대방향으로 기존 코드를 복구하거나 기존 소프트웨어의 구성 요소와 그 관계를 파악하여 설계도를 추출
이식 (Migration) 기존 소프트웨어를 다른 운영체제나 하드웨어 환경에서 사용할 수 있도록 변환하는 활동

4. CASE의 개요

 

  • CASE(Computer Aided Software Engineering)는 소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화 하는것
  • 객체지향 시스템, 구조적 시스템 등 다양한 시스템에서 활동되는 자동화 도구
  • 요구 분석, 설계 과정을 지원하는 상위 CASE 도구와 구현, 테스트 과정을 지원하는 하위 CASE도구로 구분됨
  • CASE 사용의 이점

    • 소프트웨어 개발 기간을 단축하고 개발 비용을 절감할 수 있음
    • 자동화된 기법을 통해 소프트웨어 품질이 향상됨
    • 소프트웨어의 유지보수를 간편하게 수행할 수 있음
    • 소프트웨어의 생산성이 향상되고 생산, 운용 활동을 효과적으로 관리 및 통제할 수 있음
    • 품질과 일관성을 효과적으로 제어할 수 있음
    • 소프트웨어 개발의 모든 단계에 걸친 표준을 확립할 수 있음
    • 소프트웨어 모듈의 재사용성이 향상됨
    • 소프트웨어의 개발 기법을 실용화할 수 있고 문서화를 쉽게 작성할 수 있음
  • CASE의 주요 기능 : 소프트웨어 생명 주기 전 단계의 연결, 다양한 소프트웨어 개발 모형 지원, 그래픽 지원, 모델들의 모순 검사 및 오류 검증, 자료흐름도 작성 등
  • CASE의 원천 기술: 구조적 기법, 프로토 타이핑, 자동 프로그래밍, 정보 저장소, 분산처리