agencies

시스템 분석과 설계 정리 Ⅰ 본문

Ⅲ. 정보보안

시스템 분석과 설계 정리 Ⅰ

agencies 2023. 12. 27. 00:26

* 산업혁명으로 시작된 대량 생산체제가 급격한 수요의 증가에 대응할 수 있는 공급체계를 갖출 수 있게 했다는 사실에 주목하며 소프트웨어의 개발에도 이와 같은 원리를 적용할 필요성을 느끼게 되었다.

이렇게 해서 탄생한 것이 소프트웨어 공학이며 이론적으로 소프트웨어의 개발도 마치 공장에서 대량으로 필요한 제품을 생산하듯이 자동화된 시스템에 의해 규격화된 제품(소프트웨어)을 생산해 낼 수 있도록 하자는 것이다.

 

소프트웨어 공학이란? 소프트웨어의 개발 운용 유지보수 및 파기에 대한 체계적인 접근 방식이다.

 

공학적 원리란? 이론이나 방법론 또는 도구를 적절하게 선택하여 적용시키면서도 기존의 이론이나 방법론으로 해결할 수 없는 문제에 대해서 새로운 이론이나 방법 또는 기술을 찾아내려는 노력을 말한다.

 

※ 소프트웨어 공학에서 다루는 주제의 계층 구조

[도구]

[방법론]

[프로세스]

[품질]

 

방법론이란? 소프트웨어 개발에 사용되는 기술적인 방법을 정형화시켜 제시하는 것을 말한다.

(한 단계에 관해서만 다루는 것을 방법이라 하고 전 단계에 관해서 모색하는 것은 방법론이라고 구분한다)

 

 

소프트웨어 명세

소프트웨어 개발에 앞서 표준화된 소프트웨어 명세 작성(무슨 기능이 있어야 되는지)이 선행되어야 한다.

이 과정에서는 각종 코드 체계의 정리, 명명 규칙의 수립, 자료(테이블) 명세, 모듈 명세 등의 작업이 이루어진다.

 

소프트웨어 개발

소프트웨어 명세를 바탕으로 소프트웨어를 개발하는 과정으로, 다양한 사용자층의 요구에 맞추어 사용자 편의성을 최우선으로 고려하여 개발을 진행한다.

 

소프트웨어 검증

소프트웨어 개발을 완료한 이후에는 검증 과정을 거쳐 소프트웨어의 품질보증을 하게 된다.

 

소프트웨어 진화

처음부터 완벽한 소프트웨어를 개발하는 것이 최선의 목표이지만 사용 환경이 변화함에 따라 소프트웨어도 진화가 필요하다. 소프트웨어 진화란 개발이 완료된 소프트웨어가 새로운 요구에 부응하기 위해 새로운 버전으로 발전하는 것을 의미한다.

 

 

- 정확성 : 소프트웨어가 요구하는 기능을 수행하는 정도

- 유지보수성 : 다른 소프트웨어 공학 활동보다 오랜 기간과 많은 노력이 필요함, 프로그램에 오류가 발견되면 이를 수정할 수 있고 프로그램의 환경이 변하면 새로운 환경에 적응시킬 수 있고 고객의 요구사항이 변경되면 이를 수용할 수 있는 프로그램의 용이성을 말한다.

- 무결성 : 시스템 보안을 위해 공격에 저항하는 시스템의 능력을 말한다.

- 사용성 : 사용자가 쓰기에 편리하지 않으면 프로그램 능력이 아무리 뛰어나도 보편화되기 어렵다.

(시스템을 배우는 데 요구되는 물질적 지적 노력, 시스템에 대한 사용자의 주관적 평가 등)

 

※ 시스템이란 컴퓨터에 의해 처리가 가능한 형태로 자료를 변환하여 입력하고, 그 자료를 저장 처리 가공하여 필요한 시점에 정보를 출력할 수 있도록 설계되고구현된 정보체계를 의미함

 

※ 시스템 개발 참여 인력

- 시스템 관리자

- 설계 담당자

- 데이터베이스 전문가

- 프로그래머

- 프로젝트 관리자

- 시스템 분석가

 

소프트웨어 생명주기 모형(5단계) SDLC

분석단계 : 시스템이 갖추어야 할 기능이 무엇인가를 정의하는 단계

설계단계 : 분석단계에서 산출된 분석 문서를 바탕으로 소프트웨어를 기술적으로 어떻게 구현할 것인가를 설계

구현단계 : 설계 문서를 바탕으로 직접 프로그램을 작성하는 단계

테스트 단계 : 완성된 시스템의 테스트는 단위 모듈 테스트를 비롯하여 모듈 간의 인터페이스를 테스트하기 위한 통합테스트 그리고 현업에 적용해보는 현업 수용 테스트 등으로 나누어 진행

유지보수 단계 : 현업에서 시스템을 운영하면서 발생하는 문제점을 보완하며 기능을 개선해 가는 단계

 

 

※ 프로토타입 모형은 SDLC 모형의 단점을 보완하고자 개발된 것으로 흔히 시제품 모형이라고도 불린다.

프로토타입 모형은 개발의 최종 단계에서 시스템의 결과물을 확인할 수 있는 게 아니라, 개발 초기에 미리 결과물을 확인할 수 있다는 점에서 사용자의 이해를 돕는다.

또한 개발 초기 단계에서 수정·보완할 사항을 미리 파악할 수 있다는 점과 분석 및 설계 과정에 사용자가 동참하여 즉각적인 피드백을 줄 수 있다는 점 등의 장점을 가진다.

하지만 일회적이거나 대규모 프로젝트의 개발에는 적용하기 쉽지 않다.

 

 

프로젝트관리란? 프로젝트를 성공적으로 이끄는 데 필수적인 계획 조직화 인력 확보 지휘통제를 하기 위한 절차 기법 기술 노하우 등으로 정의된다 소프트웨어 프로젝트는 다른 분야의 프로젝트와 달리 구성원 사이의 의사전달 과정 프로젝트 성격 개인 역량 관리하는 기술 등이 미치는 영향이 크기 때문에 인간관계가 중요하며 관리자의 통솔력이나 판단력이 요구되는 사회적 정치적 기술적인 활동이라고도 할 수 있다.

 

* 관리자의 활동

- 제안서 작성

- 프로젝트 계획과 일정

- 프로젝트 비용 산정

- 프로젝트 모니터링과 중간평가

- 실무자 선정과 평가

- 보고서 작성과 발표

 

* 프로젝트 계획

- 품질 계획 : 품질을 위한 계획과 표준을 설명

- 검증 계획 : 시스템 검증을 위한 접근방법 자원 일정을 설명

- 구성관리계획 : 구성관리 방안과 구조를 설명

- 유지보수계획 : 유지보수를 위한 요구사항 비용 노력을 설명

- 인력개발계획 : 팀원들의 경험 축적과 기술개발 설명

 

 

※ 소프트웨어 위험 요소

프로젝트 위험

- 인력부족 : 경험 있는 실무자가 프로젝트 완료 전에 사직

- 관리변화 : 조직 내에서 관리의 우선순위 변화

- 하드웨어 마비 : 개발에 필수적인 하드웨어 수급이 배달지연 등으로 부족

- 규모의 과소 평가 : 시스템 크기의 과소 평가

 

생산품 위험

- 요구변경 : 계속적인 요구사항 변경

- 명세서 지연 : 기본적인 인터페이스 명세서가 일정대로 작성되지 못함

 

비즈니스 위험

- 기술변화 : 기반 기술을 신기술로 대체하지 못한 기술적 취약

- 생산품 경쟁 : 경쟁 상품이 먼저 시장에 나옴