[설계패턴]시스템 분석 설계 소개 정리
류명운
·2015. 10. 10. 21:39
1. 시스템 분석 설계
시스템 분석: 정보 시스템이 무엇을 하여야 하는지 자세히 이해하고 명세로 나타내는 일
시스템 설계: 정보 시스템이 어떻게 구현되어야 하는지 자세히 나타내는 일
IT 프로젝트 실패 사례
1) 맥도날드의 이노베이트 프로젝트: 일부 국가에서 IT 인프라도 구축되지 않은 상태에서 성급히 진행함
2) 영국 국가보건 서비스 IT 현대화 프로젝트: 너무 많은 업체에서 나누어 개발하여 서로 호환이 잘 안됬고 의사소통이 안됬음
3) 덴버 공항의 자동 수화물 처리 시스템: 소프트 웨어 결함
4) 한국통신의 고객통합 시스템
시스템 분석가(system analyst): 비즈니스 니즈를 만족시키기 위하여 분석과 설계 기술을 사용하는 전문가
시스템 개발에서 분석가의 역할이 중요한 이유: 컴퓨터 시스템과 소프트웨어 기술을 잘 모르는 고객이나 사용자의 요구를 잘 이해하고 정리하여, 이를 프로그래머나 테스트 엔지니어 등의 개발 조직에 전달하여야 하기 떄문
2. 시스템이란?
- 시스템 : 공통의 목표를 위하여 함께 기능하는 관련 있는 컴포넌트(또는 서브 시스템)의 집합체
* 정보 시스템 : 비즈니스 업무를 처리하기 위하여 정보를 모으고 처리하고 저장하고 제공하기 위한 관련 있는 (컴포넌트의 집합체), 우리가 다루는 시스템은 주로 컴퓨터를 근본으로 한 정보 시스템이다
시스템의 네 가지 성질
1) 서브시스템 |
시스템은 관련 깊은 서브시스템들로 구성되어 있다. ex)교통시스템 - 신호기, 신호체계, 도로망 등 여러 가지 요소가 있으며, 이들 요소들이 원할한 교통 소통과 제어를 위하여 밀접하게 연관되어 있다 |
2) 기능적 분할 |
시스템은 규모가 작은 부속 시스템(이를 서브시스템이라 함)들로 나눌 수 있다 |
3) 시스템 경계 |
시스템은 어떤 것이건 시스템과 주변 환경을 구분할 수 있는 경계가 있다. 이곳이 입력과 출력이 만나는 곳이다 |
4) 자동화 경계 |
시스템이 자동화된 부분과 수동 작업 부분을 나누는 경계이다 |
위와 같은 네 가지 성질은 어떤 시스템에도 다 적용될 수 있다. 따라서 새로운 시스템을 구성하는 시스템 분석가는 시스템 안에 서브시스템이 있어야 하는지, 시스템의 경계와 자동화 경계는 어디인지를 찾아낼 수 있어야 한다
시스템 분석가는 다음과 같은 사항들을 파악할 수 있어야 함
- 대상을 시스템으로 파악할 수 있어야 한다
- 서브시스템을 찾아낼 수 있어야 한다
- 서브시스템 사이의 관계를 찾아낼 수 있어야 한다
- 시스템의 특성과 기능을 찾아낼 수 있어야 한다
- 시스템의 경계가 어디인지 찾아낼 수 있어야 한다
- 시스템에 대한 입력과 출력을 찾아낼 수 있어야 한다
3. 정보 시스템의 종류
: (정보 시스템)은 (사용자 그룹)을 기준으로 분류할 수 있는데, 기관 내의 비즈니스를 중심으로 전사적 정보를 효율적으로 운용하기 위한 (ERP 시스템)과 매일 발생하는 (트랜젝션을 처리하는 시스템), 중간 관리층의 경영과 관련된 의사결정에 도움을 주는 (의사결정 지원 시스템)이 있다
ERP 시스템(Enterprise Resource Planning system)
: 기업 전반에 걸친 운용과 관리 정보를 지원하는 시스템이다
- 주요 목적: 회사의 여러 기능을 통합하여 효율적인 의사결정을 통하여 비용을 줄이고 이윤을 극대화
- ex) 대형 할인마트의 판매와 물류 창고를 관리하는 시스템
트랜젝션 처리 시스템(transaction processing system)
: 매일 발생하는 비즈니스 거래에 의하여 생성되는 데이터를 처리하는 시스템이다
- 비즈니스에서 어떤 거래가 일어났을 때 미리 정해진 순서의 작업이 수행된다
- ex) 인터넷에서 고객이 주문한 정보를 처리하는 시스템
의사경정 지원 시스템
: 기업의 모든 수준의 사용자에게 직무 관련 정보를 제공하는 시스템이다. 즉, 거래에서 일어난 데이터를 이용하여 비즈니스 프로세스를 관리하고 조정할 수 있게 한다.
- 의사결정 시스템을 사용하여 더 합리적이고 효율적인 의사결정이 가능함
- ex) 기업 경영에 필요한 많은 정보를 제공하는 경영 정보 시스템(MIS)
4. 시스템 유형의 분류
- 소프트웨어: 시스템, 애플리케이션, 패키지
- 시스템 소프트웨어: 운영체제, 장치 드라이버, 컴파일러, 코드 라이브러리 등
- 시스템 소프트웨어를 사용하는 용도: 내장형 소프트웨어, 펌웨어, 실시간 시스템, 공학용 소프트웨어 등
- 애플리케이션: 비즈니스 업무 등 한 회사 또는 기관의 내부에서 사용하는 시스템
- 패키지 소프트웨어: 패키지화하여 상업적으로 판매하는 소프트웨어
5. 시스템 개발 과정
소프트웨어 개발 생명주기: 계획, 분석, 설계, 구현으로 구성
계획에서의 타당성 분석
1) 기술적 타당성(개발할 수 있는 능력이 있는가?)
2) 경제적 타당성(비즈니스 가치를 제공할 수 있는가?
3) 조직적 타당성(구축한다면 사용될 것인가?)
분석에서의 세 가지 단계
1) 분석 전략 수집: 현재 시스템에 대한 분석과 그 문제점, 새로운 시스템의 설계 방향이 포함
2) 요구 수집: 비즈니스 분석 모델을 개발하는 데 기초가 됨
3) 문서화: 시스템 제안서 작성
설계에서의 네 가지 단계
1) 설계 전략 수집
2) 아키텍처 설계
3) 데이터 설계
4) 프로그램 설계
구현에서의 세 가지 단계
1) 시스템 구축: 시스템이 설계대로 구현되었는지 테스트
2) 시스템 설치
3) 지원 계획: 개발한 시스템을 위한 지원 계획을 확립한다
6. 시스템 개발 방법론
: 시스템 개발 생명주기를 구현하기 위하여 따라야 할 가이드라인이나 정형화된 접근 방법을 방법론(methodology)이라 한다
방법론의 세 가지 구성 요소와 예(모델, 도구, 기술)
모델 |
실세계를 특정한 관점으로 표현한 것 |
ex) PERT 차트, 간트 차트, 조직도 등 |
도구 |
모델을 작성하고 프로젝트에 필요한 컴포넌트를 생산해 내는 데 도움을 주는 소프트웨어 |
ex) 그림판 도구, 워드프로세서, 프로젝트 관리 도구 등 |
기술 |
분석가가 시스템 개발 작업을 완성할 수 있도록 도움을 주는 가이드라인 |
ex) 전략 계획 기술, 프로젝트 관리 기술 등 |
시스템 개발 방법론의 세 가지(구조적, 정보공학, 객체지향 방법론)
-구조적 방법론: 시스템과 관련된 처리, 즉 프로세스에 먼저 관심을 두는 방법
-정보공학 방법론: 자료 저장 구조에 먼저 초점을 두는 방법
-객체지향 방법론: 프로세스와 데이터를 별개의 컴포넌트로 간주하며, 데이터와 프로세스를 객체로 묶어 모델링함
|
구조적 방법론 |
정보공학 방법론 |
객체지향 방법론 |
객체지향 단계 |
계획 단계 |
타당성 분석 |
정보 전략 분석 |
프로젝트 문제 분석과 사용 사례 분석 |
|
분석 단계 |
구조적 분석 |
비즈니스 영역 분석 |
요구 분석 및 모델링 |
개념 정립 단계 |
설계 단계 |
구조적 설계 |
비즈니스 시스템 설계 |
시스템 설계와 객체 설계 |
발전 단계 |
구현 단계 |
구조적 프로그래밍 |
구축 / 전환 |
객체지향 프로그래밍 |
구축 단계 |
사용 단계 |
유지 보수 |
생산 |
재사용, 유지 보수 |
전환 단계 |
방법론의 비교
|
구조적 방법론 |
정보공학 방법론 |
객체지향 방법론 |
프로그램에 대한 관점 |
프로그램=함수+자료 |
프로그램=자료+함수 |
프로그램=클래스+클래스+... |
설계 관심사 |
함수 위주 |
자료 위주 |
클래스 위주 |
설계의 핵심 |
모듈 |
엔티티 |
객체 |
중심 방법 |
프로그래밍 기법 |
기업의 전략 및 산출물 중심 |
설계의 표현 |
7. 소프트웨어 개발 프로세스 모델
1)폭포수 모형: 한 단계의 작업이 끝난 뒤 다음 단계로 넘어가는 순차적인 개발 프로세스(계획->분석->설계->구현->시스템)
2)프로토타이핑 모형: 분석->설계->구현 단계가 병행으로 이루어져 시스템이 완성될 때까지 세 단계를 반복
* 쓰고 버리는 프로토타이핑: 단지 사용자의 피드백을 받기 위하여 만드는 프로토타입
3)단계적 모형: 전체 시스템을 여러 개의 버전으로 나누고 각 버전을 순차적으로 개발하는 방법
4)애자일 모형: 과도한 모델링과 문서화의 짐을 과감히 생략하여 저축한 시간을 개발 작업에 집중하는 방법
개발 모형을 선택하는 6가지 기준
1) 요구 명확성
2) 기술 숙련도
3) 시스템 복잡도
4) 시스템 신뢰도
5) 짧은 개발 일정
6) 일정 투명성
8. 프로젝트 팀 역할
시스템 분석가: 비즈니스 프로세스 분석뿐만 아니라 새로운 시스템에 대한 요구 분석과 아키텍처 설계 등을 담당한다
시스템 분석가의 6가지 자질 1) 기술적 자질 2) 비즈니스 자질 3) 분석적 자질 4) 관리적 자질 5) 의사소통 자질 6) 윤리적 자질 |
사용자 지원: 사용자에게 기술적 정보나 교육, 생산성 지원을 제공한다
품질 보증: 모든 결과물을 품질 관점에서 체크하고 개발된 소프트웨어를 테스트하는 작업을 담당한다
데이터베이스 관리자: 데이터베이스를 설계하고 관리하며 데이터에 대한 보안, 백업, 사용자 접근을 제어한다
네트워크 관리자: 하드웨어와 소프트웨어의 유지 보수, 지원, 보안 등을 담당한다
1장 시스템 분석 설계
Quiz(pp58-60)
1. 비즈니스 니즈를 만족시키기 위하여 분석과 설계 기술을 사용하는 프로페셔널을 시스템 분석가 라고 한다.
2. 비즈니스 업무를 처리하기 위하여 정보를 모으고 처리하고 저장하고 제공하기 위한 시스템을 정보시스템 라고 부른다.
3. ERP 시스템은 기업 전반에 걸친 운용과 관리 정보를 지원하는 시스템이다.
4. 시스템 개발 과정은 기본적으로 네 단계 계획, 분석, 설계, 구현 으로 구성된다.
5. 시스템 개발 생명주기를 구현하기 위하여 따라야 할 가이드라인이나 정형화된 접근 방법을 방법론(methodology) 라고 한다.
6. 시스템과 관련된 처리, 즉 프로세스에 먼저 관심을 두는 방법을 구조적 방법론 라고 한다.
7. 프로세스와 데이터를 묶어 모델링하는 방법론은 객체지향 방법론 이다.
8. 한 단계의 작업이 끝난 뒤 다음 단계로 넘어가는 순차적인 개발 프로세스를 가지며 문서 위주의 개발이 이루어지는 개발 모형은 폭포수 모형이다.
9. 프로토 타입 은/는 요구를 찾아내기 위하여 빠르게 만든 깔끔하지 못한 프로그램, 또는 시제품이다.
10. 모델링과 문서화의 짐을 과감히 생략하고 저축한 시간을 개발 작업에 집중하는 형태의 방법론을 애자일 모형 이라고 부른다.
11. 시스템에 대한 설명으로 바르지 않는 것은? 라(시스템은 어떤 것이든 경계가 있으며, 이곳이 입력과 출력이 만나는 곳)
가. 공통의 목표를 가진 여러 요소들의 집합체 나. 시스템의 구성 요소들이 또 다른 시스템을 이룸 다. 시스템 내부 설계를 위하여 상충 요구와 이해관계는 타엽한다. 라. 시스템은 여러 요소들이 포함되어 있어 경계가 불분명할 수 있음 |
12. 소프트웨어 개발 생명주기에 대한 설명으로 잘못된 것은? 나(분석은 중간 단계에서 행해지며 초기의 단계임)
가. 계획 단계 - 프로젝트를 어떻게 진행해 나갈 것인지를 계획는 단계 나. 분석 단계 - 프로젝트 결과를 분석하고 평가하는 단계 다. 설계 단계 - 소프트웨어가 어떻게 동작하게 할 것인지 결정하는 단계 라. 구현 단계 - 설계를 기초로 프로그래밍 하고 테스트하는 단계 |
13. 시스템 개발 순서를 바르게 나타낸 것은? 다(타당성검토->요구정의->구조설계->프로그램설계->프로그래밍)
ⓐ 시스템 구조 설계 ⓑ 타당성 검토 ⓒ 요구 정의 ⓓ 프로그램 설계 ⓔ 프로그래밍 |
가. ⓐⓒⓔⓓⓑ 나. ⓐⓓⓔⓒⓑ 다. ⓑⓒⓐⓓⓔ 라. ⓑⓒⓓⓐⓔ
14. 다음 중 시스템 분석가가 갖추어야 할 능력과 요건으로 가장 거리가 먼 것은? 가(결국 사람이 쓰는 것이므로 기계 중심적인 분석능력은 피해야 한다)
가. 기계 중심적인 분석 능력 나. 거시적 관점에서 세부적 요소들을 관찰할 수 있는 능력 다. 사용자와 개발 요구자의 환경 이해 능력 라. 서술 형식으로 혹은 구술 형식으로 의사소통할 수 있는 능력 |
15. 다음은 시스템 개발 방법론을 설명한 것이다. 바르게 설명한 것은? 다(구조적은 프로세스 위주, 정보공학은 자료저장 위주이며 각 방법론마다 중심이 되는 관점이 다르다)
가. 구조적 방법론은 데이터 위주의 개발 방법이다. 나. 정보 공학 방법론은 프로세스 위주의 개발 방법이다. 다. 객체지향 방법론은 반복적 개발 단계를 많이 사용하여 객체 위주의 개발 방법이다. 라. 방법론 마다 소프트웨어 개발 과정의 각 단계와 방법은 다르나 프로그램의 관점은 같다. |
16. 소프트웨어 개발 생명주기 모형에 대한 설명으로 바르게 설명한 것은? 나(단계적 개발 모형은 빠르며, 폭포수 모형이 문서 중심으로 개발 된다)
가. 폭포수 모형의 모든 작업은 프로그래밍 중심으로 이루어진다. 나. 프로타이핑 모형은 사용자 요구가 무엇인지 뚜렷하게 확립되지 않은 경우 사용한다. 다. 단계적 개발 모형은 여러 단계에 걸쳐 완성되므로 사용자에게 구현된 시스템이 느리게 전달된다. 라. 애자일 모형은 문서가 중심이 되며 빠른 개발보다는 연구 중심의 문제에 적합하다. |
17. 다음에 설명한 프로젝트에 적합한 소프트웨어 개발 모형은 무엇인가? 나(시제품을 빨리 만들어 보는 방법론)
사용자의 요구는 프로젝트 시작 단계에 확실하지 않다. 그러나 짧은 일정이므로 사용자에게 먼저 버전 1을 손에 들려 주고 계속적으로 피드백을 받아 버전을 업그레이드 하고 싶다. |
가. 폭포수 모형 나. 프로토타입 모형 다. 병렬 모형 라. 단계적 모형
18. 소프트웨어 개발 생명주기 모형의 선택에 영향을 줄 수 있는 시스템 환경 요소가 아닌 것은? 다(자동화된 도구는 개발에 용이한 것이지 모형 선택에 영향을 주는 요소는 아니다)
가. 불명확한 요구 나. 생소한 기술 다. 자동화된 도구 라. 짧은 일정 |
19. 시스템을 개발하기 위한 프로젝트 팀의 구성원이 아닌 것은? 라(회계 관리자는 시스템을 개발하는 사람이 아니다)
가. 시스템 분석가 나. 사용자 지원(고객지원) 다. DB 관리자 라. 회계 관리자 |
20. 시스템 개발 방법론에 대한 다음 설명 중 바르게 설명한 것은? 다(구조적 방법론은 프로세스를 중시, 정보공학 방법론은 데이터를 중시, 객체지향 방법론은 클래스를 중시한다)
가. 구조적 방법론은 데이터를 중시하며 비즈니스 영역 분석을 통하여 설계한다. 나. 정보공학 방법론은 프로세스를 중요하게 생각하며 ER 다이어그램이 중심이 된다. 다. 객체지향 방법론은 사용 사례를 중심으로 클래스의 정적, 동적 모델링이 핵심이다. 라. 방법론은 시스템을 개발하는 기술 또는 방법의 총칭으로 도구와 모델과는 구별되는 것이다. |
'삶의 늪에 들어 가기 전 > 정리중(미정리)' 카테고리의 다른 글
[네트워크 프로그래밍2]자바의 GUI, AWT와 SWING 정리 (0) | 2015.10.11 |
---|---|
[설계패턴]프로젝트 계획 정리 (1) | 2015.10.10 |
[컴퓨터구조]명령어와 번지지정 방식 / 프로세서와 연산장치 정리 (0) | 2015.10.10 |
[컴퓨터구조]데이터의 표현 정리 (0) | 2015.10.09 |
[컴퓨터구조]시스템 성능측정 정리 (0) | 2015.10.09 |