2009年11月15日 星期日

Use Case Diagram

Use Case:
(1)紀錄系統一連串的動作。
(2)表示系統的目標(Goal)。
Actor:
為有參與某Use Case的人、系統、機器等。
Classifier:
為Use Cases適用的場所或所包含的主題。

Use Case的關係:
Use Case可以Split出Sub Use Cases。主Use Case與Sub Use Case之間的關係有:
(1)include:
表示主Use Case的動作必會有Sub Use Case的動作。
(2)extend:
表示主Use Case在某一個情況下才會有Sub Use Case的動作。

CMMI-需求發展

目的:
產出並分析客戶、產品及產品組件的需求。
包含的活動:
  • 誘導、分析、驗證,以及溝通客戶的需要、期望及限制,以獲得客戶需求,並達成關鍵人員的共識
  • 蒐集和協調關鍵人員的需要
  • 發展產品的生命週期需求
  • 建立客戶需求
  • 建立與客戶需求一致的原始產品及產品組件需求
SG1發展客戶需求
SP1.1 誘導需要
SP1.2 發展客戶需求
SG2發展產品需求
SP2.1 建立產品與產品組件需求
SP2.2 配置產品組件需求
SP2.3 界定介面需求
SG3分析並確認需求
SP3.1 建立操作概念及劇本
SP3.2 建立必要功能的定義
SP3.3 分析需求
SP3.4 分析需求以取得平衡
SP3.5 確認需求

HTTP

可視為Client/Server的一種應用。用戶端透過瀏覽器向Web Server發送HTTP Request。Web Server回應HTML給瀏覽器。
HTTP的流程如下:








HTTP Header:
Server 可以透過HTTP Header了解客戶端的需求。
包含的資訊如下:
(1)HTTP 方法:
GET、POST。
(2)欲瀏覽的資源:
以URL表示。
(3)HTTP的版本
(4)MIME格式及版本
(5)壓縮及編碼格式
(6)支援語系
(7)內容大小(Server回應的內容)

TCP Client/Server

Server:
Server的流程如下圖:



















(1)Socket:建立Server端Socket。
(2)Bind:設定Server端的IP Address與Port。
(3)Listen: 一直接聽來自TCP Client的連結。
(4)Accept:處理來自TCP Client的連線,包含接受來自TCP Client的Data以及傳送Data給TCP Client。
(5)Close:關閉Server端與Client端的連結。

Client:
Client的流程如下圖:

















(1)Socket:建立Client端的Socket,並設定Server的Web Address(http://)或IP Address以及Port。
(2)Connect:建立Client到Server的連線。成功建立後,即可做傳送及接收的動作。
(3)Close:關閉Client與Server的連線。

Linux-dbus

D-Bus為IPC的一種實現,通常應用於桌面應用程式和作業系統的溝通。D-Bus可適用於GNOME與KDE兩大桌面環境。

D-Bus Bus:
(1)System Bus:
為os使用。
(2)Session Bus:
當使用者登入時啟用,為使用者個人私有。

D-Bus Matcher:
基於interface、Path、Method來進行指定規則。

D-Bus Message:
(1)Content:
來源位址和目的位址,這些位址為物件路徑。
(2)類型:
method calls、method returns、signal、error。

D-Bus Service:
應用程式可以使用一個bus來註冊一個服務。

D-Bus Example:
(1)Sender:
底下為搭配GLib Event Loop的範例。首先,建立一個GLib事件迴圈,然後獲得一個Session Bus。並將D-Bus事件加入到GLib Event Loop中。

(2)Listener:
底下為搭配GLib Event Loop的範例。程式會一直監聽bus來的message,當符合matcher的規則時,則會觸發預設搭配的函式。

2009年9月16日 星期三

Ubuntu更新到9.10

按下"ALT+F2",出現command box,然後輸入"update-manager -d"。
之後,update manager 就會出現9.10 upgrade,按下upgrade即開始更新。

launchpad

網址:
https://launchpad.net/
原本是讓使用者回報ubuntu的bug,及參加ubuntu相關的freeware project。
現在也可以把自己的project放在launchpad上,但前提是你的project是freeware。
如果要以非freeware放在launchpad上,則要收取每年每個project$250的費用。

git

git: 分散式的subversion

下載git:
windows version:
http://code.google.com/p/msysgit/downloads/list
linux version:
http://git-scm.com/download

安裝git:
在windows,首先需安裝Cygwin,再安裝git。

新增git repository:
首先在程式集點選Git Bash,假設以C:/GitStuff/當repository,先進入C:/GitStuff/,然後下指令git init。此時資料夾內會出現.git的隱藏資料夾。

新增檔案:
首先新增一個檔案,指令為:touch test.txt。先add 此檔案,指令為:git add test.txt。再commit上去,指令:git commit -m "Commit Test"。

看log檔案:
若要看所有的log,可下指令:git log -a。

2009年9月3日 星期四

取得目前的作業系統

使用System::OperatringSystem類別。
可參考(http://msdn.microsoft.com/zh-tw/library/system.operatingsystem.aspx)
例子如下:
System::OperatingSystem^ osver = System::Environment::OSVersion;

32bit OS(XP, Vista, 7):
osver->Platform == System::PlatformID::Win32NT
XP:
osver->Version->Major == 5 && osver->Version->Minor == 1 (Major = 5, Minor = 1)
Vista:
osver->Version->Major == 6 && osver->Version->Minor == 0 (Major = 6, Minor = 0)
7:
osver->Version->Major == 6 && osver->Version->Minor == 1 (Major = 6, Minor = 1)

2009年7月20日 星期一

CMMI流程領域

CMMI流程領域可分為四類,分別為:支援、工程、專案管理、流程管理。
支援類:
原因分析與解決方案、決策分析與解決方案、度量與分析、流程與產品品質保證、建構管理。
工程類:
確認、驗證、產品整合、技術解決方案、需求發展、需求管理。
專案管理:
量化專案管理、風險管理、整合的專案管理、供應商協議管理、專案監控、專案規劃。
流程管理:
組織訓練、組織流程績效、組織流程定義、組織創新與推展、組織流程專注。

若以階段來分,可區分如下:
階段二:
需求管理、專案規劃、專案監控、供應商協議管理、度量與分析、流程與產品品質保證、建構管理。
階段三:
需求發展、技術解決方案、產品整合、驗證、確認、組織流程專注、組織流程定義、組織訓練、整合的專案管理、風險管理、決策分析與解決方案。
階段四:
組織流程績效、量化專案管理。
階段五:
組織創新與推展、組織創新與推展。

2009年7月17日 星期五

Unit Test Tool - .NET

Reference:
首先在Project->properties中加入Microsoft.VisualStudio.QualityTools.UnitTestFramework這個reference。
Class:
常用的Class為Microsoft.VisualStudio.TestTools.UnitTesting.Assert。
Links:
UnitTesting的介紹為:http://msdn.microsoft.com/zh-tw/library/microsoft.visualstudio.testtools.unittesting.aspx
Assert的方法介紹為:http://msdn.microsoft.com/zh-tw/library/microsoft.visualstudio.testtools.unittesting.assert_methods.aspx
範例:
(1)比較兩個數字
double firstnumber = 10.0;
double secondnumber = 20.0;
double delta = 9.0;///兩個數字的差異大於此數字即判為不同
Microsoft::VisualStudio::TestTools::UnitTesting::Assert::AreEqual
(firstnumber,secondnumber,delta);
(2)比較兩個物件
Microsoft::VisualStudio::TestTools::UnitTesting::Assert::AreEqual
(this->label1,this->label2);

2009年7月16日 星期四

CMMI流程領域組件

CMMI流程領域組件可以分為三大類:
(1)必要的組件 (成果):
說明一個組織要滿足某一個流程領域所需要達成的成果。
(2)期望的組件 (作法):
說明一個組織要達成某一個必要的組件所需要執行的作法。
(3)助益的組件 (細部描述):
提供細部描述以協助組織開始著手思考,如何達成必要的組件與期望的組件。

每個相關組件描述如下:
流程領域:
一個領域下相關執行方法的集合,當它們共同執行時,滿足一系列被視為對改善該領域是重要的目標。例如:建構管理(CM)、組織訓練(OT)。
目的:
說明流程領域的目的。
前言:
說明流程領域所涵蓋的主要觀念。
相關流程領域:
列出與流程領域有關的流程領域參考資料,並反映流程領域間高層級的關係。
特定目標 (SG):
描述必須用來滿足該流程領域唯一的特徵。
一般目標 (GG):
必須能夠呈現執行流程領域流程制度化的特徵。
特定目標與執行方法摘要:
提供特定目標高層的摘要。
特定執行方法 (SP):
一種活動的說明,它對達成相關的特定目標是重要的。
典型的工作產品:
列出特定執行方法所產出的範例。
細部執行方法:
一個詳細說明,提供解釋與執行特定或一般執行方法的指引。
一般執行方法 (GP):
達成相關的一般目標之重要活動。
一般執行方法的詳細說明:
提供指引以說明一般執行方法要如何應用於流程領域。
註釋:
緊密附帶在任何其它模式組件的文字。它可能提供細節、背景或原由。
範例:
包含文字與項目清單的組件,通常用框線加以區隔。
強化:
一個與特定專業領域有關的註釋或範例。
參考資料:
指相關流程中附加或是更詳細的資訊。

CMMI 表述

CMMI表述可分為連續式表述與階段式表述。連續式表述為一組織可以選擇改善單一流程的績效,因此可能多個流程改善至不同等級。等級的描述為能力度等級。階段式表述為組織選擇系統化的方式,一次一階段改善流程。等級的描述為成熟度等級。
能力度等級的各等級描述如下:
0,不完整級:
一個沒有執行或部分執行的流程。
1,執行級:
已執行流程是滿足流程領域特定目標的流程,它支援並使所需工作能夠產出工作產品。
2,管理級:
它會根據政策規劃與執行流程;任用具備技能的人員,並給予足夠的資源以產出可控制的產品;納入相關的關鍵人員;監督、控制及審查;並評估遵循流程說明的程度。
3,調適級:
流程根據組織的調適指引調適組織標準流程,並納入工作產品、度量與其他流程改善資訊至組織流程資產。
4,量化管理級:
使用適當的統計和其它量化的技術進行控制。建立品質和流程績效的量化目標,並以該目標為管理流程的準則。
5,最佳化級:
利用瞭解流程中的共同變異原因,改善流程。最佳化流程以漸進與創新的改善,專注於持續改善流程績效。
成熟度等級的各等級描述如下:
1,初始級:
過度承諾的傾向、在緊急關頭放棄流程,以及沒有能力複製成功經驗。
2,管理級:
工作產品的狀況及服務的交付情形,在已定義的時間點是可以透明管理的。承諾是由相關的關鍵人員所建立,並視需求修訂。
3,已定義級:
一個已調適流程清楚地說明目的、輸入、允入準則、活動、角色、度量、驗證步驟、輸出,允出準則。
4,量化管理級:
組織與專案針對品質與流程績效建立量化目標,並使用它們當做管理流程的準則。
5,最佳化級:
透過漸增與創新流程及技術改進,專注於持續改善流程績效。

2009年7月15日 星期三

Unit Test Tool-JUNIT

下載:
可以從官方網站去下載(http://junit.org)
classpath:
將下載的jar檔解壓縮,把junit.jar的路徑設在Classpath環境變數。
例如:C:\java\junit4.6\junit-4.6.jar;
測試method:
底下為相加的method。

package Pingchi.Test;

public class MathTool {

public static int Add(int num1, int num2)

{

int r = num1 + num2;

return r;

}

}

Test Case:
底下為測試範例

package Pingchi.Test.UnitTest;

import Pingchi.Test.MathTool;

import junit.framework.TestCase;

public class MathToolTest extends TestCase

{

public void testAdd()

{

assertEquals(15, MathTool.Add(10,5));

}

public void testAdd2()

{

assertEquals(13, MathTool.Add(3,6));

}

public static void main(String[] args)

{

junit.textui.TestRunner.run(MathToolTest.class);

}

}

上面的範例,輸出的結果為第一個PASS(15 = 10 + 5),第二個Fail(13 != 3 + 6)

2009年7月14日 星期二

Compile NSIS Script file

使用C:\Program Files\NSIS\makensis.exe這個執行檔。
使用方法如下:
Dos:
"C:\Program Files\NSIS\makensis.exe" Test.nsi
Cygwin:
/cygdrive/c/Program\ Files/NSIS/makensis.exe Test.nsi

2009年6月30日 星期二

Regular Expression in .NET

使用的範例如下:
Regex^ rx = gcnew Regex("[0-9]*[a-z]*.*");///字串的詳細寫法可參考下面網址
String^ str = "012abc";
if(rx->match(str)->Success)
{
this->textBox1->Text = str;
}
///記得"\"前面需要再加個"\",變成"\\"。
可參考網址:
(1)http://www.codeproject.com/KB/dotnet/regextutorial.aspx
(2)http://msdn.microsoft.com/en-us/library/hs600312.aspx
(3)http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.aspx

2009年5月19日 星期二

Compile & execute NetBean Project

下載:
http://ant.apache.org/
系統變數:
在系統變數中,Path加入Ant的bin資料夾,例如:C:\apache-ant-1.7.1\bin。
Compile:
在NetBean Project的資料夾下,輸入 Ant jar。
接者會出現dist資料夾,裡面會有包好的jar。
Execute:
在dist資料夾輸入java -jar xxx.jar,即執行包好的jar。

Ghost 教學

網路上有Ghost備份及還原的教學
可參考
http://www.juee.com.tw/bartender/ghost.htm

2009年5月18日 星期一

利用java code來使用svn

可以使用SVNkit http://svnkit.com/
下載之後,在compile的時候,要把需要的jar放在classpath。
例如:javac -cp "svnkit.jar" SVNTest.java。
執行為:java -cp "svnkit.jar" SVNTest

在dos中使用svn

在系統變數中,
在Path變數,新增cygwin的bin 資料夾,例如:C:\cygwin\bin。
即可使用。

2009年5月17日 星期日

vista , 7 修改開機選單

1. Start Menu->All Programs->Accessories->Command prompt(在上面點右鍵選擇"Run as administrator")

2. bcdedit /set {current} Description "Windows 7 Home Basic"

3. bcbedit /default {current}

4. Running bcdedit /?

build visual studio project

Dos:
1.首先執行
"C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"
即會幫你設定環境變數
2.然後到專案的資料夾
輸入
devenv WinForm.sln /build debug(release)
devenv WinForm.sln /run
若沒有bug,即可執行。
Cygwin:
若要有stdout,則要使用另一個執行檔(devenv.com)。
使用的指令如下:
/cygdrive/c/Program\ Files/Microsoft\ Visual\ Studio\ 9.0/Common7/IDE/devenv.com Test.sln /build debug > Test.txt

bat的指令教學(1)

完整的教學參考:

整理如下:
(1)echo
輸出命令
例如:echo hello world
則輸出:
hello world

(2)@
在bat執行過程中不出現所使用的命令。
例如:@echo hello world

(3)Rem
註解用。
例如:@Rem This is a comment.

Mantis安裝

1.首先安裝
appServ
包含(mysql, apache, php)
2.安裝mantis
將mantis資料夾放在C:\AppServ\www下。
進入http://localhost:8080/mantis/admin/index.php做初始的設定。
設定的修改可參考
記得其中的設定要改為$g_graph_font= 'chinese_big5';
這樣就可以開始使用Mantis