기존 애자일 방법론의 단점을 효율적으로 처리할 수 있는 새로운 방법론

특징

  1. 실용성 강조
  2. 개발 속도를 높이는 가속 기술
    - 단순한 디자인 정신 + 테스트 우선 프로그래밍 + 리팩토링
  3. XP의 목표 : “고객에게 최고의 가치를 가장 빨리” == 소프트웨어를 빨리 개발하다
  4. XP의 가치 기준
    - 의사소통, 단순함, 피드백, 용기, 존중 등 5가지
  5. 사용자 스토리 작성
    - 고객이 원하는 기능을 짧게 표현한 카드
    - 지속적인 대화로 요구사항을 이끌어 내는 방식

 

XP 개발 프로세스

1) 사용자 스토리(user story)
- 고객이 원하는 기능을 간단한 시나리오로 표현

2) 릴리즈 계획 수립
- 시스템의 개발이 완료되는 시점과 완수하기 위한 일정 계획

3) 이디레이션
- 프로젝트의 일정을 더 작게 분할

4) 인수 테스트
- 구현된 부분에 대한 테스트

5) 작은 릴리즈
- 반복적으로 고객에게 결과물을 전달, 평가 받음
- 고객의 승인 필요

'학부과정 > 소프트웨어공학' 카테고리의 다른 글

Agile Methodology(애자일 방법론)  (0) 2022.10.10
4세대 기법  (0) 2022.10.10
나선형 패러다임(sprial)  (0) 2022.10.09
원형 패러다임  (0) 2022.10.06
폭포수 모델  (0) 2022.09.06

기존의 방법론들의 오버헤드가 발생, 오버헤드가 발생한다는 것은 그만큼의 기간, 비용, 인력, 위험성들이 높았다

이런 과거 폭포수, 4세대, 나선형, 원형 같은 무거운 소프트웨어 개발 방법론이 아닌
민첩성과 실용성이 강조된 가벼운 경량급 개발 방법론 == Agile Methodology

애자일 방법론

  • 필요한 요구를 그때그때 더하고 수정하는 코드 중심 점진적 개발 방법
  • 단순성, 의사소통, 피드백, 용기 등의 원칙에 기반
  • 고객에게 최고의 가치를 가장 빨리 전달하는 경량 방법론
  • 협업과 변화 등 빠른 대응에 가치 : 소규모 목표 달성

협업과 변화에 빨리 대응하려면 목표를 간소화 해야한다

애자일 소프트웨어 개발 선언문(2001)


애자일 방법론(개념 용어)

  • 기술적 부채의 청산
    - 기존의 결함들로 인해 새로운 기능을 개발하거나 확장하는데 어려움이 발생하는 것,
    부채를 해결하기 어려워지고 수리 비용 증가

    - 해결 방법
    처음부터 올바르게 만들 수 있는 탁월한 기술력과 도덕 정신이 뒷받침되어야 한다

  • 리팩토링 기법의 적용
    - 소프트웨어를 보다 쉽게 이해할 수 있고, 적은 비용으로 수정할 수 있도록 기존 코드의 설계를 개선하는 기술
    - 잘못된 설계에서 나타나는 기술적 부채를 감소시켜 덜 짜증나게 해준다

 

리팩토링 : 기존의 코드를 쓰되, 새로운 코드가 잘 연동될 수 있도록 하자

 

리팩토링 효과

  • 코드를 쉽게 이해, 다른 프로그래머가 코드 변경을 쉽게 할 수 있다
  • 애자일 방법론은 리팩토링을 코드 구현 작업의 일부분으로 취급한다
  • 기본 코드에 대한 높은 이해도 -> 버그 수정, 새로운 기능 추가 -> 빠른 작업 속도

리팩토링 = 기본 코드의 디자인을 개선하는 방법

 

객체지향 기법의 적용

  • 점진적인 개발 용이
  • 시스템을 수평적인 모습으로 설계 : 재사용성 확장
  • 기존 메소드나 코드에 영향 최소화 + 새로운 메소드나 코드 추가
  • 적응성과 재사용성을 극대화

 

애자일 기법의 장점

  • 상대적으로 낮은 비용과 위험도
  • 프로토타입의 중요성 부각 : 짧은 릴리즈 추가
  • (개발하는 시간대가 단축되기 때문에 고객에게 가지는 릴리즈가 짧아진다 = 업데이트가 잦다)
  • 마음가짐 + 사람중심 + 참여와 소통 중시

단점

  • 낯선 프로세스
  • 프로젝트 팀원에게 요구되는 역량
  • 이끌어 내기 힘든 고객의 참여
 
 

 

'학부과정 > 소프트웨어공학' 카테고리의 다른 글

익스트림 프로그래밍  (0) 2023.01.11
4세대 기법  (0) 2022.10.10
나선형 패러다임(sprial)  (0) 2022.10.09
원형 패러다임  (0) 2022.10.06
폭포수 모델  (0) 2022.09.06

소프트웨어적으로 봤을 때, 자동으로 프로그래밍이 되는 자동화 시스템이 나오기 시작했다

4세대 기법이란?

  • 자동화 도구 사용
  • 요구사항 명세서로부터 실행 코드 자동으로 생성
  • 형식 규격 언어 표현법 진행 : 고급 언어의 모호성 해결
  • 정확성 있는 명세서 해석
  • 개발 과정의 자동화
  • 높은 생산성과 소프트웨어 위기를 해결하기 위한 폭넓은 응용 분야에 적용
    (아직까지는 크게 다양한 분야에서 사용되지는 않는다)

단점

  • 불필요한 많은 양의 코드 생성
  • 어려운 유지보수 < 제일 큰 단점
 

자동생성코드를 돌리다보면 내가 원하지 않는 불필요한 코드가 생성되고, 속도가 떨어질 수 있다

유지보수도 어렵다. 자동생성이라는 개념은 좋지만, 내가 원하는 특성이 들어간 것을 만들기에는 많이 불편하다.

 

'학부과정 > 소프트웨어공학' 카테고리의 다른 글

익스트림 프로그래밍  (0) 2023.01.11
Agile Methodology(애자일 방법론)  (0) 2022.10.10
나선형 패러다임(sprial)  (0) 2022.10.09
원형 패러다임  (0) 2022.10.06
폭포수 모델  (0) 2022.09.06

원형 패러다임에서 든 의문점 
: 미리 사전에 시스템에 대한 위험 개발을 최소화 할 수는 없을까? == 매 단계 체크해볼 수 없을까?

 그래서 나온게

나선형 패러다임(spiral)

  • 시스템 개발에 따른 위험 관리 최소화 목적
  • 폭포수 모델 장점 + 원형 패러다임 장점 + 위험분석
  • 나선을 돌며 점진적으로 완벽한 시스템 개발

나선형 패러다임의 4단계

  1. 계획 및 정의
  2. 위험 분석(단계마다 위험 분석을 한다)
  3. 개발
  4. 고객 평가

이러한 과정을 계속 반복한다

나선형 패러다임의 장점

  1. 비용과 시간이 오래 걸리는 큰 시스템 구축에 좋음
    : 초고속 정보통신망 개발, 큰 국책 사업, 대형 사업 등
  2. 성과를 보면서 조금씩 투자 :위험 부담을 줄일 수 있다

 

단점

  1. 개발 방법론이 복잡해서 프로젝트 관리가 어려워질 가능성이 높다
  2. 많은 고객을 상대해야 할 상업용 제품에 적용하기 힘들다
  3. 대형 프로젝트 위주라 많이 사용되지 않아 충분한 검증을 거치지 못한다

 

 

'학부과정 > 소프트웨어공학' 카테고리의 다른 글

Agile Methodology(애자일 방법론)  (0) 2022.10.10
4세대 기법  (0) 2022.10.10
원형 패러다임  (0) 2022.10.06
폭포수 모델  (0) 2022.09.06
소프트웨어 공학 패러다임  (0) 2022.09.06

폭포수 모델의 단점을 보완한 패러다임

장점: 쉽고 빠른 시제품 개발(많은 응용 분야에서 사용된다)(규모는 크지 않다)

 

원형 패러다임의 주 내용은 시제품 개발

  1. 이전에 정의되지 않은 사용자의 요구사항을 구체적으로 구명한다
  2. 사용자와 시스템 간의 인터페이스에 초점을 맞춘다
  3. 피드백을 받은 후 시제품을 버리는 경우와 피드백 이후 계속 발전시켜
    완제품을 만드는 경우가 있다

 

시제품 개발을 함으로써 생기는 장점

  • 개발자, 사용자의 오해 규명
  • 새로운 기능과 서비스 발견
  • 모호한 기능의 명료화
  • 고품질의 시스템 요구사항 명세화 기초 제공

시제품을 보며 사용자가 이 부분에 이 내용을 조금 더 추가해주세요”, “이 인터페이스가 더 필요할 것 같습니다
같은 정확한 방향성을 제시할 수 있다

그만큼 기존에 만들어진 제품을 본다는 것은 중요한 것이다(우리로 따지면 포토폴리오)

 

원형 패러다임 진행 과정

  • 요구사항 분석
  • 시제품 설계
  • 시제품 개발
  • 고객의 시제품 평가
  • 시제품 정제
  • 완제품 생산

 

한계점

  • 시제품에서 완제품으로의 많은 변화 예상
  • 시스템의 극한 상황에 대한 어려운 성능 평가
  • 다른 시스템과의 쉽지 않은 교류

 

미리 사전에 시스템에 대한 위험 개발을 최소화 할 수는 없을까?

'학부과정 > 소프트웨어공학' 카테고리의 다른 글

4세대 기법  (0) 2022.10.10
나선형 패러다임(sprial)  (0) 2022.10.09
폭포수 모델  (0) 2022.09.06
소프트웨어 공학 패러다임  (0) 2022.09.06
소프트웨어 공학 정의  (0) 2022.09.06

폭포수 모델이란?

  • 가장 오래되고 널리 사용되는 패러다임
  • 다른 공학에서도 많이 사용됨
  • 요구사항 분석, 설계, 구현, 시험, 유지보수 순서로 개발이 이루어짐
  • 개념 정립에서 구현까지 하향식 접근 방법을 사용해 높은 추상화 단계에서 낮은 추상화단계로 옮겨가는 모델
    (각 단계가 끝날 때 마다 과정의 끝을 알리고, 그 다음 단계로 진행)

장점

  • 프로젝트 진행 과정 세분화하여 관리가 용이

단점

  • 순환이 발생해 순차적인 흐름에 따라 개발 관리가 어렵다
  • 초기 요구사항에 대해 구체적 기술 어려움
  • 시스템이 작동되는지 후반부에 확인 할 수 있다 ==> 중요 문제점이 후반에 발견된다

 

해설

각 단계별로 테스팅을 한 후, 문제가 발생이 되면 요구내용을 다시 분석 후 재설계하는 과정으로 진행되야 함 
하지만, 폭포수의 경우 과정이 종료되면 바로 다음 과정으로 넘어가는 방식으로 진행
그로 인해 전단계에서 발생될 수 있던 요구문제가 해결이 되지 않은 상태로 넘어갈 수 있다는 단점이 있다

 

최종적으로는 가장 중요한 문제들이 후반에 발견되는 경우가 있기도 하다

 

'학부과정 > 소프트웨어공학' 카테고리의 다른 글

나선형 패러다임(sprial)  (0) 2022.10.09
원형 패러다임  (0) 2022.10.06
소프트웨어 공학 패러다임  (0) 2022.09.06
소프트웨어 공학 정의  (0) 2022.09.06
소프트웨어 개발 6가지 공정 과정(2)  (0) 2022.09.05

소프트웨어 공학 패러다임이란?

  • 개발 방법, 개발 환경, 개발 관리 등이 포함된 것
  • 소프트웨어 공학 패러다임을 통해서 소프트웨어가 개발되고 있다

소프트웨어 공학 패러다임에 의해서 만들어진 개발 방법론 중 제일 대표적인 방법론 (4가지 패러다임)

  1. 폭포수 모델
  2. 원형 패러다임
  3. 나선형 모델
  4. 4세대 기법

 

결론
소프트웨어 시스템 개발 패러다임이란?

  • 높은 품질의 소프트웨어 시스템을 체계적으로 만들기 위해 필요한 방법, 개발 환경 및 관리에 대한 틀을 설정한다
 

'학부과정 > 소프트웨어공학' 카테고리의 다른 글

원형 패러다임  (0) 2022.10.06
폭포수 모델  (0) 2022.09.06
소프트웨어 공학 정의  (0) 2022.09.06
소프트웨어 개발 6가지 공정 과정(2)  (0) 2022.09.05
소프트웨어 개발 6가지 공정 과정(1)  (0) 2022.09.05

소프트웨어공학이란?

소프트웨어 시스템의 개발, 운용, 관리에 적용되는 체계적인 접근 방법

 

소프트웨어 위기의 해결책

  • 문제에 대한 정확한 인식과 목표 필요
  • 문제 해결을 위한 방법과 과정 공유 필요

 

요약

1. 소프트웨어공학이란 체계적인 공법을 적용하여, 최적의 비용으로 고품질의 소프트웨어시스템을 개발하는 것

 

2. 소프트웨어 공학의 단일 목표는 높음 품질의 제품을 만드는 것

 

3. 사용자, 관리자, 개발자들이 가지는 오해가 많이 있다

 

4. 소프트웨어 개발은 기술적인 측면뿐만 아니라, 관리적인 측면에서 조직적으로 문제를 극복하고 품질을 향상시키려는 노력이 요구된다

 

5. 프로젝트에 참여한 모든 사람들이 문제점에 대한 정확한 인식과 목표를 가져야함

 

6. 관리자와 엔지니어들이 함께 체계적인 공법 과정을 이해하고 실천해야 함

 

구현 = 프로그래밍 = 코딩

프로그래밍 결과 : 컴퓨터 프로그래밍

(분석 및 설계에 비해 상대적으로 단순하고 기계적인 과정)

 

시험(Testing)

: 좋은 프로그램인지 확인하는 방법 

 

테스트 유형

  • 단위 테스트 
  • 통합 테스트
  • 시스템 테스트
  • 인수 테스트

 

유지보수

: 사용중 발생하는 변경사항의 적응과 변화에 대비

 

요지보수를 위한 체계적인 관리 필요

: 시스템 변경에 의한 요구분석, 재설계, 재시험, 관련된 문서의 수정, (유지보수도 무료는 아니다)

 

유지보수를 할 때 발생할 수도 있는 일

  • 사용자의 요구사항이 많아 모형구조가 전혀 다른 구조로 바뀔 수도 있다.
  • 이를 대비해기 위해 계약서 작성

결국 문서가 제일 중요하다

 

결론

SDLC(소프트웨어 개발 생명주기), 소프트웨어 개발 프로세스는

  1. 계획
  2. 요구사항
  3. 설계
  4. 구현
  5. 테스트
  6. 유지보수

6단계로 이루어져있다

 

이걸 다시 크게 3단계로 구분하면

  1. 정의
  2. 개발
  3. 유지보수 단계

로 구분할 수 있다

 

'학부과정 > 소프트웨어공학' 카테고리의 다른 글

폭포수 모델  (0) 2022.09.06
소프트웨어 공학 패러다임  (0) 2022.09.06
소프트웨어 공학 정의  (0) 2022.09.06
소프트웨어 개발 6가지 공정 과정(1)  (0) 2022.09.05
시스템 공학  (0) 2022.09.05

소프트웨어 개발 6가지 공정 과정

계획 --> 요구사항 분석 --> 설계 --> 구현(프로그래밍) --> 시험(테스트) --> 유지보수

 

계획

: 프로젝트 계획, 문서 기술서 또는 제안서 작성

 

뭘 하든 문서가 있어야한다. (법적인 효력, 문서를 바탕으로 계약이 이루어진다)

(고객 : 제안요청서, 개발회사 : 제안서)

 

요구사항 분석

: 기능, 성능, 인터페이스 등의 요구사항

 

분석과정을 행하는 이유

: 저비용, 생산성 및 서비스 향상

 

분석을 안하고 요구사항대로 할 시 발생하는 일

: 기능이 많아진다 --> 기능이 많아진다 = 시간이 오래걸린다 = 공정과정이 길어진다 = 개발시간이 길어진다

==

비용이 더 들지 않기 위해서 분석을 하고, 그러기 위해 제안서를 작성하고, 제안서를 바탕으로 계약이 이루어진다

 

이러한 요구사항을 정리한 문서 = 요구사항 명세서(RP) = 요구사항 분석단계에서 만들어지는 산출물

자세한 기술을 요구할 필요는 없다. 무슨 기능을 수행할 것이냐 정도만 작성하면 된다

 

설계

: 자세하게 지술적으로 설명하는 분야

설계에서의 산출물 : 설계문서

 

'학부과정 > 소프트웨어공학' 카테고리의 다른 글

폭포수 모델  (0) 2022.09.06
소프트웨어 공학 패러다임  (0) 2022.09.06
소프트웨어 공학 정의  (0) 2022.09.06
소프트웨어 개발 6가지 공정 과정(2)  (0) 2022.09.05
시스템 공학  (0) 2022.09.05

+ Recent posts