Akashic Records

소프트웨어 공학(Software Engineering) 본문

오래된글/소프트웨어공학

소프트웨어 공학(Software Engineering)

Andrew's Akashic Records 2018. 4. 19. 10:53
728x90

소프트웨어 공학의 정의

- 과학적인 지식을 컴퓨터 프로그램 설계와 제작에 실제 응용하는 것이며, 이를 개발, 운영하고 유지 보수하는데 필요한 문서화 과정

- 소프트웨어 위기를 극복하기 위해 개발한 학문으로 소프트웨어 개발, 운용, 유지보수 폐기에 대한 체계적인 접근 방법

- 최소의 경비로 신뢰도 높은 소프트웨어를 생산하기 위한 기법과 도구


소프트웨어 공학의 목표

- 소프트웨어 개발, 유지보수에 따른 생산성과 품질 향상

- 효율적인 소프트웨어 개발과 신뢰성을 갖춘 소프트웨어 개발

- 경제적인 개발에 의한 개발비용 감소


소프트웨어 공학의 등장 배경(소프트웨어 위기)

- 하드웨어 기술의 급속한 발전과 범용 컴퓨터의 광범위한 보급은 소프트웨어 분야에 문제를 야기시키고, 소프트웨어 엔지니어들은 위기의식을 느낌

- 하드웨어 기술은 하드웨어 기능을 이용하는 소프트웨어 개발 능력의 발전 속도보다 훨씬 빠르게 발전함

- 새로운 소프트웨어를 요구하는 시장의 수요를 감당할 없음

- 기존 소프트웨어의 유지보수가 어려워짐

- 소프트웨어 분야의 인건비 상승과 우수 소프트웨어의 부족 현상으로 악화되어 소프트웨어 생산성이라는 새로운 과제를 심각하게 유발시킴

- 소프트웨어 위기를 해결하고 극복하기 위해서는 체계적이고 제도적인 소프트웨어 개발 방법이 필요하며, 이로부터 소프트웨어 공학이 탄생


소프트웨어 공학의 단계

1. 정의 단계

- What 식별하는 단계

- 시스템 분석, 소프트웨어 계획, 요구사항 분석

- 처리되는 정보, 성능과 기능, 인터페이스, 설계제약 조건, 검증기준 등의 기술 시스템 소프트웨어의 주요 요구사항 결정단계

2. 개발 단계

- How 중점을 두는 단계

- 데이터 구조화, 소프트웨어 기능 설계, 개발, 테스트에 대한 기술 단계

- 소프트웨어 설계, 소프트웨어 코딩, 소프트웨어 검사로 세분화

3. 유지보수 단계

- Change 중점을 두는 단계

- 오류수정, 소프트웨어 사용환경변화에 따른 변화, 사용자 요구에 따른 변경

- 기존 소프트웨어의 성질은 변화시키지 않는 범위에서 적용시킴


소프트웨어 공학의 요소

원칙(Principles)

- 소프트웨어 개발에 적용해야 하는 기본적인 사상


방법(Method)

- 소프트웨어 개발시 요구되는 특정 목적을 달성하기 위해 구체적이며 논리적으로 정리된 방법 절차


방법론(Methodology)

- 소프트웨어 구축에 필요한 작업 방법, 절차, 기법, 산출물 모든 요소들을 논리적으로 정리한 체계

- 특정 패러다임에 맞도록 실제적인 개발 활동들과 메소드, 사례들의 통합 산물


도구(Tool)

- 방법론의 실제 활용을 위해 자동화를 지원

- 소프트웨어 공학 환경을 만들기 위해 소프트웨어, 하드웨어, 소프트웨어 공학 데이터베이스들을 결합시켜 놓은


728x90
Comments