소프트웨어 설계 1. 요구사항 확인

박유현·2020년 5월 12일
0

1. 폭포수 모형

  • Waterfall Model
    - 소프트웨어 생명 주기(Software Life Cycle) 모형의 하나
    - 가장 오래되고 폭넓게 사용
    - 한 단계가 완전히 끝나야 다음 단계로 넘어감

2. 애자일 모형

  • Agile Model
    - 고객의 다양한 요구사항의 변화에 유연하게 대응
    - 일정 주기를 반복
비교폭포수애자일
새로운 요구사항 반영어려움지속적 반영 가능
고객과의 의사소통적음지속적으로 가능
테스트 진행시기마지막 단계일정주기 끝날 때
개발시계획, 매뉴얼 중심고객 중심

3. 나선형 모형

  • Spiral Model(점진적 모형)
    - 나선을 따라 돌듯이 소프트웨어 개발 과정을 여러 번 반복
    - 누락되거나 추가된 요구사항을 첨가 가능
    - 위험 분석 기능을 추가

4. 스크럼

  • Scrum
    - 럭비에서 양 팀이 대치해 있는 대형
    - 개발에서 팀의 중요성 강조
  • 스크럼 팀의 구성원 및 역할
    - 제품 책임자(PO; Product Owner): 백로그(Backlog) 작성
    - 스크럼 마스터(SM; Scrum Master): 일일 스크럼 회의(Daily Scrum Meeting) 주관
    - 개발팀(DT; Development Team): 제품 책임자와 스크럼 마스터를 제외한 팀원
  • 스크럼 개발 과정 순서
    1. 제품 백로그(Product Backlog): 개발에 필요한 요구사항(User Story)에 우선순위를 부여한 목록 작성 후 업데이트
    2. 스프린트 계획 회의(Sprint Planning Meeting): 백로그 중 처리할 User Story를 개발자별로 나눠 스프린트 백로그(Sprint Backlog) 작성
    3. 스프린트(Spring): 2-4주 정도 기간으로 실제 개발 진행
    4. 일일 스크럼 회의(Daily Scrum Meeting): 매일 15분 정도 진행 상황하며 남은 작업시간을 소멸 차트(Burn-down Chart)에 표시
    5. 스프린트 검토 회의(Sprint Review): 주당 1시간 내로 제품 요구사항에 부합되는지 테스팅하고 제품 책임자(PO)가 백로드 업데이트
    6. 스프린트 회고(Sprint Retrospective): 규칙 준수했는지, 개선점 없는지 등 확인하고 기록

5. XP(eXtreme Programming)

  • 일부 기능 완성될 때마다 고객 앞에서 테스팅하고 반응 확인하는 과정을 최종 제품 완성시까지 지속 반복
  • 릴리즈(Release)를 소규모로 반복하여 고객 요구사항 반영 여부에 대한 가시성(Visibility)을 높임
  • XP 개발 과정 순서
    1. 사용자 스토리(User Story): 고객의 요구사항을 기능 단위로 표현
    2. 릴리즈 계획 수립(Release Planning): 몇 개의 스토리가 적용된 제품 제공 일정 수립
    2.1. 스파이크(Spike): 신뢰성 높이고 기술 문제 위험 감소를 위해 별도로 만드는 프로그램
    3. 이터레이션(Iteration): 릴리즈를 더 세분화하여 1~3주 정도 기간으로 진행하며 새로운 스토리 작성 가능
    4. 승인 검사(Acceptance Test): 사용자 스토리 단계에서 작성한 테스트 사항(Test Case)을 고객이 수행하고 완료되면 다음 이터레이션 진행
    5. 소규모 릴리즈(Small Release): 릴리즈가 최종 완제품이 아니면 다음 릴리즈 일정에 맞춰 개발 진행

6. 기능 요구사항

  • Functional requirements
    - 시스템의 기능에 관한 요구사항
    - 시스템의 입출력, 데이터 저장이나 연산 등 사용자가 제공받기 원하고 시스템이 반드시 수행해야하는 기능

7. 비기능 요구사항

  • Non-functional requirements
    - 시스템의 품질이나 제약조건 등에 관한 요구사항
    • 장비 구성(하드웨어, 소프트웨어, 네트워크 등)
    • 성능(처리 속도, 처리량, 적용량, 가용성 등)
    • 인터페이스
    • 데이터 구축
    • 성능 테스트 혹은 시스템 운영 점검
    • 보안

8. 프로토타이핑

  • Prototyping
    - 문서화된 요구사항 명세서를 최종적으로 확인하는 기법
    - 초기 도출된 요구사항을 바탕으로 프로토타입(Prototype)을 만든 후 개발 과정에서 새롭게 도출된 요구사항을 반영하여 지속적으로 재작성
  • 장점
    - 빠른 제작 가능
    - 반복에 따라 프로토타입 개선되고 요구사항 감소
    - 쉬운 이해로 사용자와 개발자 간 소통 원활
    - 최종완성 전 요구사항 등에 대한 피드백 가능
    - 최종완성 전 문제점 식별 가능
  • 단점
    - 프로토타입에만 관심 집중되어 대상 범위 잘못 이해 우려
    - 반복된 프로토타이핑으로 비용 증가 우려

9. UML

  • Unified Modeling Language
  • 시스템 개발시 공통된 모델링 언어를 만들어 개발 대상물을 다이어그램으로 표현
  • 사물(Things): 우리 주위의 개체(Entity)를 컴퓨터 내에서 추상적으로 표현한 것
    - 구조 사물(Structural Things)
    - 행동 사물(Behavioral Things)
    - 그룹 사물(Grouping Things)
    - 주해 사물(Annotation Things)
  • 관계(Relationships): 사물과 사물 간의 연관성
    1. 연관(Association): 두 개 이상의 사물이 서로 관계
      - 실선으로 연결하고 일방향 관계는 화살표로 표현
      - 객체 수(1, n, 0..1, 0.., , 1.., n.., n..m)를 의미하는 다중도(Multiplicity)를 선 위에 표현
      • 사람, 집
      • 선생님, 학생
    2. 집합(Aggregation): 서로 독립적인 사물이 다른 사물에 포함
      - 포함되는 쪽(Part)에서 포함하는 쪽(Whole)으로 빈 마름모 연결
      • 컴퓨터, 프린터
    3. 포함(Composition): 서로 독립적이지 않은 사물이 다른 사물에 포함
      - 포함되는 쪽에서 포함하는 쪽으로 속이 찬 마름모 연결
      • 문, 열쇠
    4. 일반화(Generalization): 구체적인 사물과 일반적인 사물의 관계
      - 구체적인 사물에서 일반적인 사물 쪽으로 빈 화살표 연결
      - 일반적인 사물이 상위(부모), 구체적인 사물이 하위(자식)
      • 커피, 아메리카노/에스프레소
    5. 의존(Dependency): 짧은 시간만 영향 주고받음
      - 영향 주는 사물(이용자)이 받는 사물(제공자) 쪽으로 점선 화살표
      • 등급, 할인율
    6. 실체화(Realization): 할 수 있거나 해야 하는 기능(인터페이스)를 그룹화 가능
      - 사물에서 기능 쪽으로 빈 점선 화살표
      • 날 수 있음, 새/비행기

10. UML 다이어그램

  • 사물과 관계를 도형으로 표현
  • 구조적(Structural) 다이어그램
    - 클래스(Class)
    - 객체(Object)
    - 컴포넌트(Component)
    - 배치(Deployment)
    - 복합체 구조(Composite Structure)
    - 패키지(Package)
  • 행위(Behavioral) 다이어그램
    - 유스케이스(Use Case)
    - 시퀀스(Sequence)
    - 커뮤니케이션(Communication)
    - 상태(State)
    - 활동(Activity)
    - 상호작용 개요(Interaction Overview)
    - 타이밍(Timing)

0개의 댓글