1. 소프트웨어와소프트웨어공학
주요내용 소프트웨어의특징 소프트웨어개발의특징 소프트웨어공학이란? 소프트웨어공학의탄생 소프트웨어공학의필요성 소프트웨어공학의범위
목차 강의내용 팀프로젝트 (2 주차 ) - 소프트웨어 - 팀구성 - 소프트웨어개발 - 소프트웨어공학
모든곳에사용되는소프트웨어 P C 노트북 Mobile PDA 항공기 가전제품 건물
소프트웨어
소프트웨어란? 프레스만 (Pressman) 의정의 - 하고자하는기능이나성능을실행하기위한명령어 ( 컴퓨터프로그램 ) - 정보를적합하게가공하여프로그램을구동시키는자료구조 - 프로그램의사용과동작을설명한문서들 용도에따른소프트웨어의구분 - 응용소프트웨어 개인용컴퓨터에서흔히접하는소프트웨어 사용자가원하는목적에맞게개발된소프트웨어 예 ) 워드프로세서 (Word Processor), 스프레드시트 (Spread Sheet), 브라우저 (Browser), 회사업무지원프로그램등 - 시스템소프트웨어 하드웨어를관리하고응용소프트웨어를지원하는소프트웨어 예 ) 운영체제 (Operating System), 네트워크관리프로그램등
소프트웨어의특징 소프트웨어의비가시성 (Invisibility) - 소프트웨어완제품의구조가개발된코드안에숨어있어파악하기힘든특징 프레스만 (Pressman) 이정의한소프트웨어의특징 - 소프트웨어는고전적인의미의 제조 (Manufacture) 가아니라, 개발 (Development) 외는것이다. - 소프트웨어는닳지않지만, 요구사항의변경과주변환경의변화에따라수정되고진화한다.
소프트웨어의특성으로인한개발의어려움 소프트웨어는, - 물리적인형태가없는무형의논리적인요소 개발과정에대해정확하게이해하기어려움 개발진행상황을파악하기도어려움 - 최종산출물이개발과정에서확인되지않음 오류를발견해야할시기를놓치거나, 오류에대한해결책을못찾는경우가발생 - 프로젝트의지연및예상범위초과로인한프로젝트실패가능성이높음
2001 년미국소프트웨어프로젝트결과 20% 이하지연 : 6% 200% 이상지연 : 6% 21~50% 지연 : 8% 취소됨 : 29% 51~100% 지연 : 9% 101~200% 지연 : 26% 일정준수 : 26% 출처 : Software Industry Benchmarking Study 2001
소프트웨어개발
소프트웨어개발 (1/2) 고객의요구 요구사항분석설계구현테스팅 S/W 제품
소프트웨어개발에연관된역할들 (1/2) 고객 계약에따른의무 ( 소프트웨어 / 개발, 데드라인, 유지보수 ) 비용 개발자 요구사항 사용자 소프트웨어 / 시스템
소프트웨어개발에연관된역할들 (2/2) 고객 (Customer) - 소프트웨어의개발필요성을결정 - 사업적타당성을판단하여개발자에게소프트웨어시스템개발의뢰, 개발비를제공 사용자 (User) - 개발자에게소프트웨어시스템에대한사용자측면에서의요구사항을제공 - 고객이사용자의역할을같이할수도있음 - 다양한사용자가존재하는소프트웨어의경우 사용자의작업을이해하고, 요구사항을이끌어내는것이매우중요함 개발자 (Developer) - 고객과의계약대로주어진시간및비용내에서사용자들의요구사항을기반으로소프트웨어시스템을개발하는역할 - 1 명, 또는팀을구성하여작업
개발자에따라달라지는구현형태 예제프로그램 B 예제프로그램 C 예제프로그램 A
과거의소프트웨어개발 소프트웨어프로그래밍 = 예술 개발자에따라다양한방식이존재 사용자 = 프로그래머 = 유지보수담당자 체계적방법의부재?? 정형적인방법론이거의없고, 그것을사용할수? 있는사람도거의없음 프로그래머는시행착오에의해기술을습득함
점점더중요해지는소프트웨어 80% 美공군전투기 JSF 70% 내장소프트웨어의비율 F-22 60% 50% B-2 40% F-16 30% F-15 20% F-111 10% F- 4 A-7 0% 1960 1965 1970 1975 1980 1990 1995 2000 2003 Year Source: U.S Airforce
대규모프로젝트의어려움 수백명의개발자 - 의사소통및상호협력의어려움 - 조직및팀구조 SM PM Member Member Member 오랜개발시간 - 프로젝트관리 모호하고복잡한요구사항 - 수백페이지의요구사항 - 비용및효과의산정 - 빈번한요구사항의변화
소프트웨어공학의대두배경 소프트웨어위기 (Software crisis) - 소프트웨어수요증가에비해공급및개발의어려움 소프트웨어위기의해결 - 다른분야에서사용했던공학 (Engineering) 패러다임을이용하자는결론 - 1968 년 NATO conference 에서소프트웨어공학 (Software Engineering) 제안됨
소프트웨어공학 (Software Engineering) g
소프트웨어공학이란? 정의 - 소프트웨어의개발, 운용, 유지보수및폐기에대한체계적인접근방법 특징 - 소프트웨어개발전과정에걸쳐필요한이론, 개념및기술을다룸 - 소프트웨어개발과정에서생성되는모든산출물이그대상이됨 목표 - 소프트웨어개발이체계적이고공학적인방법으로이루어져추정된비용과기간에고객이원하는품질높은소프트웨어를개발하는것
과학, 공학, 예술의차이 공학 과학 예술
공학이란? 의미 - 실제적문제 (Practical Problem) 를해결하거나 - 실제적인산출물을생산해내기위해 - 자원과비용을효과적으로활용하면서 - 과학적지식을적용하는것 공학과소프트웨어공학 - 공학 업무분야에서문제발생시, 실무자가적절한해답을찾을수있도록체계적으로정리된기술적지식을제공 - 소프트웨어공학 소프트웨어개발기술, 절차및도구의우수한사례 (Best Practice) 들을정리하여소프트웨어개발시, 누구나당면한문제를해결할수있도록체계적인기술적지식을제공
소프트웨어공학의주요영역들 요구공학 CASE Requirements 테스트 개발도구 관리 아키텍처 유지보수 프로세스
소프트웨어공학의영역들 (1/3) 영역요구공학 (Requirement Engineering) 아키텍처 (Architecture) 주요내용 소프트웨어개발에서수행되는첫번째작업 개발될시스템에대한고객의요구를이해하고목표와제약사항을확립하여시스템을만족시킬기능, 성능그리고다른시스템과의인터페이스등을정의하는과정 비용증가, 납기지연, 품질저하를방지하기위한필수요건 요구사항의추출, 저장, 변경프로세스및요구사항관리지원도구등이연구되고있음 아키텍처구성요소와이구성요소들간의관계, 그리고시스템의기능, 속성및제약사항등을적절히반영하는구조가서로조직화되어목표시스템의전체적인형태를표현 적절히반영하는구조란기존의아키텍처스타일을문제영역에적절하게변형또는조합하고해당스타일에서언급하는컴포넌트 (Component) 와커넥터 (Connector) 로시스템을분할하여구조화하는것 아키텍처의유형분류, 아키텍처의정의언어, 아키텍처분석방법론등이연구되고있음 ` 개발방법론 (Development Methodology) 시스템을개발하기위해어떠한방법으로진행할것인가를다루는분야 구조적방법론, 객체지향방법론, 컴포넌트방법론등 개발기술의진화에따라계속적으로연구, 발전되고있음 개발조직의특성및여건에맞게조정 / 재정의될수있음
소프트웨어공학의영역들 (2/3) 영역 주요내용 테스팅 (Testing) 단위테스팅, 통합테스팅, 시스템테스팅등 효과적인테스트케이스산출방법론, 각개발방법론및분산환경에서의다양한테스트방법이연구되고있음 소프트웨어의개발및진화에사용되는활동, 방법및실무활동 (practice) 들의집합 프로세스 (Process) 최종소프트웨어제품을생산하기위하여요구되는인력, 절차, 방법, 장치및도구들을통합하는수단 프로세스정의방법, 프로세스관리조직및관리기반구조등에대해연구되고있음 소프트웨어프로세스의특성을설명하는모형및효과적인소프트웨어프로세스실현을위 한단계적접근방법을명시하는모델에관해연구되고있음 형상관리 (Configuration Management) 소프트웨어구성요소에대한변경관리대상인형상항목을식별하고변경을통제, 기록함 형상식별, 형상통제, 형상상태확인, 형상감사등의활동이있음
소프트웨어공학의영역들 (3/3) 영역품질 (Quality) 주요내용 소프트웨어분야에서품질은제품품질 (Product quality) 과프로세스품질 (Process quality) 로분류됨 제품품질은제품자체가가지는품질을의미하며, 프로세스품질은소프트웨어를개발하는프로세스가정확하고우수하면좋은품질의소프트웨어를생산할가능성이높다는것을의미 SQA(Software Quality Assurance) 활동, 제품검사, 검토등을지원하는평가모델, 국제 표준등이연구되고있음 재사용 (Reuse) 코드뿐만아니라응용분야에관한지식, 개발경험, 설계에관한결정, 시스템에대한지식, 요구분석사항, 설계, 문서등의재사용 코드재사용의한계를극복하기위해코딩단계이전의분석설계단계에서만들어진산출물을재사용하려는노력이계속되고있음
연습문제 1. 소프트웨어가가지고있는특성에대해설명하라. 2. 소프트웨어공학이란무엇인가? 3. 소프트웨어공학이나타나게된배경은무엇인가? 4. 소프트웨어위기를설명하라. 5. 소프트웨어공학의분야들을나열하라. 6. 소프트웨어와관련된고객, 사용자, 개발자의역할에대하여설명하라.
팀프로젝트 2 주차
이번주할일 프로젝트를진행하기위한팀을구성합니다. 제출내용 - 팀명 - 팀원, 팀장 ( 각이름, 학번 )
다음주제출문서 팀구성을확정합니다.