• 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๋ฒˆ: ํ”„๋ฆฐํ„ฐ ํ

3. Process

Learning Goals

  • Process(ํ”„๋กœ์„ธ์Šค)์˜ ์ค‘์š”์„ฑ ์ธ์‹
  • Progress(์ง„ํ–‰ ์ƒํ™ฉ) ์ธก์ •์˜ ์–ด๋ ค์›€ ์ดํ•ด
  • Risks(์œ„ํ—˜) ์‹๋ณ„ ๋ฐ ๊ด€๋ฆฌ
  • Planning(๊ณ„ํš) ๋ฐ progress(์ง„ํ–‰ ์ƒํ™ฉ) ์ธก์ •์„ ์œ„ํ•œ milestones(๋งˆ์ผ์Šคํ†ค) ์‚ฌ์šฉ
  • Backlogs(๋ฐฑ๋กœ๊ทธ) ๋ฐ user stories(์‚ฌ์šฉ์ž ์Šคํ† ๋ฆฌ) ์ดํ•ด

Software Process

"์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์˜ production(์ƒ์‚ฐ)์œผ๋กœ ์ด์–ด์ง€๋Š” ์ผ๋ จ์˜ ๊ด€๋ จ๋œ activities(ํ™œ๋™)"
Ian Sommerville, Software Engineering 10th edition, Pearson, 2016

How to Develop Software?

  1. ์ž‘์„ฑํ•ด์•ผ ํ•  ์†Œํ”„ํŠธ์›จ์–ด ๋…ผ์˜
  2. ์ฝ”๋“œ ์ž‘์„ฑ
  3. bugs(๋ฒ„๊ทธ) ์‹๋ณ„์„ ์œ„ํ•œ ์ฝ”๋“œ test(ํ…Œ์ŠคํŠธ)
  4. ๋ฒ„๊ทธ ์›์ธ ํŒŒ์•…์„ ์œ„ํ•œ Debug(๋””๋ฒ„๊ทธ)
  5. ๋ฒ„๊ทธ ์ˆ˜์ •
  6. ์™„๋ฃŒ๋˜์ง€ ์•Š์œผ๋ฉด 1๋‹จ๊ณ„๋กœ ๋ณต๊ท€

Example of Process Decisions

  • ๋ชจ๋“  requirements(์š”๊ตฌ์‚ฌํ•ญ) ์ž‘์„ฑ
  • ๋ชจ๋“  ์š”๊ตฌ์‚ฌํ•ญ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ approval(์Šน์ธ) ์š”๊ตฌ
  • ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— version control(๋ฒ„์ „ ๊ด€๋ฆฌ) ์‚ฌ์šฉ
  • ๋ณด๊ณ ๋œ ๋ชจ๋“  bugs(๋ฒ„๊ทธ) ์ถ”์ 
  • ์š”๊ตฌ์‚ฌํ•ญ ๋ฐ ์ฝ”๋“œ review(๊ฒ€ํ† )
  • ๊ฐœ๋ฐœ์„ ๋” ์ž‘์€ tasks(์ž‘์—…)๋กœ ๋ถ„ํ• ํ•˜๊ณ  schedule(์ผ์ •)์„ ์žก๊ณ  monitor(๋ชจ๋‹ˆํ„ฐ๋ง)ํ•จ
  • Quality assurance(ํ’ˆ์งˆ ๋ณด์ฆ) ๊ณ„ํš ๋ฐ ์ˆ˜ํ–‰
  • ์ผ์ผ status(์ƒํƒœ) ํšŒ์˜ ์ง„ํ–‰
  • ๊ฐœ๋ฐœ์ž์™€ operation(์šด์˜) ๊ฐ„ ์ฝ”๋“œ ํ‘ธ์‹œ๋ฅผ ์œ„ํ•ด Docker containers(์ปจํ…Œ์ด๋„ˆ) ์‚ฌ์šฉ

Example of Process Issues

  • Change Control(๋ณ€๊ฒฝ ์ œ์–ด):
    • ๊ณ ๊ฐ ๋˜๋Š” ๊ด€๋ฆฌ์ž๊ฐ€ ์ œ์•ˆํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ํ”„๋กœ์ ํŠธ ์ค‘๋ฐ˜์˜ informal(๋น„๊ณต์‹์ ) ํ•ฉ์˜
    • Project scope(ํ”„๋กœ์ ํŠธ ๋ฒ”์œ„) 25-50% ํ™•์žฅ
  • Quality Assurance(ํ’ˆ์งˆ ๋ณด์ฆ):
    • ์š”๊ตฌ์‚ฌํ•ญ ๋ฐ design(์„ค๊ณ„) ๋ฌธ์ œ์˜ ๋Šฆ์€ ํƒ์ง€
    • Test-debug-reimplement(ํ…Œ์ŠคํŠธ-๋””๋ฒ„๊ทธ-์žฌ๊ตฌํ˜„) cycle(์ฃผ๊ธฐ)์ด ์ƒˆ๋กœ์šด features(๊ธฐ๋Šฅ) ๊ฐœ๋ฐœ์„ ์ œํ•œํ•จ
    • ์•Œ๋ ค์ง„ defects(๊ฒฐํ•จ)์ด ์žˆ๋Š” ์ƒํƒœ๋กœ Release(๋ฐฐํฌ)
  • Defect Tracking(๊ฒฐํ•จ ์ถ”์ ): Bug reports(๋ฒ„๊ทธ ๋ณด๊ณ ์„œ)๊ฐ€ ๋น„๊ณต์‹์ ์œผ๋กœ ์ˆ˜์ง‘๋˜๊ณ  ์žŠํž˜
  • System Integration(์‹œ์Šคํ…œ ํ†ตํ•ฉ):
    • ํ”„๋กœ์ ํŠธ ๋งจ ๋งˆ์ง€๋ง‰์— ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœ๋œ components(๊ตฌ์„ฑ ์š”์†Œ)์˜ Integration(ํ†ตํ•ฉ)
    • Interfaces(์ธํ„ฐํŽ˜์ด์Šค) ๋ถˆ์ผ์น˜
  • Source Code Control(์†Œ์Šค ์ฝ”๋“œ ์ œ์–ด): ์‹ค์ˆ˜๋กœ ๋ฎ์–ด์“ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ, ์ž‘์—… ์†์‹ค
  • Scheduling(์Šค์ผ€์ค„๋ง): ํ”„๋กœ์ ํŠธ๊ฐ€ ์ง€์—ฐ๋  ๋•Œ, ๊ฐœ๋ฐœ์ž๋“ค์€ ๋งค์ฃผ ์ƒˆ๋กœ์šด estimates(์ถ”์ •์น˜)๋ฅผ ์š”์ฒญ๋ฐ›์Œ

Hypothesis(๊ฐ€์„ค)

  • Process(ํ”„๋กœ์„ธ์Šค)๋Š” flexibility(์œ ์—ฐ์„ฑ)์™€ efficiency(ํšจ์œจ์„ฑ)๋ฅผ ์ฆ๊ฐ€์‹œํ‚ด
  • ๋‚˜์ค‘์˜ ๋” ํฐ returns(์ˆ˜์ต)์„ ์œ„ํ•œ upfront investment(์„ ํ–‰ ํˆฌ์ž)

Process Models

  • Ad-hoc
  • Waterfall(ํญํฌ์ˆ˜)
  • Spiral(๋‚˜์„ ํ˜•)
  • Agile(์• ์ž์ผ)

Estimating Effort

Task: Estimate Time

  • A: Blue Marble ๋ณด๋“œ๊ฒŒ์ž„์˜ ๊ฐ„๋‹จํ•œ ์›น ๋ฒ„์ „
    • Team(ํŒ€): ๋ณธ์ธ
  • B: ์€ํ–‰ ์Šค๋งˆํŠธํฐ ์•ฑ
    • Team(ํŒ€): ๋ณธ์ธ๊ณผ 4๋ช…์˜ ๊ฐœ๋ฐœ์ž ํŒ€, 1๋ช…์€ iPhone ์•ฑ ๊ฒฝํ—˜, 1๋ช…์€ security(๋ณด์•ˆ) ๋ฐฐ๊ฒฝ
  • 8์‹œ๊ฐ„ ๊ทผ๋ฌด์ผ ๊ธฐ์ค€์œผ๋กœ ์ถ”์ •(์›” 20 ๊ทผ๋ฌด์ผ, ์—ฐ 220 ๊ทผ๋ฌด์ผ)

Revise Time Estimation

  • ์ถ”์ •์˜ ๊ธฐ๋ฐ˜์ด ๋  ๋งŒํ•œ comparable experience(๋น„๊ต ๊ฐ€๋Šฅํ•œ ๊ฒฝํ—˜)์ด ์žˆ๋Š”๊ฐ€?
  • ๊ฐ task(์ž‘์—…)์— ์–ผ๋งˆ๋งŒํผ์˜ design(์„ค๊ณ„)์ด ํ•„์š”ํ•œ๊ฐ€?
  • ์ž‘์—…์„ ์•ฝ 5๊ฐœ์˜ ๋” ์ž‘์€ ์ž‘์—…์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ์ถ”์ •
  • ํ•„์š”์‹œ ์ „์ฒด estimate(์ถ”์ •์น˜) ์ˆ˜์ •

Constructive Cost Model(COCOMO)

  • Project history(ํ”„๋กœ์ ํŠธ ์ด๋ ฅ)์— ๊ธฐ๋ฐ˜ํ•œ regression formula(ํšŒ๊ท€ ๊ณต์‹)
  • ์œ ์‚ฌํ•œ ํ”„๋กœ์ ํŠธ ๊ฒฝํ—˜ ํ•„์š”
  • ๊ฒฝํ—˜์˜ documentation(๋ฌธ์„œํ™”) ์žฅ๋ ค

Study: Variability and Reproducibility in Software Engineering

  • ๋…ธ๋ฅด์›จ์ด Simula Research Lab์˜ ์—ฐ๊ตฌ
  • ์›น ์ •๋ณด ์‹œ์Šคํ…œ์„ ์œ„ํ•œ System Requirements Specification(์‹œ์Šคํ…œ ์š”๊ตฌ์‚ฌํ•ญ ๋ช…์„ธ์„œ) ์ƒ์„ฑ(11ํŽ˜์ด์ง€)
  • 35๊ฐœ ํšŒ์‚ฌ๋กœ๋ถ€ํ„ฐ bids(์ž…์ฐฐ)์„ ๋ฐ›์•˜๊ณ , 14๊ฐœ๋Š” schedule(์ผ์ •) ํฌํ•จ
  • ๋™์ผํ•œ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด 4๊ฐœ ํšŒ์‚ฌ์™€ ๊ณ„์•ฝ

Bids and Time Estimations

  • ์ž…์ฐฐ์—์„œ price(๊ฐ€๊ฒฉ)๊ณผ planned time(๊ณ„ํš๋œ ์‹œ๊ฐ„) ๋˜๋Š” methods(๋ฐฉ๋ฒ•) ๊ฐ„์˜ ๊ด€๊ณ„ ์—†์Œ
  • Cv=(standardย deviation)(mean)C_v = \frac{\text{(standard deviation)}}{\text{(mean)}}Cvโ€‹=(mean)(standardย deviation)โ€‹

Risk and Uncertainty

Risk Management

  • Project manager(ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์ž)์˜ ํ•ต์‹ฌ ๊ณผ์ œ
  • Risks(์œ„ํ—˜) ์กฐ๊ธฐ ์‹๋ณ„ ๋ฐ ํ‰๊ฐ€
  • ํ•„์š”์‹œ mitigation strategies(์™„ํ™” ์ „๋žต) ๊ณ„ํš
  • Risk analysis(์œ„ํ—˜ ๋ถ„์„) ๊ฒฐ๊ณผ๋ฅผ project plan(ํ”„๋กœ์ ํŠธ ๊ณ„ํš)์— ๋ฌธ์„œํ™”
  • Project risks(ํ”„๋กœ์ ํŠธ ์œ„ํ—˜): scheduling(์ผ์ •) ๋ฐ resources(์ž์›)
    • ์˜ˆ: staff illness/turnover(์ง์› ์งˆ๋ณ‘/์ด์ง)
  • Product risks(์ œํ’ˆ ์œ„ํ—˜): ์ œํ’ˆ์˜ quality(ํ’ˆ์งˆ) ๋ฐ functionality(๊ธฐ๋Šฅ์„ฑ)
    • ์˜ˆ: ์‚ฌ์šฉ๋œ component(๊ตฌ์„ฑ ์š”์†Œ)๊ฐ€ ๋„ˆ๋ฌด ๋А๋ฆผ
  • Business risks(๋น„์ฆˆ๋‹ˆ์Šค ์œ„ํ—˜):
    • ์˜ˆ: ๊ฒฝ์Ÿ์‚ฌ๊ฐ€ ์œ ์‚ฌ ์ œํ’ˆ ์ถœ์‹œ

Uncertainty

  • Steve McConnell. 1996. Rapid Development

Sources of Uncertainty

  • Unpredictable operating environment(์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•œ ์šด์˜ ํ™˜๊ฒฝ)
    • Cybersecurity threats(์‚ฌ์ด๋ฒ„ ๋ณด์•ˆ ์œ„ํ˜‘), device drivers(์žฅ์น˜ ๋“œ๋ผ์ด๋ฒ„)
    • Unanticipated usage scenarios(์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค)
  • models(๋ชจ๋ธ)์˜ ์ œํ•œ๋œ predictive power(์˜ˆ์ธก ๋Šฅ๋ ฅ)
    • Halting(์ค‘๋‹จ), abstract interpretation(์ถ”์ƒ ํ•ด์„), testing(ํ…Œ์ŠคํŠธ)
  • ์ธ๊ฐ„์˜ Bounded rationality(์ œํ•œ๋œ ํ•ฉ๋ฆฌ์„ฑ)
    • Designers(์„ค๊ณ„์ž), developers(๊ฐœ๋ฐœ์ž)
    • Customers(๊ณ ๊ฐ), users(์‚ฌ์šฉ์ž)

Accepting and Coping with Risks

  • ๊ฐ€์น˜ ์ฆ๋Œ€๋ฅผ ์œ„ํ•ด ์„ ํƒ์ ์œผ๋กœ innovate(ํ˜์‹ )
  • capability(์—ญ๋Ÿ‰) ๋ฐ competitiveness(๊ฒฝ์Ÿ๋ ฅ) ํ–ฅ์ƒ
  • ํ•„์š”ํ•œ ๊ณณ์— ์œ„ํ—˜ ์ง‘์ค‘
  • Precedent(์„ ๋ก€)์™€ convention(๊ด€ํ–‰)(๊ฒฝํ—˜)์— ์˜์กด
  • iteration(๋ฐ˜๋ณต) ๋ฐ feedback(ํ”ผ๋“œ๋ฐฑ) ์‚ฌ์šฉ
    • Prototypes(ํ”„๋กœํ† ํƒ€์ž…), spiral development(๋‚˜์„ ํ˜• ๊ฐœ๋ฐœ), sprints(์Šคํ”„๋ฆฐํŠธ)

Managing Risks

  • ์œ„ํ—˜ ์กฐ๊ธฐ ํ•ด๊ฒฐ
  • Prototyping(ํ”„๋กœํ† ํƒ€์ดํ•‘), spiral development(๋‚˜์„ ํ˜• ๊ฐœ๋ฐœ)
  • mitigation strategies(์™„ํ™” ์ „๋žต) ์‹๋ณ„

Example: Bank Software

  • vendor(๊ณต๊ธ‰์—…์ฒด) ๋ฐ open-source(์˜คํ”ˆ์†Œ์Šค) components(๊ตฌ์„ฑ ์š”์†Œ) ๊ธฐ๋ฐ˜ ๊ตฌ์ถ•
    • OS, DB, app server, tooling, backups, information management, โ€ฆ
    • ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” vendors(๊ณต๊ธ‰์—…์ฒด) ๋ฐ integrators(ํ†ตํ•ฉ์—…์ฒด) ๊ณ ์ˆ˜
  • Business differentiators(๋น„์ฆˆ๋‹ˆ์Šค ์ฐจ๋ณ„ํ™” ์š”์†Œ)์— ๋‚ด๋ถ€ risk-taking(์œ„ํ—˜ ๊ฐ์ˆ˜) ์ง‘์ค‘
    • Web-site features(์›น์‚ฌ์ดํŠธ ๊ธฐ๋Šฅ), internal queries(๋‚ด๋ถ€ ์ฟผ๋ฆฌ), decision algorithms(์˜์‚ฌ ๊ฒฐ์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜)
  • expertise(์ „๋ฌธ ์ง€์‹) ์ ‘๊ทผ, ๋น„์šฉ ์ ˆ๊ฐ, flexibility(์œ ์—ฐ์„ฑ) ํ™•๋ณด๋ฅผ ์œ„ํ•œ Outsource(์•„์›ƒ์†Œ์‹ฑ)
    • Black-box testing(๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ)
    • Overall system architecture(์ „๋ฐ˜์ ์ธ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜)
    • Internal engineering practices and tools(๋‚ด๋ถ€ ์—”์ง€๋‹ˆ์–ด๋ง ๊ด€ํ–‰ ๋ฐ ๋„๊ตฌ)

Risk Analysis

  • likelihood(๊ฐ€๋Šฅ์„ฑ)์™€ consequences(๊ฒฐ๊ณผ) ์ถ”์ •
  • ์ˆ™๋ จ๋œ project lead(ํ”„๋กœ์ ํŠธ ๋ฆฌ๋”) ํ•„์š”
  • ๋Œ€๋žต์ ์ธ estimations(์ถ”์ •์น˜)๋กœ ์ถฉ๋ถ„
    • very low(<10%), low(<25%), ...
    • catastrophic(์น˜๋ช…์ ), severe(์‹ฌ๊ฐ), acceptable(์ˆ˜์šฉ ๊ฐ€๋Šฅ), negligible(๋ฌด์‹œ ๊ฐ€๋Šฅ)
  • ์ƒ์œ„ 10๊ฐœ ์œ„ํ—˜์— ์ง‘์ค‘

Risk Planning

  • Risk avoidance(์œ„ํ—˜ ํšŒํ”ผ)
  • Risk minimization(์œ„ํ—˜ ์ตœ์†Œํ™”)
  • Emergency plans(๋น„์ƒ ๊ณ„ํš)

Strategies to Help Manage Risk

  • (ํ‘œ 1)
  • Risk(์œ„ํ—˜): Organizational financial problems(์กฐ์ง์˜ ์žฌ์ • ๋ฌธ์ œ)
  • Strategy(์ „๋žต): senior management(๊ณ ์œ„ ๊ฒฝ์˜์ง„)์—๊ฒŒ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชฉํ‘œ์— ๋งค์šฐ ์ค‘์š”ํ•œ ๊ธฐ์—ฌ๋ฅผ ํ•˜๊ณ  ์žˆ์Œ์„ ๋ณด์—ฌ์ฃผ๊ณ  ํ”„๋กœ์ ํŠธ ์˜ˆ์‚ฐ ์‚ญ๊ฐ์ด ๋น„์šฉ ํšจ์œจ์ ์ด์ง€ ์•Š์€ ์ด์œ ๋ฅผ ์ œ์‹œํ•˜๋Š” ๋ธŒ๋ฆฌํ•‘ ๋ฌธ์„œ ์ค€๋น„
  • Risk(์œ„ํ—˜): Recruitment problems(์ฑ„์šฉ ๋ฌธ์ œ)
  • Strategy(์ „๋žต): customer(๊ณ ๊ฐ)์—๊ฒŒ ์ž ์žฌ์  ์–ด๋ ค์›€๊ณผ ์ง€์—ฐ ๊ฐ€๋Šฅ์„ฑ์„ ์•Œ๋ฆผ; buying-in components(๊ตฌ์„ฑ ์š”์†Œ ๊ตฌ๋งค) ์กฐ์‚ฌ
  • Risk(์œ„ํ—˜): Staff illness(์ง์› ์งˆ๋ณ‘)
  • Strategy(์ „๋žต): ์ž‘์—… ์ค‘๋ณต์„ฑ์„ ๋†’์—ฌ ์‚ฌ๋žŒ๋“ค์ด ์„œ๋กœ์˜ ์—…๋ฌด๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก team(ํŒ€) ์žฌ๊ตฌ์„ฑ
  • Risk(์œ„ํ—˜): Defective components(๊ฒฐํ•จ ์žˆ๋Š” ๊ตฌ์„ฑ ์š”์†Œ)
  • Strategy(์ „๋žต): ์ž ์žฌ์ ์œผ๋กœ ๊ฒฐํ•จ์ด ์žˆ๋Š” ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‹ ๋ขฐ์„ฑ์ด ์•Œ๋ ค์ง„ bought-in components(๊ตฌ๋งค ๊ตฌ์„ฑ ์š”์†Œ)๋กœ ๊ต์ฒด
  • Risk(์œ„ํ—˜): Requirements changes(์š”๊ตฌ์‚ฌํ•ญ ๋ณ€๊ฒฝ)
  • Strategy(์ „๋žต): ์š”๊ตฌ์‚ฌํ•ญ ๋ณ€๊ฒฝ impact(์˜ํ–ฅ)์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ traceability(์ถ”์ ์„ฑ) ์ •๋ณด ๋„์ถœ; design(์„ค๊ณ„)์—์„œ information hiding(์ •๋ณด ์€๋‹‰) ์ตœ๋Œ€ํ™”
  • (ํ‘œ 2)
  • Risk(์œ„ํ—˜): Organizational restructuring(์กฐ์ง ๊ฐœํŽธ)
  • Strategy(์ „๋žต): senior management(๊ณ ์œ„ ๊ฒฝ์˜์ง„)์—๊ฒŒ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชฉํ‘œ์— ๋งค์šฐ ์ค‘์š”ํ•œ ๊ธฐ์—ฌ๋ฅผ ํ•˜๊ณ  ์žˆ์Œ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋ธŒ๋ฆฌํ•‘ ๋ฌธ์„œ ์ค€๋น„
  • Risk(์œ„ํ—˜): Database performance(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ)
  • Strategy(์ „๋žต): higher-performance(๊ณ ์„ฑ๋Šฅ) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ๋งค ๊ฐ€๋Šฅ์„ฑ ์กฐ์‚ฌ
  • Risk(์œ„ํ—˜): Underestimated development time(๊ณผ์†Œํ‰๊ฐ€๋œ ๊ฐœ๋ฐœ ์‹œ๊ฐ„)
  • Strategy(์ „๋žต): buying-in components(๊ตฌ์„ฑ ์š”์†Œ ๊ตฌ๋งค) ์กฐ์‚ฌ; program generator(ํ”„๋กœ๊ทธ๋žจ ์ƒ์„ฑ๊ธฐ) ์‚ฌ์šฉ ์กฐ์‚ฌ

Planning(๊ณ„ํš)

(Software) Projects

  • ์ผํšŒ์„ฑ ๋…ธ๋ ฅ(One-time endeavor); ๋‹ค์Œ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๊ณ ์œ ํ•จ
    • Goals(๋ชฉํ‘œ)
    • Time, financial, personal, and other constraints(์‹œ๊ฐ„, ์žฌ์ •, ์ธ๋ ฅ ๋ฐ ๊ธฐํƒ€ ์ œ์•ฝ ์กฐ๊ฑด)
    • Differences to other endeavors(๋‹ค๋ฅธ ๋…ธ๋ ฅ๊ณผ์˜ ์ฐจ์ด์ )
    • Project-specific organization(ํ”„๋กœ์ ํŠธ๋ณ„ ์กฐ์ง)
  • ์ •์˜๋˜๊ณ  ์ œํ•œ๋œ ์‹œ๊ฐ„(๋ช…ํ™•ํ•œ ์‹œ์ž‘๊ณผ ๋)
  • ๋ช…ํ™•ํ•œ goals(๋ชฉํ‘œ)
  • Constraints(์ œ์•ฝ ์กฐ๊ฑด): budget(์˜ˆ์‚ฐ), resources(์ž์›), ...
  • management(๊ด€๋ฆฌ) ํ•„์š”
    • high risk(๋†’์€ ์œ„ํ—˜)
    • coordination of experts(์ „๋ฌธ๊ฐ€ ์กฐ์ •)
  • ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์€ ํ•ญ์ƒ projects(ํ”„๋กœ์ ํŠธ)๋กœ ์ง„ํ–‰๋จ
  • ์ƒˆ๋กญ๊ณ /๋…ํŠนํ•œ ๋ชฉํ‘œ, innovative technology(ํ˜์‹ ์ ์ธ ๊ธฐ์ˆ )
  • Intangible result(๋ฌดํ˜•์˜ ๊ฒฐ๊ณผ), progress(์ง„ํ–‰ ์ƒํ™ฉ) ์ธก์ • ์–ด๋ ค์›€
  • ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ์ ํŠธ๋Š” ์‚ฐ์—… ํ”„๋กœ์ ํŠธ๋ณด๋‹ค ๋” ์ž์ฃผ ์‹คํŒจํ•˜๋Š” ๊ฒฝํ–ฅ

Measuring Progress?

"์•ฑ์ด ๊ฑฐ์˜ ์™„์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. frontend(ํ”„๋ก ํŠธ์—”๋“œ)๋Š” ๊ฑฐ์˜ ๋‹ค ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. backend(๋ฐฑ์—”๋“œ)๋Š” ์„œ๋ฒ„๋ฅผ ๊ณ„์† ๋‹ค์šด์‹œํ‚ค๋Š” ๊ทธ ๋นŒ์–ด ๋จน์„ ๋ฒ„๊ทธ ํ•˜๋‚˜๋งŒ ๋นผ๊ณ  ์™„์ „ํžˆ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋นŒ์–ด ๋จน์„ ๋ฒ„๊ทธ ํ•˜๋‚˜๋งŒ ์ฐพ์œผ๋ฉด ๋˜๋Š”๋ฐ, ์•„๋งˆ ์˜คํ›„๋ฉด ๋  ๊ฒ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฃผ์— release(๋ฐฐํฌ)ํ•  ์ค€๋น„๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค."

  • Developer judgment(๊ฐœ๋ฐœ์ž ํŒ๋‹จ): x% ์™„๋ฃŒ
  • Lines of code(์ฝ”๋“œ ๋ผ์ธ ์ˆ˜)?
  • Functionality(๊ธฐ๋Šฅ์„ฑ)?
  • Quality(ํ’ˆ์งˆ)?

Milestones and Deliverables(๋งˆ์ผ์Šคํ†ค ๋ฐ ์ธ๋„๋ฌผ)

  • (ํŠนํžˆ ์†Œํ”„ํŠธ์›จ์–ด์˜) ์ง„ํ–‰ ์ƒํ™ฉ์„ observable(๊ด€์ฐฐ ๊ฐ€๋Šฅ)ํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ
  • Milestone(๋งˆ์ผ์Šคํ†ค):(ํ•˜์œ„) ์ž‘์—…์˜ ๋ช…ํ™•ํ•œ end point(์ข…๋ฃŒ์ )
    • Project manager(ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์ž)์šฉ
    • Reports(๋ณด๊ณ ์„œ), prototypes(ํ”„๋กœํ† ํƒ€์ž…), completed subprojects(์™„๋ฃŒ๋œ ํ•˜์œ„ ํ”„๋กœ์ ํŠธ)
    • "80% done"("80% ์™„๋ฃŒ")์€ ์ ์ ˆํ•œ milestone(๋งˆ์ผ์Šคํ†ค)์ด ์•„๋‹˜
  • Deliverable(์ธ๋„๋ฌผ): ๊ณ ๊ฐ์„ ์œ„ํ•œ ๊ฒฐ๊ณผ
    • milestone(๋งˆ์ผ์Šคํ†ค)๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ ๊ณ ๊ฐ์šฉ
    • Reports(๋ณด๊ณ ์„œ), prototypes(ํ”„๋กœํ† ํƒ€์ž…), completed subsystems(์™„๋ฃŒ๋œ ํ•˜์œ„ ์‹œ์Šคํ…œ)

Project Planning

  • [๋‹ค์ด์–ด๊ทธ๋žจ ํ๋ฆ„]
  • Identify constraints(์ œ์•ฝ ์กฐ๊ฑด ์‹๋ณ„)
  • Estimate project parameters(ํ”„๋กœ์ ํŠธ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ถ”์ •)
  • Define milestones(๋งˆ์ผ์Šคํ†ค ์ •์˜)
  • Create schedule(์ผ์ • ์ƒ์„ฑ)
  • Check progress(์ง„ํ–‰ ์ƒํ™ฉ ํ™•์ธ)
  • Reestimate project parameter(ํ”„๋กœ์ ํŠธ ๋งค๊ฐœ๋ณ€์ˆ˜ ์žฌ์ถ”์ •)
  • Refine schedule(์ผ์ • ๊ตฌ์ฒดํ™”)
  • Activities begin(ํ™œ๋™ ์‹œ์ž‘)
  • Renegotiate constraints(์ œ์•ฝ ์กฐ๊ฑด ์žฌํ˜‘์ƒ)
  • Technical review(๊ธฐ์ˆ  ๊ฒ€ํ† )
  • Done?(์™„๋ฃŒ?) / Problem?(๋ฌธ์ œ?) / Abort?(์ค‘๋‹จ?)
  • Customer(๊ณ ๊ฐ) -> New feature requests(์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์š”์ฒญ)
  • Budget(์˜ˆ์‚ฐ), Personal(์ธ๋ ฅ), Deadlines(๋งˆ๊ฐ์ผ)

Project Manager Tasks(ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์ž ๊ณผ์—…)

  • ํ”„๋กœ์ ํŠธ๋ฅผ ์ธก์ • ๊ฐ€๋Šฅํ•œ outcomes(๊ฒฐ๊ณผ๋ฌผ)์ด ์žˆ๋Š” work packages(์ž‘์—… ํŒจํ‚ค์ง€)๋กœ ๋ถ„ํ• (๊ฐ 1-10์ฃผ)
  • ์‹œ๊ฐ„ ๋ฐ ์ž์› ์ถ”์ •
  • ์ˆœ์„œ ์ƒ์„ฑ ๋ฐ parallelism(๋ณ‘๋ ฌ์„ฑ) ๊ฒฐ์ •
  • ์˜ˆ์ƒ๋˜๊ฑฐ๋‚˜ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•œ buffers(๋ฒ„ํผ) ๊ณ„ํš
  • ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์†Œํ”„ํŠธ์›จ์–ด(์˜ˆ: Microsoft Project, GanttProject, Kplato ๋“ฑ)
  • ์ถ”์ •์„ ์œ„ํ•œ ๊ฒฝํ—˜ ํ•„์š”

Replanning

  • ๋ถ€์ •ํ™•ํ•œ ์‹œ๊ฐ„ ์˜ˆ์ธก์€ ์ •์ƒ
  • -> Update schedule(์ผ์ • ์—…๋ฐ์ดํŠธ)
  • [ํ‘œ: Task(์ž‘์—…), Planned(๊ณ„ํš), Actual(์‹ค์ œ), Difficulty/Risk(๋‚œ์ด๋„/์œ„ํ—˜), Responsibility(์ฑ…์ž„์ž), Completed(์™„๋ฃŒ์œจ)]

Reasons for Missed Deadlines(๋งˆ๊ฐ์ผ์„ ๋†“์น˜๋Š” ์ด์œ )

  • ๋ถˆ์ถฉ๋ถ„ํ•œ staff(์ธ๋ ฅ)(์งˆ๋ณ‘, ์ด์ง, ...)
  • ๋ถˆ์ถฉ๋ถ„ํ•œ qualification(์ž๊ฒฉ)
  • ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์–ด๋ ค์›€
  • ๋น„ํ˜„์‹ค์ ์ธ time estimations(์‹œ๊ฐ„ ์ถ”์ •)
  • ์˜ˆ์ƒ์น˜ ๋ชปํ•œ dependencies(์˜์กด์„ฑ)
  • ๋ณ€๊ฒฝ๋˜๋Š” requirements(์š”๊ตฌ์‚ฌํ•ญ), ์ถ”๊ฐ€ requirements(์š”๊ตฌ์‚ฌํ•ญ)
  • ํŠนํžˆ ํ•™์ƒ ํ”„๋กœ์ ํŠธ์—์„œ
    • ๊ธฐ์ˆ  ํ•™์Šต ์‹œ๊ฐ„ ๊ณผ์†Œํ‰๊ฐ€
    • ๋ถˆ๊ท ๋“ฑํ•œ ์ž‘์—… ๋ถ„๋ฐฐ

Recognize Scheduling Issues Early(์Šค์ผ€์ค„๋ง ๋ฌธ์ œ ์กฐ๊ธฐ ์ธ์‹)

  • Monitoring(๋ชจ๋‹ˆํ„ฐ๋ง) ๋ฐ formal reporting(๊ณต์‹ ๋ณด๊ณ ) ํ•„์š”
    • ๋ˆ„๊ฐ€, ์–ธ์ œ, ๋ฌด์—‡์„ ํ™•๋ฆฝ
    • ๊ณ„ํš/์‹ค์ œ ๋ฐ์ดํ„ฐ ๋น„๊ต
  • Measurable milestones(์ธก์ • ๊ฐ€๋Šฅํ•œ ๋งˆ์ผ์Šคํ†ค)
  • ์˜ค๋ž˜๋œ ์ผ์ •์€ ์˜๋ฏธ ์žˆ๋Š” management mechanism(๊ด€๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜)์ด ์•„๋‹˜

Almost Done Problem("๊ฑฐ์˜ ์™„๋ฃŒ" ๋ฌธ์ œ)

  • ๋งˆ์ง€๋ง‰ 10%์˜ ์ž‘์—…์ด ์‹œ๊ฐ„์˜ 40% ์†Œ์š”(๋˜๋Š” 20/80)
  • ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ธก์ • ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ฆ
  • ๊ฐœ๋ฐœ์ž ์ถ”์ •์— ์ „์ ์œผ๋กœ ์˜์กดํ•˜๋Š” ๊ฒƒ ๋ฐฉ์ง€

Milestone Trend Analysis(๋งˆ์ผ์Šคํ†ค ์ถ”์„ธ ๋ถ„์„)

  • Actual time(์‹ค์ œ ์‹œ๊ฐ„)
  • Estimated completion time(์˜ˆ์ƒ ์™„๋ฃŒ ์‹œ๊ฐ„)
  • Changing trends(๋ณ€ํ™”ํ•˜๋Š” ์ถ”์„ธ) -> unreliable early estimations(์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์ดˆ๊ธฐ ์ถ”์ •)
  • Zig-zag pattern(์ง€๊ทธ์žฌ๊ทธ ํŒจํ„ด) -> unreliable estimations(์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์ถ”์ •)
  • Quickly rising(๋น ๋ฅด๊ฒŒ ์ƒ์Šน) -> estimations too optimistic(๋„ˆ๋ฌด ๋‚™๊ด€์ ์ธ ์ถ”์ •)

Mitigation Strategies(์™„ํ™” ์ „๋žต)

  • Additional personal(์ถ”๊ฐ€ ์ธ๋ ฅ)
    • ํŠนํžˆ ํŠน์ • ์ž‘์—…์„ ์œ„ํ•œ experts(์ „๋ฌธ๊ฐ€)
  • ์ผ์‹œ์ ์ธ ๊ทผ๋ฌด ์‹œ๊ฐ„ ์ฆ๊ฐ€(์ดˆ๊ณผ ๊ทผ๋ฌด, ํœด๊ฐ€ ๋™๊ฒฐ)
    • short-term solution(๋‹จ๊ธฐ์  ํ•ด๊ฒฐ์ฑ…)์ผ ๋ฟ
  • Tooling(๋„๊ตฌ), methods(๋ฐฉ๋ฒ•), processes(ํ”„๋กœ์„ธ์Šค) ๊ฐœ์„ 
  • Buy(๊ตฌ๋งค), contract(๊ณ„์•ฝ), offshore(์•„์›ƒ์†Œ์‹ฑ)
  • ๊ธฐ๋Šฅ ์žฌํ˜‘์ƒ / ์ถ•์†Œ
    • Set priorities(์šฐ์„ ์ˆœ์œ„ ์„ค์ •), incremental deployment(์ฆ๋ถ„ ๋ฐฐํฌ)
    • Move deadline(๋งˆ๊ฐ์ผ ์—ฐ๊ธฐ)
  • ํ”ผํ•  ๊ฒƒ: testing(ํ…Œ์ŠคํŠธ)/quality assurance(ํ’ˆ์งˆ ๋ณด์ฆ) ์ถ•์†Œ

Team Productivity

  • Brook's law(๋ธŒ๋ฃฉ์˜ ๋ฒ•์น™): ์ง€์—ฐ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ์ ํŠธ์— ์ธ๋ ฅ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋”์šฑ ์ง€์—ฐ๋จ.

(Brief) Introduction to Scrum

Elements of Scrum

  • Products(์‚ฐ์ถœ๋ฌผ):
    • Product Backlog(์ œํ’ˆ ๋ฐฑ๋กœ๊ทธ)
    • Sprint Backlog(์Šคํ”„๋ฆฐํŠธ ๋ฐฑ๋กœ๊ทธ)
  • Process(ํ”„๋กœ์„ธ์Šค):
    • Sprint Planning Meeting(์Šคํ”„๋ฆฐํŠธ ๊ณ„ํš ํšŒ์˜)
    • Daily Scrum Meeting(์ผ์ผ ์Šคํฌ๋Ÿผ ํšŒ์˜)
    • Sprint Retrospective(์Šคํ”„๋ฆฐํŠธ ํšŒ๊ณ )
    • Sprint Review Meeting(์Šคํ”„๋ฆฐํŠธ ๊ฒ€ํ†  ํšŒ์˜)

Product Backlog / Sprint Backlog

  • Product backlog(์ œํ’ˆ ๋ฐฑ๋กœ๊ทธ)๋Š” ์ œํ’ˆ์„ ์œ„ํ•œ ๋ชจ๋“  features(๊ธฐ๋Šฅ)
  • sprint backlog(์Šคํ”„๋ฆฐํŠธ ๋ฐฑ๋กœ๊ทธ)๋Š” ํ•ด๋‹น sprint(์Šคํ”„๋ฆฐํŠธ)์—์„œ ์ž‘์—…ํ•  ๋ชจ๋“  ๊ธฐ๋Šฅ. ์ด๋Š” ๊ฐœ๋ณ„ tasks(์ž‘์—…)๋กœ ๋ถ„ํ• ๋˜์–ด์•ผ ํ•จ:
    • Fine-grained(์„ธ๋ถ„ํ™”๋จ)
    • Estimated(์ถ”์ •๋จ)
    • ๊ฐœ๋ณ„ ํŒ€์›์—๊ฒŒ Assigned(ํ• ๋‹น๋จ)
    • Acceptance criteria(์ธ์ˆ˜ ๊ธฐ์ค€)์ด ์ •์˜๋˜์–ด์•ผ ํ•จ
  • User Stories(์‚ฌ์šฉ์ž ์Šคํ† ๋ฆฌ)๊ฐ€ ์ž์ฃผ ์‚ฌ์šฉ๋จ

Scrum Meetings

  • Sprint Planning Meeting
    • ์ „์ฒด ํŒ€์ด ํ•ด๋‹น sprint(์Šคํ”„๋ฆฐํŠธ)์—์„œ ๋‹ค๋ฃฐ ๋‚ด์šฉ์„ ํ•จ๊ป˜ ๊ฒฐ์ •
  • Daily Scrum Meeting
    • ๊ฐ„๋‹จํ•œ ํšŒ์˜๋กœ ๋‹ค์Œ ์‚ฌํ•ญ ํ™•์ธ:
    • ๋ฌด์—‡์„ ํ–ˆ๋Š”๊ฐ€? ๋‹ค์Œ์— ๋ฌด์—‡์„ ํ•  ๊ฒƒ์ธ๊ฐ€? ๋ฌด์—‡์— ๋ง‰ํ˜”๊ฑฐ๋‚˜ ๋„์›€์ด ํ•„์š”ํ•œ๊ฐ€?
  • Sprint Retrospective
    • sprint process(์Šคํ”„๋ฆฐํŠธ ํ”„๋กœ์„ธ์Šค) ๊ฒ€ํ† 
  • Sprint Review Meeting
    • Product(์ œํ’ˆ) ๊ฒ€ํ† 

User Stories

The Card(์นด๋“œ)

"As a [role], I want [function], so that [value]" -> "[์—ญํ• ]๋กœ์„œ, [๊ฐ€์น˜]๋ฅผ ์œ„ํ•ด [๊ธฐ๋Šฅ]์„ ์›ํ•œ๋‹ค"

  • 3x5 ์นด๋“œ์— ๋งž์•„์•ผ ํ•จ

The Conversation

  • ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๊ณผ client(๊ณ ๊ฐ) ๊ฐ„์˜ ์—ด๋ฆฐ ๋Œ€ํ™”
  • ํ•„์š”์‹œ Epic Stories(์—ํ”ฝ ์Šคํ† ๋ฆฌ) ๋ถ„ํ• 

The Confirmation

  • ์ž‘์—…์ด ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” confirmation criterion(ํ™•์ธ ๊ธฐ์ค€)
  • ์ž๋™ํ™”๋˜๊ฑฐ๋‚˜ ์ˆ˜๋™์ผ ์ˆ˜ ์žˆ์Œ

How to Evaluate User Story?

์ตœ๊ทผ ์ˆ˜์ •: 25. 11. 6. ์˜คํ›„ 12:07
Contributors: kmbzn
Prev
2. Introduction to Software Engineering
Next
4. Process Models

BUILT WITH

CloudflareNode.jsGitHubGitVue.jsJavaScriptVSCodenpm

All trademarks and logos are property of their respective owners.
ยฉ 2025 kmbzn ยท MIT License