PowerPoint 프레젠테이션

Download Report

Transcript PowerPoint 프레젠테이션

정보처리 기사 소프트웨어공학
강사 : 김 진성
굿모닝 컴퓨터 학원
Contents
 소프트웨어 공학
 프로젝트 관리와 비용산정
 요구사항 분석과 설계
 객체지향 분석 및 설계
 소프트웨어 코딩. 검사. 유지보수
 최신 소프트웨어 공학 기술
굿모닝 컴퓨터 학원
소프트웨어 공학
 소프트웨어 공학 ?
– 소프트웨어의 개발, 운영, 유지보수, 그리고 폐기에 대한 체계적인 접근방안.
 소프트웨어 공학의 기본 원칙
00
– 현대적인 프로그래밍 기술 적용, 지속적인 검증, 결과에 대한 기록 유지.
 소프트웨어 위기
02,01,00
– 배경 : H/W에 비해 S/W 발전 속도가 느림, 수요에 비해 생산성이 못 미침, 개
발 인력 부족 및 개발 기술 미비, 기존 S/W 유지보수 어려움, 고 인건비.
– 원인 : S/W 특성 이해 부족, 관리 소홀, 품질이나 유지보수 고려 하지 않음.
– 문제점: 개발 예산 초과 , 생산성 저조, 품질 미흡
– 해결방안 : 생산성을 높이고 공학적인 접근방식으로 고 품질의 S/W 개발.
굿모닝 컴퓨터 학원
3
소프트웨어 공학
 소프트웨어 생명주기 ?
02,01,00
– SDLC(Software Development Life Cycle)이란 S/W 개발계획, 개발, 유지보수
및 폐기까지 전과정을 단계별로 표현하는 주기.
– SDLC의 역할
• 프로젝트 비용산정과 개발 계획을 수립할 수 있는 기본 골격 제공
• 용어의 표준화
• 개발 진행 상황을 명확하게 파악
• 충실한 문서화가 가능하여 프로젝트 관리가 용이
– SDLC의 종류
• 폭포수 모델, 프로토타이핑 모델, 나선형 모델, 4세데 모델
굿모닝 컴퓨터 학원
4
소프트웨어 공학
 폭포수 모형(Waterfall Model) ?
03,02,01,00
– Boehm에 의해 개발된 하향식 생명주기 모델
– 가장 오래된 모형으로 S/W 공학에서 널리 사용됨
– 전 단계가 종료되어야 다음 단계로 넘어가는 선형 순차 모델
– 단계별 정의 및 단계별 산출물이 명확
– 전 단계에서 오류가 발생하면 많은 노력이 소요됨
– 개발 과정에서 새로운 요구사항이 발생하면 수용하기 어려움
– 개발 과정 :
타당성 검토
계획
분석
설계
구현
검사
유지보수
굿모닝 컴퓨터 학원
5
소프트웨어 공학
 프로토타이핑 모형(Prototyping Model) ?
02,01,00
– 사용자의 의뢰한 프로젝트에 대해 소프트웨어 일부분을 개발하여 사용자의
요구사항을 분석하기 위한 메커니즘으로 사용.
– 개발자와 사용자간의 의사소통이 용이
– 빠른 시간 내에 소프트웨어 개발이 가능
– 발주자와 개발자 모두에게 공동 참여가 가능
– 프로토타입은 생산성 향상과 품질 향상에 도움
– 최종 결과물 예측이 가능
– 잘못된 프로토타입은 오히려 소프트웨어 공정 과정을 어렵고, 길게 만듬
– 개발 과정
요구사항 수집
설계
프로토타입 개발/개선
구현
인수/설치
굿모닝 컴퓨터 학원
6
소프트웨어 공학
 나선형 모형(Spiral Model) ?
03
– 프로세스가 진행됨에 따라 소프트웨어가 진화하므로 개발자와 고객이 전개
과정에 따른 위험을 이해하고 대응할 수 있다.
– 위험분석 관리가 용이
– 대규모 시스템과 소프트웨어 개발에서 가장 현실적인 접근방법.
– 개발 과정
계획수립
고객평가
굿모닝 컴퓨터 학원
위험분석
개발
7
소프트웨어 공학
 4세대 모형(4th Generation Techniques Model) ?
– 4세대 도구를 사용해 공정 과정을 자동화하여, 빠른 시간 내에 고 품질을 소
프트웨어 생산을 목적.
– 4세대(4GT) 도구 : 소프트웨어의 몇몇 특성을 고 수준에서 기술하는 소프트
웨어 도구.
– 개발 과정
요구사항 수집
설계 전략
4GT을 이용한 구현
제품화
굿모닝 컴퓨터 학원
8
소프트웨어 공학
 소프트웨어 개발 절차
– 정의 단계
• 무엇(What)에 초점
• 시스템 분석(컴퓨터 기반 시스템), 프로젝트 계획(작업 일정, 비용산정,
인원 등), 요구사항 분석(요구사항 이해 등)
– 개발 단계
• 어떻게(How)에 초점
• 소프트웨어 설계(자료구조, 알고리즘 등) -> 코딩 -> 검사(결함 분석)
– 유지보수 단계
• 교정(결정 교정), 적응(환경 변화에 대처), 기능 개선(기능 추가)
굿모닝 컴퓨터 학원
9
프로젝트 관리와 비용 산정
 프로젝트 관리 ?
02,01,00
– 특정 목적을 달성하기 위하여 개발계획을 수립하고, 분석, 설계, 구현
등의 작업을 통제하는 활동.
– 소프트웨어 생명주기의 전 과정에 걸쳐 진행됨
– 관리 대상 : 비용관리, 일정관리, 품질관리
– 프로젝트 관리 4단계
• 1단계 : 프로젝트 계획수립 : 프로젝트 정의, 계획, 일정계획 등
• 2단계 : 프로젝트 가동 : 프로젝트 착수 작업(환경구성,교육 등)
• 3단계 : 프로젝트 통제 : 척도 점검, 상황표 작성
• 4단계 : 프로젝트 종료 : 완전성 점검, 성과 평가 척도
굿모닝 컴퓨터 학원
10
프로젝트 관리와 비용 산정
 프로젝트 위험 관리 ?
02,01,00
– 프로젝트 위험
• 프로젝트의 정상적인 납기, 원가 및 품질에 영향을 미칠 수 있다고
판단되는 모든 사건.
– 프로젝트 위험 관리
• 프로젝트 위험을 미리 예측하여 이를 분석하고 적절한 대책을 수
립하여 체계적으로 관리하는 과정
– 프로젝트 위험 관리 절차
• 위험 식별 -> 위험분석 및 평가 ->위험관리 계획 -> 위험감시 및 조치
– RMMM(Risk Mitigation, Monitoring, Management)
• 위험 회피 : 위험 관리의 최상의 전략
• 위험감시 : 프로젝트 진행 중의 위험감시 활동
• 위험관리 및 비상계획 : 대응방안과 비상계획 수립
굿모닝 컴퓨터 학원
11
프로젝트 관리와 비용 산정
 프로젝트 일정계획
01,00
– 프로젝트 일정계획 수립 순서
• 프로젝트 규모 추정
• 각 단계에 필요한 작업 분리
• 각 작업의 상호의존 관계를 CPM으로 나타냄
• 일정계획을 갠트 도표(Gantt Chart)로 나타냄
• 프로젝트 작업 일정을 네트워크로 표현(CPM, PERT)
– CPM(Critical Path Method, 결정적 경로방법)
• 작업수행 과정이 부분으로 나누어져 있을 경우 어느 경로를 통해 작업을
수행할 것인지를 네트워크 형태로 표현한 도표
– PERT(Program Evaluation and Review Technique)
• 프로젝트 평가 및 검토 기술 : 프로젝트 이행 과정을 나타내는 도표.
– WBS(Work Breakdown Structure)
• 업무 분류 구조 : 프로젝트의 각 부분을 표현하는 도표.
굿모닝 컴퓨터 학원
12
프로젝트 관리와 비용 산정
 프로젝트 비용산정
02,01,00
– 비용 산정 시 고려사항
• 프로젝트 요소 : 문제 복잡도, 시스템 크기, 시스템 신뢰도
• 자원 요소 : 인적 자원, 시스템 자원, 재사용 가능 자원(CBD)
• 생산성 요소 : 개발자 능력, 개발 기간/비용, 개발 방법론
– 비용 산정법
• 하향식
– 전체 시스템 차원에서 비용 산정 후 각 서브 모델 비용 산정
– 형상 관리, 품질 보증, 시스템 통합 , 컴퓨터 자원의 비용에 초점
– 종류 : 전문가 감정, 델파이식 산정
• 상향식
– 각 모듈 개발 비용 산정 후 전체 비용 산정
– 종류 : 원시 코드 라인수(LOC)
• 수학적 산정
– 개발비 산정의 자동화를 목표
– 종류: COCOMO 모델,Putnam 생명주기 예측 모델,기능점수 모델.
굿모닝 컴퓨터 학원
13
프로젝트 관리와 비용 산정
 프로젝트 비용산정
02,01,00
– COCOMO 모델
• 소프트웨어 규모 뿐만 아니라 소프트웨어 복잡도, 응용분야에 따라 비용산
정 방정식을 적용하여 다르게 비용을 적용하는 모델.
• 프로젝트 개발 유형
– 유기형(Organic) 모드(application)
– 준 분리형(Semi-detached) 모드 : 개발 지원 도구
– 내재형(Embedded) 모드 : 시스템 S/W 적용
• COCOMO 모델의 종류
– Basic COCOMO : 소프트웨어 개발 노력 과 비용 등을 산정
– Intermediate COCOMO : Basic COCOMO 모형에 노력 승수 포함
– Detailed COCOMO : 보다 더 정확히 비용을 산정.
– Putnam 측정 모델
• 대형 프로젝트에 대한 노력 분포를 나타내는 동적 다중 변수 모델.
• SLIM : Putnam 모델을 기초로 만든 자동 비용 측정 도구
– 기능점수(Function Point : FP) 모델
• S/W 규모, 복자도, 나이도 등을 하나의 수치로 산정하는 모델
굿모닝 컴퓨터 학원
14
요구사항 분석과 설계
 요구사항 분석 ?
– 사용자의 요구사항을 명확히 규정하고 , 시스템의 특성을 반영하는
과정.
– 요구분석의 원리
• 정보 영역 설정의 원리, 문제의 분할정복,시스템의 논리적.물리
적 표현 원리
 구조적 시스템 분석(Structured System Analysis)
– 자료의 흐름 분석
– 자료흐름도(DFD:Data Flow Diagram), 자료사전(DD:Data
Dictionary), 소단위 명세서(Mini-Spec)를 이용하여 분석.
– 자료 흐름도(DFD)
03,02,01,00
• 시스템을 구성하는 기능들 사이의 데이터 흐름을 기호로 표현
단말이름
굿모닝 컴퓨터 학원
처리
자료흐름
자료 저장소
15
요구사항 분석과 설계
 구조적 시스템 분석(Structured System Analysis)
– 자료사전(DD:Data Dictionary)
01
• 자료흐름도, 프로세스 명세에서 언급된 모든 자료를 수학적 표
기법으로 정의.
=
+
{}
[|]
정의, 구성
연결
반복
선택
()
**
; 또는 |
생략가능
주석
대체 사항 나열
 기타 분석 도구
– 객체 관계도(ERD)
02,00
고객
구매
주문
• 데이터 구조들과 그 들간의 관계들을 표현
• 개체, 속성, 관계 기호를 이용
– ERD 작성 순서
책
ERD 예
• 엔티티 속성 찾음 -> 엔티티 사이의 관계 정의 -> 1:M. N:M 관계표현 ->
각 엔티티 정규화, 누락된 엔티티 점검
굿모닝 컴퓨터 학원
16
소프트웨어 설계
 모듈(Module) ?
03,02,01
– 시스템을 기능 단위로 분해 시킨 것
– 기능 활용면에 계층적 순서 제시
– 자료 추상화 구현
– 변경, 시험, 유지보수 용이
– 메모리를 효과적으로 이용
– 특징 : 응집도 높임, 결합도 낮춤, 복잡도 줄이고 중복 피함.
– 응집도(Cohesion) : 모듈 내의 기능적 응집의 정도
우연적
논리적
시간적
절차적
통신적
기능적
높음(좋음)
– 결합도(Coupling) : 모듈간의 상대적인 연관성 정도, 의존도
자료결합도 구조결합도 제어결합도 외부결합도 공통결합도 내용결합도
Data
낮음
굿모닝 컴퓨터 학원
Stamp
Control
External
Common
Content
높음(좋지않음)
17
소프트웨어 설계
 IPT 기법 ?
– IPT(Improved Programming Technologies)
– 보다 효율적이 신뢰성이 높은 프로그램을 개발하기 위해 사용되는 각종 기법을
말함.
– S/W 생성산성을 높이고 품질관리 및 표준화를 위한 S/W공학기법.
– 종류 : HPO, Action Diagram,의사결정 테이블/트리, 흐름도,NS차트,PDL
 HIPO
02,01,00
– 프로그램의 논리적 문서화와 설계를 위해 도식적인 방법 제공
– 입력, 처리, 출력 구조를 시각적으로 표현.
– 특징 : 하향식 개발, 문서의 체계화, 시각적, 유지보수 용이, 플로 차트 대체 불가,
기능과 데이터 의존관계 동시 표현.
– 가시적 도표(Visual Table Of Contents) : 시스템 전체 구성을 계층적 구조도표로
표현.
총괄 도표(Overview Diagram) : 입력, 처리, 출력의 관계 표현.상세 도표(Detail
Diagram) : 총괄 도표의 각 기능 구체적 표현.
굿모닝 컴퓨터 학원
18
객체지향 분석 및 설계
 객체지향 ?
03,02,01,00
– 인간은 사물과 그 사물의 행위를 묶어서 생각하는 것처럼, 프로그래
밍에서 데이터와 프로세스(처리 절차)를 하나의 개체로 묶는 개념.
– 객체 지향 용어
• 객체 : 자료(데이터)와 자료를 처리하는 메소드(Method)로 구성
• 개체의 구성 요소 : 자료, 메소드, 메시지
Data
Method
Message
Data
Method
Object A : 객체를 생성하는 템플릿(설계도)
Object B
• 클래스(Class)
클래스명
속성
메소드
굿모닝 컴퓨터 학원
Data가 저장될 장소(변수)
속성을 처리하는 방법
19
객체지향 분석 및 설계
 객체지향 특징
03,02,01,00
도형(그리다)
– 다형성(Polymorphism)
• 같은 메시지에 대해 객체가 서로 다르게 반응.
– 상속성(Inheritance)
– 캡슐화(Encapsulation)
• 정보 은폐
사각형
대학생
• 기존 클래스로 새로운 클래스 정의.
• How 보다 What에 중시
원
대학원생
갭슐화 된
자료
• 장점 : 재사용 용이, 인터페이스 단순, 이식성과 확장성 높음
• 단점 : 연산방법이 복잡
– 추상화(Abstraction)
• 객체의 필수기능만 구현하고 세부적인 내용의 기술은 피함
• 상속을 통해서 세부적인 내용 기술, 클래스의 활용성 높음
굿모닝 컴퓨터 학원
20
객체지향 분석 및 설계
 람바우(Rumbaugh)의 OMT 방법론
02,01
– 객체지향 분석 기법으로 객체 모델, 동적 모델, 기능 모델 기법을 제
시.
– 객체 모델(Object Modeling)
• 객체와 클래스를 집단화, 일반화 관계를 중심으로 표현
• 객체들을 식별하고 객체들간의 관계 정의
• 구성요소 : 객체 다이어그램, 자료사전
– 동적 모델(Dynamic Modeling)
• 시간 변화에 대한 일련의 과정을 기술
• 실시간 시스템에 필수
• 구성요소: 상태 다이어그램, 사건 흐름 다어그램
– 기능 모델링(Function Modeling)
• DFD를 이용하여 프로세스 처리과정 기술
• 구성요소 : 자료흐름도
굿모닝 컴퓨터 학원
21
객체지향 분석 및 설계
 UML(Unified Modeling Language)
03
– 객체 지향 분석과 설계를 위한 모델링 언어
– Booch, Rumbaugh,jacobson의 객체지향 방법론 통합
– 국제 표준화 기구인 OMG에서 표준화 인정.
– 객체 지향 분석 및 설계
• 분석 단계 : 시스템이 무엇(What)을 해야 하는가를 명세
• 설계 단계 : 구현환경에 어떻게(How) 실현할 것인가 명세
– 객체지향 분석 단계의 다이어그램
• Use Case, 개념적 Class, Interaction(순차,협력), State, Activity
Diagram.
– 객체지향 설계 단계의 다이어그램
• 상세 Class, Component Diagram
굿모닝 컴퓨터 학원
22
객체지향 분석 및 설계
 UML Diagram의 종류
– Use Case : 사용자와 컴퓨터 간의 상호작용 표현
– Class : 객체들의 유형과 관계 표현
– Interaction(순차) : 시간의 흐름 중심으로 표현
– Interaction(협력) : 객체들 사이의 관계 중심 표현
– State : 상태의 변화 관점에서 흐름 표현
– Activity : 행위 관점에서 흐름 표현
– Component : 개발자의 환경 안에서 실제 S/W 모듈에 대한 표현.
 객체지향 프로그램밍의 특징
– 재사용성(Reusability) : 개발된 프로그램 다시 사용
– 확장 용이성(Extensibility) : 기능 추가의 용이성
– 신뢰성(Reliability) : 오류가 없는 견고한 소프트웨어 생산성
굿모닝 컴퓨터 학원
23
소프트웨어 코딩.검사.유지보수
 프로그래밍 언어의 선택 기준
– 언어 적용분야, 소프트웨어 실행 환경, 알고리즘 및 복잡도, 수행효율
성, 소프트웨어 개발자 지식, 자료구조 구현 나이도,
 소프트웨어 검사
02,01,00
– 시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가 어떤 차이를
보이는지 수동 또는 자동 방법을 동원하여 검사 및 평가.
– 종류 : 블랙 박스 검사, 화이트 박스 검사
– 블랙박스 검사
• 프로그램 외부 사양에 근거한 검사
• 각각의 기능들이 제대로 작동되는가를 증명하기 위한 검사.
• 기능검사, 데이터 동작, 입.출력 동작 검사
• 종류 : 동등분할, 경계값 분석, 원인/결과 그래프, 오류예측 기법
굿모닝 컴퓨터 학원
24
소프트웨어 코딩.검사.유지보수
 소프트웨어 검사
02,01,00
– 화이트 박스 검사
• 소프트웨어의 내부 논리구조를 참고하여 알고리즘 정확성 여부
• 논리적인 동작 상태 검사
• 종류 : 구조검사, 루프검사, 조건 검사, 데이터 흐름 검사
 소프트웨어 검사 단계
– 단위 검사 또는 모듈 검사
– 통합 검사 : 모듈들을 통합시키는 과정에서 수행되는 검사
– 확인 검사 : 사용자 위주의 검사 기법
– 시스템 검사 : 시스템 공학 측면에서 시스템 전체 검사
• 종류 : 회복, 보안, 강도, 민감도, 성능, 사용 용이성 검사
굿모닝 컴퓨터 학원
25
소프트웨어 코딩.검사.유지보수
 소프트웨어 디버깅
– 소프트웨어 오류의 원인을 찾아 교정하는 작업
 유지보수
02,01,00
– 개발된 소프트웨어에 대한 오류 수정 및 변화된 환경에 기능을 개선하
는 작업
– 유지 보수 종류
• 교정 유지보수 : 하나 또는 그 이상의 오류 진단과 교정
• 완전화 유지보수 : 새로운 기능 및 기존 기능 개선 작업
• 적응 유지보수 : 변화된 환경에 대응한 작업
• 예방적 조치 : 미래의 품질 향상을 위한 작업
– 외계인 코드(Alien Code)
01
• 15년 이상 된 유지보수가 어려운 프로그램
• 개발 방법론이 적용되지않고, 문서화가 빈약한 프로그램
굿모닝 컴퓨터 학원
26
소프트웨어 코딩.검사.유지보수
 형상관리
02,01,00
– 소프트웨어 개발 및 유지보수 과정에서 발생한 각종 문서 등의 산출물
을 체계적으로 관리하기 위한 기법.
– 등장 배경
• 가시성 결여, 통제의 어려움, 추적의 결여, 감시 미비, 무절제한 변
경.
– 형상 관리의 목적
• 소프트웨어 변경에 대한 전체 비용 최소화
• 개발자 측면과 사용자 측면의 충격 최소화
– 형상 관리의 기능
• 형상 식별 : 형상 관리 항목들을 구분하고 관리 번호 부여
• 형상 통제 : 변경을 통제 관리하는 활동
• 형상 감사 : 변경사항에 대한 검증.확인 수행
• 형상 정보관리 : 식별,통제,감사 기능의 수행결과 기록,DB관리.
굿모닝 컴퓨터 학원
27
최신 소프트웨어 공학 기술
 소프트웨어 재사용(Reuse)
02,01,00
– 기존에 개발된 소프트웨어의 전체 또는 일부분을 재사용하여 s/w 생
산성 및 개발 기간과 비용 감소를 목적.
– 재사용 장점
• 프로젝트 실패 위험 줄임.
• 개발 시간 및 비용 감소.
• 생산성 향상.
• 소프트웨어 품질 향상
• 시스템 개발 문서 공유
• 시스템 구조에 대한 지식과 개발 방법의 습득 용이.
굿모닝 컴퓨터 학원
28
최신 소프트웨어 공학 기술
 소프트웨어 재공학(Re-engineering)
02,00
– 기존에 개발된 소프트웨어의 취약한 부분들의 품질을 단계적으로 향
상시켜 소프트웨어 기능 향상과 수명 연장을 목적.
– 재공학의 목적
• 유지보수성 향상, 기술 향상, 수명 연장
– 재공학의 활동
• 분석(Analysis) : 프로그램 동작 이해 및 재공학 대상 선정.
• 재구축(Restructuring) : S/W 형태를 목적에 맞게 수정.
• 역 공학(Reverse Engineering) : 원시 코드를 분석하여 기존 시
스템의 설계정보를 다시 제작하고 기존 시스템의 문서화를 다시
작성하는 활동.
굿모닝 컴퓨터 학원
29
최신 소프트웨어 공학 기술
 CASE
02,01,00
– Computer-Aided Software Engineering
– 시스템 개발 과정의 일부분 또는 전체를 자동화 하는 도구
– 개발 도구와 방법론이 결합됨
– CASE 장점
• 소프트웨어 개발 모든 단계에 대한 표준 확립
• 개발 기간의 단축 및 개발 속도 증진
• 소프트웨어 품질 향상 프로젝트 관리 용이
• 소프트웨어 부품의 재사용성 증대, 유지보수 용이
• 문서화의 용이성 제공
– CASE 분류
• 상위 CASE(계획 수립), 중위 CASE(분석/설계), 하위 CASE(코딩/테스트
/문서화)
– 정보저장소
• CASE 핵심 부품으로 프로젝트 수행 중 발생하는 모든 시스템 정보를 저
장하고 관리하는 곳.
굿모닝 컴퓨터 학원
30