• 검색 결과가 없습니다.

(Software Engineering)

N/A
N/A
Protected

Academic year: 2022

Share "(Software Engineering)"

Copied!
39
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

Chapter 9 소프트웨어공학

(Software Engineering)

(2)
(3)
(4)

조립 설명서

(5)

Contents

1. 공학 설계 및 중요성

2. 소프트웨어 공학 개요

3. 소프트웨어 개발 프로세스

4. 소프트웨어 설계 도구

A. Unified Modeling Language 5. 기타사항

(6)

1. 공학 설계 및 중요성

1. 설계란? – 네이버 국어사전

A. '디자인'의 순화어

B. 계획을 세움 또는 그 계획.

C. 건축ㆍ토목ㆍ기계 제작에서,

그 목적에 따라 실제적인 계획을 세워 도면 따위로 명시하는 일.

(7)

1. 공학 설계 및 중요성

1. 공학 설계란?

기술된 목적에 맞고,

주어진 제약조건을 충족하는 형태와 기능을 가진,

가공물(시스템)의 명세에 대한 체계적이고 지적인 산출물

주어진 제약 내에서 목적을 달성하는 설계를 산출하기 위한 사려 깊은 과정 (프로세스)

2. 컴퓨터 S/W 엔지니어: “소프트웨어 공학”

(8)

1. 공학 설계 및 중요성

1. 일상 생활에서 우리는 다양한 문제를 접하고 있다.

문제를 접하면 어떻게 하는가?

A. 문제를 만나면 (무조건) 포기한다.

B. 문제를 만나면 해결하려고 한다.

1. 문제를 해결하고자 할 때 어떻게 하는가?

A. 동전을 던지듯 아무거나 찍는다.

B. 문제를 해결하기 위해서 방법을 모색한다.

(9)

1. 공학 설계 및 중요성

3. 문제의 해결 방법은 어떻게 찾는가?

A. 친구/인터넷 지식인 등에 물어본다.

B. 인터넷을 검색한다.

C. 도서를 검색한다.

D. 머리를 쥐어짜서 고민한다.

이와 같은 문제의 해결과정 → 설계의 과정임

(10)

1. 공학 설계 및 중요성

1. 공학 설계의 어려움

A. 공학 설계 문제: 비구조화 및 개방형

B. 비구조화 (ill-structured)

해결 방안이 일정하거나 수학적인 공식이나 알고리즘을 이용 해서 해결할 수 없는 경우가 존재

C. 개방형 (open-ended)

여러 가지 허용되는 해결 방안이 존재

(11)

1. 공학 설계 및 중요성

1. 공학 설계의 필요성

A. 신규 인력 투입에 효율적

B. 인력 결손에 효율적

C. 문제점(버그) 해결에 효율성

D. 시스템 유지 보수에 효율적

E. 서로간의 협력(의사소통) 용이함

(12)

2. 소프트웨어 공학 개요

1. 소프트웨어 공학이 타 분야와 차이점

A. 소프트웨어는 개념적이고 무형적

B. 개발 작업의 품질 정량적 평가 (척도, metric) 어려움

C. 소프트웨어의 복제가 용이함

D. 소프트웨어는 노동 집약적 산업 등

2. 실용 연구자와 이론 연구자

A. 이론 연구자: 문제 해결 및 알고리즘 연구

B. 실용 연구자: 실생활에 적용가능한 소프트웨어 개발

(13)

1. 소프트웨어 공학 개요

1. 소프트웨어 위기

A. 소프트웨어 수요는 증대하고 복잡해지는 양상

B. 개발 집단의 효율성 낮음

C. 프로젝트 예산 초과, 일정 지연, S/W 품질 저하 등 문제 발생

D. 소프트웨어 개발에 대한 체계적인 접근 필요성 증대

(14)

1. 소프트웨어 공학 개요

1. 소프트웨어 품질

A. 사용성(Usablitiy) : 사용 용이성

B. 효율성(Efficiency) : 컴퓨터 자원을 최적으로 사용

C. 신뢰성(Reliability) : 결함이 적으며, 손쉽게 수정 가능

D. 유지성(Maintainability) : 지속적으로 사용 가능 (쉬운 수정 포함)

E. 재사용성(Reusability) : 다양한 시스템에 적용하여 사용 가능

(15)

1. 소프트웨어 공학 개요

1. 소프트웨어 개발 관계자

A. 고객 (Client / Customer)

B. 사용자 (User)

C. 프로젝트 관리자 (PM)

D. 개발자 (Developer)

Designer User Client

Project Manager (PM)

Developer

(16)

1. 소프트웨어 공학 개요

1. 소프트웨어 생명 주기

(17)

2. 소프트웨어 개발 프로세스

1. CASE(Computer Aided Software Engineering) 도구

A. 프로젝트 계획

B. 프로젝트 관리

C. 문서 작업

D. 프로토타이핑과 시뮬레이션

E. 인터페이스 설계

F. 프로그래밍

(18)

1. 소프트웨어 생명 주기의 개발 단계

2. 소프트웨어 개발 프로세스

요구분석 요구명세

요구사항

납품 / 유지보수

(19)

2. 소프트웨어 개발 프로세스

1. 분석 단계

A. 요구사항 (고객)

응용 지향

B. 요구명세 / 요구분석 (개발자)

기술 지향

C. 소프트웨어 요구사항 문서

요구명세서

요구분석서

상세하게 작성이 되어야 함 (설계 및 개발시 참조됨)

(20)

2. 소프트웨어 개발 프로세스

2. 설계 단계

A. 설계 방법론과 도구를 활용 (다음에 설명)

B. 휴먼 인터페이스 (심리학과 인간공학)

3. 구현/개발 단계

A. 설계를 바탕으로 시스템 개발

프로그램 소스코드 작성 및 실행파일 생성

데이터 파일 생성

데이터베이스 개발

참고) “소프트웨어 분석가”의 역할과 “프로그래머”의 역할

(21)

2. 소프트웨어 개발 프로세스

4. 테스트 단계

A. 검증 테스트

시스템이 명세를 충족하는지 확인

B. 결함 테스트

오류 발견

(22)

2. 소프트웨어 개발 프로세스

1. 요구 분석의 중요성 (고객 목적의 이해)

고객 – 비행기 개발 개발팀 – 여객기 개발 고객 – 전쟁 목적?

(23)

2. 소프트웨어 개발 프로세스 – 방법론(모델)

1. 폭포수 모델 (Waterfall model)

2. 점진적 모델

A. 프로토타입 모델 (Prototype model)

B. 나선형 모델 (Spiral model)

(24)

2. 소프트웨어 개발 프로세스 – 방법론(모델)

1. 폭포수 모델 (Waterfall model)

(25)

2. 소프트웨어 개발 프로세스 – 방법론(모델)

1. 점진적 모델 - 프로토타입 모델 (Prototype model)

(26)

2. 소프트웨어 개발 프로세스 – 방법론(모델)

1. 점진적 모델 - 나선형 모델 (Spiral model)

(27)

3. 소프트웨어 개발 절차

1. 모듈화

A. 프로시저 – 명령형 패러다임 (C, Pascal 등)

구조도

협력도

B. 객체 – 객체지향 패러다임 (C++, Java 등)

UML

(28)

3. 소프트웨어 개발 절차 – 명령형 패러다임

1. 구조도 예

(29)

3. 소프트웨어 개발 절차 – 명령형 패러다임

1. 협력도

(30)

3. 소프트웨어 개발 절차 – 명령형 패러다임

1. 데이터 결합을 포함하는 구조도

(31)

3. 소프트웨어 개발 절차 – 명령형 패러다임

1. 데이터 흐름도

(32)

3. 소프트웨어 개발 절차 – 객체지향 패러다임

1. UML (Unified Modeling Language)

A. 유즈케이스(Use Case) 다이어그램

용례(Use Case)

행위자(Actor)

B. 클래스(Class) 다이어그램

C. 시퀀스(Sequence) 다이어그램

D. 액티비티(Activity) 다이어그램

E. 패키지(Package) 다이어그램

F. 배포(Deployment) 다이어그램

G.

(33)

3. 소프트웨어 개발 절차 – 객체지향 패러다임

1. 유즈케이스 다이어그램

A. Actor가 사용하는 Case에 대한 그림

(34)

3. 소프트웨어 개발 절차 – 객체지향 패러다임

1. 클래스 다이어그램 (초기 설계)

(35)

3. 소프트웨어 개발 절차 – 객체지향 패러다임

1. 클래스 다이어그램 (설계 완료 시점…)

(36)

3. 소프트웨어 개발 절차 – 객체지향 패러다임

1. 클래스 다이어그램 (설계 완료 시점…)

(37)

3. 소프트웨어 개발 절차 – 객체지향 패러다임

1. 시퀀스 다이어그램

A. 각 유즈케이스에 대해 클래스간 호출 관계를 표시

(38)

4. 설계 패턴 (Design Pattern)

1. 자주 반복되는 문제를 해결하기 위한 잘 설계된 “템플릿 (templates)”

2. 가령,

어댑터(Adapter) 패턴:

모듈의 인터페이스를 당면 요구에 맞추기 위해 사용됨

데코레이터(Decorator) 패턴:

실행 시점 상황에 따라 동일한 활동들을 다르게 조합하는 작업을 수 행할 때의 복잡성 제어에 사용됨

3. Christopher Alexander의 건축 설계 연구를 원용

(39)

4. 문서(documentation)

1. 사용자 문서

A. 모든 고객을 위한 인쇄된 책자

B. 온라인 도움말

2. 시스템 문서

A. 소스 코드

B. 설계 문서 3. 기술 문서

A. 설치, 커스터마이징, 업데이트 등을 설명

참조

관련 문서

 시스템 소프트웨어는 컴퓨터 하드웨어의 작동을 통제하고 응용 프로그램의 실행을 지원한다.  운영체제는 컴퓨터 하드웨어를 통제하고

• 제품을 개발하거나 유지보수하는 과정에서 변경(change) 을 통제하는 절차는 소프트웨어 개발 과정의 산출물들을 관 리하고 고품질의 소프트웨어를 얻기

– 협업활동을 지원하기 위한 기능과 서비스로 문서작성, 논평, 정보공유, 화상회의, 일정관리, 이메일 및 네트워크 기반의 협업 지원 소프트웨어

z 프로그램 + 프로그램의 개발, 운용, 보수에 필요한 정보 일체(소프트웨어 생산 결과물 일체).

정보 시스템 사용자로부터 정보를 입수하고, 이를 가공하여 저장하고 적 절한 양식으로 사용자에게 출력하는 작업이 주인 시스템이 다.. 각종 공공 기관, 금융기관, 회사에서

③ 과업심의위원회는 별표 1 소프트웨어 개발사업의 적정 사업기간 산정기준에 따라 적정 사업기간을 산정하고 별지 제3호서식 소프트웨어 개발사업의 적정 사업기간

소프트웨어 업그레이드는 http://www.comfile.co.kr/download.html 방문하셔서 PIC TOOL 관련 소프트웨어 및 사용설명서 다운로드에서 다운 받을 수

이름 그대로 Geometry(기하)와 Algebra(대수)의 합성어로 동적 기하 소프트웨어 (DGS;Dynamic Geometry Software)와 컴퓨터 대수 시스템(CAS;Computer Algebra