CEM049 OSS Design Lecture 1 PDF - Introduction
Document Details

Uploaded by chominseo
Yeungnam University
Tags
Summary
These are lecture notes for CEM049 OSS Design Lecture #1: Introduction, from Yeungnam University. The notes cover topics such as software engineering design, the software development life cycle (SDLC), different software development methodologies, and the software development process.
Full Transcript
CEM049 OSS Design Lecture #1: Introduction Software engineering laboratory Yeungnam university Learning objectives ⚫ Software Development Life Cycle (SDLC) ⚫ Software development methodology ⚫ Software development process ⚫ Software project team 2 ...
CEM049 OSS Design Lecture #1: Introduction Software engineering laboratory Yeungnam university Learning objectives ⚫ Software Development Life Cycle (SDLC) ⚫ Software development methodology ⚫ Software development process ⚫ Software project team 2 1.1 Software analysis & design? ⚫ Software system analysis ⚫ 정보 시스템이 무엇을 하여야 하는지 자세히 이해하고 명세로 나타내는 일 ⚫ Software system design ⚫ 정보 시스템이 어떻게 구현되어야 하는지 자세히 나타내는 일 3 The important reason for SW design & analysis 고객이 설명한 요구, 분석하여 이해한 요구, 설계한 요구의 차이가 발생! 4 Examples of IT Project failure ⚫ Innovate project in McDonalds ⚫ Global ERP application 개발 ⚫ 120여개 국의 3만여 매장 연결 ⚫ 국가 보건 서비스 IT 현대화 프로젝트 in UK ⚫ 2년 delay, 100억 달러의 추가 투입 ⚫ 여러 업체에 맡겨 인터페이스 문제 ⚫ 의료 서비스 중단 ⚫ 자동 수화물 처리 in Denver airport ⚫ 짐 카트와 시스템의 동기화 문제 ⚫ 고객 통합 시스템 in KT ⚫ 외주 관리 및 통합의 문제 ⚫ Project management가 제대로 이루어지지 않아 수백억원 투자했지만 실패 5 1.2 Software designer ⚫ Software designer, analyst etc ⚫ 소프트웨어 개발에서 중요한 역할을 담당 ⚫ 비즈니스 니즈(needs)를 만족 시키기 위하여 분석과 설계 기술을 사용하 는 전문가 ⚫ 목표: 소프트웨어를 사용하는 기관에게 이익을 가져다주는 가치의 창출 ⚫ 소프트웨어는 단순 도구에 그치는 것이 아니라 기업이나 기관 경영이 세 운 목표에 좋은 성과를 달성하게 하는 통합 요소가 되어야 함! Programmer Customer User Software designer Test engineer Technical supporter Project Manager Domain Expert 6 Goals of software design ⚫ 멋진 소프트웨어(시스템)보다는 기관의 가치 창출 ⚫ 비즈니스 목표 달성 7 1.3 일반적인 시스템 개발 과정 ⚫ 소프트웨어 개발은 건축과 같음 ⚫ 요구사항을 반영한 기본 concept으로부터 시작하여 설계도에 따라 개발 ⚫ 시스템 개발 과정은 기본적으로 4단계로 구성 ⚫ 계획, 분석, 설계, 구현 ⚫ 각 단계별 산출물을 바탕으로 개발 과정을 점진적으로 구체화해나가야 함 8 계획(Planning) ⚫ 왜 Information system을 구축하여야 하는지 이해 ⚫ 프로젝트 팀이 앞으로 어떻게 할 것인지 결정 ⚫ 타당성 분석 (validity analysis) – 기술적, 경제적, 조직적 타당성 ⚫ 작업 계획 수립 ⚫ 팀 조직 수립 ⚫ 프로젝트 관리 계획 ⚫ 프로젝트 계획서 9 분석(Analysis) ⚫ 질문 ⚫ 누가 사용? ⚫ 언제 사용? ⚫ 시스템이 무엇을 해야 하나? (기능) ⚫ 작업 ⚫ 분석 전략 수립 SWOT 분석 현재 시스템(as-is system) 및 새로운 시스템(to-be system) 분석 ⚫ 요구 수집 인터뷰나 설문 ⚫ 문서화 제안서 문서 작성 10 설계(Design) ⚫ 시스템을 어떻게 구축할 것인가? (시스템이 어떻게 동작하는지 결정) ⚫ 시스템의 동작을 결정 ⚫ UI, 입력 양식, 보고서 ⚫ 프로그램 ⚫ 데이터베이스, 파일 ⚫ 설계 전략 수립 ⚫ 사내 프로그래머 개발? 아웃소싱? ⚫ 아키텍처 설계 ⚫ 소프트웨어 아키텍처, 인터페이스 설계 ⚫ 데이터 설계 ⚫ DB와 파일 설계 ⚫ 프로그램 설계 11 구현(Implementation) ⚫ 구축 또는 컴포넌트 통합으로 설계를 현실화 ⚫ 작업 단계 ⚫ 시스템 구축과 부분 테스트 ⚫ 시스템 설치, 전환 ⚫ 지원 계획 12 1.4 소프트웨어 개발 방법론 ⚫ 방법론(Methodology) ⚫ 소프트웨어 개발 생명주기(SDLC)를 구현하기 위하여 따라야 할 가이드라 인이나 정형화된 접근 방법 ⚫ 모델 ⚫ 실세계를 특정한 관점으로 표현한 것 ⚫ 예) 흐름도, 자료흐름도, 아키텍처, 유스케이스 다이어그램, 클래스 다이어그램….. ⚫ 도구 ⚫ 설계, 구현, 유지보수, 테스트 등 소프트웨어 산출물 생산에 도움을 주는 소프트웨어(툴) : CASE(Computer-aided Software Engineering) ⚫ 기술 ⚫ 개발 작업을 완성할 수 있도록 도움을 주는 가이드라인 13 ⚫ 예) 프로젝트 관리 기술, 객체지향 분석 설계 기술, 테스트 기술, … 1.5 Software process model ⚫ 프로세스: 소프트웨어를 개발해 나가는 단계나 과정 ⚫ 컨셉트를 정하는 것부터 소멸될 때까지 ⚫ 몇 달 또는 몇 년이 걸릴 수 있음 ⚫ 각 단계의 목표 ⚫ 명확한 작업 단계 ⚫ 손에 잡히는 결과 ⚫ 작업의 검토 ⚫ 다음 단계의 명시 ⚫ Code-and-Fix ⚫ 생명 주기가 없음 14 Waterfall model ⚫ 각 단계가 다음 단계 시작 전에 끝나야 함 ⚫ 순서적 - 각 단계 사이에 중복이나 상호작용이 없음 ⚫ 각 단계의 결과는 다음 단계가 시작 되기 전에 점검 ⚫ 바로 전단계로 피드백 ⚫ 단순하거나 응용 분야를 잘 알고 있는 경우 적합 ⚫ 한 번의 과정, 비전문가가 사용할 시스템 개발에 적합 15 Waterfall model ⚫ Advantages ⚫ 프로세스가 단순하여 초보자가 쉽게 적용 가능 ⚫ 중간 산출물이 명확, 관리하기 좋음 ⚫ 코드 생성 전 충분한 연구와 분석 단계 ⚫ Disadvantages ⚫ 처음 단계의 지나치게 강조하면 코딩, 테스트가 지연 ⚫ 각 단계의 전환에 많은 노력 ⚫ 프로토타입과 재사용의 기회가 줄어듦 ⚫ 소용 없는 다종의 문서를 생산할 가능성 있음 ⚫ 적용 ⚫ 이미 잘 알고 있는 문제나 연구 중심 문제에 적합 ⚫ 변화가 적은 프로젝트에 적합 16 Waterfall model ⚫ 폭포수 모형의 변형 ⚫ 병렬 개발 모형 (parallel model) 대규모 시스템을 쪼개어 병렬로 진행 17 Prototyping model ⚫ 프로토타입(quick and dirty)의 적용 ⚫ 사용자의 요구를 더 정확히 추출 ⚫ 알고리즘의 타당성, 운영체제와의 조화, 인터페이스의 시험 제작 ⚫ 프로토타이핑 도구 ⚫ 화면 생성기 ⚫ 비주얼 프로그래밍, 4세대 언어 등 ⚫ 공동의 참조 모델 ⚫ 사용자와 개발자의 의사소통을 도와주는 좋은 매개체 ⚫ 프로토타입의 목적 ⚫ 단순한 요구 추출 – 만들고 버림 ⚫ 제작 가능성 타진 - 개발 단계에서 유지보수가 이루어짐 18 Prototyping model ⚫ 단점 ⚫ 오해, 기대심리 유발, 관리가 어려움(중간 산출물 정의가 난해) ⚫ 적용 ⚫ 개발 착수 시점에 요구가 불투명할 때 ⚫ 혁신적인 기술을 사용해 보고 싶을 때 19 Spiral model ⚫ 여러 버전으로 나누어 순차적으로 개발 20 Spiral model ⚫ 장점 ⚫ 사전 위험 분석을 통한 돌출 위험 요소 감소 ⚫ 유용한 시스템을 빠른 기간 내에 사용자의 손에 들려줌 ⚫ 중요한 추가 요구를 조기에 발견 ⚫ 단점 ⚫ 반복적 개발에 의한 프로젝트 기간 연장 가능성 ⚫ 반복 횟수 증가에 따른 프로젝트 관리의 어려움 21 Agile model ⚫ Heavy 한 프로세스 ⚫ 과다한 단계 ⚫ 과다한 문서 ⚫ 코드가 나오기까지 시간이 많이 소요됨 ⚫ 과도한 모델링과 문서화의 짐을 과감히 생략하고 개발에 집중 ⚫ Extreme Programming, Scrum, DSDM ⚫ Extreme Programming의 핵심가치 4가지 ⚫ 의사소통 ⚫ 단순함 ⚫ 피드백 ⚫ 격려 22 개발 모델의 선택 Software process 시스템 개발 환경 Waterfall Parallel Prototyping Spiral Agile 불명확한 요구 1 1 3 2 3 생소한 기술 1 1 2 2 1 복잡한 시스템 2 2 1 2 1 신뢰도 높은 시스템 2 2 1 2 2 짧은 일정 1 2 3 3 3 일정 투명성 1 1 3 3 2 23 Score: 보다 적절할수록 높은 점수 1.6 프로젝트 팀 역할 ⚫ 프로젝트 팀 구성 ⚫ 시스템 분석가(소프트웨어 설계자) ⚫ 시스템 개발에서 제기된 이슈를 다룸 ⚫ 비즈니스 프로세스 개선 ⚫ 분석과 설계 작업에 대한 훈련과 경험 24 프로젝트 팀 역할 ⚫ 사용자 지원 ⚫ 기술적 정보 ⚫ 교육, 생산성 지원 ⚫ 헬프 데스크, 고객 센터 ⚫ 품질 보증 ⚫ 품질 관점에서 모든 결과물을 체크 ⚫ 테스트 ⚫ 개발과 별도의 조직 ⚫ 데이터베이스 관리자(DBA) ⚫ 데이터베이스 설계 관리 ⚫ 보안, 백업, 사용자 접근 제어 ⚫ 데이터베이스 튜닝 ⚫ 네트워크 관리자 ⚫ 네트워크 장비의 관리 및 유지보수 ⚫ 보안 25 Software project 실패 이유? ⚫ (학습) ⚫ 대규모 소프트웨어 개발 프로젝트에서는 실패 사례가 많이 있다. ⚫ 실패 사례들을 찾아보고 실제로 그 원인을 분석해 봅시다. 26 Questions?