소프트웨어 공학 2

비지·2022년 4월 14일
0

소프트웨어공학

목록 보기
2/2

일반적인 소프트웨어 생명주기

  • 정의 단계
    -무엇을 처리하는 소프트웨어인지 정의하는 단계.
    -타당성 검토단계, 개발 계획단계, 요구사항 분석단계

  • 개발 단계
    -방법에 초점을 두고 소프트웨어를 개발하는 다계
    -설계단계, 구현단계, 테스트 단계

  • 유지보수 단계
    -변경에 초점을 두고 여러 환경 변화에 따라 소프트웨어를 적응 및 유지시키는 단계
    -소프트웨어 생명주기단계에서 시간과 비용이 가장 많이 듬

소프트웨어 개발 과정

  • 소프트웨어 개발 생명주기(SDLC)
    -계획 단계에서 유지보수 단계에 이르기까지 일어나는 일련의 과정
    계획 -> 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수

1. 일반적인 소프트웨어 생명주기

  • 소프트웨어 개발 생명주기 (SDLC)
    분석 단계 -> 설계 단계 -> 구현 단계 -> 테스트 단계 -> 유지보수 단계

  • 소프트웨어 개발 생명주기의 대표적인 모델
    -폭포수 모델
    -프로토타입 모델
    -나선형 모델
    -애자일 모형

SDLC 모형의 장단점

  • 장점
    -각 시스템 개발의 각 단계가 비교적 명확
    -각 단계들 간에 유기적인 연관성을 가지고 있어 쉽게 적용할 수 있음

  • 단점
    -충분한 분석을 기반으로 개발이 진행되지 않았을 경우 테스트 단계 또는 유지보수 단계에서 문제점이 노출되어 이를 개선하는데 많은 비용과 시간이 소요됨
    -대형 프로젝트의 경우 긴 개발기간 동안 외부환경이나 내부 정책이 변화할 소지가 크고, 이를 개선하기 위해 이전 단계로 되돌아가 변경관리를 해야 하므로 막대한 시간과 비용이 들어감

1. 폭포수 모형(Waterfall Model)

장점
-모형의 적용경험과 성공사례가 많다.
-단계별 정의가 분명하고, 각 단계별 산출물이 정확하다.
단점
-개발과정 중 새로운 요구나 경험을 반영하기 어려움.
-개발된 프로그램이 운영될 때 검출되지 않은 오류에 의해 사용자들의 불편을 초래할 수 있다.
특징
-두 개 이상의 과정이 병행수행 되거나 이전 단계로 넘어가는 경우가 없다.
-현실적으로 오류 없이 다음단계로 진행하기 어렵다.
-개발 과정 중에 발생하는 새로운 요구나 경험을 설계에 반영하기 어렵다.

2. 프로토타입 모형(Protorype Model, 원형 모형)

-실제 개발될 소프트웨어에 대한 견본품을 만들어 최종 결과물을 예측함.
-개발 완료시점에서 오류가 발견되는 폭포수 모델의 단점을 보완한 모형
-요구분석단계에서 사용됨
-개발단계에서 유지보수가 이루어짐
특징
-생명주기 중간단계에서 치명적인 오류가 발생할 경우나 사용자의 요구를 잘못 받아들였을 경우 오류를 최소화
-사용자 요구사항 변경이 용이, 요구분석 중심의 개발 방법론
-시스템의 요구사항이 불명확한 경우 효과적
-소프트웨어 생명주기에서 유지보수가 없어지고 개발 단계 안에서 유지보수가 이루어진다.
-사용자가 빠른 시간 내에 개발 완료를 요구할 때 적당한 방법
Brooks 이론
-개발 일정이 지연된다고 해서 말기에 새로운 인원을 투입하면 일정이 더욱 지연된다.
-프로토타입은 폐기 처분하는 첫번째 시스템이다.

3. 나선형 모형 (Spiral Model, 점진적 모형)

-대규모 프로젝트나 큰 시스템에 적합
-추가적인 요구사항이 첨가가능하므로 유지보수 과정이 필요 없음

  • 업무 영역을 여러개의 작업단위로 나눈다.
    -계획 및 정의 : 개발 목적, 제약 조건 등을 설정
    -위험 분석 : 위험요소를 분석하고, 기능 선택의 우선순위를 지정
    -공학적 개발 : 개선된 한 단계 높은 수준의 프로토타입을 개발
    -고객 평가 : 개발된 결과(프로토타입)을 평가함

특징
-대규모 프로젝트에 적당함
-위험분석에 중점을 두어 프로토타입을 발전 시킬 때 마다 점증적으로 소프트웨어 개발을 한다.
-유지보수는 처리절차에 포함되지 않는다.

4. 애자일 모형(Agile Model)

  • 애자일은 '민첩한', '기민한' 이라는 의미로, 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발과정을 진행함.
    -특정 개발 방법론이 아니라 좋은 것을 빠르고 낭비 없도록 고객과의 소통에 초점을 맞춘 방법론
    -Sprint 또는 Iteration 이라고 불리는 짧은 개발 주기를 반복하며, 반복되는 주기마다 만들어지는 결과물에 대한 고객의 평가와 요구를 적극 수용함
    -각 개발 주기에서는 고객이 요구사항에 우선 순위를 부여하여 개발 작업을 진행함
    -소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항에 적합함

애자일 모형을 기반으로 하는 소프트웨어 개발 모형
스크럼(Scrum), XP(eXtreme Programming), 칸반(Kanban), ASD(Adaptive Software Deverlopment), 기능 중심 개발(FDD: Feature Driven Development), DSDM(Dynamic System Development Method) 등

애자일 모형의 가치와 실행 지침

  • 4가지 핵심가치
  1. 프로세스와 도구보다는 개인과 상호작용에 다 가치를 둔다.
  2. 방대한 문서보다는 실행되는 SW에 더 가치를 둔다.
  3. 계약 협상보다는 고객과 협업에 더 가치를 둔다.
  4. 계획을 따르기 보다는 변화에 반응하는 것에 더 가치를 둔다.

12가지 실행 지침

  1. 유용한 SW를 빠르고 지속적으로 제공하여 고객을 만족시킨다.
  2. 개발 막바지라도 요구사항 변경을 적극 수용한다.
  3. 몇 개월이 아닌 몇 주 단위로 실행되는 SW를 제공한다.
  4. 고객과 개발자가 프로젝트 기간에 함께 일한다.
  5. 개발에 대한 참여 의지가 확실한 사람들로 팀을 구성하고, 필요한 개발 환경과 자원을 제공하며, 일을 잘 끝낼 수 있도록 신뢰한다.
  6. 같은 사무실에서 얼굴을 맞대고 의견을 나눈다.
  7. 개발의 진척도를 확인하는 1차 기준은 작동하는 SW이다.
  8. 지속 가능한 개발을 장려하고 일정한 속도로 개발을 진행한다.
  9. 기술적 우수성과 좋은 설계에 지속적인 관심을 기울이면 민첩성이 향상된다.
  10. 단순화를 추구한다.
  11. 최상의 아키텍처, 명확한 요구사항, 최상의 설계는 자기 스스로 일을 주도하는 조직적인 팀으로부터 나온다.
  12. 더 효과적인 팀이 될 수 있는 방안을 정기적으로 깊이 고민하고 그에 따라 팀의 행동을 조정한다.

좋은 소프트웨어의 품질 특성

  • 사용자의 요구대로 동작해야 한다.
  • 하드웨어 자원을 효율적으로 이요할 수 있어야 한다.
  • 일정 시간 낸에 주어진 조건하에 원하는 기능을 실행할 수 있어야 한다.
  • 처리 절차에 맞게 정확한 결과를 산출해야 한다.
  • 소프트웨어의 개발, 유지보수 등이 초기예상비용이내에서 수행되어야 한다.
  • 사용자 인터페이스가 편리해야 한다.
  • 유지보수가 용이하고 신뢰성이 높아야 한다.
  • 잠재적인 에러가 최소화되어야 한다.
  • 소프트웨어의 사용법, 구조의 설명, 성능, 기능 등이 이해하기 쉬워야 한다.
  • 실행속도가 빠르고, 기억 용량을 적게 차지해야 한다.
profile
나를 위한 업그레이드 아자아자

0개의 댓글