소프트웨어 공학의 개요.

Slides:



Advertisements
Similar presentations
CI(Continuous Integration) 이학성. C ontinuous I ntegration? 2 지속적으로 품질관리 를 적용하는 과정 개발자가 기존 코드의 수정 작업 을 시작할 때, 코드 베이스의복사본을 받아서 작업을 시작하면서 코드의 변경.
Advertisements

컴퓨터공학과. 이세돌 vs 인공지능 알파고 컴퓨터공학과 인생은 실험과 도전의 연속 인생은 실험과 도전의 연속.
프로그래밍언어론 TA 윤들녁. 소개 윤들녁 연락처 : 공대 7 호관 4 층 401 호 데이터베이스 연구실 실습 후 날짜 _ 학번.zip 으로.
Popcon 이규태 김준수 강예진. 목차  Popcon 이란  개발동기 및 목적  필요성  차별성  설계  개발일정  기대효과 및 향후 계획.
항공 예약 시스템 1 조 ( 김민철, 김영주, 이혜림, 장유정, 조윤주, 문하늘 ). 목차 차세대 전산시스템 도입의 필요성 현재 항공 시스템 ( 대한항공 ) 항공 시스템의 변화 미래항공 시스템.
컴퓨터 종합설계 2012 년 2 학기 Syllabus 개요 (1/2) 목표  실 세계의 문제를 제시하고, 이에 대한 해결책을 컴퓨터 공학적인 방법으로 해결하기 위하여 팀을 주축으로 소프트웨어 개발 프로젝트 수행  프로젝트 계획에서부터 구현까지.
컴퓨터 운영체제의 역사 손용범.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
팀 구성 : 조재민 (팀장), 고광춘, 유기민, 김대진, 이재호 발표 일자:
Power Java 제3장 이클립스 사용하기.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
최윤정 Java 프로그래밍 클래스 상속 최윤정
Entity Relationship Diagram
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
Introduction To Computers
제3장 교육공학의 이론적 기초 3학년 교육공학 방송통신대학교 출석수업 3.1 학습이론 3.2 커뮤니케이션 이론 3.3 체제이론
데이터베이스 및 설계 금오공과대학교 컴퓨터공학부 이 이섭.
소프트웨어와 소프트웨어 개발 Software Engineering.
시스템집적반도체 설계 검증 환경과 기법 Ch 7.
객체지향 소프트웨어공학 12 장 품 질.
Visual Basic .NET 처음 사용하기.
시스템 설계와 산업디자인 개발.
1. C++ 시작하기.
FTP 프로그램 채계화 박재은 박수민.
소프트웨어 공학 Lecture #2: 프로세스와 방법론
컴퓨터과학 전공탐색 배상원.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
3과목 데이터 분석기획 2장 분석 마스터 플랜 정훈기
제 1장. 멀티미디어 시스템 개요.
제9장 네트워크 성능 및 품질 평가 과 목 : 네트워크 설계 및 실험 조 명 : 1 조
1장. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
Method & library.
소프트웨어 공학 Lecture #2: 프로세스
Chatpter 01 소프트웨어 공학 소개 01 소프트웨어의 이해 02 공학과 소프트웨어 공학의 이해
제 10 장 의사결정이란 의사결정은 선택이다.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
컴퓨터소프트웨어설계및실험 년 1학기 실험계획 -.
ERP의 구축방법과 장·단점 1조 김두환 김수철 가민경 김정원.
Mobile braille system for the blind
자율주행 차량용 드라이빙 컴퓨팅 하드웨어 플랫폼 05
소프트웨어와 소프트웨어 개발 - Software Engineering -.
소프트웨어 공학 Chapter #1: 소개 1.
웹디자인
2019년도 전자정보공학과 이수체계도 1학년(트랙) 2학년(트랙) 3학년(트랙) 4학년 1학기 2학기 1학기 2학기 1학기
AUTODESK AUTOCAD ELECTRICAL 전기제어 2D 설계 소프트웨어 표준기반 설계 생산성 도구 구조도 설계
04. DBMS 개요 명지대학교 ICT 융합대학 김정호.
졸업 요건 충족을 위한 추가 이수 학점에 대해서는 ‘졸업요건‘ 규정 확인 바람
Chatpter 01 소프트웨어 공학 소개 01 소프트웨어의 이해 02 공학과 소프트웨어 공학의 이해
LabVIEW WiznTec 주임 박명대 1.
Kangwon National Univ. | Computer Science
VHDL를 이용한 DES 설계 정보통신컴퓨터공학부 5조 김인옥, 백미숙
Self Introduction Template PowerPoint
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
소프트웨어 공학 Lecture #10: 유지보수
알고리즘 알고리즘이란 무엇인가?.
김정숙 (고려대학교 2014년) 국어국문학과 한국어학 석사 1기 이 드미뜨리
뇌를 자극하는 Solaris bible.
네트워크 프로그래밍 (모바일 주문 프로그램 )
생산 운영관리의 기초 공 정 설 계 생산능력계획 및 일정계획 재 고 관 리 노동인력관리 품질관리 및 설비보전 생산의 국제화
창의적 공학 설계 < 사용자 중심의 공학설계 > : Creative Engineering Design
Information Communication Technology
멀티미디어시스템 제 4 장. 멀티미디어 데이터베이스 정보환경 IT응용시스템공학과 김 형 진 교수.
학습내용 프로토콜 계층화 OSI 모델의 용어 및 기능 개체 서비스 접근점 (N) 프로토콜과 (N) 서비스 서비스 프리미티브
비교분석 보고서 Template 2015.
.Net FrameWork for Web2.0 한석수
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
교량 구조물의 개념 설계 및 프로토타입 제작 과정
학부 컴퓨터공학부 교육과정 (학부) 2학년 4학년 3학년 1학년 1학기 2학기 IPP 자격과정 전공트랙
소프트웨어 설계 및 실습 강기준.
1 제조 기술의 세계 3 제품의 개발과 표준화 제품의 개발 표준화 금성출판사.
Presentation transcript:

소프트웨어 공학의 개요

소프트웨어 소프트웨어공학의 개요 소프트웨어 프로그램 + 프로그램의 개발, 운용, 보수에 필요한 서비스 일체 (소프트웨어 생산 결과물 일체) 오픈소스 소프트웨어의 비즈니스 모델은? 소프트웨어 생산 프로그램은 형식 언어로 표현된 지적 노동의 결과물 생산성이 일정하지 않음 제조업 vs. 서비스업 소프트웨어는 제작이 아니라 창조적 노력이 포함된 개발 닳아 없어지는 것이 아니라 소용없어 못쓰게 됨 논리적인 요소로 구성 유지 보수가 복잡 금오공과대학 컴퓨터공학부 컴퓨터공학전공

소프트웨어의 특성 특징 분류의 따른 특성 비가시성(Invisibility) 복잡성(Complexity) 소프트웨어공학의 개요 특징 비가시성(Invisibility) 복잡성(Complexity) 변경성(Changeability) 복제 가능(Duplicability) 응용에 의존(Application Dependability) 분류의 따른 특성 응용 소프트웨어, 시스템 소프트웨어 패키지 소프트웨어, 주문형 소프트웨어 대형, 중형, 소형.. 통신용, 과학기술연산용, 오락용.. 금오공과대학 컴퓨터공학부 컴퓨터공학전공

소프트웨어 시스템 시스템적 관점에서의 접근이 필요함 시스템은 유기적으로 상호 작용하는 개체들의 모임 소프트웨어공학의 개요 시스템적 관점에서의 접근이 필요함 시스템은 유기적으로 상호 작용하는 개체들의 모임 소프트웨어는 컴퓨터를 기반으로 하는 여러 시스템과 관계를 맺고 있음 소프트웨어 자체도 하나의 시스템 금오공과대학 컴퓨터공학부 컴퓨터공학전공

소프트웨어의 위기 (Software Crisis) 소프트웨어공학의 개요 소프트웨어 위기 소프트웨어의 요구와 그 공급 능력 간의 차이가 갈수록 심화 1965-1985 1983년의 증가율 요구의 증가 100배 12% 생산성 2배 4% 인력 공급 10배 4% 소프트웨어 공정의 문제점 비용 초과 및 일정 지연 개발자의 역량에 따라 개발의 성패가 좌우되어 예측 불가 품질에 대한 정량적 개념이 없어 신뢰성 부족 소프트웨어 공학의 목적 공학적 접근 방법으로 원리를 적용하고 체계적으로 개발하여 소프트웨어 위기를 극복 금오공과대학 컴퓨터공학부 컴퓨터공학전공

소프트웨어의 비용 금오공과대학 컴퓨터공학부 컴퓨터공학전공

소프트웨어는 예술인가? 금오공과대학 컴퓨터공학부 컴퓨터공학전공

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

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

F22와 소프트웨어 미국의 록히드 마틴에서 만드는 최신예 F22 Raptor 전투기의 기능의 80%가 소프트웨어로 제어 소프트웨어가 총 천만 라인 휴대폰의 소프트웨어 몇 백만 라인 부가 가치와 소프트웨어 공학 금오공과대학 컴퓨터공학부 컴퓨터공학전공

소프트웨어 품질 (Software Quality) 소프트웨어공학의 개요 정확성(Correctness) 요구 분석서의 기능과 일치하는지 점검 기능적으로 맞게 동작, 표준에 적합 Validation .vs. Verification 신뢰성(Reliability) 소프트웨어가 주어진 기간동안 제대로 작동할 확률 오류에 반 비례(MTBF; Mean time between failure) 강인성(Robustness) Fault tolerance 요구 명세에 표시하지 않은 상황(오류 입력)에서도 제대로 작동하는 성질 성능(Performance) 수행 속도 알고리즘의 시간 복잡도 시뮬레이션, 스트레스 테스트 금오공과대학 컴퓨터공학부 컴퓨터공학전공

소프트웨어 품질 (Software Quality) 소프트웨어공학의 개요 사용 용이성(Usability) 시스템을 친근하게 느낄 수 있는 성질 사용 대상에 따라 달라질 수 있음 사용자 인터페이스, Human factor 유지보수성(Maintainability) 보수성 (repairability) 정해진 기간에 소프트웨어 결함을 해결할 수 있는 성질 진화성 (evolvability) 잠재적 발전 가능성 재사용성(Reusability) 소프트웨어 부품(라이브러리, 클래스 등)의 성질 확장 가능성 - openness 적응성 – adaptability Message 소프트웨어 개발은 다양한 품질 측면에서의 고려가 필요 깊이 있는 경험이 요구되며 끊임 없는 결정의 연속 고품질의 소프트웨어 개발이 고부가가치를 창출하며 고연봉을 제공함 웹 프로그래머와 SAP 개발자의 연봉 비교 금오공과대학 컴퓨터공학부 컴퓨터공학전공

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

개발 방법론 소프트웨어의 개발 단계 프로세스 중심 방법론(70년대) 구조적 프로그래밍 언어의 영향을 받음 프로세스를 먼저 정의 프로세스는 자주 변할 수 있다는 문제점 DFD (Data Flow Diagram) 금오공과대학 컴퓨터공학부 컴퓨터공학전공

개발 방법론 자료 중심 방법론(80년대) 데이터베이스의 보급으로 출현 비교적 프로세스보다 안정된 자료 구조를 먼저 정의 Martin의 정보공학 방법론 ER-Diagram 금오공과대학 컴퓨터공학부 컴퓨터공학전공

객체지향 방법론(90년대) CBD SOA etc. 객체지향 프로그래밍에서 시작하여 전체 범위까지 확대 개발 방법론 객체지향 방법론(90년대) 객체지향 프로그래밍에서 시작하여 전체 범위까지 확대 모듈화, 정보 은익, 재사용 CBD 객체 지향 방법론이 보다 발전된 형태 SOA 서비스 기반 구조 etc. 금오공과대학 컴퓨터공학부 컴퓨터공학전공

소프트웨어 개발 모형 소프트웨어 개발 주기 개발 프로세스 중요한 모형 SDLC (Software Development Life Cycle) 개발 프로세스 개발 단계(작업) 입력 자료 수행 결과 중요한 모형 폭포수 모형: 전통적 방법 프로토타이핑 모형: 사용자의 피드백 중시 점증적 모형 금오공과대학 컴퓨터공학부 컴퓨터공학전공

폭포수모형(Waterfall Model) 소프트웨어 개발 모형 계 획 요구 분석 설 계 구 현 시 험 인수설치 금오공과대학 컴퓨터공학부 컴퓨터공학전공

폭포수모형(Waterfall Model) 소프트웨어 개발 모형 최초의 체계적으로 설정된 단계 1970년대 소개 항공 방위 소프트웨어 개발 경험으로 습득 각 단계가 다음 단계 시작 전에 끝나야 함 원래는 각 단계 사이에 중복이나 상호작용이 없음 각 단계의 결과는 다음 단계가 시작 되기 전에 점검 바로 전 단계로 피드백 단순하거나 응용 분야를 잘 알고 있는 경우 적합 한 번의 과정, 비전문가가 사용할 시스템 개발에 적합 특징 결과물 정의가 중요 Methodology: 개발 조직의 특수성을 고려한 개발 순서 및 원리 최신의 방법론은 아니지만, 가장 중요하고 기본적인 개념 제공 금오공과대학 컴퓨터공학부 컴퓨터공학전공

소프트웨어 엔지니어의 역할 분석 설계 개발 기타 문제의 분석, 정확한 요구 사항 도출 소프트웨어 구조, 입출력, 인터페이스 설계 알고리즘, 데이터 구조, 데이터 베이스 설계 성능 측정과 모델 설계 개발 양질의 프로그램을 생산 기타 테스트 및 통합 기술 사용자 지침서 및 개발 문서 작성 유지보수 프로젝트 계획 및 관리 금오공과대학 컴퓨터공학부 컴퓨터공학전공

폭포수모형의 프로세스 프로세스 및 결과물 분석과 설계의 차이는? 소프트웨어 개발 모형 계획 요구 분석 설계 문제정의 타당성 분석 비용, 일정예측 DFD 자료사전 소단위명세서 시스템구조설계 프로그램설계 UI 설계 기본설계서 상세설계서 계획서 요구 분석서 (활동) (결과물) 구현 시험 인수/설치 통합시험 기능시험 성능시험 프로그래밍 단위테스트 통합된 프로그램 설치된 소프트웨어 프로그램 설치 인수 시험 금오공과대학 컴퓨터공학부 컴퓨터공학전공

폭포수모형의 결과물(Deliverable) 소프트웨어 개발 모형 금오공과대학 컴퓨터공학부 컴퓨터공학전공

폭포수모형의 장단점 단점 텍스트 표현의 애매성과 상위단계의 실수에 대한 비용 과다 소프트웨어 개발 모형 단점 텍스트 표현의 애매성과 상위단계의 실수에 대한 비용 과다 개발 중 사용자의 의사 반영이 어려워 의도대로 완성되었는지 확인이 어려움 정보가 충분치 않을 경우 자원의 정확한 예측이 어려움 처음 단계의 지나치게 강조하면 코딩, 테스트가 지연 소용 없는 다종 다량의 문서를 생산할 가능성 있음 금오공과대학 컴퓨터공학부 컴퓨터공학전공

질문: 1,000라인 짜리 프로그램을 작성하는데 1 M/M 가 필요하다고 가정하자. 다음 중 정답과 가장 근접한 답을 고르시오. 5 M/M 10 M/M 20 M/M 금오공과대학 컴퓨터공학부 컴퓨터공학전공

프로젝트의 규모와 요구사항 변경의 관계 소프트웨어 개발 모형 요구사항 변화에 대한 해결방법은? 분석을 잘해서 요구사항을 확실하게 도출한다. 분석, 설계 단계에서 변화되는 요구사항을 포함할 수 있게 대비한다. 금오공과대학 컴퓨터공학부 컴퓨터공학전공

프로토타이핑 모형 Rapid Prototyping Model(RAD) 요구 분석 소프트웨어 개발 모형 프로토타입 개발/개선 평가 구현 인수/설치 금오공과대학 컴퓨터공학부 컴퓨터공학전공

프로토타이핑 모형 시범 시스템의 적용 프로토타이핑 도구 공동의 참조 모델 제공 단점 목적: 사용자의 요구를 더 정확히 추출 소프트웨어 개발 모형 시범 시스템의 적용 목적: 사용자의 요구를 더 정확히 추출 알고리즘의 타당성, 운영체제와의 조화, 인터페이스의 시험 제작 일반적으로 프로토타이핑은 재사용되지 않음 프로토타이핑 도구 화면 생성기 비주얼 프로그래밍, 4세대 언어 등 공동의 참조 모델 제공 단점 오해, 기대심리 유발 관리가 어려움(중간 산출물 정의가 난해) 개발공수의 중복 투자 금오공과대학 컴퓨터공학부 컴퓨터공학전공

나선형 모형 (Spiral Model) 소프트웨어 개발 모형 금오공과대학 컴퓨터공학부 컴퓨터공학전공

나선형 모형(Spiral Model) 프로토타입 모델을 좀더 체계화 시킨 방법론 소프트웨어의 기능을 나누어 점증적으로 개발 소프트웨어 개발 모형 프로토타입 모델을 좀더 체계화 시킨 방법론 소프트웨어의 기능을 나누어 점증적으로 개발 목적: 실패의 위험을 줄임 여러 개의 프로젝트로 나누어 개발 Critical Success Factor를 고려하여 먼저 개발할 기능을 선택 테스트 및 피드백 용이 여러 번의 점증적인 릴리즈(incremental releases) Boehm이 제안 진화 단계 계획 수립(planning): 목표, 기능 선택, 제약 조건의 결정 위험 분석(risk analysis): 기능 선택의 우선순위, 위험요소의 분석 개발(engineering): 선택된 기능의 개발 평가(evaluation): 개발 결과의 평가 금오공과대학 컴퓨터공학부 컴퓨터공학전공

나선형 모형(Spiral Model) 대규모 시스템 개발에 적합 반복적인 개발 및 테스트 단점 소프트웨어 개발 모형 대규모 시스템 개발에 적합 Risk Reduction Mechanism 반복적인 개발 및 테스트 강인성 향상 단점 관리가 중요 위험 분석이 중요 새로운 모형 어느 모형이 가장 좋은가? 금오공과대학 컴퓨터공학부 컴퓨터공학전공

소프트웨어 프로젝트 성패에 영향을 미치는 요소 의사소통(Communication skill) 프로젝트의 성격 프로그래머의 역량(Maturity) 관리(Management) 팀의 프로젝트 경험(Experience) 금오공과대학 컴퓨터공학부 컴퓨터공학전공

Communication Skill 발주자와 개발자의 의사 소통 개발자들 사이의 의사 소통 인터뷰 기술, 프로토타입 소프트웨어 프로젝트 성패에 영향을 미치는 요소 발주자와 개발자의 의사 소통 인터뷰 기술, 프로토타입 요구 취합 방법(설문지, 유저 그룹, 워크샵, ...) 명세화 단계에서 의사소통을 위한 여러 가지 기법들이 개발 개발자들 사이의 의사 소통 Mythical man-month 중도에 투입된 개발자들은 생산성을 증가시키지 못함 현재는 이러한 현상이 나타나지 않는다. 그 이유는? 문서화 기술회의 가능하면 자주 짧게 의사소통을 할 것 금오공과대학 컴퓨터공학부 컴퓨터공학전공

프로그래머의 역량 소프트웨어 개발 - 노동집약적 작업 프로그래머의 능력 Sackman의 실험 품질이나 일정에 영향 소프트웨어 프로젝트 성패에 영향을 미치는 요소 소프트웨어 개발 - 노동집약적 작업 프로그래머의 능력 프로그래밍 능력 커뮤니케이션 능력 응용 분야에 대한 이해 Sackman의 실험 프로그래밍 생산성 - 1:25 디버깅 능력 - 1:28 품질이나 일정에 영향 SE의 지침, 방법론 도구 등은 평균 이하의 역량을 가진 프로그래머의 생산성 향상을 가져온다. 요리책과 요리사 금오공과대학 컴퓨터공학부 컴퓨터공학전공

프로젝트 관리 기술 소프트웨어 개발 관리 소프트웨어 프로세스 관리 소프트웨어 프로젝트 성패에 영향을 미치는 요소 소프트웨어 개발 관리 프로그래밍 경험 관리 능력 소프트웨어 프로세스 관리 일정 관리 예산, 인력 관리 형상 관리 품질 관리 프로젝트 관리는 목표 설정, 재원 마련, 일정 계획을 잘 하는 것 유능하고 성공적인 PM(Project Manager)의 모습은? 금오공과대학 컴퓨터공학부 컴퓨터공학전공

정리 공학적 접근 방법을 통한 소프트웨어 개발의 중요성 다양한 업무가 존재함 품질의 중요성이 증대 점진적 방법의 중요성 의사 소통의 중요성 의사소통의 질과 양보다, 주기적인 의사소통이 필수 소프트웨어 공학의 원리와 철학은 모든 분야 적용 금오공과대학 컴퓨터공학부 컴퓨터공학전공