옐그's 코딩라이프

[TOPCIT][01] I. 소프트웨어 공학 개요 (에센스 정리 요약) 본문

TOPCIT

[TOPCIT][01] I. 소프트웨어 공학 개요 (에센스 정리 요약)

옐그멍이 2022. 11. 14. 18:31

학습 목표

1. 소프트웨어의 특성과 문제점을 설명할 수 있다.

2. 소프트웨어공학의 배경과 목적을 설명할 수 있다.

3. 소프트웨어 개발 프로세스 모델에 대해 설명할 수 있다.

 

핵심 키워드

- 소프트웨어의 특성

- 소프트웨어 생명주기

- 요구사항분석, 설계, 구현, 테스팅

- 소프트웨어 요구관리, 소프트웨어 유지관리, 소프트웨어 형상관리, 소프트웨어 품질관리

 

01 소프트웨어 공학의 배경과 목적

소프트웨어 공학이란? 요구사항 분석에서부터 유지보수에 이르기까지 전 과정에 걸쳐 예상되는 어려움을 해결하기 위한 체계적인 관리와 효율적 업무 수행을 지원해주는 기술, 기법 등을 제공함

프로세스, 인력의 구성, 기반 인프라 기술의 3가지 핵심 요소를 균형 있고, 조화롭게 갖추고, 이를 유지하기 위한 지속적인 노력이 필요함

 

소프트웨어 공학 배경

1950년대 : 소프트웨어 공학 개념 도입

1960년대 : 소프트웨어에 대한 수요 급증에 비해 인력들의 경험과 능력, 수적인 부족이 원인이 되어 '소프트웨어의 위기'가 발생, 본격적인소프트웨어 공학 도입

1970년대 : 인력 부족에 따른 비전공자 대거 투입 > 선코딩-후수정 접근방식 > 앞의 방식에 따른 부작용으로 구조적 또는 정형적 기법들 발생 및 폭포수 모델 개발하여 사용 시작

1980년대 : 재사용성을 높여 효율적으로 소프트웨어를 개발하기 위해 소프트웨어 개발 생산성을 높이기 위한 방법들을 연구

1990년대 : 제품의 시장출시 시간을 단축하기 위해 소프트웨어 개발 생산성에 대한 연구가 활성화, 동시공학에 집중한 모델을 활용

2000년대 : 소프트웨어를 둘러싼 시장 환경이 급속하게 변화하기 시작, 애자일 방법론 도입

 

소프트웨어 공학의 4가지 중요요소

1. 방법 : 프로젝트 계획 수립과 추정, 시스템과 소프트웨어 분석, 자료구조, 프로그램 구조, 알고리즘, 코딩, 테스팅, 유지 관리와 같은 작업들로 구성

2. 도구 : 어떤 일을 수행할 때 생산성 혹은 일관성을 목적으로 사용하는 방법들을 자동화나 반자동화시켜 놓은 것을 일컬음

3. 절차 : 방법과 도구를 결합하여, 그것으로 하여금 소프트웨어를 합리적이고 적시에 개발할 수 있도록 함

4. 사람 : 소프트웨어 공학에서는 많은 것들이 사람과 조직에 의해서 움직이기 때문에 사람에 대한 의존성이 상대적으로 큼

 

02 소프트웨어 개발 생명주기

소프트웨어 개발 생명주기란? 사용자 환경 및 문제점 이해에서 시작하여 운용/유지 보수에 이르기까지의 모든 과정

일반적인 소프트웨어 생명주기는 타당성 검토 - 개발 계획 - 요구사항 분석 - 설계 - 구현 - 테스트- 운용 - 유지보수 의 활동으로 구성됨

 

소프트웨어 생명주기 모델 종류

1. V 모델 : 프로젝트 관리자와 개발자에게 프로젝트 수행 동안 어떤 활동이 수행되어야 하는지 명확하게 보여줌, 소프트웨어 개발에 대해 잘 알지 못하는 고객을 이해시키는 것이 용이, 시스템의 요구사항이 모두 식별되고 명확할 때 이상적인 생명주기 모델

2. VP 모델(V모델 with prototyping) :  V모델에 프로토타이핑 기법을 추가함으로써 프로젝트의 불확실성 요소나 리스크를 줄일 수 있음

3. 점증적 모델 : 시스템 개발 시간을 줄일 필요가 있을 경우 유용한 모델, 핵심이 되는 부분을 먼저 개발하여 동작 가능하게 만든 후, 나머지 기능을 구현하는 방식

4. 진화 모델 : 점증적 모델과 같이 시스템 개발 시간을 줄일 필요가 있을 경우 유용한 모델, 점증적 모델과 달리 전체 시스템에 대한 개발 단계가 여러번 반복됨

 

03 소프트웨어 개발 방법론

소프트웨어 개발 방법론의 필요성

1. 개발 경험의 축적 및 재활용을 통한 개발 생산성을 향상

2. 효과적인 프로젝트 관리

3. 공식 절차와 산출물을 제시하고 표준용어를 통일하여 의사소통 수단 제공

4. 각 단계별 검증과 승인된 종료를 통해 일정 수준의 품질 보증

 

소프트웨어 개발 방법론 비교

구분 구조적 방법론 정보공학 방법론 객체 지향 방법론 CBD 방법론
개요 업무활동 중심의 방법론 데이터 중심의 방법론 객체, 클래스 간의 관계를 식별하여 설계모델로 변환하는 방법론 재사용이 가능한 컴포넌트의 개발/상용 컴포넌트들을 조합하는 방법론
기본 원리 - 추상화
- 구조화
- 단계적 상세화
- 모듈화
- 정보전략계획
- 업무영역분석
- 업무시스템설계
- 시스템구축
- 요건정의
- 객체 지향 분석
- 객체 지향 설계
- 테스트/배포
- 요구분석
- 분석
- 설계
- 개발
- 구현
특징 - 분할과 정보의 원칙
- 프로그램 로직중심
- 컨트롤 가능한 모듈로 구조화
- 기업업무 지원시스템 지원방법론
- 데이터모델 중시
- 프로그램 로직은 데이터구조에 종속
- 전사적 통합데이터 모델
- 프로그램 단위는 객체
- 데이터와 로직 통합
- 고도의 모듈화
- 상속에 의한 재사용 분석
- 설계간 갭 없음
- 객체방법론의 진화
-인터페이스 중시
-인터페이스의 구현은 컴포넌트
- 블랙박스 재사용 지향
주요 산출물 - 도메인 분석서
- 데이터흐름도
- 구조도
- 프로그램 사양서 
- 도메인 분석서
- ERD
- 기능차트
- 어플리케이션구조도
- 프로그램사양서
- 테이블정의서/목록
- 비즈프로세스/개념도
- 다이어그램
- 비즈프로세스/개념도
- 다이어그램
- 재사용계획서
- .NET, EJB
지원 도구 Teamwork, SA Cool Gen, SA Rose, SA, Palstic Cool Joe, Together
주요 지원 언어 COBOL, C, VB, PASCAL COBOL, C, VB, PASCAL C++, JAVA, VB 개발언어 무관

 

소프트웨어 개발 단계 

1. 요구사항 분석 : 소프트웨어 개발의 실제적인 첫 단계로 사용자의 요구에 대하여 이해하는 단계

2. 설계 : 물리적 실현의 첫 단계

3. 구현 : 설계 명세를 기반으로 요구사항을 만족할 수 있도록 프로그래밍 하는 것

4. 테스팅 : 시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가 어떤 차이를 보이는지에 대해 수동 또는 자동화된 방법을 동원하여 검사하고, 평가하는 일련의 과정

 

04 애자일 개발 방법론

애자일 방법론 종류

- 스크럼, 켄 슈와버/제프 서덜랜드

- 익스트림 프로그래밍, 켄트 벡/에릭 감마

- 린 소프트웨어 개발방법론, 메리 포펜딕/톰 포펜딕

- 애자일 UP, 스콧 앰블러

 

애자일 개발 방법론 - XP

XP(eXtreme Programming)는 1990년대 후반 켄트 백을 중심으로 여러 엔지니어들이 프로젝트를 진행하며 얻었던 교휸을 기반으로 정립된 방법론, 보통 중소규모 개발 조직에 적합한 경량화된 개발방식

XP 개발절차

스크럼(SCRUM)

- 스크럼은 프로젝트 관리를 위한 애자일 방법론으로서 추정 및 조정 기반의 경험적 관리기법의 대표적인 형태

- 3가지 역할자가 있음(제품 책임자, 스크럼 마스터, 스크럼 팀)

- 스크럼 프로세스의 3가지 구성 요소(스프린트, 3가지 미팅, 3가지 산출물)

- 스크럼 특징 (투명성, 타임박싱, 커뮤니케이션, 경험주의 모델)

728x90