1. μκ° ¶
- μ£Όμ : NSIS IDE
- μ°Έμ¬ : κ°μμ² (99, 1002)
- κΈ°κ° : 2002.2.3 (λ.. μ΄μ©λ©΄ 2.9 μΌκΉμ§ ν μλ.^^;)
- λͺ©ν : NSIS μ μ°λνμ¬ κ°λ¨ν NSIS Script μμ±κ³Ό κ΄λ ¨ν IDE νκ²½μ ꡬμΆνλ€.
2. Opening Statement ¶
νΉλ³ν λ
μμ μλκ³ . -_-; NSIS μ€ν¬λ¦½νΈλ₯Ό μμ±νλ€κ° μλν° μμ μ€ν¬λ¦½νΈ μμ±νκ³ command μ°½μμ μ€ν¬λ¦½νΈ μ»΄νμΌ νκ³ λ§λ€μ΄μ§ μΈμ€ν¨λ¬ μ€ννλ€κ° κ°μκΈ° μκ°μ΄ λμλΌλ. --;
κ·Έλ₯ Editplus μμ makensis μ μ°κ²°ν΄μ μ¨λ μκ΄μμ§λ§, λ§μΌ μ§μ λ§λ λ€λ©΄ μ΄λ»κ² ν΄μΌ ν κΉ νλ μκ°μ.. κ·Έλ₯ ν루 λ μ‘μμ λ λ¦Ό νλ° ν΄λ΄€λ€λ. --; (μ΄ νλ‘μ νΈλ NSIS_Start μ subprojectλ‘, NSIS_Start κ° λλλ©΄ μλμλ©Έμν΅λλ€. ^^;)
Solo Programming μΌλ‘ μ§ν. XP 곡λΆνκ±° μν μ μ©ν΄λ΄.
3. User Story ¶
- .nsi μ€ν¬λ¦½νΈλ₯Ό load/save ν μ μλ€.
- .nsi μ€ν¬λ¦½νΈλ₯Ό μ½μ΄μ νΈμ§ν μ μλ€.
- .nsi μ€ν¬λ¦½νΈλ₯Ό μ§μ μ»΄νμΌν΄μ μ€ννμΌλ‘ λ§λ€ μ μλ€. μ»΄νμΌ κ³Όμ μ΄ output μ°½μ νμλλ€.
- μ»΄νμΌ λ νμΌμ ν
μ€νΈνμ¬ μ€νν΄λ³Ό μ μλ€.
- MDI κΈ°λ°.
4. Engineering Task ¶
ν Iteration μ 2μκ°μΌλ‘ μ‘μ. 1 Task Pointλ Ideal Hour(?)λ‘ 1μκ°μ ν μ μλ μ μ λλ‘ κ³μ°. (μ.. μ¬μ ν μ΄κ±° κ³μ°λ²μ΄ λͺ¨νΈνλ€. μ’ λ μ λλ‘ κ³΅λΆν΄μΌκ² λ€.)
0.4 + 0.4 + 0.5 + 0.5 + 0.5 + 0.5 + 0.7 = 3.5 (μ 체 3.5 Task Point)
3.5 * 2 (μ€μ λ‘λ 1.5λ°°~2λ°°μ λ μκ°μ΄ 걸릴κ²μ) = 7 μκ°
Planning & μ€κ° ν΄μμκ° ν¬ν¨ 1μκ° μΆκ° = 8 μκ°
- .nsi μ€ν¬λ¦½νΈλ₯Ό load/save ν μ μλ€.
νμΌ μ½μ΄μ μλ£κ΅¬μ‘°μ μ μ₯. | 0.4 |
μλ£κ΅¬μ‘°μ μλ λ°μ΄ν°λ₯Ό νμΌλ‘ μ μ₯. | 0.4 |
- .nsi μ€ν¬λ¦½νΈλ₯Ό μ½μ΄μ νΈμ§ν μ μλ€.
Rich Edit Control μ μ΄μ©. νΈμ§. μλ£κ΅¬μ‘°μ sink. | 0.5 |
- .nsi μ€ν¬λ¦½νΈλ₯Ό μ§μ μ»΄νμΌν΄μ μ€ννμΌλ‘ λ§λ€ μ μλ€. μ»΄νμΌ κ³Όμ μ΄ output μ°½μ νμλλ€.
CInnerProcess Class μ μ΄μ©. μ½κ° μμ . makensis μ΄μ©. | 0.5 |
Output Windows μ μμ± | 0.5 |
Compile λμ μ°κ²° | 0.5 |
- μ»΄νμΌ λ νμΌμ ν
μ€νΈνμ¬ μ€νν΄λ³Ό μ μλ€.
μ.. script μμ μ€μ Outputμ΄ λ νμΌμ λΆμ & κ°μ Έμ€κΈ°. | 0.7 |
- MDI κΈ°λ°.
MFCμ MDI Framework μ΄μ© | none |
0.4 + 0.4 + 0.5 + 0.5 + 0.5 + 0.5 + 0.7 = 3.5 (μ 체 3.5 Task Point)
3.5 * 2 (μ€μ λ‘λ 1.5λ°°~2λ°°μ λ μκ°μ΄ 걸릴κ²μ) = 7 μκ°
Planning & μ€κ° ν΄μμκ° ν¬ν¨ 1μκ° μΆκ° = 8 μκ°
5. Iteration κ³ν ¶
First Iteration :
- MDI Framework
- Rich Edit Control μ μ΄μ©. 0.5
- νμΌ Save / Load 0.4 + 0.4 = 0.8 - 1.3 * 2 = 2.6
- CInnerProcess Class 0.5
- Output Window 0.5 - 1 * 2 = 2
- Script λ‘λΆν° Output μ΄ λ Target νμΌμ λΆμ & μ΄λ¦ κ°μ Έμ€κΈ° - 0.7
- Load / Save MDI Framework μμ μ°κ²° - 0.7 - 1.4 * 2 = 2.8
6.1. Iteration 1 (1:00 ~ 3:00) ¶
μΆκ° Task : Load / Save MDI Framework μμ μ°κ²°
νμ¬ μλ£λ Task
μ€κ° 10λΆ ν΄μ.
νμ¬ μλ£λ Task
μ€κ° 10λΆ ν΄μ.
- velocity : 1.3 task point
6.2. Iteration 2 (3:20 ~ 5:40) ¶
CInnerProcess Class μ΄μ©, Nsis μ°κ²°νκΈ° - 0.5
Output Window 0.5 - 1 * 2 = 2
μ€ν 4:34 μλ£.
μΆκ°μ¬ν:
μ€ν 5:05 - 10λΆ ν΄μ. Iteration 3 μ μλ λ μμ λ§μ νμ.~
Script λ‘λΆν° Output μ΄ λ Target νμΌμ λΆμ & μ΄λ¦ κ°μ Έμ€κΈ° - 0.7
Output Window 0.5 - 1 * 2 = 2
μ€ν 4:34 μλ£.
μΆκ°μ¬ν:
κ³ λ €ν μ¬ν
- NsisProcess λ μ΄λμ μν΄ μλ λ
μμΈκ°? -_-a
-> Singleton μΌλ‘ μμ΄μΌ ν λ μμ.
-> AppClass μ μμΌλ©΄ μλμΌλ‘ Singleton μ΄ λκ² κ΅°. ^-^;
- NsisProcess μ΄λ²€νΈ λ°μμμ λκ° μ΄λ»κ² ν΅μ§λ°μμ Outputμ μ°μ΄μ£Όλ?
-> μ΄μ°¨νΌ Execute Process λ Blocking Call μ.
-> Nsis Execute λ€μ λ°λ‘ Output μ λΏλ €μ£Όλ©΄ λ¨.
-> Singleton μΌλ‘ μμ΄μΌ ν λ μμ.
-> AppClass μ μμΌλ©΄ μλμΌλ‘ Singleton μ΄ λκ² κ΅°. ^-^;
- NsisProcess μ΄λ²€νΈ λ°μμμ λκ° μ΄λ»κ² ν΅μ§λ°μμ Outputμ μ°μ΄μ£Όλ?
-> μ΄μ°¨νΌ Execute Process λ Blocking Call μ.
-> Nsis Execute λ€μ λ°λ‘ Output μ λΏλ €μ£Όλ©΄ λ¨.
μ€ν 5:05 - 10λΆ ν΄μ. Iteration 3 μ μλ λ μμ λ§μ νμ.~
Script λ‘λΆν° Output μ΄ λ Target νμΌμ λΆμ & μ΄λ¦ κ°μ Έμ€κΈ° - 0.7
- velocity : 1.7 task point
- average : 1.5 task point
6.3. Iteration 3 (5:50 ~ 8:10) ¶
- Load / Save MDI Framework μμ μ°κ²° - 0.7
- velocity : 0.7 task point.
- average : 2.2 / 3 = 0.73 task point / Iteration (2 hours)
7. μ€κ° κ³΅λΆ ¶
- Save/Load μ κ΄λ ¨ν λ©μΈμ§μ ν¨μ νΈμΆ μμ (Function Call λ°λΌκ°κΈ°)
~cpp * CWinApp::OnFileNew -> CDocManager::OnFileNew -> CMultiDocTemplate::OpenDocumentFile -> CNIDoc::OnNewDocument .. -> CNIView::OnInitialUpdate () * CWinApp::OnFileOpen -> CDocManager::OnFileOpen -> CMultiDocTemplate::OpenDocumentFile -> CNIDoc::OnOpenDocument .. -> CNIView::OnInitialUpdate () * CDocument::OnFileSave -> CDocument::DoSave -> CNIDoc::OnSaveDocument * CDocument::OnFileSaveAs -> CDocument::DoSave -> CNIDoc::OnSaveDocument * CFrameWnd::OnClose -> CWndApp::SaveAllModified -> CDocManager::SaveAllModified -> CDocTemplate::SaveAllModified -> CDocument::SaveModified -> CDocument::DoFileSave -> CDocument::DoSave -> CNIDoc::OnSaveDocument * CDocument::SaveModified -> DoFileSave
- νλ‘κ·Έλ¨ μ€νμ€ λ€λ₯Έ Process λμ°κ³ κ²°κ³Ό μ€νΈλ§ μ»μ΄μ€κΈ° (Console Util)
9. κ³ μ³μΌ ν λ²κ·Έ ¶
- νλ©΄μ μλν°μ μ€μ λ°μ΄ν° μ μ₯λλ λΆλΆμ΄ updateκ° μ λλ‘ μλλ€.
- νμΌν¬κΈ° κ΄λ ¨ 8kb λ―Έλ§μ λ°μ΄ν°λ§ μ²λ¦¬κ°λ₯.
10. νκ° ¶
- MFC μ μ°κ²°λλ λΆλΆμ λν TestFirstProgramming μ μ λλ‘ μ§ν€μ§ λͺ»νλ€. (μ.. GUI λΆλΆμ μ λ§€νλ€. --;) μ λ§€ν λΆλΆμ λν΄μ μμ μ νλ λ°©μμ΄ μμ΄λ€ 보λκΉ λ¦¬λ¬μ΄ κΉ¨μ‘λ€. μ°¨λΌλ¦¬ μ² μ νκ² TFPλ‘ κ°λκ² λμμμν
λ° νλ μκ°μ΄ λ€μλ€.
- νμ§λ§, View/Document κ΅¬μ‘°κ° ννΈμΌλ‘λ λ°©ν΄λ¬Όμ΄.. μ΄λ―Έ λμμΈμ΄ λμ΄λ²λ¦° Framework μ κ²½μ° μ΄λ»κ² μ μ©μ μμΌλκ°μΌ ν κΉ. μΌλ¨ μ£Όλ‘ μκ³ λ¦¬μ¦κ³Ό κ΄λ ¨λ λΆλΆμ λν΄ Test Codeλ₯Ό λ§λ€κ² λμλ€. κ³μ μκ°ν΄λ΄μΌ ν λ¬Έμ μΌ κ²μ΄λ€.
- νμ§λ§, View/Document κ΅¬μ‘°κ° ννΈμΌλ‘λ λ°©ν΄λ¬Όμ΄.. μ΄λ―Έ λμμΈμ΄ λμ΄λ²λ¦° Framework μ κ²½μ° μ΄λ»κ² μ μ©μ μμΌλκ°μΌ ν κΉ. μΌλ¨ μ£Όλ‘ μκ³ λ¦¬μ¦κ³Ό κ΄λ ¨λ λΆλΆμ λν΄ Test Codeλ₯Ό λ§λ€κ² λμλ€. κ³μ μκ°ν΄λ΄μΌ ν λ¬Έμ μΌ κ²μ΄λ€.
- AcceptanceTest λ₯Ό μ€κ°μ μ§€ μκ°μ ν λΉνμ§ λͺ»νλ€. (μμ§ν GUI λΆλΆμ΄ λ€μ΄κ°λ λΆλΆμ λν΄ κ°μ΄ μ€μ§ μμλ€. μ μ Web Programming λμλ μ§μ HTTP Protocolμ μ΄μ©, μΉμλ²λ‘λΆν° λ°μμ¨ HTML λ¬Έμλ₯Ό Parsing ν λ€ κ·Έ κ²°κ³Όμ λν΄ Test Codeλ₯Ό μμ±νλ μμ΄μλλ°.. (κ·Έλλ Manual Test λͺ©λ‘μ΄λΌλ μμ±ν΄ λμμ΄μΌ νλλ° μ΄κ±΄ κ³νλ¨κ³μ μ€μλΌ μκ°)
- μμ΄λμ΄ λ μ€λ₯Έ κ²μ€ νλ - λ§μ°μ€ λ§€ν¬λ‘ νλ‘κ·Έλ¨κ³Ό μ°λν΄μ μ°λ건 μ΄λ¨κΉ. -_-a μλλ©΄ Message λ₯Ό 보λ΄λ μμΌλ‘ νλ λ°©λ², DLLμ μ½μ
νλ λ°©λ².. μ΄κ±΄ μ’ λ ꡬ체μ μΌλ‘ μκ°μ ν΄λ΄μΌ ν κ² κ°λ€.
- μμ΄λμ΄ λ μ€λ₯Έ κ²μ€ νλ - λ§μ°μ€ λ§€ν¬λ‘ νλ‘κ·Έλ¨κ³Ό μ°λν΄μ μ°λ건 μ΄λ¨κΉ. -_-a μλλ©΄ Message λ₯Ό 보λ΄λ μμΌλ‘ νλ λ°©λ², DLLμ μ½μ
νλ λ°©λ².. μ΄κ±΄ μ’ λ ꡬ체μ μΌλ‘ μκ°μ ν΄λ΄μΌ ν κ² κ°λ€.
- PairProgramming μ΄ μλ Solo μΈ κ²½μ°μ μ£Όμμ μ νΉμ΄ λ§λ€. -_-; μμμ μΌλ‘ ν΄μμκ°μ 10λΆμ λ λ°°λΉμ νμ§λ§, Iteration 3 λ νμ€ν μ§μ€λκ° λ¨μ΄μ‘λ€.
- UserStory μ μμ±κ³Ό EngineeringTask λΆλΆ μμ±μμ μ λ§€λͺ¨νΈνκ² μ΄ λΆλΆκ³Ό μμ΄λ¨Ήκ³ κ³ λ €νμ§ μμ λΆλΆμ΄ μμλ€. (μ΄λ νλ λ€ν΅μλ₯Ό μΉλ€. -_-;) λ무 볡μ‘ν΄μλ μλκ² μ§λ§, μ€μν μ¬νλ€μ λν΄ μμ΄μλ μλ κ²μ΄λ€.