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: ,

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.