소프트웨어 공학의 개념

소프트웨어

소프트 웨어의 개념
  • 컴퓨터를 동작시키고 어떤 일의 처리 순서와 방법을 지시하는 명령어의 집합인 프로그램과 프로그램의 수행에 필요한 절차, 규칙, 관련 문서 등을 총칭
  • 프로그램
    • 컴퓨터를 통해 일련의 작업을 처리하기 위한 명령어와 관련된 데이터의 집합
  • 자료구조(Data Structure)
    • 컴퓨터 기억 장치 내에 자료의 표현, 처리, 저장 방법 등을 총칭하는 것으로 데이터 간의 논리적 관계나 처리 알고리즘을 의미함
  • 문서(paper)
    • 소프트 웨어를 개발함에 있어서 사용자 설명서, 소프트웨어 요구분석서, 평가서, 명세서, 프로젝트 계획서, 검사 계획서 등을 의미함
소프트웨어 특징
상품성
  • 소프트 웨어를 개발하면 상품이 되어 판매가 됨
복잡성
  • 개발하는 과정이 복잡하고 관리가 어려움
변경가능성
  • 프로그램을 일부 수정하여 업그레이드 및 오류 수정 등을 할 수 있음
복제성
  • 복제가 용이해 쉽게 복사, 유통이 가능
시스템 개요와 기본요소
시스템의 개요
  • 컴퓨터로 처리 가능한 자료를 입력하고 저장, 처리, 가공해 출력할 수 있도록 설계/구현된 정보체계를 의미함
  • 하나의 목적을 위해 다양한 요소가 유기적으로 결합된 것을 의미
기본요소
  • 입력, 처리, 출력, 제어, 피드백으로 구성됨
소프트웨어 위기(software crisis)
  • 컴퓨터의 발달 과정에서 소프트웨어의 개발 속도가 하드웨어의 개발 속도를 따라가지 못해 사용자들의 요구사항을 감당할 수 없는 문제가 발생함을 의미
  • 소프트웨어 위기의 원인

    • 하드웨어 비용을 초과하는 개발비용의 증가
    • 개발 기간의 지연
    • 개발인력 부족 및 인건비 상승
    • 성능 및 신뢰성 부족
    • 유지보수의 어려움에 따른 엄청난 비용

소프트웨어 공학(Software Engineering)

소프트웨어 공학의 이해

  • 경제적으로 신뢰도 높은 소프트웨어를 만들기 위한 방법, 도구와 절차들의 체계를 의미
  • IEEE(전기/전자기술협회)는 소프트웨어의 개발, 운용, 유지보수 및 파기에 대한 체계적인 접근 방법이라 정의

소프트웨어 공학 계층구조

  • 도구

    • 프로세스와 방법을 처리하는 기능을 제공
  • 방법론

    • 소프트웨어를 설계하는데 기술적인 방법을 제공
  • 프로세스

    • 소프트웨어의 가장 기초
    • 개발에 사용되는 방법론과 도구가 적용되는 순서를 의미

소프트웨어 공학의 목표

  • 생산성과 품질 향상
  • 최소비용으로 단기간에 시스템에 적합한 소프트웨어를 개발

재공학

재공학

소프트웨어 재공학(Software Reengineering)

  • 소프트웨어 위기를 개발의 생산성이 아닌 유지보수의 생산성으로 해결하려는 방법
  • 현재의 시스템을 변경하거나 재구조화(Restructuring)
    • 재구조화는 재공학의 한 유형으로 사용자의 요구사항이나 기술적 설계의 변경 없이 프로그램을 개선하는 것
  • 소프트웨어 재공학 관점에서 가장 연관 깊은 유지보수 유형은 예방 유지보수(Preventive Maintenance)

재공학의 장점, 목표 및 과정

장점
  • 프로젝트 실패 위험감소
목표
  • 유지보수성 향상이 최우선 목표
  • 복잡한 시스템을 다루는 방법 구현
  • 다른 view의 생성
  • 잃어버린 정보의 복구 및 제거
  • 재사용을 수월하게하며 소프트웨어의 수명 연장
과정

[분석: Analysis]>[구성: Restructuring]>[역공학: Reverse Engineering]>[이식: Migration]

역공학(Reverse Engineering)

  • 소프트웨어 분석 기법
  • 역공학의 가장 간단하고 오래된 형태는 재문서화

CASE; Computer Aided Software Engineering

CASE란?
  • 소프트웨어 개발과정에서 사용되는 요구분석, 설계, 구현, 검사 및 디버깅 과정을 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 작업
  • 자료 흐름도 등의 다이어그램을 쉽게 작성하게 해주는 소프트웨어 CASE 도구
  • 작업 과정 및 데이터 공유를 통해 작업자간의 커뮤니케이션을 증대함
CASE가 제공하는 기능
  • 신속한 개발 가능, 오류 수정 용이성 > 소프트웨어 품질 향상

  • 소프트웨어 생명 주기의 전 단계를 연결해주고 자동화시켜주는 통합된 도구를 제공해주는 기술

  • 소프트웨어 시스템의 문서화 및 명세화를 위한 그래픽 기능을 제공

  • 소프트웨어 개발 단계의 표준화를 가능케하고 자료 흐름도 작성기능 제공

  • 모델들 사이의 모순 검사 기능을 제공하며 다양한 소프트웨어 개발 모형을 지원

  • 원천기술

    • 구조적기법
    • 프로토타이핑 기술
    • 정보저장소 기술
CASE의 분류
상위(Upper) CASE
  • 요구 분석 및 설계 단계 지원
    • 모델 간 모순 검사 기능
    • 모델 오류 검증 기능
    • 자료 흐름도 작성 기능
하위(Lower) CASE
  • 소스 코드 작성, 테스트, 문서화 과정 지원
통합(Integrate) CASE
  • 소프트웨어 개발 주기 전 과정 지원
요구사항 분석을 위한 CASE 도구
SADT(Structured Analysis and Design Technique)
  • softTech사에서 개발
  • 시스템 정의, 소프트웨어 요구사항 분석, 시스템/소프트웨어 설계를 위해 널리 이용되어 온 구조적 분석 및 설계 도구
  • 구조적 요구 분석을 하기 위해 블록 다이어그램을 채택한 자동화 도구
REM(Software Requirements Engineering Methodology) = RSL/REVS
  • TRW사가 우주 국방 시스템 그룹에 의해 실시간 처리 소프트웨어 시스템에서 요구사항을 명확히 기술하도록 할 목적으로 개발
  • RSL과 REVS를 사용하는 자동화 도구
    • RSL(Requirement Statement Language)
      • 요소, 속성, 관계, 구조들을 기술하는 요구사항 기술언어
    • REVS(Requirement Engineering and Validation System)
      • RSL로 기술된 요구사항들을 자동으로 분석하여 요구사항 분석 명세서를 출력하는 요구사항 분석기

소프트웨어 개발 방법론

소프트웨어 설계 방법론

소프트웨어 생명주기(Software Life Cycle)

  • 소프트웨어 제품의 개념 형성에서 시작하여 운용/유지보수에 이르기까지 변화의 모든 과정

[타당성 검토]>[개발 계획]>[요구사항 분석]>[설계]>[구현]>[테스트]>[운용]>[유지보수]

폭포수(Waterfall Model) 모형의 개요

  • 선형 순차적 모델
  • Boehm이 제시한 고전적 생명주기 모형
  • 소프트웨어 개발 과정의 각 단계가 순차적으로 진행

❗️ 나선형 모형(Spiral Model)

  • 점증적 모형, 집중적 모형
  • Boehm이 제시
  • 반복적인 작업을 수행하는 점증적 생명주기 모형
  • 유지보수 과정이 필요없음
  • 소프트웨어 개발 중 발생할 수 있는 위험을 관리하고 위험을 최소화하는 것이 목적
  • 나선을 따라 돌아가면서 각 개발 순서를 반복하여 수행하는 점진적 방식으로 누락된 요구사항 추가 가능

하향식과 상향식 설계

하향식
  • 소프트웨어 설계 시 제일 상위에 있는 Main User Function에서 시작하여 기능을 하위 기능들로 나눠가면서 설계하는 방식
상향식
  • 가장 기본적인 컴포넌트를 먼저 설계한 다음 이것을 사용하는 상위 수준의 컴포넌트를 설계하는 방식

프로토타입 모형(Prototype Model)

  • 실제 개발될 시스템의 견본(Prototype)을 미리 만들어 최종 결과물을 예측
  • 개발이 완료되고 나서 사용을 하면 문제점을 알 수 있는 폭포수 모형의 단점을 보완하기 위한 모형
  • 요구사항 반영 가능

HIPO(Hierarchy Input Process Output)

  • 입력, 처리, 출력으로 구성되는 시스템 분석 및 설계와 시스템 문서화용 기법
  • 가시적 도표(Visual Table of Contents), 총체적 다이어그램(Overview Diagram), 세부적 다이어그램(Detail Diagram)으로 구성됨
    • 가시적 도표는 전체적인 기능과 흐름을 보여주는 구조
  • 구조도(가시적 도표), 도표(Index Diagram), 상세도표(Detail Diagram)으로 구성
  • 하향식 소프트웨어 개발을 위한 문서화 도구
❗️ ❗️ V-모델
  • 폭포수 모형에 시스템 검증과 테스트 작업을 강조한 모델
  • 테스트 작업을 단계별로 구분하므로 책임이 명확해짐
  • 그림 꼭 기억

0개의 댓글