소프트웨어 설계 1

Download Report

Transcript 소프트웨어 설계 1

1장. S/W와 S/W 설계
1 소프트웨어의 기본 계념
2 소프트웨어 설계 란 ?
3 소프트웨어의 위기
4 소프트웨어 개발 방법
5 소프트웨어 개발 생명 주기
6 소프트웨어 개발 모형
7 소프트웨어 개발에 영향을 미치는 요소
소프트웨어 설계
1
소프트웨어란 무엇인가?
…
컴퓨터 프로그램, 처리 절차, 규칙과
컴퓨터 시스템의 운영과 연관성 있는
모든 관련 문서와 데이타
소프트웨어 설계
2
1. 유형성 : 분석자료, 설계
2. 동적 행위성 :
프로그램(정적), S/W(동적)
3. 복잡성 : 정확한 원칙이 없어  복잡도
4. 순응성 :
적합성,호환성,유연성 적절하게 변경 가능
5. 비마모성 :
H/W(후기고장률 큼), S/W(초기고장률 큼)
6. 복제 가능성 : 간단
소프트웨어 설계
 불법 복제로 피해 심각
3
소프트웨어의 개발, 운영, 유지 보수
그리고 폐기에 대한 체계적인 접근
소프트웨어 설계
4
• 소프트웨어의 세 가지 중요한 요소
1. 방법(method): 소프트웨어 구축을 위한 기술
• 분석과 설계, 유지보수, 문서화 등
2. 도구(tool): 방법들을 자동화, 반자동화
3. 절차(procedure) : 방법 + 도구
소프트웨어 설계
5
• 소프트웨어의 중요 목표
- 소프트웨어 제품의 품질 향상
- 개발 생산성 향상
- 소프트웨어 엔지니어의 작업 만족도 향상
- 생산 자동화의 향상
- 효과적인 프로젝트 관리
소프트웨어 설계
6
1.1970년대 초 : 구조적 프로그래밍
2.1970년대 중 : 설계 방법론 출현
3.1970년대 말 : 분석 방법론 출현
4.1980년대 초 : 자동화 도구,
객체지향 설계와 프로그래밍
5.1980년대 말 : 컴퓨터 응용 소프트웨어 공학
6.1990년대
소프트웨어 설계
: 객체 지향 기술
7
• 소프트웨어 품질 목표
1. 인간의 생명과 관계되는 목표
- 정확성
- 신뢰성
- 시험 용이성
2. 소프트웨어의 수명을 연장시키는 목표
- 유지 보수 용이성
- 유연성
- 재사용성
- 이식성
소프트웨어 설계
8
3. 실시간 응용 분야를 위한 목표
- 정확성
- 신뢰성
- 효율성
4. 기타
- 무결성
- 상호 운용성
- 사용 용이성
소프트웨어 설계
9
발주자
최소비용
생산성
융통성
효율성
신뢰성
사용자
기능의 정확성
이해 용이성
사용 용이성
일관된 통합
이식성
재사용성
유지 보수성
상호 운용성
소프트웨어 설계
유지 보수자
10
1.개인적인 능력
5.신뢰도 수준
2.팀 의사 전달
6.문제의 이해
3.제품의 복잡도
7.가용 시간
8.관리 기술
4.기술 수준
9.시설 및 자원
소프트웨어 설계
11
1.문제의 분석, 정확한 요구 사항 도출
2.소프트웨어 시스템 구조, 입출력, 인터페이스 설계 기술
3.알고리즘, 자료구조, 파일구조, 데이터베이스 설계 기술
4.양질의 프로그램 생산 기술
5.프로그램 시험 및 통합 기술
6.사용자 지침서 및 각종 개발 문서 작성
7.시스템 성능 측정 방법과 모델 설계 기술
8.유지 보수 기술
9.프로젝트 계획 및 관리 기술
10.첨단 기술의 이해 및 적용 능력
소프트웨어 설계
12
1.소프트웨어 규모의 공룡화,
복잡화에 따른 개발비용 증대
2.하드웨어 대 소프트웨어 가격 비용의 역전
3.소프트웨어 품질의 저하
4.유지 보수의 어려움과 개발 적체 현상 발생
5.프로젝트 개발 일정 및 소요 예산 예측의 어려움
6.신 기술에 대한 교육, 훈련의 부족
소프트웨어 설계
13
1.프로젝트 개발 예산의 초과
2.프로젝트 개발 일정의 지연
3.소프트웨어 생산성의 낙후
4.소프트웨어 품질의 미흡
소프트웨어 설계
14
1.신 기술 교육 및 훈련에 적극적인 투자
2.소프트웨어 공학 기법의 도입
소프트웨어 설계
15
1. 고전적인 방법론
2. 구조적 방법론
3. 정보 공학 방법론
4. 객체 지향 방법론
소프트웨어 설계
16
1. 구조적 방법의 탄생 경위
2. 구조적 방법의 종류
3. 구조적 방법의 발전 과정
4. 구조적 방법의 기본 원리
5. 구조적 방법의 효과
소프트웨어 설계
17
• 고전적인 방법 : 문제 전체의 파악을 경시
• 실행 가능한 처리만을 프로그램으로 구현
- 전체 상태 파악 곤란
- 문제점들이 최종 단계 에서 발견
• 탄생 경위 구조화 방법의 제안
• 분석과 설계 중요하게 생각
- 기능 중심의 시스템 분할
- 하향식(T-D) 분할 모형
- 그림 모형 사용
소프트웨어 설계
18
1. 자료 흐름 중심 방법 : - 자료 흐름에 초점
- 정보처리에 대한 포괄적 시야 제공
2. 자료 구조 중심 방법 : -자료 구조에 중심
- 입출력 자료 구조로부터 프로그램
구조, 세부 절차를 도출
소프트웨어 설계
19
1.추상화(Abstraction)
2.정형화(Formality)
3.분할과 정복(Divide-and-Conquer)개념
4.계층적 순서화(Hierarchical Ordering)
소프트웨어 설계
20
공원
사용자
주택
사무실(목적지)
가게
사용자
소프트웨어 설계
사무실(목적지)
21
소프트웨어 설계
개발
운영
폐기
유지보수
22
소프트웨어 설계
23
냉각기 고장
도어 고장
휠 빠짐
배터리 방전
시트 고장
...
차체고장
타이어 펑크
...
소프트웨어 설계
엔진고장
...
바퀴고장
24
1. 기능 중심 하향식 분할
2. 개발자와 사용자 사이에 의사 소통 용이
3. 개발 작업의 중복성 배제
4. 전체 시스템의 일관성 있는 이해 용이
소프트웨어 설계
25
1. 정보 공학의 정의
2. 정보 공학의 특징
3. 분석 및 설계 방법
4. 다이어그래밍 방법
5. 구조적 방법론과의 차이점
소프트웨어 설계
26
기업의 전반적인 영역에 대해서
정보 체계의 계획, 분석, 설계,
구축을 위한 기법
소프트웨어 설계
27
1.기업 전체, 혹은 여러 부문에 적용
2.하향식 진행
3.각종 정보들을 정보 저장소에 축적
4.기업 전체에 대한 정보 시스템의 틀 구성 후,
각각의 시스템은 그 틀에 맞추어 개발
5.자동화 도구 사용으로 시스템의 신속한 개발, 변경 가능
6.장기간에 걸친 시스템 발전 가능
소프트웨어 설계
28
- 기업 목표, 주요 성공 요인 검토(경영자 입장)
- 최고 경영자 층의 사업 목표 지향
- 사업 경쟁력 창출을 위한 기술의 사용 방법 제시
- 기업, 주요 기능, 필요 데이터 및 정보의 도출
소프트웨어 설계
29
-기업 운영 과정, 과정들 상호 관련성 검토
- 정규화된 자료 모델, 처리 모델 작성
- 필요한 업무 절차 수립
- 업무 처리간의 상관 관계 정립
- 자료 모델화(논리 자료 모델)
* 대상 업무 영역에서 요구되는 자료와 처리 이해, 모델링
소프트웨어 설계
30
- 자료, 시스템 구조 설계 단계
- 자료 구조 정의
- 화면 및 각종 입출력 설계
- 업무 영역에서 선정된 업무 절차들의 구현 방법 및
절차 수립
- 설계 절차에 대한 최종 사용자의 의견 적극 반영
- 데이터베이스, 처리 절차 설계
소프트웨어 설계
31
- 시스템 구현,
실현 가능한 프로그램 작성
- 원시 코드 작성
- 유지 보수가 용이하게 소프트웨어 공학 개념 도입
소프트웨어 설계
32
- 대표적인 방법 : E-R 모델
(Entity-Relationship Model)
- Peter Chen(1970) 개발
- 논리적 자료 모델링 접근법
- 실체형과 자료 관련성을 관계로 정의하여 표시
소프트웨어 설계
33
1. 실체형(entity type) 정의
2. 실체간 관계 정의
3. 속성 정의
4. 식별자 및 외부키 정의
5. 정규화(Normalization) 작업 수행
6. 정규화 후 E-R 모델 작성
소프트웨어 설계
34
1.
2.
3.
4.
5.
6.
7.
기업 전체의 정보 시스템 체제 구성
각 시스템들은 구성된 체제에 적용
기업 목표, 요구에 적합한 시스템 개발
재사용 가능성 향상
자료 모델이 시스템 개발의 기반
코드 생성기 사용
복잡한 설계 작업 가능
소프트웨어 설계
35
(Software Development Life-Cycle : SDLC)
개발
폐기
소프트웨어 설계
운영
유지보수
36
“무엇”
(What)
“어떻게”
(How)
“변화”
(Change)
소프트웨어 설계
시스템 분석
-
문제의 정의
타당성 평가
정보 요구 분석
논리적 설계
시스템 설계
-
물리적 시스템 설계
물리적 데이터베이스 설계
프로그램 작성
지침서 등의 작성
시스템 운용
유지 보수
-
변경
운용
유지 보수
사후 감사
37
1. 폭포수(waterfall) 모형
2. 원형(prototyping) 모형
3. 나선형(spiral) 모형
4. 4세대 기술
소프트웨어 설계
38
- 고전적 생명 주기
- 전통적이고 가장 많이 사용중인 방법
- 각 단계가 다음 단계 시작 전에 종료되어야 함
; 하향식 진행
각 단계별 결과물 산출 및 검토
바로 전 단계 피드백 가능
- 단순하거나 비전문가용, 응용 분야를 잘 아는 경우 적합
- 결과물 구조의 표준화 필요 ; 품질 향상에 도움
소프트웨어 설계
39
계 획
요구분석
설 계
구 현
시 험
유지보수
소프트웨어 설계
40
- 폭포수 모형 단점 보완
- 사용자 의견을 중요시하는 방법
- 사용자 요구가 불투명할 때 사용
소프트웨어 설계
41
시작
끝
요구 사항
분석
완제품
생산
시제품
설계
시제품
정제
시제품
개발
고객의
시제품 평가
소프트웨어 설계
42
- 소프트웨어 기능을 나누어 점진적으로 개발
: 실패 위험을 줄임, 시험 용이, 피드백
- 단계별 작업 내용
1.
2.
3.
4.
계획
위험
개
고객
수립
분석
발:
평가
: 목적, 기능 선택, 제약 조건의 설정
: 위험 요소들의 분석과 해결 방안
다음 단계 시제품의 개발
: 개발된 시제품의 평가
- 대규모 시스템 개발에 적합(대형 국책 사업 분야 등)
- 관리 및 위험 분석이 중요
소프트웨어 설계
43
계획수립
위험분석
초기 요구분석 및
프로젝트 계획수립
초기 위험분석
고객 반응에 따른
위험 분석
고객의 평가에
따른 계획
지속할 것인가에
대한 의사결정
고객의 평가
고객평가
소프트웨어 설계
개발
최종 시스템
으로의 방향
초기 프로토타입
다음 단계
프로토타입
개발된 시스템
44
요구 사항
수집
설계 전략
4세대기술로
구현
시 험
소프트웨어 설계
45
1.
2.
3.
4.
5.
6.
7.
팀간의 의사 소통
프로젝트의 성격
프로그래머의 능력
제품의 복잡도
기술 수준
신뢰도 수준
관리 기술
소프트웨어 설계
46
발주자와 개발자 사이의 의사소통
- 인터뷰 기술 개발
- 시제품 활용
- 정형적이고 규격화된 방법 필요
개발자 사이의 의사 소통
- 정기적인 의사 소통을 위한 회의
- 문서화
- 기술회의 개최
소프트웨어 설계
47
프로젝트의 성격
분 류
프로그래머의
인원수
단순 규모
1
1~4주
소규모
1
1 ~ 6 개월
중규모
2~5
1~2년
5K ~ 50K
대규모
5 ~ 20
2~3년
50K ~ 100K
초대형 규모
100 ~ 1000
4~5년
1M
극대형 규모 2000 ~ 5000
5 ~ 10년
1M ~ 10M
소프트웨어 설계
제품의 크기
소요기간 (원시 코드의 줄)
500
1K~2K
48
-소프트웨어 개발  노동집약적 사업
- 프로그래머 능력 :




프로그래밍 능력
의사소통 능력
응용 분야에 대한 이해
프로세스, 도구에 대한 이해와 경험
소프트웨어 설계
49