소프트웨어 공학 Chapter #1: 소개 1.

Slides:



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

프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
프로그래밍언어론 TA 윤들녁. 소개 윤들녁 연락처 : 공대 7 호관 4 층 401 호 데이터베이스 연구실 실습 후 날짜 _ 학번.zip 으로.
價値 시장을 잘 파악하기 위해서는 소비자의 상호작용에 대하여 관심을 가져야 한다. 이 제품의 사용자는 누구이며, 무엇을 하고, 어떤 환경에 있는지, 그리고 왜 그런 행동을 하는지에 대한 관찰을 통해 소비자의 생활 패턴을 파악해야.
Big Data & Hadoop. 1. Data Type by Sectors Expected Value using Big Data.
컴퓨터 종합설계 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
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
Hybrid INDIGO project 중간보고
데이터베이스 및 설계 금오공과대학교 컴퓨터공학부 이 이섭.
Windows Server 장. 사고를 대비한 데이터 백업.
시스템집적반도체 설계 검증 환경과 기법 Ch 7.
UNIT 06 JTAG Debugger 로봇 SW 교육원 조용수.
센서 11. 기체 압력 센서 안동대학교 물리학과 윤석수.
시스템 설계와 산업디자인 개발.
1. C++ 시작하기.
FTP 프로그램 채계화 박재은 박수민.
컴퓨터과학 전공탐색 배상원.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
1장. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
Method & library.
Chap 6.Assembler 유건우.
제3절 인터넷 비즈니스 창업성공전략과 고려사항
‘2012년 정보화 사업 교육 버그추적시스템(BTS) 사용 절차 2012, 02.
27장. 모듈화 프로그래밍.
제 10 장 의사결정이란 의사결정은 선택이다.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
ERP의 구축방법과 장·단점 1조 김두환 김수철 가민경 김정원.
Mobile braille system for the blind
USN(Ubiquitous Sensor Network)
Tiny OS와 NesC Tiny OS Part1. Won Mi Sun – 17 지능제어 연구실.
3 지식경영을 위한 인사·조직시스템 설계 현선해·차동옥 교수(성균관대학교 경영학부).
Chapter 03. 관계 데이터베이스 설계.
AUTODESK AUTOCAD ELECTRICAL 전기제어 2D 설계 소프트웨어 표준기반 설계 생산성 도구 구조도 설계
04. DBMS 개요 명지대학교 ICT 융합대학 김정호.
LabVIEW WiznTec 주임 박명대 1.
플래시 애니메이션 제작과정 (E-러닝) Lee Sunghoon 1.
판매 교육 발표자: [이름].
웹사이트 분석과 설계 (화면 설계) 학번: 성명: 박준석.
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
논문작성을 위한 연구모형 설정 양동훈.
Kangwon National Univ. | Computer Science
소프트웨어 공학 Lecture #10: 유지보수
( Windows Service Application Debugging )
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
알고리즘 알고리즘이란 무엇인가?.
Level 0 Level 1 Level 2 Level 3 공모전 후기 모음 웹 서비스 1. 웹 페이지 설계 2. 웹 서버 구현
뇌를 자극하는 Solaris bible.
충남대학교 Software Engineering Lab 김 대 엽
Coding for Kids.
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
발표자 : 이지연 Programming Systems Lab.
프로그래밍 언어 학습을 위한 가상실습환경 창원대학교 이수현.
.Net FrameWork for Web2.0 한석수
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
교량 구조물의 개념 설계 및 프로토타입 제작 과정
6시그마및품질관리 과제 – Define의 적용.
 6장. SQL 쿼리.
교착 상태 해결 : 교착 상태 탐지 교착 상태 탐지(Deadlock Detection)
6 객체.
VAULT BASIC / VAULT PROFESSIOAL
1 제조 기술의 세계 3 제품의 개발과 표준화 제품의 개발 표준화 금성출판사.
Presentation transcript:

소프트웨어 공학 Chapter #1: 소개 1

학습 목표 소프트웨어 소프트웨어 공학의 필요성 소프트웨어 공학이란? 소프트웨어 공학의 접근 방법 소프트웨어 공학 지식 체계

소프트웨어와 우리 생활 의존성(dependability)

1.1 소프트웨어 소프트웨어 소프트웨어의 특성 프로그램 + 프로그램의 개발, 운용, 보수에 필요한 정보 일체 개념적이고 무형적 (생산물의 구조가 코드 안에 숨어 있음) 소프트웨어의 특성 비가시성(Invisibility) 복잡성(Complexity) 변경성(Changeability) 복제 가능(Duplicability)

소프트웨어의 유형

소프트웨어와 시스템 시스템 : 필요한 기능을 실현시키기 위하여 관련 요소를 어떤 법칙에 따라 조합한 집합체 시스템의 성질 서브시스템 – 교통시스템은 신호기, 신호체계, 도로망 등 여러 요소가 있고 이들 요소들은 원활한 교통 소통과 제어를 위해 밀접하게 연관 기능적 분할 – 시스템은 규모가 작은 부속 시스템들로 나눌 수 있음 시스템 경계 – 시스템은 어떤 것이건 시스템과 주변 환경을 구분할 수 있는 경계가 있음. 이곳이 입력과 출력이 만나는 곳 자동화 경계 – 시스템이 자동화된 부분과 수동 작업 부분을 나누는 경계

1.2 소프트웨어 공학의 필요성 소프트웨어 공학은 소프트웨어에 있는 심각한 직접적인 손해 또는 간접적인 손해가 따를 수 있는 문제를 해결 소프트웨어 제품은 고객의 문제를 해결하기 위해 구축, 비즈니스를 운영하기 위하여 사용 비즈니스는 재고 관리, 재정 회계, 의료 정보, 교통 제어 관리 등 광범위한 의미 소프트웨어가 제대로 작동하지 않으면 재정적 손실이 크고 사용자가 불편을 겪음

고비용 LOC(Lines of Code) : 소프트웨어의 규모를 측정하는 데 가장 널리 사용 MM(Man-Month) : 소프트웨어 개발에 드는 비용 생산성 : MM당 생산하는 프로그램의 LOC 5만줄의 프로그램 – 4천만원 내지 1억 2천 정도의 비용 소프트웨어 위기 현상 그림1.3 하드웨어와 소프트웨어 비용 구성 추이

개발 지연과 낮은 신뢰도 계획에서 벗어난 컴퓨터 관련 개발 프로젝트 예상대로 작동하지 않는 사례 다른 요소(하드웨어)와 다름 600여 회사를 조사하였더니 35% 이상 예상대로 작동하지 않는 사례 방위산업 보고(70% 이상) 다른 요소(하드웨어)와 다름 노후화에 의한 물리적 특성의 변화에 의한 것이 아님 설계, 개발 과정에 유입된 오류에 의한 것

유지보수와 재작업 유지보수가 필요한 이유 소프트웨어 개발의 문제점 시스템에 남아 있는 오류가 있기 때문에 소프트웨어는 업그레이드가 흔하기 때문에 수정이 필요 소프트웨어 개발의 문제점 의도하는 바가 잘 드러나지 않음 >> 요구를 파악하기 어려움 개발을 진행하면서 요구가 변경되고 재작업이 필요 그림1.5 유지보수와 재작업

1.3 소프트웨어 공학이란? 소프트웨어 공학 : 소프트웨어의 개발과 운영, 유지보수, 소멸에 대한 체계적인 접근 방법 체계적인 접근 : 소프트웨어 개발에 사용되는 방법이 일회성이 아닌 반복 사용이 가능함 고강도의 소프트웨어는 사용자의 문제를 해결 >> 사용자의 요구를 만족시키기 위해 소프트웨어를 체계적으로 개발 그림1.6 다루는 근본 문제

규모 수만 줄의 소프트웨어를 개발할 때는 수백 줄의 프로그램을 개발하는 데 사용하는 방법과는 다른 방법을 적용 엔지니어링 식 접근 방법 - 방법, 절차, 도구 사용 그림1.7 규모 문제

품질과 생산성 엔지니어링 작업에서는 비용, 일정, 품질과 같은 변수가 중요 비용 일정 품질 Man-Month로 측정 짧은 time-to-market 품질 그림1.8 소프트웨어 공학의 목표 그림1.9 소프트웨어 품질 속성

품질과 생산성 품질을 나타내는 속성 기능성(functionality) 신뢰성(reliability) – 소프트웨어가 사용될 때 원래 정한 또는 내재된 요구를 만족시키는 기능을 제공하는 능력 신뢰성(reliability) – 소프트웨어가 정해진 수준의 성능을 유지할 수 있는 능력 사용용이성(usability) – 쉽게 이해되고 배울 수 있고 사용될 수 있는 능력 효율성(efficiency) – 사용되는 자원의 양에 따라 적절한 성능을 제공할 수 있는 능력 유지보수성(maintainability) – 정정, 개선, 적응시킬 목적으로 수정될 수 있는 능력 이식성(portability) – 별도의 작동이나 수단 없이 다양한 환경에서 적응될 수 있는 능력

일관성과 재현성 일관성 프로세스의 표준화가 필요 재현성 프로젝트의 결과를 어느 정도 정확하게 예측가능 더 높은 품질의 제품을 생산 프로세스의 표준화가 필요 ISO 9001 CMM(Capability Maturity Model) 재현성 개발하는 시스템 마다 높은 품질과 생산성을 갖도록 만드는 것 개발 능력, 결과의 재현성

변경 오늘날 비즈니스 환경 변화는 매우 빠름 변경을 조절하고 수용하는 것이 또 하나의 과제 소프트웨어 또한 시장에 따라 계속 진화하고 변경됨 소프트웨어는 변경을 어렵게 하는 물리적인 부분이 없음 변경을 조절하고 수용하는 것이 또 하나의 과제 변경은 소프트웨어 공학의 중요한 성장 요인

소프트웨어 공학의 접근 방법 프로젝트를 수행하는 동안 얻은 품질과 생산성은 여러 가지 요인에 좌우됨 품질을 좌우하는 세가지 : 인력, 프로세스, 기술 프로젝트 삼각 균형 그림1.10 삼각균형

소프트웨어 공학의 접근 방법 소프트웨어를 개발하는 프로세스를 소프트웨어와 분리 소프트웨어 공학은 소프트웨어 제작과정에 집중 알고리즘, 운영 체제, 데이터베이스 등은 소프트웨어 제품 자체에 초점 소프트웨어 엔지니어링 작업의 종류 소프트웨어 개발 프로세스 – 시스템에 대한 비전과 개념을 목표로 하는 컴퓨터 환경에 실행되는 소프트웨어로 바꾸는 작업 품질 보증 – SQA(Software Quality Assurance) 개발작업이 적절히 수행되었는지 확인 프로젝트 관리 – 개발과 품질보증 작업을 관리하고 감독

단계적 개발 프로세스 단계적 개발 프로세스를 따르는 이유 소프트웨어의 문제를 나눠 각 개발 단계에서 상이한 관점을 다루기 때문 개발하는 동안 정해진 시점에 품질과 진행을 체크할 수 있음 그림1.12 단계적 개발 프로세스

단계적 개발 프로세스 요구분석 : 소프트웨어 시스템이 풀어야 할 문제를 이해하기 위한 작업 시스템이 목표를 어떻게 성취? vs 시스템으로부터 무엇이 필요한가? 문제를 분석 : 문제와 그 배경을 잘 이해하고 개발할 시스템의 요구 찾기 요구를 정리 : 요구명세서(requirement specification) 시스템의 기능 이외에도 설계에 영향을 주는 모든 요인을 문서에 기술 설계 : 요구문서에 기술된 문제의 솔루션을 계획 요구를 어떻게 만족시킬 것인지 추구 아키텍처 설계 : 시스템을 여러 컴포넌트의 집합체로 보고 각 컴포넌트들이 요청한 결과를 위하여 어떻게 상호작용 하는지에 초점 상세설계 : 각 모듈의 내부 논리를 작성

단계적 개발 프로세스 코딩 테스팅 : 소프트웨어의 결함을 찾아냄 시스템 설계를 프로그래밍 언어로 변환 코딩 작업 중에는 읽기 쉽고 이해하기 쉬운 프로그램이 되어야 함 단순함과 명확성을 추구 테스팅 : 소프트웨어의 결함을 찾아냄 소프트웨어 개발 단계에서 사용되는 중요한 품질 제어 수단 프로그램에 포함된 요구, 설계, 코딩 오류를 밝힘 단위 테스팅(unit testing) : 모듈이나 컴포넌트를 개별적으로 시험 통합 테스팅(integration testing) : 모듈 사이의 연결을 시험 인수 테스팅(acceptance testing) : 시스템이 잘 실행되는지 고객에게 데모

일반적인 개발 단계 표 1.3 개발 프로세스 각 단계 분석 설계 구현 테스팅 단계 초점 주요작업과 기술 결과물 ● 시스템을 위하여 무엇을 만들 것인가? 1. 분석 전략 수립(3장) 2. 요구 결정(3장) 3. 사용 사례 분석(4장) 4. 구조적 모델링(6장) 5. 동적 모델링(6장) 요구 명세서 설계 ● 시스템을 어떻게 구축할 것인가? 1. 설계 전략 수립(7장) 2. 아키텍처 설계(5장) 3. 인터페이스 설계(7장) 4. 프로그램 설계 5. 데이터베이스, 파일 설계(7장) 설계 명세서 구현 ● 시스템의 코딩과 단위 시험 1. 프로그래밍(8장) 2. 단위 테스팅(9장) 3. 시스템 안정화 및 유지보수(10장) 새 시스템, 유지보수 계획 테스팅 ● 시스템이 요구에 맞게 실행되나? 1. 통합 테스팅(9장) 2. 시스템 테스팅(9장) 3. 인수 테스팅(9장) 4. 시스템의 설치(9장) 5. 프로젝트 관리 계획 테스팅 결과 보고서

품질 보증 품질 보증 : 개발되고 있는 소프트웨어가 요구와 품질 수준을 만족시킬 것이라는 것을 보장하는 작업 검토(verification) 개발작업이 프로젝트를 위해 선택된 프로세스와 방법에 맞게 수행되었는지 체크 요구된 소프트웨어 결과물이 품질 수준에 맞게 생산되었는지 검사 확인(validation) : 개발 프로세스에 의하여 생성된 결과물의 정확성을 체크 정적 확인(static validation) : 소프트웨어를 실행시키지 않고 결과물의 정확성을 체크 동적 확인(dynamic validation) : 소프트웨어를 실행시켜 잘 작동하는지 확인 테스팅 동적 확인 작업, 테스트 결과가 예상되는 결과와 일치하는지 체크

프로젝트 관리 프로세스와 관련된 이슈를 적절히 관리 프로세스 관리 작업 과정에 자원을 어떤 작업에 할당할 것인지 기술 소프트웨어 계획은 프로젝트의 개발 프로세스를 모니터링하고 제어하는데 사용되는 기준이 됨 프로세스 관리 객관적인 데이터가 필요. 소프트웨어 메트릭이 사용 프로덕트 메트릭 : 개발한 프로덕트, 소프트웨어 자체의 특성을 계량화 프로세스 메트릭 : 소프트웨어 개발에 사용된 프로세스의 생산성을 계량화

1.5 소프트웨어 공학 지식 체계 다른 분야와의 관계

SWEBOK

SWEBOK (Software Engineering Body of Knowledge)

Questions?