• Mindscape πŸ”₯
    • Playlist 🎧
  • πŸ€– Artifical Intelligence

    • 1. Basics; Linear Algebra
    • 2. Basics; Linear Algebra (2), Search (1)
    • 3. Search (2)
    • 4. Knowledge and Logic (1)
    • 5. Knowledge and Logic (2)
    • 6. Probability
    • 7. Information Theory
    • 8. Probabilitc Reasoning (2)
    • 9. Probabilitc Reasoning (3)
    • 10. Machine Learning (1)
    • 11. Machine Learning (2)
    • 12. Machine Learning (3)
    • 13. Linear Models
    • 14. Other Classic ML Models (1)
    • 15. Other Classic ML Models (2)
  • πŸ”’ Computer Security

    • 01. Overview
    • 02. μ •λ³΄λ³΄μ•ˆμ •μ±… 및 λ²•κ·œ
    • 03. Cryptographic Tools
    • 04. User Authentication
    • 05. Access Control
    • 06. Database Security
    • 07. Malicious Software
    • 08. Firmware Analysis
  • πŸ—„οΈ Database System

    • 1. Introduction
    • 2. Relational Model
    • 3. SQL
    • 6. E-R Model
    • 7. Relational Database Design (1)
    • 7. Relational Database Design (2)
    • 13. Data Storage Structures
    • 14. Indexing
    • 15. Query Processing
  • πŸ“ Software Engineering

    • 2. Introduction to Software Engineering
    • 3. Process
    • 4. Process Models
    • 5. Agile
    • 6. Requirements
    • 7. Requirements Elicitation and Documentation
    • 8. Architecture
    • 9. Unified Modelling Language
    • 10. Object-Oriented Analysis
    • Object-Oriented Design
  • 🧠 Algorithm

    • Python μ‹œκ°„ 초과 λ°©μ§€λ₯Ό μœ„ν•œ 팁
    • C++ std::vector μ‚¬μš©λ²• 정리
    • Vim μ‚¬μš© 맀뉴얼
    • 1018번: 체슀판 λ‹€μ‹œ μΉ ν•˜κΈ°
    • 1966번: ν”„λ¦°ν„° 큐

7. Requirements Elicitation and Documentation

Learning Goals

  • Stakeholders(μ΄ν•΄κ΄€κ³„μž) μ •μ˜ 및 식별
  • 효과적인 requirements interviews(μš”κ΅¬μ‚¬ν•­ 인터뷰) μˆ˜ν–‰μ— λŒ€ν•œ κΈ°λ³Έ λŠ₯λ ₯ μ‹œμ—°
  • Use cases(μœ μ¦ˆμΌ€μ΄μŠ€) 및 user stories(μ‚¬μš©μž μŠ€ν† λ¦¬)λ₯Ό μ‚¬μš©ν•œ μš”κ΅¬μ‚¬ν•­ λ¬Έμ„œν™”
  • μš°μ„ μˆœμœ„μ— λ”°λ₯Έ conflicts(좩돌) 인식 및 ν•΄κ²°

Requirement Elicitation

Typical Steps

  • μ΄ν•΄κ΄€κ³„μž 식별
  • Understand the domain(도메인 이해)
    • Analyze artifacts(μ‚°μΆœλ¬Ό 뢄석), μ΄ν•΄κ΄€κ³„μžμ™€μ˜ μƒν˜Έμž‘μš©
  • Discover the real needs(μ‹€μ œ μš”κ΅¬ νŒŒμ•…)
    • μ΄ν•΄κ΄€κ³„μž 인터뷰
  • μš”κ΅¬λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ λŒ€μ•ˆ 탐색

Question

  • 이 μ‹œμŠ€ν…œμ€ λˆ„κ΅¬λ₯Ό μœ„ν•œ 것인가?
  • μ΄ν•΄κ΄€κ³„μž:
    • End users(μ΅œμ’… μ‚¬μš©μž)
    • System administrators(μ‹œμŠ€ν…œ κ΄€λ¦¬μž)
    • Engineers maintaining the system(μ‹œμŠ€ν…œ μœ μ§€λ³΄μˆ˜ μ—”μ§€λ‹ˆμ–΄)
    • Business managers(λΉ„μ¦ˆλ‹ˆμŠ€ κ΄€λ¦¬μž)
    • ...또 λˆ„κ°€ μžˆμ„κΉŒ?

Stakeholder

  • μ‹œμŠ€ν…œμ— μ˜ν•΄ μ§κ°„μ ‘μ μœΌλ‘œ 영ν–₯을 받을 λͺ¨λ“  개인 λ˜λŠ” κ·Έλ£Ή.
  • μ΄ν•΄κ΄€κ³„μžλ“€μ€ 의견이 λ‹€λ₯Ό 수 있음.
  • Requirements process(μš”κ΅¬μ‚¬ν•­ ν”„λ‘œμ„ΈμŠ€)λŠ” μΆ©λŒμ„ ν•΄κ²°ν•˜κΈ° μœ„ν•œ negotiation(ν˜‘μƒ)을 μ΄‰λ°œν•΄μ•Ό 함.

Defining Actors/Agents

  • An actor(μ•‘ν„°)λŠ” 이벀트λ₯Ό μ™„λ£Œν•  λͺ©μ μœΌλ‘œ μ‹œμŠ€ν…œκ³Ό μƒν˜Έμž‘μš©ν•˜λŠ” entity(개체) [Jacobson, 1992].
    • μ΄ν•΄κ΄€κ³„μžλ§ŒνΌ κ΄‘λ²”μœ„ν•˜μ§€ μ•ŠμŒ.
  • μ•‘ν„°λŠ” μ‚¬μš©μž, 쑰직, μž₯치 λ˜λŠ” an external system(μ™ΈλΆ€ μ‹œμŠ€ν…œ)일 수 있음.

Stakeholder Analysis: Criteria for Identifying Relevant Stakeholders

  • 쑰직 λ‚΄ κ΄€λ ¨ μ§μœ„
  • μ‹œμŠ€ν…œμ— λŒ€ν•œ μ˜μ‚¬ 결정에 μžˆμ–΄ 효과적인 μ—­ν• 
  • Level of domain expertise(도메인 μ „λ¬Έμ„± μˆ˜μ€€)
  • μΈμ§€λœ λ¬Έμ œμ— λŒ€ν•œ λ…ΈμΆœ
  • Influence in system acceptance(μ‹œμŠ€ν…œ μˆ˜μš©μ— λ―ΈμΉ˜λŠ” 영ν–₯λ ₯)
  • 개인적인 λͺ©ν‘œ 및 conflicts of interest(이해 상좩)

Stakeholders: A NASA example

Interviews

Interview Trade-offs

  • Strengths(강점)
    • μ΄ν•΄κ΄€κ³„μžκ°€ 무엇을 ν•˜κ³ , 느끼고, μ„ ν˜Έν•˜λŠ”μ§€
    • 그듀이 μ‹œμŠ€ν…œκ³Ό μ–΄λ–»κ²Œ μƒν˜Έμž‘μš©ν•˜λŠ”μ§€
    • ν˜„μž¬ μ‹œμŠ€ν…œμ˜ 문제점
  • Weaknesses(약점)
    • Subjective(주관적), inconsistencies(비일관성)
    • Capturing domain knowledge(도메인 지식 포착)
    • Familiarity(μΉœμˆ™μ„±)
    • Technical subtlety(기술적 λ―Έλ¬˜ν•¨)
  • Organizational issues(쑰직적 문제), 예: μ •μΉ˜
  • 인터뷰 μ§„ν–‰μžμ˜ κΈ°μˆ μ— 쒌우됨

Interview Process

  • 관심 μžˆλŠ” μ΄ν•΄κ΄€κ³„μž 및 μˆ˜μ§‘ν•  λŒ€μƒ 정보 식별.
  • 인터뷰 μˆ˜ν–‰. -(structured(ꡬ쑰적)/unstructured(비ꡬ쑰적), individual/group)
  • 인터뷰 λ…ΉμŒ + 전사
  • μ€‘μš”ν•œ 발견 사항 보고.
  • 인터뷰 λŒ€μƒμžμ™€ λ³΄κ³ μ„œμ˜ 타당성 확인.

Example: Identifying Problems

  • 일상 μ—…λ¬΄μ—μ„œ μ–΄λ–€ λ¬Έμ œμ— λΆ€λ”ͺνžˆλŠ”κ°€? ν‘œμ€€μ μΈ ν•΄κ²° 방법이 μžˆλŠ”κ°€, ν˜Ήμ€ workaround(μ°¨μ„ μ±…)λ₯Ό μ‚¬μš©ν•˜λŠ”κ°€?
    • 이것이 μ™œ λ¬Έμ œμΈκ°€? ν˜„μž¬λŠ” κ·Έ 문제λ₯Ό μ–΄λ–»κ²Œ ν•΄κ²°ν•˜λŠ”κ°€? μ΄μƒμ μœΌλ‘œλŠ” μ–΄λ–»κ²Œ ν•΄κ²°ν•˜κ³  싢은가?
  • 인터뷰 λŒ€μƒμžκ°€ μ„€λͺ…ν•  λ¬Έμ œκ°€ 더 이상 없을 λ•ŒκΉŒμ§€ 후속 질문(β€œλ‹€λ₯Έ λ¬Έμ œλŠ” μ—†λŠ”κ°€?”, β€œλ‹Ήμ‹ μ„ κ΄΄λ‘­νžˆλŠ” λ‹€λ₯Έ 것듀이 μžˆλŠ”κ°€?”)을 계속 질문.
  • κ·Έλ ‡λ‹€λ©΄, μ œκ°€ μ΄ν•΄ν•˜κΈ°λ‘œλŠ” λ‹€μŒκ³Ό 같은 문제/μš”κ΅¬λ₯Ό κ²ͺκ³  계신 것 κ°™μŒ
    • 인터뷰 λŒ€μƒμžμ˜ λ¬Έμ œμ™€ μš”κ΅¬λ₯Ό μžμ‹ μ˜ 말둜 μ„€λͺ… – μ’…μ’… 당신이 λ™μΌν•œ 그림을 κ³΅μœ ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것을 λ°œκ²¬ν•  κ²ƒμž„.
    • μ²˜μŒμ—λŠ” μ„œλ‘œ μ΄ν•΄ν–ˆλ‹€κ³  μƒκ°ν•˜λ”λΌλ„ μ‹€μ œλ‘œλŠ” κ·Έλ ‡μ§€ μ•Šμ€ κ²½μš°κ°€ 맀우 흔함
  • 확인 μ°¨μ›μ—μ„œ, μ œκ°€ ν˜„μž¬ μ†”λ£¨μ…˜μ— λŒ€ν•΄ 당신이 κ°€μ§„ λ¬Έμ œλ“€μ„ μ˜¬λ°”λ₯΄κ²Œ μ΄ν•΄ν–ˆλŠ”κ°€?
  • κ²ͺκ³  μžˆλŠ” λ‹€λ₯Έ λ¬Έμ œκ°€ μžˆλŠ”κ°€? μžˆλ‹€λ©΄, 무엇인가?

Example Questions: The User Environment

  • μ‹œμŠ€ν…œμ˜ μ‚¬μš©μžλŠ” λˆ„κ°€ 될 것인가?
  • μ‚¬μš©μžμ˜ ꡐ윑 μˆ˜μ€€μ΄λ‚˜ ν›ˆλ ¨ μ •λ„λŠ” μ–΄λ– ν•œκ°€?
  • μ‚¬μš©μžλŠ” μ–΄λ–€ 컴퓨터 κΈ°μˆ μ„ κ°€μ§€κ³  μžˆλŠ”κ°€?
  • μ‚¬μš©μžκ°€ 이런 μœ ν˜•μ˜ IT μ‹œμŠ€ν…œμ— μ΅μˆ™ν•œκ°€?
  • ν˜„μž¬ μ–΄λ–€ technical platforms(기술 ν”Œλž«νΌ)λ₯Ό μ‚¬μš©ν•˜κ³  μžˆλŠ”κ°€?
  • ν–₯ν›„ μ‹œμŠ€ν…œμ΄λ‚˜ ν”Œλž«νΌμ— λŒ€ν•œ κ³„νšμ„ μ•Œκ³  μžˆλŠ”κ°€?
  • 쑰직이 ν˜„μž¬ μ‚¬μš© 쀑인 λ‹€λ₯Έ IT μ‹œμŠ€ν…œ 쀑 μƒˆ μ‹œμŠ€ν…œκ³Ό μ—°κ²°λ˜μ–΄μ•Ό ν•˜λŠ” 것은 무엇인가?
  • System usability(μ‹œμŠ€ν…œ μ‚¬μš©μ„±)에 λŒ€ν•œ κΈ°λŒ€μΉ˜λŠ” μ–΄λ– ν•œκ°€?
  • ν–₯ν›„ μ‹œμŠ€ν…œμ— λŒ€ν•΄ μ–΄λ–€ ꡐ윑 μš”κ΅¬λ₯Ό μ˜ˆμƒν•˜λŠ”κ°€?
  • μ–΄λ–€ μ’…λ₯˜μ˜ documentation(λ¬Έμ„œν™”)λ₯Ό κΈ°λŒ€ν•˜λŠ”κ°€?

Capturing vs Synthesizing

  • μ—”μ§€λ‹ˆμ–΄λŠ” λ§Žμ€ μΆœμ²˜λ‘œλΆ€ν„° μš”κ΅¬μ‚¬ν•­μ„ νšλ“
    • μ΄ν•΄κ΄€κ³„μžλ‘œλΆ€ν„° λ„μΆœ
    • Policies(μ •μ±…) λ˜λŠ” λ‹€λ₯Έ λ¬Έμ„œλ‘œλΆ€ν„° μΆ”μΆœ
    • μœ„ 사항듀 + estimation(μΆ”μ •) 및 invention(μ°½μ•ˆ)μœΌλ‘œλΆ€ν„° synthesize(μ’…ν•©)
  • μ΄ν•΄κ΄€κ³„μžκ°€ 항상 μžμ‹ μ΄ 무엇을 μ›ν•˜λŠ”μ§€ μ•„λŠ” 것은 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ—, μ—”μ§€λ‹ˆμ–΄λŠ”...
    • μ΄ν•΄κ΄€κ³„μžμ˜ μš”κ΅¬μ™€ κΈ°λŒ€μ— μΆ©μ‹€ν•΄μ•Ό 함
    • 좔가적인 μš”κ΅¬μ™€ risks(μœ„ν—˜)λ₯Ό μ˜ˆμΈ‘ν•΄μ•Ό 함
    • β€œμΆ”κ°€μ μΈ μš”κ΅¬β€κ°€ ν•„μš”ν•˜κ±°λ‚˜ λ°”λžŒμ§ν•œμ§€ validate(검증)ν•΄μ•Ό 함

Interview Advice

  • 사전에 인터뷰 λŒ€μƒμžμ— λŒ€ν•œ κΈ°λ³Έ 정보(μ—­ν• , μ±…μž„ λ“±)λ₯Ό νŒŒμ•…
  • 인터뷰 전에 인터뷰 질문 κ²€ν† 
  • ꡬ체적인 질문, μ œμ•ˆμœΌλ‘œ ꡬ체적으둜 μ‹œμž‘; prototype(ν”„λ‘œν† νƒ€μž…) λ˜λŠ” scenario(μ‹œλ‚˜λ¦¬μ˜€)λ₯Ό 톡해 μž‘μ—…
    • ν•΄λ‹Ήλ˜λŠ” 경우, ν˜„μž¬ μ‹œμŠ€ν…œκ³Ό μ—°κ΄€.
  • 개방적인 νƒœλ„λ₯Ό μœ μ§€; μžμ—°μŠ€λŸ½κ²Œ λ°œμƒν•˜λŠ” μΆ”κ°€ 이슈 탐색. 단, μ‹œμŠ€ν…œμ— 계속 집쀑.
  • ν˜„μž¬ μ‹œμŠ€ν…œ/λŒ€μ•ˆκ³Ό λŒ€μ‘°. 좩돌 및 priorities(μš°μ„ μˆœμœ„) 탐색
  • 후속 질문 κ³„νš

Guidelines for Effective Interviews

  • 문제의 전체 λ²”μœ„λ₯Ό 닀루기 μœ„ν•΄ μ μ ˆν•œ 인터뷰 λŒ€μƒμž μƒ˜ν”Œ 식별
    • λ‹€μ–‘ν•œ μ±…μž„, μ „λ¬Έμ„±, κ³Όμ—…, 문제 λ…ΈμΆœ
  • μ μ ˆν•œ μ‹œκΈ°μ— μ μ ˆν•œ λ¬Έμ œμ— 집쀑할 수 μžˆλ„λ‘ μ€€λΉ„λœ μƒνƒœλ‘œ μž„ν•¨
    • λ°°κ²½ 연ꡬ μš°μ„  μˆ˜ν–‰
    • ν•΄λ‹Ή 인터뷰 λŒ€μƒμžλ₯Ό μœ„ν•œ 질문 μˆœμ„œ 사전 섀계
  • 인터뷰 λŒ€μƒμžμ˜ 업무와 관심사에 μΈν„°λ·°μ˜ μ΄ˆμ μ„ 맞좀
  • 인터뷰에 λŒ€ν•œ ν†΅μ œλ ₯ μœ μ§€
  • 인터뷰 λŒ€μƒμžλ₯Ό νŽΈμ•ˆν•˜κ²Œ λ§Œλ“¦
    • μ‹œμž‘: 어색함 ν•΄μ†Œ, 동기 λΆ€μ—¬, μ‰¬μš΄ 질문
    • μ—­ν• λΏλ§Œ μ•„λ‹ˆλΌ μ‚¬λžŒ μžμ²΄λ„ κ³ λ €
    • 항상 μ‹ λ’°ν•  수 μžˆλŠ” νŒŒνŠΈλ„ˆλ‘œ 보여야 함
  • μ§‘μ€‘ν•˜κ³ , κ°œλ°©ν˜• μ§ˆλ¬Έμ€ λ§ˆμ§€λ§‰μ— 함
  • μ˜ˆμƒμΉ˜ λͺ»ν•œ 닡변에 λŒ€λΉ„ν•΄ 개방적이고 μœ μ—°ν•œ νƒœλ„ μœ μ§€
  • λΆˆμΎŒκ°μ„ μ£Όμ§€ μ•ŠμœΌλ©΄μ„œ μ™œ(why) μ§ˆλ¬Έμ„ 함
  • νŠΉμ • μœ ν˜•μ˜ 질문 νšŒν”Ό...
    • 의견 λ˜λŠ” biased(편ν–₯된) 질문
    • Affirmative(긍정/λΆ€μ •) 질문(예/μ•„λ‹ˆμ˜€ 질문)
    • ν•΄λ‹Ή 인터뷰 λŒ€μƒμžμ—κ²Œ λͺ…λ°±ν•˜κ±°λ‚˜ λΆˆκ°€λŠ₯ν•œ λ‹΅λ³€μ˜ 질문
  • 기얡이 생생할 λ•Œ 인터뷰 전사본 νŽΈμ§‘ 및 ꡬ쑰화
    • 개인적인 λ°˜μ‘, νƒœλ„ λ“± 포함
  • 인터뷰 λŒ€μƒμžκ°€ 계속 μ°Έμ—¬ν•˜λ„λ‘ 함
    • 검증 및 refinement(κ°œμ„ )을 μœ„ν•΄ 인터뷰 전사본 곡동 κ²€ν† 

Prototypes, Mockups, Stories

Wireframe, Mockup, and Prototype

  • WIREFRAME(μ™€μ΄μ–΄ν”„λ ˆμž„)
    • Purpose(λͺ©μ ): Communicate structure and get early feedback(ꡬ쑰 전달 및 초기 ν”Όλ“œλ°± 확보)
    • Fidelity(좩싀도): Low
    • Functionality(κΈ°λŠ₯μ„±): No
    • Skill requirement(ν•„μš” 기술): Low
    • Resources(μžμ›): Minimal
    • Time needed(μ†Œμš” μ‹œκ°„): Very low
    • Product cycle stage(μ œν’ˆ μ£ΌκΈ° 단계): Discovery
  • MOCKUP(λͺ©μ—…)
    • Purpose: Showcase design(λ””μžμΈ μ‹œμ—°)
    • Fidelity: High
    • Functionality: No
    • Skill requirement: High
    • Resources: Design tool
    • Time needed: Medium
    • Product cycle stage: Design
  • PROTOTYPE(ν”„λ‘œν† νƒ€μž…)
    • Purpose: Showcase design and functionality(λ””μžμΈ 및 κΈ°λŠ₯μ„± μ‹œμ—°)
    • Fidelity: High
    • Functionality: Yes
    • Skill requirement: High
    • Resources: Design tool
    • Time needed: High
    • Product cycle stage: Prototyping and testing

Mockups, Prototypes, Stories

  • 인간: λ°±μ§€μƒνƒœμ—μ„œ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 것보닀 해결책이 μ˜¬λ°”λ₯Έμ§€ μΈμ‹ν•˜λŠ” 데 더 λŠ₯μˆ™ν•¨.
  • Mock-ups/prototypesλŠ” μš”κ΅¬μ‚¬ν•­μ˜ uncertainty(λΆˆν™•μ‹€μ„±)을 νƒμƒ‰ν•˜λŠ” 데 도움.
    • μš°λ¦¬κ°€ μ˜¬λ°”λ₯Έ μš”κ΅¬μ‚¬ν•­μ„ κ°€μ‘ŒλŠ”μ§€ 검증.
    • μ‹œμŠ€ν…œμ˜ β€œκ²½κ³„β€μ— μžˆλŠ” μš”κ΅¬μ‚¬ν•­ λ„μΆœ.
    • μ†”λ£¨μ…˜ κ³΅κ°„μ˜ feasibility(μ‹€ν˜„ κ°€λŠ₯μ„±) μ£Όμž₯.
    • 후보 μ†”λ£¨μ…˜μ— λŒ€ν•œ ν”Όλ“œλ°± νšλ“.
  • β€œλ³΄λ©΄ μ•Œκ²Œ 될 것이닀(I’ll know it when I see it)”

Storyboarding and Scenarios

Story

  • Who(λˆ„κ°€) ν”Œλ ˆμ΄μ–΄μΈκ°€
  • What(무엇이) κ·Έλ“€μ—κ²Œ μΌμ–΄λ‚˜λŠ”κ°€
  • How(μ–΄λ–»κ²Œ) νŠΉμ • μ—ν”Όμ†Œλ“œλ₯Ό 톡해 μΌμ–΄λ‚˜λŠ”κ°€
  • Why(μ™œ) 이것이 μΌμ–΄λ‚˜λŠ”κ°€
  • What if(λ§Œμ•½) μ΄λŸ¬ν•œ μ΄λ²€νŠΈκ°€ λ°œμƒν•œλ‹€λ©΄
  • What(무엇이) 결과적으둜 잘λͺ»λ  수 μžˆλŠ”κ°€

Storyboards

  • Storyboards(μŠ€ν† λ¦¬λ³΄λ“œ)λŠ” μ‹œλ‚˜λ¦¬μ˜€λ₯Ό μ„€λͺ…: 암묡적인 λͺ©ν‘œλ₯Ό μΆ©μ‘±ν•˜λŠ” μ‹œμŠ€ν…œ κ΅¬μ„±μš”μ†Œ κ°„μ˜ 일반적인 μƒν˜Έμž‘μš© μˆœμ„œ.
    • μŠ€ν† λ¦¬λ³΄λ“œλŠ” μ΅œμ†Œν•œ λˆ„κ°€, 무엇을, μ–΄λ–»κ²Œ ν•˜λŠ”μ§€λ₯Ό λͺ…μ‹œμ μœΌλ‘œ λ‹€λ£Έ.
  • λ‹€λ₯Έ μœ ν˜•:
    • Positive(긍정적) vs negative(뢀정적)(μΌμ–΄λ‚˜μ•Ό ν•˜λŠ” 것과 μΌμ–΄λ‚˜μ§€ μ•Šμ•„μ•Ό ν•˜λŠ” 것)
    • Normal(정상) vs abnormal(비정상)
  • λ„μΆœμ˜ μΌλΆ€λ‘œμ„œ:
    • μ‹€μ œ λ˜λŠ” κ°€μƒμ˜ μˆœμ„œλ₯Ό 따라 ν˜„μž¬ λ˜λŠ” μ œμ•ˆλœ μ‹œμŠ€ν…œμ— λŒ€ν•΄ ν•™μŠ΅
    • ꡬ체적인 질문 κ°€λŠ₯
    • 근본적인 λͺ©ν‘œ λ„μΆœ, μ›ν•˜λŠ” 행동 λͺ¨λΈλ‘œ μΌλ°˜ν™”.
    • 좩돌 식별 및 ν•΄κ²°
  • μž₯점: ꡬ체적, μ„œμˆ μ  μ„€λͺ… 지원
  • 단점: inherently partial(본질적으둜 뢀뢄적).

Storyboard Example

Documenting Requirements

Many Different Forms

  • Informal(비곡식적) vs formal(μ •ν˜•μ )
  • Unstructured(비ꡬ쑰적) vs structured(ꡬ쑰적)
  • Text(ν…μŠ€νŠΈ) vs diagrams(λ‹€μ΄μ–΄κ·Έλž¨)
  • κ΅¬μ‘°ν™”λœ ν…μŠ€νŠΈκ°€ μ‹€μ œ ν˜„μ—…μ—μ„œ 일반적
  • Traceability(좔적성) 및 process integration(ν”„λ‘œμ„ΈμŠ€ 톡합)을 μœ„ν•΄ 도ꡬ 지원됨

Software Requirements Specification(SRS)

  • κ΅¬μ‘°ν™”λœ μš”κ΅¬μ‚¬ν•­ λ¬Έμ„œ
  • μ—¬λŸ¬ standards(ν‘œμ€€) 쑴재
    • ISO/IEC/IEEE 29148:2018 Systems and software engineering β€”Life cycle processes β€”Requirements engineering
  • μ’…μ’… contracts(계약)의 기반이 됨

Activity Diagrams

  • Activity diagrams(μ•‘ν‹°λΉ„ν‹° λ‹€μ΄μ–΄κ·Έλž¨)(λ˜λŠ” flow charts)은 κ·Έλž˜ν”„ ν‘œκΈ°λ²•μœΌλ‘œ λ‘œμ§μ„ ν‘œν˜„

Sequence Diagrams

  • Sequence diagrams(μ‹œν€€μŠ€ λ‹€μ΄μ–΄κ·Έλž¨)은 κ·Έλž˜ν”„ ν‘œκΈ°λ²•μœΌλ‘œ μƒν˜Έμž‘μš©μ„ ν‘œν˜„

Formal Specifications

  • 기계 μΈν„°νŽ˜μ΄μŠ€μ—μ„œμ˜ 곡유된 λ™μž‘μ— λŒ€ν•œ 논리적 ν‘œν˜„
  • 도메인 속성과 ν–‰μœ„μž 행동을 pre-and post-conditions(사전 및 사후 쑰건)둜 μ—°κ²°ν•˜λŠ” 것 포함

Grounding Formal Specifications

  • βˆ€sβˆ€c(enrolled(s,c)β‡’student(s)∧course(c))\forall s \forall c(\text{enrolled}(s, c) \Rightarrow \text{student}(s) \land \text{course}(c))βˆ€sβˆ€c(enrolled(s,c)β‡’student(s)∧course(c))
  • Alice: 두 κ°€μ§€ μ€‘μš”ν•œ κΈ°λ³Έ μœ ν˜•μ€ student와 course. λ˜ν•œ 이진 관계 enrolledκ°€ 있음
  • AliceλŠ” μ΄λŸ¬ν•œ μš”μ†Œλ“€μ„ λ‹€μŒκ³Ό 같이 μ •μ˜ν•¨:
  • Bob: ν•™μƒλ§Œ κ³Όλͺ©μ— λ“±λ‘ν•˜λŠ”κ°€? κ·Έλ ‡μ§€ μ•Šμ€ 것 κ°™μŒ.
  • Alice: ν•˜μ§€λ§Œ 그것이 λ‚΄κ°€ student라고 μ˜λ―Έν•œ λ°”μž„!

Designations as Explanations

  • λ§Œμ•½ μ‚¬λžŒμ΄ κ³Όλͺ©μ— λ“±λ‘ν–ˆλ‹€λ©΄, κ·Έ μ‚¬λžŒμ€ studentμž„:
  • βˆ€sβˆ€c(enrolled(s,c)β‡’student(s)∧course(c))\forall s \forall c(\text{enrolled}(s, c) \Rightarrow \text{student}(s) \land \text{course}(c))βˆ€sβˆ€c(enrolled(s,c)β‡’student(s)∧course(c))
  • μ‚¬λžŒμ€, 학생이 λ“±λ‘λœ κ³Όλͺ©μ΄ μžˆλŠ” κ²½μš°μ—λ§Œ, 그리고 κ·Έ κ²½μš°μ—λ§Œ studentμž„
  • βˆ€s(student(s)β‡”βˆƒcenrolled(s,c))\forall s(\text{student}(s) \Leftrightarrow \exists c \text{enrolled}(s, c))βˆ€s(student(s)β‡”βˆƒcenrolled(s,c))

Use Case

  • λͺ©ν‘œλ₯Ό λ‹¬μ„±ν•˜κΈ° μœ„ν•΄ μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•˜λŠ” 앑터에 λŒ€ν•œ ν…μŠ€νŠΈ μŠ€ν† λ¦¬.
  • μœ μ¦ˆμΌ€μ΄μŠ€λŠ” λ‹€μ΄μ–΄κ·Έλž¨μ΄ μ•„λ‹ˆλΌ, ν…μŠ€νŠΈμž„.
  • 주둜 functional requirements(κΈ°λŠ₯적 μš”κ΅¬μ‚¬ν•­) 역할을 함(β€œμ‹œμŠ€ν…œμ€ ~ν•΄μ•Ό ν•œλ‹€β€λŠ” 기술과 λŒ€μ‘°/κ²°ν•©).

Use Case Name(Title)

  • Scope(λ²”μœ„): System under design(섀계 쀑인 μ‹œμŠ€ν…œ)
  • Level(μˆ˜μ€€): User level, subprocess level
  • Primary actor(μ£Όμš” μ•‘ν„°):(μ•‘ν„°λŠ” primary(μ£Όμš”), supporting(지원), or offstage(λ¬΄λŒ€ λ°–)일 수 있음)
  • Stakeholder, interests(이해관계): μ€‘μš”! μœ μ¦ˆμΌ€μ΄μŠ€λŠ” μ΄ν•΄κ΄€κ³„μžμ˜ 이읡을 μΆ©μ‘±μ‹œν‚€λŠ” 데 ν•„μš”ν•œ λͺ¨λ“  것을 포함해야 함.
  • Preconditions(사전 쑰건): μ‹œλ‚˜λ¦¬μ˜€κ°€ μ‹œμž‘λ˜κΈ° 전에 항상 참이어야 ν•˜λŠ” 것. ν…ŒμŠ€νŠΈλ˜μ§€ μ•ŠμŒ; 가정됨. λ¬΄μ˜λ―Έν•œ λ…Έμ΄μ¦ˆλ‘œ μ±„μš°μ§€ 말 것.
  • Success guarantees(성곡 보μž₯): Postconditions(사후 쑰건)이라고도 함
  • Main success scenario(μ£Όμš” 성곡 μ‹œλ‚˜λ¦¬μ˜€): Basic flow(κΈ°λ³Έ 흐름), β€œhappy path”(행볡 경둜), typical flow. λͺ¨λ“  쑰건은 ν™•μž₯으둜 μ—°κΈ°. 단계 기둝: μ•‘ν„° κ°„μ˜ μƒν˜Έμž‘μš©, μœ νš¨μ„± 검사, μ‹œμŠ€ν…œμ— μ˜ν•œ μƒνƒœ λ³€κ²½.
  • Extensions(ν™•μž₯): Alternate flows(λŒ€μ•ˆ 흐름)라고도 함. μ’…μ’… ν…μŠ€νŠΈμ˜ λŒ€λΆ€λΆ„μ„ μ°¨μ§€. λ•Œλ•Œλ‘œ λ‹€λ₯Έ μœ μ¦ˆμΌ€μ΄μŠ€λ‘œ 뢄기됨.
  • Special requirements(νŠΉλ³„ μš”κ΅¬μ‚¬ν•­): Non-functional/quality requirements(λΉ„κΈ°λŠ₯/ν’ˆμ§ˆ μš”κ΅¬μ‚¬ν•­)κ°€ μœ„μΉ˜ν•˜λŠ” κ³³.
  • Technology and data variations list(기술 및 데이터 λ³€ν˜• λͺ©λ‘): ν”Όν•  수 μ—†λŠ” 기술 μ œμ•½; I/O 기술둜 ν•œμ •ν•˜λ„λ‘ λ…Έλ ₯.
  • Frequency of occurrence(λ°œμƒ λΉˆλ„):
  • Miscellaneous(기타): SafeHomeProduct

Example of Use Case for SafeHome

  • Use-case: InitiateMonitoring

  • Primary actor: Homeowner

  • Goal in context: 집주인이 집을 λ– λ‚˜κ±°λ‚˜ 내뢀에 머무λ₯Ό λ•Œ μ„Όμ„œλ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜λ„둝 μ‹œμŠ€ν…œμ„ μ„€μ •ν•˜κΈ° μœ„ν•¨

  • Preconditions: μ‹œμŠ€ν…œμ΄ μ•”ν˜Έ 및 λ‹€μ–‘ν•œ μ„Όμ„œ 인식을 μœ„ν•΄ ν”„λ‘œκ·Έλž˜λ°λ˜μ—ˆμŒ

  • Trigger(트리거): 집주인이 μ‹œμŠ€ν…œμ„ β€œμ„€μ •β€ν•˜κΈ°λ‘œ κ²°μ •, 즉 μ•ŒλžŒ κΈ°λŠ₯ μΌ¬

  • Scenario:

    1. Homeowner: μ œμ–΄νŒ κ΄€μ°°
    2. Homeowner: μ•”ν˜Έ μž…λ ₯
    3. Homeowner: β€œstay” λ˜λŠ” β€œaway” 선택
    4. Homeowner: SafeHome이 μž‘λ™λ˜μ—ˆμŒμ„ λ‚˜νƒ€λ‚΄λŠ” 빨간색 μ•ŒλžŒ λΆˆλΉ› κ΄€μ°°
  • Exceptions(μ˜ˆμ™Έ):

    • 1a. μ œμ–΄νŒμ΄ μ€€λΉ„λ˜μ§€ μ•ŠμŒ: 집주인이 λͺ¨λ“  μ„Όμ„œλ₯Ό ν™•μΈν•˜μ—¬ μ–΄λŠ 것이 μ—΄λ €μžˆλŠ”μ§€ νŒŒμ•…; λ‹«μŒ
    • 2a. μ•”ν˜Έκ°€ μ •ν™•ν•˜μ§€ μ•ŠμŒ
  • Priority: Essential(ν•„μˆ˜), λ°˜λ“œμ‹œ κ΅¬ν˜„λ˜μ–΄μ•Ό 함

  • When available: first increment(첫 번째 증뢄)

  • Frequency of use: ν•˜λ£¨μ— μ—¬λŸ¬ 번

  • Channel to actor: μ œμ–΄νŒ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해

  • Secondary actors: Support technician(지원 기술자)

  • Channels to secondary actors: 지원 기술자: μ „ν™”μ„ 

  • Open issues(λ―Έν•΄κ²° 문제):

    • μ•”ν˜Έ μž…λ ₯에 μ‹œκ°„μ œν•œμ„ 두어야 ν•˜λŠ”κ°€?

Use Case

  • μš°λ¦¬λŠ” different granularities(λ‹€μ–‘ν•œ μ„ΈλΆ„μ„±)의 λ§Žμ€ μœ ν˜•μ— λŒ€ν•΄ 이야기함:
    • Full use case model(전체 μœ μ¦ˆμΌ€μ΄μŠ€ λͺ¨λΈ)(전체 μ‹œμŠ€ν…œ, μƒμœ„ μˆ˜μ€€)
    • β€œAgile” use case: κ΅¬ν˜„λ  μ‹œμŠ€ν…œ κΈ°λŠ₯의 μž‘κ³  ꡬ체적인 쑰각(λ•Œλ•Œλ‘œ β€œμ‚¬μš©μž μŠ€ν† λ¦¬β€μ™€ 혼용됨)
  • μ—¬λŸ¬ λ‹¨κ³„μ—μ„œ μ‚¬μš©λ¨:
    • Requirements elicitation(μš”κ΅¬μ‚¬ν•­ λ„μΆœ)(μ„€λͺ…, 검증, μš”κ΅¬μ‚¬ν•­; 좩돌 κ°•μ‘°, μš”κ΅¬μ‚¬ν•­ μš°μ„ μˆœμœ„ μ§€μ • λ“±)
    • Requirements documentation(μš”κ΅¬μ‚¬ν•­ λ¬Έμ„œν™”).
    • Concrete design(ꡬ체적인 섀계): UML λ‹€μ΄μ–΄κ·Έλž¨

User Stories

  • κ΅¬ν˜„ μ˜ˆμ •μΈ, μ‚¬μš©μžκ°€ κ°€μΉ˜ 있게 μ—¬κΈ°λŠ” κΈ°λŠ₯에 λŒ€ν•œ 비곡식적 μ„€λͺ…
  • μ„ΈλΆ€ 사항은 λ‚˜μ€‘μ— 고객과의 ν˜‘μƒμ„ μœ„ν•΄ λ‚¨κ²¨λ‘κ±°λ‚˜ μ‹€μ œ μš”κ΅¬μ‚¬ν•­μ— λŒ€ν•œ 포인터
  • 일반적인 agile development(μ• μžμΌ 개발) ν”„λž™ν‹°μŠ€
  • Template(ν…œν”Œλ¦Ώ): β€œ<μ—­ν• >λ‘œμ„œ, <ν˜œνƒ>을 μ–»κΈ° μœ„ν•΄ <κΈ°λŠ₯>을 μ›ν•œλ‹€β€

User Stories Example

  • μ‚¬μš©μžλ‘œμ„œ, λ‚΄ 전체 ν•˜λ“œ λ“œλΌμ΄λΈŒλ₯Ό λ°±μ—…ν•  수 있음
  • λ„ˆλ¬΄ 큼, λΆ„ν• :
    • νŒŒμ›Œ μœ μ €λ‘œμ„œ, 파일 크기, 생성 λ‚ μ§œ, μˆ˜μ • λ‚ μ§œλ₯Ό 기반으둜 λ°±μ—…ν•  νŒŒμΌμ΄λ‚˜ 폴더λ₯Ό μ§€μ •ν•  수 있음.
    • μ‚¬μš©μžλ‘œμ„œ, λ°±μ—… λ“œλΌμ΄λΈŒκ°€ ν•„μš” μ—†λŠ” κ²ƒλ“€λ‘œ μ±„μ›Œμ§€μ§€ μ•Šλ„λ‘ λ°±μ—…ν•˜μ§€ μ•Šμ„ 폴더λ₯Ό ν‘œμ‹œν•  수 있음.

Use of User Stories

  • μ‚¬μš©μž μŠ€ν† λ¦¬ λ³΄λ“œλ₯Ό μœ μ§€ν•˜κ³ , β€œepics(에픽)β€μœΌλ‘œ κ·Έλ£Ήν™”

Industrial Requirements Tools

Resolving Conflicts

Types of Inconsistency

  • Terminology clash(μš©μ–΄ 좩돌): λ™μΌν•œ κ°œλ…μ΄ λ‹€λ₯Έ κΈ°μˆ μ—μ„œ λ‹€λ₯΄κ²Œ λͺ…λͺ…됨
    • 예: λ„μ„œκ΄€ 관리: β€œborrower” vs. β€œpatron”
  • Designation clash(λͺ…μΉ­ 좩돌): λ‹€λ₯Έ κ°œλ…μ— λŒ€ν•΄ λ‹€λ₯Έ κΈ°μˆ μ—μ„œ λ™μΌν•œ 이름 μ‚¬μš©
    • 예: β€œλ„μ„œκ΄€ μ΄μš©μžβ€ vs. β€œλ„μ„œκ΄€ μ†Œν”„νŠΈμ›¨μ–΄ μ‚¬μš©μžβ€μ— λŒ€ν•΄ β€œuser” μ‚¬μš©
  • Structure clash(ꡬ쑰 좩돌): λ™μΌν•œ κ°œλ…μ΄ λ‹€λ₯Έ κΈ°μˆ μ—μ„œ λ‹€λ₯΄κ²Œ ꡬ쑰화됨
    • 예: β€œlatest return date”가 μ‹œμ (예: κΈˆμš”μΌ μ˜€ν›„ 5μ‹œ) vs. μ‹œκ°„ 간격(예: κΈˆμš”μΌ)
  • Strong conflict(κ°•ν•œ 좩돌): ν•¨κ»˜ 만쑱될 수 μ—†λŠ” κΈ°μˆ λ“€
    • 예: β€œμ°Έκ°€μž μ œμ•½ 쑰건은 λ‹€λ₯Έ λˆ„κ΅¬μ—κ²Œλ„ 곡개될 수 μ—†μŒβ€ vs. β€œνšŒμ˜ κ°œμ‹œμžλŠ” μ°Έκ°€μž μ œμ•½ 쑰건을 μ•Œμ•„μ•Ό 함”
  • Weak conflict(divergence)(μ•½ν•œ 좩돌(뢈일치)): 일뢀 boundary condition(경계 쑰건) ν•˜μ—μ„œ ν•¨κ»˜ 만쑱될 수 μ—†λŠ” κΈ°μˆ λ“€
    • 예: β€œμ΄μš©μžλŠ” Xμ£Ό 이내에 빌린 λ„μ„œλ₯Ό λ°˜λ‚©ν•΄μ•Ό 함” vs β€œμ΄μš©μžλŠ” ν•„μš”ν•œ 만큼 빌린 λ„μ„œλ₯Ό μ†Œμ§€ν•΄μ•Ό 함”은 β€œν•„μš”ν•œ > X주”인 κ²½μš°μ—λ§Œ λͺ¨μˆœ

Handling Inconsistencies

  • μš©μ–΄, λͺ…μΉ­, ꡬ쑰: Build glossary(μš©μ–΄μ§‘), domain model(도메인 λͺ¨λΈ) ꡬ좕
  • μ•½ν•œ, κ°•ν•œ 좩돌: ν˜‘μƒ ν•„μš”
    • 원인: μ΄ν•΄κ΄€κ³„μžλ“€μ˜ λ‹€λ₯Έ λͺ©ν‘œ => μš”κ΅¬μ‚¬ν•­ μ™ΈλΆ€μ—μ„œ ν•΄κ²°
    • 원인: quality tradeoffs(ν’ˆμ§ˆ 절좩) => μ„ ν˜Έλ„ 탐색

Resolution Strategies

  • μΆ©λŒμ„ μ‹λ³„ν•˜κ³  ν•΄κ²°ν•˜κΈ° μœ„ν•œ λ‹€μ–‘ν•œ νŠΉμ • ν”„λ‘œμ„ΈμŠ€, heuristics(νœ΄λ¦¬μŠ€ν‹±), techniques(기법) 쑴재.

Requirement Traceability

  • μš”κ΅¬μ‚¬ν•­ κ°„μ˜ μ—°κ²° μœ μ§€
  • 무엇이 λ¬΄μ—‡μœΌλ‘œλΆ€ν„° λΉ„λ‘―λ˜λŠ”κ°€

Requirement Prioritization

  • λΉ„μš©, μ‹œκ°„ 및 기타 μ œν•œ
  • μš”κ΅¬μ‚¬ν•­ κ°„μ˜ μ˜μ‘΄μ„±
  • 있으면 쒋은 것(Nice to have)
  • Value contribution(κ°€μΉ˜ κΈ°μ—¬)에 κΈ°λ°˜ν•œ μ „λž΅
졜근 μˆ˜μ •: 25. 11. 6. μ˜€ν›„ 12:07
Contributors: kmbzn
Prev
6. Requirements
Next
8. Architecture

BUILT WITH

CloudflareNode.jsGitHubGitVue.jsJavaScriptVSCodenpm

All trademarks and logos are property of their respective owners.
Β© 2025 kmbzn Β· MIT License