소프트웨어 소프트웨어란? 소프트웨어의 특성 프로그램과 프로그램의 개발, 운용, 유지보수에 필요한 관련 정보 일체

Slides:



Advertisements
Similar presentations
2016 년도 1 학기 정보보호관리체계 (ISMS) 인증 이 강 신
Advertisements

Computer Science and Engineering. 컴퓨터는 미래 지식 사회의 핵심 요인  지식 사회의 도래 : 매 50 년 마다 큰 기술, 사회적 변화 발생.
Product Lifecycle Management © 2003 IBM Corporation PLM Definition Product Lifecycle Management.
소프트웨어 프로세스. 1 내용  소프트웨어 프로세스  생명주기의 의미  생명주기 모델 –Waterfall Model –prototyping model –Spiral Model –Iteration Model.
SW Testing Foundation 교육 1 일 기술 2G 배경호. Test in Life Cycle Request STATIC DYNAMIC Design Code Compo nent Integra tion System Accept ance.
정보기술의 기본 CAD/CAM Lab 석사 1 학기 김종규. 0. Data vs Information vs Knowledge data information knowledge 단편적 사건 의사결정에 필요한 data 의 교환이 되어야 정보 시너지 효과 Info + info.
MDD The Pragmatics of Model-Driven Development Bran Selic, IBM Rational Software 서강대 정보통신대학원 소프트웨어공학 차우람 (A50014) 조용성 (A49012) 최종 수정.
멀티미디어의 개념 멀티미디어 CAI 교육용 멀티미디어 저작도구
마이크로소프트 프리미어 지원 라이선스 (소개자료).
화일구조.
Chapter 2 정보시스템 아키텍처 (IS Architecture)
ERP(Enterprise Resource Planning)
4장 응용 소프트웨어 4.1 응용 소프트웨어의 분류 4.2 사무용 소프트웨어 4.3 비즈니스 활용
4. ITIL 개요 * ICT : Information & Communication Technology
Operating Systems Overview
1. 회사소개 사업분야 Solution 부문 제조산업부문 MES(Manufacturing Execution System)
Internet Computing KUT Youn-Hee Han
Enterprise Data Warehouse
KAI 장학생 모집 요강 선발개요 선발일정 지원내역 문 의 처
12. 데이터베이스 설계.
소프트웨어 공학 (Software Engineering)
최 연식 ( ) EDMS를 활용한 EKP 구축 전략 2002년 09월 04일 성우시스템 주식회사 김 정훈 ( ) 최 연식 ( )
지식저장 및 활용사례 삼성SDS 아리샘 KMS 오승연 책임
InstallShield Professional Services ( Services Pack / Education / Consulting ) ㈜소프트뱅크 커머스.
목표 구성 의료분야에서 사용되는 운영관리 개념과 계량적 분석기법 이해
연구소의 R&D 관리 - 과제 선정/개발/상품화 -
Shin, SooJung Based on Ron’s book
Visual ESTO 안정성,편리성,성능을 한단계 높였습니다! Visual ESTO IDE/Debugger/Monitor
TL 9000 이해 INNO-SYSTEM연구소.
(Software Process Improvement & Case)
CRM에서의 Data Quality Management
ISO 9001:2000 프로세스 접근방법의 이해와 적용 베스트경영컨설팅(BMC).
Chapter 10: 정보 시스템 정보 관리 & 시스템 개발.
2장 운영 체제의 개요 운영체제의 개념 운영체제의 유형 운영체제의 발전 과정 운영체제의 구성 운영체제 서비스 시스템 구조
Program Management - Program and Project Definition -
BPR 추진전략 및 사례 1.
IT CookBook, 창의적 공학설계 : Creative ideas
2 운영체제 소개.
제6장. 프로세스 선택과 설비 배치 (Process Selection And Facility Layout)
재활공학의 이해와 발전방향 정동훈(나사렛대학교 재활공학과).
소프트웨어 공학 (Software Engineering) 품질 보증 (Quality Assurance)
10.1 품질 개념 10.2 품질 보증 활동 10.3 프로세스 품질 10.4 프로덕트 품질 측정 10.5 인스펙션
10장: 품질 보증 - Software Engineering -.
Chapter 10: 정보 시스템 정보 관리 & 시스템 개발
프로젝트 관리 Project Management
제 1 장 소 개 시스템 분석 및 설계 허철회 2006학년도 2학기 상주대학교 컴퓨터공학과.
소프트웨어 공학 (Software Engineering)
강의 구성 제 1부 기업과 경영 및 환경 제 2부 경영의 관리기능 제 3부 경영의 업무기능 제 4부 경영의 신조류 및 기법
5장 경영정보시스템과 기업조직 경영정보시스템 4차 산업혁명 시대를 위한 경영정보시스템의 유형 경영관리와 정보시스템
제 10 장 의사결정이란.
제1장 디지털 시대의 정보기술과 정보시스템 ENIAC(1946).
ERP 시스템의 구축 ERP 시스템의 구축 기업이 ERP 시스템의 도입을 검토하는 단계에서부터 실제 업무에 적용하고 사후관리에 들어가는 단계에 이르기까지 시스템을 효과적으로 사용하기 위해 필요한 모든 활동.
고품질 소프트웨어를 위한 군인력 자원관리 개발 프로세스 가시화 구축 사례
Cpt.4 제품과 서비스의 설계 Product and Service Design 생산운영관리.
소프트웨어 공학 (Software Engineering)
Introduction to Computers
소프트웨어와 소프트웨어 개발 - Software Engineering -.
9장 안전관리 이론.
소프트웨어 형상관리: 목차 변경 및 형상관리의 기초 개념 형상항목 확인 및 버전관리 변경관리 감사 및 감사보고 99_11
13.1 정보시스템의 개요 13.2 정보시스템의 개발 13.3 시스템 검사 13.4 시스템 문서화
화일구조.
제1장 정리 컴퓨터소프트웨어과 2-A반 주세호.
성공적인 웹사이트 구축 (2) 변화 발전하는 Site의 미래를 예측 반영해야 함.
기업과 경영 제 8 장 생산운영관리.
1장 시스템 개발 과정의 이해 소프트웨어 위기와 소프트웨어 공학 출 현 배경 이해 시스템(소프트웨어)의 개발자들
기술혁신 세미나 Technology integration: Managing technological evolution in a complex environment Marco Iansiti Research Policy 24 (1995) 기술경영학 협동과정 박사2학기.
의사결정지원시스템 6조 오나연 송혜정 신은수 오경석
1. 데이터베이스 환경.
기업경영과 생산관리 교재 : 강의 홈 김태웅 지음, 생산, 운영관리의 이해 (제3판), 신영사
Presentation transcript:

소프트웨어 소프트웨어란? 소프트웨어의 특성 프로그램과 프로그램의 개발, 운용, 유지보수에 필요한 관련 정보 일체 프로그램과 프로그램의 개발, 운용, 유지보수에 필요한 관련 정보 일체 소프트웨어는 프로그램의 동적인 의미. 프로그램은 형식 언어(formal language)로 표현된 지적 구축물 소프트웨어의 특성 비가시성(Invisibility) 개념적, 무형적 구조가 코드 내에 내재 복잡성(Complexity) 개발 과정이 복잡 대상 업무, 대상 시스템이 난해 순응성(Conformity) 요구나 환경 변화에 적절히 변형 가능 복제 가능성(Duplicability) 테스팅의 어려움(Intestability) 변경 가능성(Changeability) 응용 종속성(Application dependency)

소프트웨어의 유형 소프트웨어 분류 체계 기능에 의한 소프트웨어의 분류 기능 : 시스템 소프트웨어, 응용 소프트웨어 개발 과정 : newly-built, 재사용(reuse), modification and adaptation of existing software, porting 하드웨어 환경 : multiprocessor, ... 요구되는 신뢰도 : critical, ...., non-critical 소프트웨어 크기 : programming-in-the-small, .... 데이터 특성 : 그래픽, 이미지, 텍스트, 음성, .... 기능에 의한 소프트웨어의 분류 < 시스템 소프트웨어 > 운용 : Operating systems, DBMS, .... Utility 구현 : Compiler, 여러 개발 도구들, .... < 응용 소프트웨어 > 모델링, 시뮬레이션 : flight simulation, OR, war games, ... 응용 기술 : OA, CAD/CAM, POS, CAI, ...

소프트웨어의 유형 정보 시스템(Information Systems) 대량의 데이터의 분류, 저장, 검색에 관심 컴퓨터 초심자들도 데이터베이스에 쉽게 접근할 수 있도록 인터페이스 제공 < 시스템 사례 > electronic fund transfer network credit card authorization services airline reservation systems air traffic control systems < 정보 시스템의 특성 > 시스템이 정적(static)이지 않다. 데이터 설계는 비중이 큰 반면 제어 구조는 비교적 간단하다. 개발, 운용 및 유지 보수에 많은 노력과 비용이 든다. 도큐먼트가 중요한 요소 < 경영 정보 시스템(MIS) > 조직에서의 경영, 의사 결정 등을 지원하기 위해 여러 정보를 효과적으로 제공하는 통합된 시스템 TPS, EDPS, DSS, EIS, SIS, Information Center, OA

소프트웨어의 유형 제어 시스템(Control Systems) 내포 시스템(Embedded Systems) 프로세싱을 유발하는 이벤트를 감지하여 처리하고 주기적으로 시스템의 상황을 보고하는 시스템 monitor sensors control equipment display operator input processing interface peripheral equipment < 시스템 사례 > 공정 제어(process control) 교통 제어(traffic control) 의료 시스템(medical systems) 무기 제어(firing weapons) 내포 시스템(Embedded Systems) A system that is logically incorporated in a larger system whose primary function is not computation large scale, long-lived real-time response, fail-safe reliability tend to be asynchronous, highly parallel, and distributed 비행기 유도 시스템(flight guidance) 교환기 시스템(switching systems)

소프트웨어와 관련된 질문 1. 소프트웨어 시스템을 개발하는 데 드는 비용 중 프로그래밍(코딩)에 드는 비용은 어느 정도인가? 가. 20% 나. 30% 다. 40% 라. 50% 2. 중간 사이즈의 소프트웨어 시스템을 개발할 때 한 프로그래머가 일년에 만드는 실행 코드(executable code)는 평균 몇 줄(line)이나 될까? 가. 5,000줄 이하 나. 5,000 ~ 10,000줄 다. 10,000 ~ 15,000줄 라. 15,000줄 이상 3. 사용자에게 배달되는 소프트웨어 시스템의 실행 코드 1,000줄 당 예상되는 오류의 개수는? 가. 4개 미만 나. 4 ~ 6개 다. 7 ~ 9개 라. 10개 이상 4. 사용자가 발견하는 소프트웨어 시스템의 오류는 어떤 것에서 기인하는 경우가 많은가? 가. 설계의 오류 나. 프로그래밍의 오류 다. 제안서와 사용자 요구 사항에 대한 잘못된 이해 라. 테스팅의 오류 5. 소프트웨어 시스템을 유지 보수하는 데 드는 비용이 개발 비용의 몇 배 정도 될까? 가. 0.5 나. 1 다. 1.5 라. 2

소프트웨어 위기 소프트웨어 개발의 문제 소프트웨어 위기(Software Crisis) 예산 초과(Cost Overruns) 개발 일정 지연(Late Delivery) 불충분한 성능(Inadequate Performance) 신뢰하기 어려운 품질(Unreliability) 유지 보수의 어려움(Impossible Maintenance) Prohibitive Maintenance Costs 소프트웨어 위기(Software Crisis) 컴퓨터 하드웨어의 급속한 발전과 컴퓨터의 대중화로 인해 소프트웨어의 수요가 급증하였으나 소프트웨 어의 생산성과 생산 기술은 그에 미치지 못함으로서 나타난 현상

소프트웨어 공학 소프트웨어 공학이란? The disciplined application of engineering, scientific, and mathematical principles and methods to the economical production of quality software 소프트웨어의 개발, 운용, 유지 보수 및 파기에 대한 체계적인 접근 방법(IEEE) 품질 좋은 소프트웨어를 최소의 비용으로 계획된 일정에 맞추어 개발하기 위하여 여러 가지 공학적 원리와 방법을 체계적으로 적용하는 것

소프트웨어 공학 소프트웨어 공학의 여러 측면들 소프트웨어 공학은 지식 집중(knowledge-intensive)적인 활동 소프트웨어 표현과 관련된 지식 소프트웨어 개발 과정과 관련된 지식 programming software development processes tools and environments software project management configuration management quality assurance 응용 영역에 대한 지식 기타 필요한 지식 hardware characteristics human factors technical communication and documentation

소프트웨어 공학 소프트웨어 공학의 역사 소프트웨어 위기의 인식 ~1970 소프트웨어 공학의 탄생 소프트웨어 위기의 인식 ~1970 소프트웨어 공학의 탄생 high-level language programming interactive programming Goto 논쟁 (1965) 소프트웨어 위기 해소책 모색 ~1980 소프트웨어 공학 학문으로 정착 하드웨어로부터 독립된 개념의 소프트웨어 software lifecycle methodology and tools programming-in-the-large information hiding structured design 소프트웨어 공학의 발전 ~to date software environment software reuse software factory CASE (Computer Aided Software Engineering)

소프트웨어 공학 소프트웨어 공학의 여러 이슈들 저 수준의 소프트웨어 생산성 및 품질 노동 집약적인 소프트웨어 생산 과정 가격 상승의 주요 원인 향상된 기술에 둔감하다. 숙련된 소프트웨어 공학자의 부족 늦은 속도의 기술 이전(technology transfer) 소프트웨어 개발 기술의 개발 소프트웨어 생산 과정의 자동화 표준화된 부품을 이용한 생산 소프트웨어의 입지 확보 Software mind 직업으로서의 소프트웨어 공학 legal protection and market development

소프트웨어 공학 소프트웨어 공학에서의 크기 요소 <Programming-in-the-Small> 비교적 잘 정의된 문제의 구현에 관심 정확한 프로그램의 개발이 목표 명세(specifications)이 좀처럼 변경되지 않는다. <Programming-in-the-Large> Problem definition Changing requirements Interface between components System integration and testing Configuration management Maintenance Documentation Information management <Programming-in-the-Many> Communication의 문제 : 팀 원 간의 정보 교환 Work assignment Quality assurance : 표준화(기법, 표기법)의 필요 Project management : 계획 및 제어, 팀 조직, 팀 원의 이적, 요구의 변화

소프트웨어의 크기 범주

소프트웨어에 대한 오해 관리자의 오해 고객의 오해 소프트웨어 개발에 관한 좋은 책들이 있고 책 안에 개발 표준과 단계가 제시되어 있어 우리에게 필요한 모든 것을 제공할 것이다. 개발자들에게 필요한 최신 기계(Workstation)나 CASE 도구를 도입하였으니 좋은 제품을 빠른 시일 내에 만들 수 있을 것이다. 엔지니어들이 요구 분석을 하고 있으면 생산적이지 못한 일을 하고 있다고 생각한다. 공정이 지연될 경우 인력을 더 투입하면 해결된다. 고객의 오해 목표에 대한 개략적인 기술만 해놓으면 소프트웨어를 만드는 데 충분하다. 세부적인 것은 나중에 채워 넣으면 된다. 사용자의 요구 사항은 계속 변하며 소프트웨어는 융통성이 있어 쉽게 변경을 수용할 수 있다.

소프트웨어에 대한 오해 엔지니어의 오해 일단 프로그램이 만들어지고 작동하면 우리의 임무는 끝난다. 시스템을 작동시켜 보기 전까지는 품질을 평가할 방법이 없다. 프로젝트의 결과는 작동하는 프로그램뿐이다.

좋은 소프트웨어의 조건 소프트웨어의 품질 발주자 관점에서의 소프트웨어 품질 사용자 관점에서의 소프트웨어 품질 소프트웨어 자체(Product)의 품질 관점에 따라 품질에 대한 평가기준이 다름 발주자, 사용자, 유지보수자 소프트웨어 프로세스(Process)에 대한 품질 발주자 관점에서의 소프트웨어 품질 효율성 신뢰성 최소 비용 생산성 융통성 사용자 관점에서의 소프트웨어 품질 기능의 정확성 이해 용이성 사용 용이성 일관된 통합

좋은 소프트웨어의 조건 유지보수자 관점에서의 소프트웨어 품질 소프트웨어 Process 품질 모델 신뢰성 이식성 재사용성 유지보수성 상호운용성 소프트웨어 Process 품질 모델 CMM (Capability Maturity Model) : 미국방성 SPICE (Software Process Improvement and Capability dEtermination) : ISO

소프트웨어 생명 주기 모델 소프트웨어 생명 주기(software life cycle) 소프트웨어 제품이 고안될 때부터 시작하여 그 제품이 더 이상 쓸모없게 되기까지의 시간 구간. A time-ordered activities, which if performed in a manner that satisfies the ordering relationship, will produce the desired product. 소프트웨어 개발을 위한 기술과 절차들의 통합을 위한 framework. 프로젝트 수행을 위한 지침(guidance) 소프트웨어 개발과 관련된 여러 단계(stages)들의 순서를 결정 단계들 간에 전이를 위한 기준 (중간 제품의 정의) Evolution rather than creation will be the dominant development mode development use modification

소프트웨어 생명 주기 기존의 개발 Paradigm <개발 접근 방법> 비 정형화된 명세(Informal specification) Design decisions are lost Prototype is created manually and discarded Manual implementation Maintenance on source code Code is tested Requirements Informal Specification Prototype Concrete Source Program Analysis Validation Coding Testing Tuning Maintenance

소프트웨어 생명 주기 폭포수 모델 - 단계별 모델 각 단계는 다음 단계가 시작되기에 앞서 반드시 완료되어야 한다. =>순차적(sequential) 각 단계의 결과는 다음 단계가 시작되기에 앞서 정확성에 대한 검사가 이루어져야 한다. 프로토타입과 재사용의 가능성을 떨어뜨린다. 설계, 코딩, 테스팅이 지연된다. 별로 사용되지 않을 도큐먼트를 위해 너무 많은 노력이 든다. Data Collection System Analysis Requirements Definition Preliminary Design Detailed Design Coding Testing Installation

소프트웨어 생명 주기 점진적(incremental) 개발 모델 특정 기능이나 능력을 점진적으로 추가하는 방식으로 소프트웨어를 개발한다. Reduce risk : 핵심 기능 먼저, 기능 추가 시 변경 용이 Ease testing : 새로운 기능을 추가할 때마다 전체 시스템과 통합하여 테스팅 한다. 자연스러운 feedback RELEASE 1 RELEASE 2 RELEASE N Prelim Analysis System Test Software Requirements

소프트웨어 생명 주기 프로토타입 모델 인간 - 기계 상호작용 프로토타입 working 프로토타입 : 소프트웨어 기능의 일부분 실현 요구되는 기능의 일부 또는 전체 수행 <-- 개선을 목표 Prototype Development/ Refinement System Analysis Requirements Definition/ Design Evaluation Full-scale Implementation Installation

소프트웨어 생명 주기 나선형 모델(spiral model) 고전적 생명 주기 모델 + 프로토타입핑 + “위험 분석” 계획 수립 : 목적, 대안, 제한들의 결정 위험 분석 : 대안의 분석과 위험의 식별, 해결 방안 공학 : “다음 수준” 제품의 개발 고객 평가 : 공학 결과의 평가

소프트웨어 생명 주기 새로운 소프트웨어 개발 Paradigm <자동화 기반 개발 모델> Convert a formal software specification into a program satisfying the specification Formal specification Maintenance on specification Specification is the prototype Machine-aided implementation Testing is eliminated Development is automatically documented Decision and Rationale Informal Requirements Formal Development Requirements Analysis Formal Specification (prototype) Mechanical Optimization Concrete Source Program Validation Tuning Maintenance

S/W 개발에 영향을 미치는 요소 S/W 개발 프로젝트의 성공 요소 의사 소통 (Communication) 의사 소통 프로젝트의 성격 프로그래머의 역량 프로젝트 관리 기법 의사 소통 (Communication) 사용자와 개발자 사이의 의사 소통 프로젝트 팀 구성원 사이의 의사 소통 프로젝트의 크기 ==> 표1.1 참조 소프트웨어의 복잡도 소프트웨어 개발 및 유지보수는 노동집약적 프로그래머의 생산성 차이: 25대1 프로그래머의 능력 프로그래밍에 관한 능력 팀 구성원으로서 일할 수 있는 능력 응용 분야에 대한 이해도