소프트웨어와 소프트웨어 개발 - Software Engineering -.

Slides:



Advertisements
Similar presentations
소프트웨어 프로세스. 1 내용  소프트웨어 프로세스  생명주기의 의미  생명주기 모델 –Waterfall Model –prototyping model –Spiral Model –Iteration Model.
Advertisements

SW Testing Foundation 교육 1 일 기술 2G 배경호. Test in Life Cycle Request STATIC DYNAMIC Design Code Compo nent Integra tion System Accept ance.
전정환 ( 주 ) 다음커뮤니케이션 CTO 본부 UI Engineering 팀.
2004 IT 프로세스 능력 수준 조사 안내문 ~ 주관 : 한국 소프트웨어 진흥원 소프트웨어 공학 센터 (KSI) 후원 : Process Definition Process Implementation Process Improvement Process.
SE Lab.1 Dept. of Computer Science & Engineering Topics in Software Engineering 계 획.
Chapter 2 정보시스템 아키텍처 (IS Architecture)
6σ 연계 TPM 추진 안내서 TPM컨설턴트/공학박사/품질기술사 권오운 6σ 연계 TPM 추진 안내서 전체편 6 σ T P M
6 Sigma 개선 프로세스 6 Sigma 개선 기대효과 6 Sigma 개선 필요성 6 Sigma의 전사적 추진전략
2-1. 제조업과 정보기술 1)정보기술 구성요소 ①제조업에서 요구되는 정보기술 구성 요소
소프트웨어 공학 (Software Engineering)
Financial Engineering & Risk Management
ISO / KS A 9001:2000 전환을 위한 지침.
KOSHA 인증제도 안내.
12. 데이터베이스 설계.
소프트웨어 공학 (Software Engineering)
최 연식 ( ) EDMS를 활용한 EKP 구축 전략 2002년 09월 04일 성우시스템 주식회사 김 정훈 ( ) 최 연식 ( )
지식저장 및 활용사례 삼성SDS 아리샘 KMS 오승연 책임
ISO 실무교육 교재.
소프트웨어와 소프트웨어 개발 Software Engineering.
TL 9000 이해 INNO-SYSTEM연구소.
Critical Success Factors for Project Management Information System in Construction 김건웅.
(Software Process Improvement & Case)
ISO 9001:2000 프로세스 접근방법의 이해와 적용 베스트경영컨설팅(BMC).
Program Management - Program and Project Definition -
S18/S49 The VISUAL Quality System
조기숙 이화여자대학교 국제대학원 교수 (주) 리더십 프런티어 대표이사
Korea Productivity Center Quality Assurance
BPR 추진전략 및 사례 1.
IT CookBook, 창의적 공학설계 : Creative ideas
품질경영(ISO/FDIS 9001:2008) 개정규격 핵심내용 설명
시스템 분석 및 설계.
제 3 장 품질 경영.
소프트웨어 공학 (Software Engineering) 품질 보증 (Quality Assurance)
10.1 품질 개념 10.2 품질 보증 활동 10.3 프로세스 품질 10.4 프로덕트 품질 측정 10.5 인스펙션
10장: 품질 보증 - Software Engineering -.
소프트웨어 소프트웨어란? 소프트웨어의 특성 프로그램과 프로그램의 개발, 운용, 유지보수에 필요한 관련 정보 일체
9.1 소 개 9.2 유지보수의 특성 9.3 소프트웨어 형상 관리 9.4 소프트웨어 척도 9.5 유지보수 방법 및 도구
프로젝트 관리 Project Management
제 1 장 소 개 시스템 분석 및 설계 허철회 2006학년도 2학기 상주대학교 컴퓨터공학과.
경영성과 극대화를 위한 TPM 활동.
목표원가 달성을 통한 기업 이익 창출 전략.
소프트웨어 공학 (Software Engineering)
ERP 시스템의 구축 ERP 시스템의 구축 기업이 ERP 시스템의 도입을 검토하는 단계에서부터 실제 업무에 적용하고 사후관리에 들어가는 단계에 이르기까지 시스템을 효과적으로 사용하기 위해 필요한 모든 활동.
식품 품질관리
화장품과학과 제2강 기능성화장품의 정의 기능성화장품의 설계 기능성화장품의 개발/연구방향 연구동향.
자원관리 (Resource management)
컨설팅 프로젝트관리.
소프트웨어 공학 (Software Engineering)
소프트웨어 공학 Lecture #11: 품질 보증
Introduction to Computers
3장 구조적 분석(SSA) 방법론 한빛미디어(주).
9장 안전관리 이론.
소프트웨어 형상관리: 목차 변경 및 형상관리의 기초 개념 형상항목 확인 및 버전관리 변경관리 감사 및 감사보고 99_11
13.1 정보시스템의 개요 13.2 정보시스템의 개발 13.3 시스템 검사 13.4 시스템 문서화
3장 구조적 분석(SSA) 방법론.
Outsourcing도입전략방식의 연구
제 5 장 ISO 9000 개요 및 QMS의 확립 및 활용 ISO 9000 개요 및 QMS 확립 및 활용방법.
6장 품질경영.
Data Quality Management Certification (DQMC)
국제물류.
1장 시스템 개발 과정의 이해 소프트웨어 위기와 소프트웨어 공학 출 현 배경 이해 시스템(소프트웨어)의 개발자들
(Source: G.T.Milkovich and J.M.Newman, Compensation 7th ed, 2002.)
커뮤니케이션 스킬 UP -전화매너- ..
ISO 9000:2000 이해와 필요성.
기업경쟁력 강화를 위한 직원 역량개발과 육성전략
E R P 정보관리사 (Enterprise Resource Planning)
제2장 시스템 공학의 절차.
(Software Maintenance)
창의적 공학 설계 < 발명과 특허 > : Creative Engineering Design
Agile Agile 방법론 중 XP에서는 사용자와 개발자가 함께 한다.
Presentation transcript:

소프트웨어와 소프트웨어 개발 - Software Engineering -

강의 개요 소프트웨어 소프트웨어 위기 소프트웨어 공학 좋은 소프트웨어의 조건 소프트웨어 개발 모형 소프트웨어 개발에 영향을 미치는 요소

소프트웨어 소프트웨어 소프트웨어 생산 사회적, 경제적인 소프트웨어 의존도 커짐 프로그램 + 프로그램의 개발, 운용, 보수에 필요한 정보 일체(소프트웨어 생산 결과물 일체) 소프트웨어 생산 소프트웨어는 프로그램의 동적인 실체 프로그램은 형식 언어로 표현된 지적 노동의 결과물 제조업 vs. 서비스업(소프트웨어는 제작이 아니라 창조적 노력이 포함된 개발) 닳아 없어지는 것이 아니라 소용없어 못쓰게 됨 논리적인 요소로 구성(유지 보수자 복잡) 소프트웨어 산업(국내는 12조 규모의 산업) 사회적, 경제적인 소프트웨어 의존도 커짐 dependability

소프트웨어의 특성 ~ilities 제품으로서의 품질 특성 비가시성(Invisibility) 테스트 가능(Testability) 복잡성(Complexity) 변경성(Changeability) 순응성(Conformity) 장수(Longevity) 복제 가능(Duplicability) 응용에 의존(Application dependability) 제품으로서의 품질 특성 좋은 소프트웨어라고 평가 할 수 있는 기준

소프트웨어 시스템 유기적으로 상호 작용하는 개체들의 모임 소프트웨어는 컴퓨터를 기반으로 하는 여러 시스템과 관계를 맺고 있음 특징 시너지 효과 역동적으로 발전, 변경 상충되는 요구와 이해 관계의 절충 소프트웨어 자체도 하나의 시스템

정보 시스템(Information System) 자료의 분류, 저장, 검색에 관점 데이터 베이스를 대화식으로 접근 조직의 문제 해결을 위한 도구 예 항공권 예약 시스템, 신용 카드 검색 서비스, 뱅킹 시스템 특징 대규모 자료, 정적이 아님 시스템 분석, 유지보수가 중요 MIS 운영, 관리, 의사결정을 위하여 정보를 제공하는 시스템

제어 시스템(Control System) 사건을 감지하여 처리하고 자동적으로 보고 센서의 감지 제어 기기의 상태 보고 오퍼레이터의 입력 처리 인터페이스 예 교통 제어 공정 제어 수치 제어 의료 시스템 무기 항공 제어

탑재 시스템(Embedded System) 계산이 주된 기능이 아닌 시스템의 한 구성요소 예 전자 기계 장치, 공정 제어 비행기 유도, 스위칭 시스템 환자 감시 시스템, 레이다 추적 시스템 특징 대규모, 장기 사용, 테스트하기 어려움 인터페이스가 복잡, 비동기, 병렬, 분산 대규모의 자료를 접근, 변경, 출력 실시간 제어, 인터페이스 엄격한 요구: 실시간 반응, 고장에 대한 안전, 신뢰성

소프트웨어의 위기(Software Crisis)

소프트웨어의 위기 (Software Crisis) 소프트웨어 공정의 문제점 비용 초과 기간 지연 성능 저하 비신뢰성 유지보수 불가능, 엄청난 유지보수 비용 소프트웨어 위기 소프트웨어의 요구와 그 공급 능력 간의 차이가 갈수록 심화 1965-1985 1983년의 증가율 요구의 증가 100배 12% 생산성 2배 4% 인력 공급 10배 4%

소프트웨어 공학 정의 질 좋은 소프트웨어를 경제적으로 생산하기 위하여 공학, 과학 및 수학적 원리와 방법을 적용하는 것 - Watts Humphrey, SEI 소프트웨어의 개발, 운용, 유지보수 및 소멸에 대한 체계적인 접근 방법 - IEEE Computer Society 품질, 효율, 비용, 인정에 관한 공학적인 접근 원리 - F. Brooks 목표 품질(Quality) 생산성(Productivity)

엔지니어링의 발전원리 [Shaw, 1996] 과 학 대량생산 엔지니어링 상업화 장인들의 기술

소프트웨어 공학이 다루는 주제 분 야 의 미 사 례 요리 비유 방법(method) 소프트웨어 제작에 사용하는 기법이나 절차 구조적 분석, 설계 방법 객체지향 분석, 설계 방법 익히는 방법 (구이, 찜, 훈제 등) 도구(tool) 자동화된 시스템 설계 도구 프로그래밍 도구 테스트 도구 요리 도구 (프라이팬, 압력 솥, 오븐 등) 프로세스(process) 도구와 기법을 사용하여 작업하는 순서 Unified Process eXtreme Programming 조리 순서(recipe) 패러다임(paradigm) 접근 방법, 스타일 구조적 방법론 객체지향 방법론 음식 스타일 (한식, 일식, 중식, 퓨전 등)

소프트웨어 품질 (Software Quality) 소프트웨어를 대하는 입장에 따라 품질에 대한 관점이 달라짐 최소 비용 생산성 융통성 기능의 정확성 이해 용이성 사용 용이성 일관된 통합 이식성 재사용성 유지보수성 상호 운용성 신뢰성 효율성 발주자 사용자 유지보수자

소프트웨어 품질 (Software Quality) 정확성(Correctness) 기능적으로 맞게 동작, 표준에 적합 요구 분석서의 기능과 일치하는지 점검 신뢰성(Reliability) 소프트웨어가 주어진 기간동안 제대로 작동할 확률 오류에 비례 정확성을 위한 필요조건 강인성(Robustness) 요구 명세에 표시하지 않은 상황(오류 입력)에서도 제대로 작동하는 성질

소프트웨어 품질 (Software Quality) 성능(Performance) 수행 속도 알고리즘의 시간 복잡도 시뮬레이션, 스트레스 테스트 사용 용이성(Usability) 시스템을 친근하게 느낄 수 있는 성질 사용 대상에 따라 달라질 수 있음 사용자 인터페이스, Human factor 유지보수성(Maintainability) 보수성: 정해진 기간에 소프트웨어 결함을 해결할 수 있는 성질 진화성: 잠재적 발전 가능성

소프트웨어 품질 (Software Quality) 재사용성(Reusability) 소프트웨어 부품(라이브러리, 클래스 등)의 성질 확장 가능성 - openness 적응성 - adaptability 이용 용이성 - closeness

프로세스 품질 개발하는 과정이 소프트웨어 품질에 많은 영향을 준다는 주장 개발 및 유지보수하는 프로세스의 품질이 프로덕트 자체의 품질 못지 않게 중요하나는 입장 향상 방안 특정 오류가 언제 어디서 발견되는가? 어떻게 하면 개발 과정에 오류를 조기에 발견할 수 있는가? 어떻게 하면 오류에 대한 내성이 있는 시스템, 즉 오류가 소프트웨어를 정지시키는 확률이 적은 시스템으로 만들 수 있는가? 프로세스가 좋은 품질을 보장하는 더 효율적이며 효과적인 다른 방법이 있는가?

소프트웨어 생산성(Software Productivity) 생산 과정(process)에 크게 영향 Process improvement 개발 경험의 성숙도에 의해 좌우 CMM(Capability Maturity Model): Level 1~5 생산성에 영향을 미치는 요소 프로그래머의 능력 팀 의사 전달 제품의 복잡도 기술 수준 관리 기술

소프트웨어 프로세스 모형 소프트웨어 라이프 사이클 개념화 단계 유아 및 성장기 성년기 쇠퇴기 개발 후 개발 단계

소프트웨어 프로세스 모형 개발 프로세스 개발 모형 실정에 맞는 개발 팀의 고유한 모형의 정립 필요 개발 단계(작업) 입력 자료 수행 결과 실정에 맞는 개발 팀의 고유한 모형의 정립 필요 소프트웨어 개발에 필요한 작업 요구 분석과 정의 시스템 설계 프로그램 설계 프로그램의 작성(구현) 테스트(단위 테스트, 통합 테스트, 시스템 테스트) 시스템 설치 유지보수

대표적인 소프트웨어 프로세스 모형 중요한 모형 폭포수 모형 프로토타이핑 모형 점증적 모형 나선형 모형 V 모형

폭포수모형(Waterfall Model) 계 획 요구 분석 설 계 구 현 시 험 인수설치

폭포수모형(Waterfall Model) 1970년대 소개 항공 방위 소프트웨어 개발 경험으로 습득 각 단계가 다음 단계 시작 전에 끝나야 함 순서적 - 각 단계 사이에 중복이나 상호작용이 없음 각 단계의 결과는 다음 단계가 시작 되기 전에 점검 바로 전단계로 피드백 단순하거나 응용 분야를 잘 알고 있는 경우 적합 한 번의 과정, 비전문가가 사용할 시스템 개발에 적합 결과물 정의가 중요 Method vs. Methodology

폭포수모형의 프로세스 프로세스 및 결과물 계획 요구 분석 설계 구현 시험 인수/설치 문제정의 타당성 분석 비용, 일정예측 계획서 DFD 자료사전 소단위명세서 요구 분석서 시스템구조설계 프로그램설계 UI 설계 구조설계서 상세설계서 프로그래밍 단위테스트 프로그램 통합시험 기능시험 성능시험 통합된 설치 인수 시험 설치된 소프트웨어 (활동) (결과물) P R D I T A

폭포수모형의 결과물(Deliverable)

폭포수모형의 장단점 단점 MIL-STD-2167 ISO 12207 처음 단계의 지나치게 강조하면 코딩, 테스트가 지연 각 단계의 전환에 많은 노력 프로토타입과 재사용의 기회가 줄어듦 소용 없는 다종의 문서를 생산할 가능성 있음 MIL-STD-2167 general system life cycle software development cycle ISO 12207

프로토타이핑 모형 Rapid Prototyping Model(RAD) 요구 분석 프로토타입 개발/개선 프로토타입 평가 구현 인수/설치

프로토타이핑 모형 시범 시스템의 적용 프로토타이핑 도구 공동의 참조 모델 제공 개발 단계에서 유지보수가 이루어짐 단점 사용자의 요구를 더 정확히 추출 알고리즘의 타당성, 운영체제와의 조화, 인터페이스의 시험 제작 프로토타이핑 도구 화면 생성기 비주얼 프로그래밍, 4세대 언어 등 공동의 참조 모델 제공 개발 단계에서 유지보수가 이루어짐 단점 오해, 기대심리 유발 관리가 어려움(중간 산출물 정의가 난해)

점증적 모형 개발 싸이클이 짧은 환경 개발 시스템 개발자 사용자 완성 시스템 빠른 시간 안에 시장에 출시하여야 이윤에 직결 개발 시간을 줄이는 법 – 시스템을 나누어 릴리스 개발 시스템 개발자 릴리스 1 구축 릴리스 2 구축 릴리스 3 구축 릴리스 1 사용 릴리스 2 사용 릴리스 3 사용 사용자 완성 시스템

점증적 모형 릴리스 구성 방법 단계적 개발 점증적 방법 – 기능별로 릴리스 반복적 방법 – 릴리스할 때마다 기능의 완성도를 높임 단계적 개발 기능이 부족하더라도 초기에 사용 교육 처음 시장에 내놓는 소프트웨어는 시장을 빨리 형성시킬 수 있음 자주 릴리스하면 가동 중인 시스템에서 일어나는 예상하지 못했던 문제를 신속 꾸준히 고쳐나갈 수 있음. 개발 팀이 릴리스마다 다른 전문 영역에 초점 둘 수 있음.

나선형 모형 (Spiral Model)

나선형 모형(Spiral Model) 소프트웨어의 기능을 나누어 점증적으로 개발 실패의 위험을 줄임 테스트 용이 피드백 여러 번의 점증적인 릴리즈(incremental releases) Boehm이 제안 진화 단계 계획 수립(planning): 목표, 기능 선택, 제약 조건의 결정 위험 분석(risk analysis): 기능 선택의 우선순위, 위험요소의 분석 개발(engineering): 선택된 기능의 개발 평가(evaluation): 개발 결과의 평가

나선형 모형(Spiral Model) 대규모 시스템 개발에 적합 반복적인 개발 및 테스트 단점 risk reduction mechanism 반복적인 개발 및 테스트 강인성 향상 단점 관리가 중요 위험 분석이 중요 새로운 모형

V모형

소프트웨어 프로젝트 성패에 영향을 미치는 요소 의사소통(Communication skill) 프로젝트의 성격 프로그래머의 역량(Maturity) 관리(Management) 팀의 프로젝트 경험(Experience)

Communication Skill 발주자와 개발자의 의사 소통 개발자들 사이의 의사 소통 인터뷰 기술 프로토타입 요구 취합 방법(설문지, 유저 그룹, 워크샵, ...) 정형적 방법 개발자들 사이의 의사 소통 Mythical man-month 문서화 기술회의

프로젝트 성격 응용분야 자료처리 중심, 제어 중심, 시스템 소프트웨어, 인공지능 크기, 복잡도

프로그래머의 역량 소프트웨어 개발 - 노동집약적 작업 프로그래머의 능력 Sackman의 실험 품질이나 일정에 영향 프로그래밍 능력 커뮤니케이션 능력 응용 분야에 대한 이해 프로세스, 도구에 대한 이해와 경험 Sackman의 실험 프로그래밍 생산성 - 1:25 디버깅 능력 - 1:28 품질이나 일정에 영향

프로젝트 관리 기술 소프트웨어 개발 관리 소프트웨어 프로세스 관리 CMM 모델 프로그래밍 경험 관리 능력 소프트웨어 프로세스 관리 일정 관리 예산, 인력 관리 형상 관리 품질 관리 CMM 모델 소프트웨어 품질 관리(Quality Assurance)