1.3 엔지니어링과 소프트웨어 공학
* 복잡한 대규모 문제 해결 방법?
– 엔지니어링 접근 방법
* 요리의 예
– 가정집인 경우
– 음식점인 경우 : 재료 구입 계획, 조리 과정 연구 필요
– 음식점 체인인 경우 : 요리 프로세스의 표준화, 마케팅 전략, 전문 인력 교육 필요
1.3.1 엔지니어링의 발전 원리
* 단계적으로 발전
– 개인의 재주(art)에 의존 -> 숙련공(craft)의 일반화 -> 공학 탄생
* 엔지니어링 원리의 발전 단계
대량생산—–|—- 산업화-|— 엔지니어링
장인들의 기술 -| 과학–|
1.3.1-1 소프트웨어 공학의 출현 배경
* 소프트웨어 분야도 엔지니어링 원리의발전 단계를 밟아 발전
– 개인 프로그래밍 능력에 의존 -> 공학적 접근 방법 필요
* 소프트웨어 공학의 출현 배경
– 소프트웨어 개발, 구입 비용의 급증
– 질 높은 소프트웨어 중요성의 인식
– 소프트웨어 분야에도 엔지니어링 원리에 관심이 모아짐
– 개발, 유지보수 비용의 효율적에 대한 극대화 필요
– 해결안 : 유지보수의 체계적, 합리적인 접근 방법 필요
* 소프트웨어 공학 정의 [IEEE 소프트웨어 공학 용어 표준]
– “소프트웨어의 개발, 윤용, 유지보수 및 팍에 대한 체계적인 접근 방법”
1.3.1-2 공학
– 과학과 수학을 기초로 하여 구조나 기계, 생산 공정, 시스템 등의 생산에 체계적인 방법을 적용시키는 것
– (예) 토목 엔지니어가 도로나 댐, 교량과 같은 구조물 건설에 공학 원리와 기술을 적용하는 것.
– 절차와 표준 : 구조 설계, 건설
– 지침(guideline) : 지진과 바람의 영향에 대하여 설계할 때 고려사항
– 고려 사항 : 철골, 콘크리트, 기타 자재가 견딜 수 있는 허용 외압
– 시험 : 설계가 완성되면 모형에 의 한 시험
– 토목 엔지니어에게는 기술, 절차, 도구가 잘 계발되어 있음
* 소프트웨어 공학
– 공학적 원리에 의하여 소프트웨어를 개발하는 것.
1.3.1-3 소프트웨어 공학의 목표
* 품질 좋은 소프트웨어를
– 개발이 제대로 되고 있는지 확인, 품질 점검
* 최소의 비용으로
– SW를 최적의 비용으로 계획된 예산에 맞추어 개발하는 것
* 계획된 일정에 맞추어 개발한다.
– SW는 계획된 기간 내에 개발되어 정해진 날에 인도
* 생산성 향상
– 여러 가지 방법론, 도구, 관리 기법 사용
1.3.1-4 방법
* 방법이라는 단어의 사용 예
– 요리는 잘하는 방법
* 방법의 특징?
– 작업 과정과 밀접한 관계를 가지고 있다.
– 하나의 작업 단계에도 적용할 수 있는 여러 가지 방법이 있다.
– (예) 음식을 익히는 방법(증기에 찌는 방법, 졸이는 방법, 불에 굽는 방법)
* 방법이란?
– 어떤 결과를 생성하기 위해 적용하는 기법과 절차
* 소프트웨어 공학에서의 방법
– 요구 분석 방법
– 설계 방법 및 표현 방법
1.3.1-5 도구
* 일상 생활에서 도구라는 단어가 쓰이는 곳?
– 목수의 연장
– 요리사의 조리 도구
– 워드프로세서
* 소프트웨어를 개발하는 과정에서의 도구?
– 설계 도구, 프로그래밍 도구, 프로젝트 관리 도구 등
* 요리 도구만 좋으면 맜있는 요리가 나온다!!!
* 도구란??
– 기구, 자동화된 시스템
1.3.1-6 프로세스
* 작업 순서, 작업 공정, 작업 절차
– 조리 순서(recipe)
– 자동차 조립 과정
* 프로세스란?
– 도구와 기법을 사용하여 작업하는 순서
* 소프트웨어 개발 프로세스?
– 프로젝트 팀이 정한 절차
* 많은 경험은 최적의 프로세스를 만든다
* 프로세스의 성숙도를 단계적으로 정의한 모델?
– CMM(Capability Maturity Model)
– ISO 15504(SPICE)
1.3.1-7 패러다임
* 패러다임의 일반적인 사용 예
– 음식 스타일(예. 한식, 일식, 중식, 퓨전 등)
* 소프트웨어 개발에서의 패러다임
– 절차적 프로그래밍
– 객체지향 프로그래밍
– 컴포넌트 개발 방식
* SE 토픽 1.4 소프트웨어 공학 관리자
– 사용자 : 개발한 소프트웨어를 사용할 사람
– 고객 : 소프트웨어를 주문하고, 구매하는 담사자
– 소프트웨어 개발자 : 소프트웨어 엔지니어. SW를 개발, 유지 보수하는 사람
– 개발 관리자 : 소프트웨어 개발 부서를 관리하는 사람
Tags: Software Engineering, 소프트웨어 공학