테스트 용어 - sten에서 확인 테스트 케이스 사용자 스토리(참고 자료) 소프트웨어 케이스 툴 정리

폭포수 모델

폭포수 모델(waterfall model) : 소프트웨어 개발 프로세스의 하나로, 시스템 개발을 단계적으로 진행하는 방법론

폭포수 모델 단계

  1. 요구사항 분석
  2. 설계
  3. 코딩과 단위 테스트
  4. 시스템 통합
  5. 관리와 유지보수

폭포수 모델 단점

애자일 방법론

애자일 방법론(Agile Process) : 소프트웨어 개발 프로세스의 하나로, 빠르고 유연하게 진행하면서 변경에 빠르게 대응하는 방법론

애자일 선언문 : “상호작용하는 개인”, “동작하는 SW”, “고객과의 협력”, “변화에 대한 수용”

애자일의 목표

가치 있는 소프트웨어를 조속하게 릴리즈

애자일 등장배경

기존의 무거운 폭포수 방법론을 타파하기 위해 경량방법론이 나왔고, 애자일 선언문 이후에 애자일로 불림

애자일의 장점

  1. 요구사항 변화에 빠르게 대응
  2. 비용이 적다
  3. 반복적인 릴리즈로 고객 만족도가 높음

애자일 폭포수 차이

애자일 방법론 폭포수 방법론
반복 점진적 단계별로 진행
고객 중심 계획 중심
짧은 주기로 작은 릴리즈 한꺼번에 빅뱅 릴리즈
동작하는 SW중심 단계별 산출물 중심
가벼운 방법론 무거운 방법론

애자일 방법론 종류

XP

xp(eXtreme Programming) : 빠르게 변하는 요구사항에 대응하는 중소규모 팀을 위한 애자일 방법론이다.

XP 특징

XP 논쟁

(시험✔)XP 핵심가치

  1. 의사사통 : 프로그래머들 간 대화방법과 팀과 고객들 간의 대화 방법을 강조
  2. 단순성 : ‘꼭 필요한 것만 한다.’ 가장 간단한 설계는 코드를 작성하는 것, 복잡한 설계는 잘못된 부분을 지속적으로 리팩토링
  3. 피드백 : 개발을 하면서 고객으로부터 자주 피드백아야함.
  4. 용기 : TDD, 가장 간단한 솔루션, 피드백, 리팩토링 할 수 있는 용기
  5. 존중 : 팀원 간의 상호 존중을 강조. 존중이 되어야 위에 가치들이 가능.

XP 13가지 주요 활동

함께 앉기, 하나의 팀, 정보를 제공하는 작업 공간, 열정적인 작업, 페어 프로그래밍, 스토리, 주 단위의 주기, 사분기 주기, 느슨함, 10분 빌드, 지속적인 통합, 테스트 우선 프로그래밍, 점진적 설계.

XP의 프로세스 모델

  1. 아키텍처 스파이크 : 팀이 설계 또는 리팩토링을 하거나 새로운 기술을 적용할 때 프로토타입
  2. 릴리스 계획 : 릴리스를 성공하는데 필요한 각 주기 정의
  3. 반복 : 새로운 사용자 스토리가 발생하면 릴리스 계획으로 돌아감
  4. 인수 테스트 : 고객이 작성하여 기능을 검사하여 승인되면 작은 릴리스를 진행
  5. 작은 릴리스 : 짧은 주기로 업데이트된 모듈을 릴리스 하는것

XP 제한성

스크럼

스크럼(Scrum)은 애자일 방법론 중 하나로, 추정 및 조정 기반의 경험적 관리기법을 적용한 방법론

스크럼의 용어는 럭비에서 유래. 동시공학(Concurrent Engineering)을 적용해 설계,빌드,테스팅을 협업하여 동시에 수행. 경험적 프로세스 제어 : 소프트웨어개발은 본래 복잡하고 예측이 불가능한 프로세스이므로 ‘정의’보다는 ‘경험’에 의한 접근법으로 진행

스크럼 역할

스크럼 용어

스크럼의 핵심 활동

스프린트 종료 시 나오는 모든 산출물은 잠재적으로 릴리스 가능하도록 해야한다. 세번의 스프린트마다 릴리스를 하도록 권고하고 있다.

스크럼 특징

스크럼 부적절한 경우

RUP(Rational Unified Process)

RUP란

RUP(Rational Unified Process) : UML을 사용하는 소프트웨어 개발 프로세스이며, 프로세스 프레임워크

UML(Unified Modeling Languge) : 소프트웨어 개발에서 결과물을 명세화,시각화,문서화하는 통합 모델링 언어

RUP와 UML 모두 Rational Software(현 IBM)에서 개발된 것이다. 프로세스 프레임워크 : 소프트웨어 개발이나 프로젝트 관리와 같은 작업을 수행하는 데 사용하는 일련의 프로세스와 관련된 가이드, 원칙, 도구, 템플릿 등의 모음. RUP는 프로세스 프레임워크로서 사용자의 요구에 따라 작업을 빼거나 추가할 수 있다.

RUP에는 여러 종류가 있으며, 애자일처럼 반복 점진적인 특성을 같지만 모든 RUP가 애자일이라고 하기는 어렵다. 왜냐하면 애자일 선언문에 참석하지 않고 UML을 통해 여러 산출물을 내기 때문 애자일이라 할 수 있는 RUP는

RUP 특징

RUP 8가지 핵심이론

RUP 4가지 단계

X-축

Y-축

프로세스 비교

SEI CMM

SEI CMM은 프로세스 평가 프레임워크이다.

높은 ceremony

SEI CMMI

SEI CMMI 또한 프로세스 평가 프레임워크이다.

코드 리팩토링 실습

java 문법

public enum E{
    A,B,C,D;
    public String toString(){
        switch(this){
            case A: return "A";
            ...
            default: return "X"; 
        }
    }
}

//연결리스트 순회
List list = new LinkedList();
for(Iterator i=list.iterator(); i.hasNext(); ){
    A a=(A)i.next();
}

//연결리스트 추가
list.add(3);

//소문자로
(String).toLowerCase();

//문자열 비교
String.equals(String);


용어

결합도(Coupling) : 객체가 얼마나 연결되었는지 응집도(Cohension) : OCP(Open Close Principle) : 개방폐쇄원칙 디자인 패턴 : *헤드퍼스트 디자인 패턴 책 참고

``

코드 기능

기타, 인벤토리 객체가 있음 인벤토리는 기타들을 저장하고 인벤토리 안에서 기타를 탐색하는 기능을 한다. 테스트 클래스는 인벤토리에 기타 들을 저장하고, 기타를 탐색하는 기능을 한다.

1. start

문제점

  1. 기타 탐색에서 문자를 정확히 입력해야함(테스트 코드는 대소문자 차이로 탐색 안됨) -> 소문자로만 가능하게 하던가 enum으로
  2. 인벤토리에 조건에 맞는 기타가 여러개 있을 수 있지만 처음 발견한 기타 한개만 반환 -> 링크드리스트 또는 인벤토리로 반환
  3. 인벤토리 기타 탐색 기능에 기타 객체와 강하게 결합됨 -> 순차적으로 기타를 비교하는 것은 인벤토리에 직접 속성을 비교하는 것은 기타에 할당

2. coice

변경사항

  1. 기타 속성들의 종류를 enum으로 정의해놓음
  2. 기타 탐색 후 리스트 반환

문제점

  1. 인벤토리에 기타를 넣는 메소드에 매개변수로 기타의 모든 속성을 받아 결합큼 -> 기타 객체를 매개변수로
  2. 여전히 탐색 메소드의 기타 비교 로직을 인벤토리가 담당

*자바 다중상속 불가(인터페이스는 가능) *인터페이스에 의존하라 자식보단 부모에게 의존 *

#