2022-03-07 소프트웨어_분석_및_설계_1

2022. 3. 7. 22:47학부 강의/소프트웨어 분석 및 설계

2022-03-07 강의 내용 정리.

1. 시스템 개발 과정의 이해

<목차>

  1. 소프트웨어 공학
  2. 시스템과 시스템 개발자
  3. SDLC 모형
  4. 프로토타입 모형
  5. 프로젝트 관리

 

학습목표 1.1 소프트웨어 위기

  • 소프트웨어 위기와 소프트웨어 공학의 출현 배경을 이해한다.
  • 시스템(소프트웨어) 개발 과정에 참여하는 사람들에 대해 알아본다.
  • 시스템 개발 단계를 이해하기 위해 SDLC 모형 및 프로토타입 모형을 학습한다.
  • 프로젝트 관리의 개념을 이해하고 절차를 학습한다.

소프트웨어 위기

많은 개발 프로젝트에서 개발기간 지연, 실패, 중도 포기가 발생했다. :(

운영 시에도 문제점 수정과 보완을 위해 추가 인력 및 비용이 필요했음.

소프트웨어는 비가시성이란 하드웨어와는 다른 성질을 지닌다.

 

비가시성은 소프트웨어 개발기간을 지연시키고, 유지, 보수 그리고 관리하기 어렵게 한다.

 

소프트웨어는 하드웨어에 비하여 유지보수 단계에서 높은 비용이 발생한다.

 

그렇기에 표준화하고 단순하게 만들기위해서 노력한다.

 

같은 맥락으로 readablity를 상승시키기 위해 노력했다.

 

표준화, 규격화하긴 위한 노력이 이어졌고 이는 소프트웨어 공학 탄생으로 이어졌다.

 


소프트웨어 공학 정의

소프트웨어 공학이란? (IEEE 기준)

 

소프트웨어의 개발, 운영, 유지 보수 및 파기에 대한 체계적인 접근 방법으로 정의한다.

 

품질이 좋은 소프트웨어를 최소한의 비용으로 계획된 일정안에 유저의 수준을 고려해서 만들면 좋겠지용?


소프트웨어 공학의 구성

 

도구

방법론

프로세스

품질

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

-도구

프로그램 개발 과정에서 사용되는 여러 가지 방법을 자동화한 것.

 

CASE(Computer Aided Software Engineering)

 

개발 전 단계 지원 대표적인 도구(for 개발자)(not for 유저)

 

상위 하위 통합 case 참고

 

상위: plan analysis design

하위: coding testing maintenance

 

-방법론

1) 프로세스 중심 방법론

구조적 방법론. 70년대 프로세스 중심 설계.

 

2) 자료 중심 방법론

시간이 지나 프로세스보다 데이터 모델의 변화가 적다는 사실을 알게 됨.

프로그램을 개발할 때 사용할 자료를 규명하고 자료와 자료 간의 관계를 분석한다.

후에 자료구조를 정의하고 이를 토대로 프로세스 구조를 고안하는 방법.

데이터베이스에 기반한 쿼리 중심의 프로그래밍 방식.

3) 객체지향 방법론

프로세스, 자료 중심 방법론의 장점을 묶어서 진화한 방법

 

-프로세스

명세→ 개발→ 검증→ 진화(외우지 마세요)

소프트웨어 개발에 필요한 작업 이름, 작업 내용, 결과물, 절차, 지시사항 등을 작업 사이의 선후 관계와 더불어 나타낸 것.

다음 네 가지 영역으로 구분
소프트웨어 명세: 소프트웨어 개발에 앞서 표준화된 소프트웨어 명세 작성이 선행되어야 함

소프트웨어 개발: 소프트웨어 명세를 바탕으로 소프트웨어를 개발하는 과정

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

소프트웨어 진화: 개발이 완료된 소프트웨어가 새로운 요구에 부응하기 위해 새로운 버전으로 발전하는 것

-품질

품질을 평가하는 기준

  • 정확성
  • 유지보수성
  • 무결성: 시스템 보안을 위해 공격에 저항하는 시스템의 능력
  • 사용성: 사용자의 편의성

주요 영어단어

 

potabilty: 다양한 하드웨어 환경에 이식 가능한 능력

availability: 가용성(원하는 때에 원하는 위치에서 이용 가능)

integrity: 무결성

 


시스템

입력→ 처리→ 출력

IPO: Input Processing Output


SCLC모형

SDLC ( Software Development Life Cycle )

waterfall 폭포수 모형

분석→ 설계→ 구현→ 테스트→ 유지보수

 

즉각적인 변동사항을 반영하기 어렵다.

충분한 분석을 기반으로 개발이 진행되지 않았을 경우 테스트 단계 또는 유지 보수 단계에서 문제점이 노출되어 이를 개선하는 데 많은 비용과 시간이 소요됨.

수정을 위해서 이전 단계로 회귀 시 막대한 시간과 비용이 필요하다.

프로토타입 모형

요구사항 수집→ 개략 설계→ 시제품 구축→ 요구사항 평가 수정→ 생산품 개발

어느 단계에서도 요구사항을 수집해서 반영한다.

 

장점: 미리 결과물 확인, 초기에 수정, 보완 사항 파악 가능. 사용자가 동참하여 즉각적인 피드백 (JAD)

단점: 일회적, 대규모 프로젝트 개발에 적용하기 어려움, 시제품의 불완정함.


프로젝트 관리자의 활동

제안서 작성, 일정 수립, 비용 산정, 모니터링-중간평가, 실무자 선정과 평가, 보고서 직성과 발표

프로젝트 일정 수립 방법

  • Gantt chart
  • PERT/CPM

품질관리

설계 품질 (Quality of Design)

적합 품질 (Quality of Conformance)

 

Software V&V

검증 veriification : 이렇게 하는 거 맞아? product right?

확인 validation : 이거 맞아? right product?

소프트웨어 위험관리 프로세스

위험 인식→ 분석→ 계획→모니터링