설계한당

[소프트웨어 설계] Software Development Life Cycle (SDLC) & Process Model + Prototyping

이히당 2023. 5. 20. 20:29

Software Development Life Cycle (SDLC)

  1. Planning and Requirement ANalysis • Inputs from the customer, the sales department, market surveys and domain experts in the industry • Quality assurance requirements and identification of the risks • Technical feasibility study
  2. Defining Requirement • Define and document the product requirements • SRS (Software Requirement Specification, 소프트웨어요구명세) document which consists of all the product requirements to be designed and developed
  3. Designing the Product Architecture • Based on SRS, multiple designs can be proposed • Then, select one by stakeholders based on risk assessment, product robustness, design modularity, budget and time constraint • Define all the architectural modules of the product along with its communication and data flow representation with the external and third party modules
  4. Building or Developing the Product • Building the product (e.g., coding) • Developers must follow the coding guidelines provided by their organization or programming tools
  5. Testing the Product • Test only stage of the product where product defects are reported, tracked, fixed and retested, until the product reaches the quality standards defined in the SRS
  6. Deployment in the Market and Maintenance • Once the product is tested and ready to be deployed it is released formally in the appropriate market • The product may first be released in a limited segment and tested in the real business environment • Based on the feedback, the product may be released as it is or with suggested enhancements • Once the product is released, maintenance is done for the existing customer base

Waterfall Model

  • 전체 과정이 단계들로 나뉘어져 있다.
  • 계속적으로 하나 단계의 결과가 다음 단계의 input으로 작동한다.
  • 장점
    • 간단하고 이해하기 쉽다
    • 각 단계가 특정적으로 전달이 가능하고 리뷰과정이 있다.
    • 작은 프로젝트에 잘 작동한다.
    • 한 번에 하나씩 처리 및 완료
    • 손쉬운 작업 정리
  • 단점
    • last phase까지 작동하는 SW가 생성되지 않음
    • 높은 위험과 불확실성
    • 길고 복잡한 프로젝트에서는 적절하지 않음
    • 바뀌는 요청들에 수용적이지 않음

Agile model

  • 일들이 time boxes로 나뉨
  • iterative model (반복모델)
  • 각 build는 기능 측면에서 점진적
  • 장점
    • 빠르게 부분적인 working solutions을 전달한다
    • 지속적으로 변하는 환경을 위한 좋은 모델
    • 개발자에게 flexibility를 줌
    • 기능이 빠르게 개발되고 시연할 수 있게.
  • 단점
    • 소비자 interaction에 너무 의존함
    • not suitable for handling complex dependencies
    • sustainability, maintainability and extensibility 에 더 많은 리스크가 있음
    • 최소한의 문서 생성
  • Agile Model Method: Scrum
    • a framework that helps teams work together
    • sprint : a short, time-boxed period
      • sprint planning
      • backlong
      • standup meeting
      • roles : product Owner, scrum master, devloper

Prototyping

  • 디자인 과정 전에, 소비자에 의한 개발, 테스트, 리뷰, 승인되는 것
  • 디자인이 코딩 준비가 된 후 테스트, 설치 및 유지 관리가 수행됩니다.

프로토타이핑 특징 장점 단점

아날로그 연필, 종이 빠르고 간단 구체적이지 않음, 구현할 항목이 많은 경우 오래걸림
디지털 - low fidelity 보여주기 혹은 인터랙션 가능 하나 혹은 다수의 프로세스 표시 가능, 수정이 비교적 간단 시스템의 특징을 살리기 어려울 수 있음
디지털 - high fidelity 인터렉션과 장식적 요소까지 구현 가장 구체적, 이해가 빠름, 특징을 모두 구현 가능 제작이 오래 걸림, 수정이 힘

사용자 경험 디자인 (UX) : 사용자가 어떤 제품, 시스템, 서비스 등을 직접적 혹은 간접적으로 이용하면서 느끼는 반응과 행동들과 같은 경험을 총체적으로 설계하는 것 (내용, 구성)

사용자 인터페이스 디자인 (UI) : 사용자가 제품을 어떤 방식으로 이용하게 만드는 지를 디자인 (레이아웃, 구조, 색상, 모양)

 

How to design good prototype

  1. participatory design : 사용자를 참여시켜라
  2. User Flows and Scenarios :
    1. 첫째, 페이지 플로우를 디자인하자 즉 사용자가 사이트를 최적으로 이용할 수 있는 플로우를 그려봄
    2. 둘째, low-fidelity prototyping후, 그린 각 페이지당 3-5개의 variation들을 만들어보고 usability test
    3. 사용자의 플로우와 기능들이 픽스되었다면 fidelity를 증가해 좀 더 실감나는 프로토타이핑
  3. 사용자 인터랙션은 simple할수록 좋다
    1. fewer clicks mean less friction, which means better user flow
    2. 하지만 사용자의 상호작용을 침해해서는 안됨
    3. three clicks rule을 어겨도 괜찮음
  4. 애니메이션을 적절히 활용
    1. 실감나는 프로토타입을 만들 수 있음
    2. 사용자 테스트에 도움이 됨
  5. 효과적인 UI 디자인을 위한 전략
    1. Design finger-friendly tap-targets : 타겟크기 최소 10mm, 서로 너무 가깝지 않게 배치
    2. 적절한 폰트크기
    3. 필요한 데이터만 입력받게 함
728x90