E D R , A S I H C RSS

NSIS Ide

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μ‹œκ°„μ— ν•  수 μžˆλŠ” μ–‘ μ •λ„λ‘œ 계산. (μ•„.. μ—¬μ „νžˆ 이거 계산법이 λͺ¨ν˜Έν•˜λ‹€. μ€ λ” μ œλŒ€λ‘œ 곡뢀해야겠닀.)
  • .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

Second Iteration :
  • CInnerProcess Class 0.5
  • Output Window 0.5 - 1 * 2 = 2

Last Iteration :
  • Script λ‘œλΆ€ν„° Output 이 될 Target ν™”μΌμ˜ 뢄석 & 이름 κ°€μ Έμ˜€κΈ° - 0.7
  • Load / Save MDI Framework μ™€μ˜ μ—°κ²° - 0.7 - 1.4 * 2 = 2.8


6. 진행

6.1. Iteration 1 (1:00 ~ 3:00)

μΆ”κ°€ Task : Load / Save MDI Framework μ™€μ˜ μ—°κ²°

ν˜„μž¬ μ™„λ£Œλœ Task
MDI Framework
Rich Edit Control CView 에 뢙이기. 0.5
화일 Save / Load 0.8
= 1.3

쀑간 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 μ™„λ£Œ.
좔가사항:
κ³ λ €ν•  사항
- NsisProcess λŠ” 어디에 속해 μžˆλŠ” 녀석인가? -_-a
-> 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)

8. μ‹€ν–‰ ν™”λ©΄

9. 고쳐야 ν•  버그

  • ν™”λ©΄μ˜ 에디터와 μ‹€μ œ 데이터 μ €μž₯λ˜λŠ” 뢀뢄이 updateκ°€ μ œλŒ€λ‘œ μ•ˆλœλ‹€.
  • 화일크기 κ΄€λ ¨ 8kb λΈλ§Œμ˜ λ°μ΄ν„°λ§Œ μ²˜λ¦¬κ°€λŠ₯.

10. 평가

  • MFC 와 μ—°κ²°λ˜λŠ” 뢀뢄에 λŒ€ν•œ TestFirstProgramming 을 μ œλŒ€λ‘œ 지킀지 λͺ»ν–ˆλ‹€. (μ•„.. GUI 뢀뢄은 μ• λ§€ν•˜λ‹€. --;) μ• λ§€ν•œ 뢀뢄에 λŒ€ν•΄μ„œ μ˜ˆμ „μ— ν•˜λ˜ 방식이 μ„žμ΄λ‹€ λ³΄λ‹ˆκΉŒ 리듬이 κΉ¨μ‘Œλ‹€. 차라리 μ² μ €ν•˜κ²Œ TFP둜 κ°€λŠ”κ²Œ λ‚˜μ•˜μ—ˆμ„ν…λ° ν•˜λŠ” 생각이 λ“€μ—ˆλ‹€.
    • ν•˜μ§€λ§Œ, View/Document ꡬ쑰가 ν•œνŽΈμœΌλ‘œλŠ” 방해물이.. μ΄λΈ λ””μžμΈμ΄ λ˜μ–΄λ²„λ¦° Framework 의 경우 μ–΄λ–»κ²Œ μ μš©μ„ μ‹œμΌœλ‚˜κ°€μ•Ό ν• κΉŒ. 일단 주둜 μ•Œκ³ λ¦¬μ¦˜κ³Ό κ΄€λ ¨λœ 뢀뢄에 λŒ€ν•΄ Test CodeλΌ λ§Œλ“€κ²Œ λ˜μ—ˆλ‹€. 계속 생각해봐야 ν•  문제일 것이닀.
  • AcceptanceTest λΌ μ€‘κ°„μ— 지 μ‹œκ°„μ„ ν• λ‹Ήν•˜μ§€ λͺ»ν–ˆλ‹€. (μ†”μ§νžˆ GUI 뢀뢄이 λ“€μ–΄κ°€λŠ” 뢀뢄에 λŒ€ν•΄ 감이 였질 μ•Šμ•˜λ‹€. 전에 Web Programming λ•Œμ—λŠ” 직접 HTTP Protocol을 이용, μ›Ήμ„œλ²„λ‘œλΆ€ν„° λ°›μ•„μ˜¨ HTML λ¬Έμ„œλΌ Parsing ν•œ λ’€ κ·Έ 결과에 λŒ€ν•΄ Test CodeλΌ μž‘μ„±ν•˜λŠ” μ‹μ΄μ˜€λŠ”λ°.. (κ·Έλž˜λ„ Manual Test λͺ©λ‘μ΄λΌλ„ μž‘μ„±ν•΄ λ‘μ—ˆμ–΄μ•Ό ν–ˆλŠ”λ° 이건 κ³„νšλ‹¨κ³„μ˜ μ‹€μˆ˜λΌ 생각)
    • 아이디어 λ– μ˜€λ₯Έ 것쀑 ν•˜λ‚˜ - 마우슀 맀크둜 ν”„λ‘œκ·Έλž¨κ³Ό μ—°λ™ν•΄μ„œ μ“°λŠ”κ±΄ μ–΄λ–¨κΉŒ. -_-a μ•„λ‹ˆλ©΄ Message λΌ λ³΄λ‚΄λŠ” μ‹μœΌλ‘œ ν•˜λŠ” 방법, DLL을 μ‚½μž…ν•˜λŠ” 방법.. 이건 μ€ λ” ꡬ체적으둜 생각을 해봐야 ν•  것 κ°™λ‹€.
  • PairProgramming 이 μ•„λ‹Œ Solo 인 κ²½μš°μ—” μ£Όμœ„μ˜ 유혹이 λ§Žλ‹€. -_-; μ˜μ‹μ μœΌλ‘œ νœ΄μ‹μ‹œκ°„μ„ 10뢄정도 배당을 ν–ˆμ§€λ§Œ, Iteration 3 λ•Œ ν™•μ‹€νžˆ 집쀑도가 λ–¨μ–΄μ‘Œλ‹€.
  • UserStory 의 μž‘μ„±κ³Ό EngineeringTask λΆ€λΆ„ μž‘μ„±μ‹œμ— 애맀λͺ¨ν˜Έν•˜κ²Œ μ“΄ λΆ€λΆ„κ³Ό μžŠμ–΄λ¨Ήκ³  κ³ λ €ν•˜μ§€ μ•Šμ€ 뢀뢄이 μžˆμ—ˆλ‹€. (μ΄λŠ” ν›—λ‚  λ’€ν†΅μˆ˜λΌ μΉœλ‹€. -_-;) λ„ˆλ¬΄ λ³΅μž‘ν•΄μ„œλ„ μ•ˆλ˜κ² μ§€λ§Œ, μ€‘μš”ν•œ 사항듀에 λŒ€ν•΄ μžŠμ–΄μ„œλ„ μ•ˆλ κ²ƒμ΄λ‹€.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:50
Processing time 0.0392 sec