소프트웨어 공학의 개념

반응형
  • 소프트웨어 공학의 정의
    • 일반적 정의 : 소프트웨어 제품을 생산하기 위해 소프트웨어의 개발과 운영, 유지 보수 활동에 프로세스(Process),방법(Method), 도구(Tool)들을 적용하고 연구 개발하는 활동
    • Fritz Bauer : 컴퓨터 하드웨어에서 신뢰성 있게 운영되는 소프트웨어를 경제성 있게 개발하기 위해 공학적 원리를 응용하고 확립 시킨 이론
    • Berry Boehm : 컴퓨터 프로그램을 설계, 개발, 운영, 유지보수에 관련된 문서를 작성하는 데 필요한 과학적인 지식의 실용화
    • ANSI/IEEE : 소프트웨어의 개발, 운영 유지보수 및 폐기 과정에 적용되는 체계적인 접근 방식과 일련의 기술 및 접근 방법들에 대한 학문
    • Richard R. Fairley : 전산학, 경제학, 경영 과학 및 의사소통 기술과 문제 해결을 위한 공학적인 접근 방법을 토대로 소프트웨어 개발에 임하는 기술 체계

         

  • 소프트웨어 공학의 구성 요소
    • 원리(Principles) : 생존 법칙에 해당하는 것으로, 수많은 경험자와 전문가의 지혜를 수집한 것(소프트웨어 공학 원리:추상화, 분할과 정복 등)
    • 기법(Techniques) : 소프트웨어 개발자들이 소프트웨어 공학 프로세스의 일부분을 수행하는 것을 돕는 순차적인 절차(구조적 분석 설계 기법, 자료 흐름 중심 설계 기법 등)
    • 언어(Languages) : 그래픽한 기호나 단어의 집합으로써 더 복잡한 개체(문장, 다이어 그램, 모델 등)를 구성하도록 하는 규칙으로 구성되고, 이를 이용한 개체의 조합이 의미를 가지며, 중간 또는 최종 단계에서의 소프트웨어 제품을 표현하는 수단(DFD, ERD 등)
    • 도구(Tools) : 소프트웨어 개발 절차의 일부를 수행하는 것을 도와주기 위한 소프트웨어 프로그램(CASE 도구)

         

  • 소프트웨어 공학 계층
    • 프로세스(Process)
      • 소프트웨어 공학 기술이 효과적으로 적용되도록 하기 위해 확립되어야 하는 주요 프로세스 영역(Key Process Area ; KPA)에 대한 전체 틀을 정의
      • KPA : 프로젝트의 관리/제어 기준 생성, 기술적 방법들의 적용 제품(모델, 문서, 데이터 보고서, 폼) 생성, 이정표 확립, 품질 보증 변경 관리 포함
    • 방법(Method)
      • 소프트웨어를 구축하기 위한 기술적인 방법(How to)들을 제공
      • 요구사항 분석, 설계, 구축, 테스트, 유지보수 등의 업무를 수행하는 방법을 제공
    • 도구(Tool)
      • 프로세스들과 방법들을 자동 혹은 반자동으로 지원하는 기능 제공
      • CASE(Computer-Aided Software Engineering)
        • 도구들이 통합되어 한 도구에 의해 생성된 정보가 다른 도구에 의해 사용될 수 있는 소프트웨어 개발 지원을 위한 시스템
        • 소프트웨어 공학 환경을 만들기 위해 소프트웨어 하드웨어, 소프트웨어 공학 데이터베이스(분석, 설계, 코딩, 테스트에 관한 중요한 정보를 포함하는 저장소)들을 결합 시킴

             

  • 일반적인 소프트웨어 공학 프로세스 - 정의 - 개발 - 유지보수
    • 정의 단계
      • 무엇(What)에 초점
    • 개발 단계
      • 어떻게How)에 초점
    • 유지보수 단계
      • 변화(Change)에 초점
      • 기존의 소프트웨어를 이용하여 정의와 개발 단계를 다시 적용시킴
        • 수정(Correction) : 소프트웨어 결함을 수정하기 위한 변경 활동
        • 적응(Adaptation) : CPU, O/S. 주변 장치 등 외부 환경 변화 수용을 위한 변경 작업
        • 기능 향상(Enhancement) : 완전 유지보수를 통해 본래 기능을 향상시키는 확정 변경 활동
        • 예방(Prevention) : 소프트웨어 변경이 유지보수를 더 비효율적으로 만들기 때문에 쉬운 수정과 기능 향상을 위한 변경 활동 -> 소프트웨어 재공학

             

  • 소프트웨어 공학의 발전과정
    • 1968년 서독에서 개최된 NATO 회의에서 '소프트웨어 공학' 용어 처음 사용
    • 1970년대 : 구조적 프로그래밍, 구조적 분석 및 설계, 소프트웨어 생명주기 및 개발 도구의 제안
    • 1980년대 : 구조적 방법, 잭슨 방법, Warnier-Orr 방법 등 분석 설계 방법 제시, 소프트웨어 생산과 품질 향상을 위한 다수의 프로젝트 추진 객체 지향 분석 설계 대두
    • 1990년대 이후 : 정보 공학 및 객체 지향의 본격적 활용, 컴포넌트/CBD 대두 및 활성화
반응형

'밥벌이 > 소프트웨어 공학' 카테고리의 다른 글

프로토타입(Prototype) 모델  (0) 2010.08.13
폭포수(Waterfall) 모델  (0) 2010.08.13
소프트웨어 프로세스 모델의 개념  (0) 2010.08.13
소프트웨어 위기  (0) 2010.08.12
소프트웨어 개념  (0) 2010.08.12