2008年9月30日 星期二

802.11網路概論


802.11a所規範的實體層,主要以正交分頻多工(orthogonal frequency division multiplexing,簡稱OFDM)技術為基礎,來提升傳送的速率(跟802.11比起來)。

OFDM-Orthogonal Frequency Division Multiplexing 正交分頻多工:是一種高效率的多通道調變解調變技術。利用離散快速傅利葉轉換(FFT)和反快速傅利葉轉換(IFFT)來調變和解調變傳送的訊號。可使用的頻寬被劃分為多個狹窄的頻帶,資料就可以被平行的在這些頻帶上傳輸。

以無線電波(radio wave)為實體層,還須要比較複雜的PHY。
802.11將PHY進一步劃分為兩個組成元件:
一個是實體層收斂程序(Physical Layer Convergence Procedure簡稱PLCP),負責將MAC訊框對應到傳送媒介;
另一個是實際搭配媒介(Physical Medium Dependent,簡稱PMD)負責傳送這一些訊框。

PLCP橫跨MAC與實體層,在802.11網路中,PLCP將PLCP將訊框傳至空中之前,會在其中加入一些欄位。



802.11四種實體元件
1. Station:工作站-配備無線網卡的行動裝置
2. Access Point:基地台-位於工作站與傳輸系統之間的橋接器
3. Wireless medium:無線媒介-802.11標準以無線媒介在工作站之間傳遞訊框。其所定義的實體層不祇一種;這一種架構充許多種實體層同時支援802.11 MAC。
4. Distribution System:即有線骨幹網路-當幾部基地台串連以覆蓋較大區域時,彼此之間必須相互通訊,纔能夠掌握行動式工作站的行蹤。而傳輸系統(distribution system)屬於802.11的邏輯元件,負責將訊框(frame)轉送到目的地。



網路類型
Basic Service Set,簡稱BSS:由一組彼此通訊的工作站所構成。工作站之間的通訊的區域稱為Basic Service Area
而BSS又主要分為兩種:Independent BSS(IBSS)、Infrastructure BSS
Infrastructure BSS:如有必要與其它工作站通訊,必須經過兩個步驟
(1). 首先,由啟始對話的工作站將訊框傳遞給基地台
(2). 其次,由基地台將此訊號框轉送至目的地
換句話說,成員之間的通訊必需要通過Infrastructure
Independent BSS(IBSS):在成員之間,若互相在通訊範圍內的話,不需透過Infrastructure,成員之間可以直接通訊



Extended Service Set:簡稱ESS:將幾個BSS串連為ESS,所有位於同一個ESS的基地台將會使用相同的組合識別碼(service set identifier,簡稱SSID)



為了讓ESS裡的工作站能夠彼此通訊,無線媒介必須能在第二層進行連線,由於基地台扮演橋接的角色,因ESS裡的工作站若要彼此通訊,則骨幹網路必需在第二層連線。第一代基地台必需透過Hub或virtual LAN才能與第二層連線,新型的產品中已內建tunneling技術,可以模擬第二層的連線環境。

802.11所提供的行動性,存在於鏈路層的基本服務組合之間。鏈路層以上究竟發生什麼事,它並無法理解。在部署規劃802.11時,網路工程師必需特別小心,好讓網路層的工作站IP位址,可以在實體層進行無間隙轉換(seamless transition)時被保存下來。就802.11而言,基地台出現三種轉換
1. 不轉換:在同一個BSS中
2. BSS轉換:在同一個ESS中,但是,BSS不相同



3. ESS轉換:在802.11中,並不支援這一種轉換~最多就是把之前的連線關掉,連上新的ESS。而這個就是handover,在同質無線網路中,就是所由的水平式的handover,在異質網路中,就是垂直的handover。在802.21就是提出來讓802.X中異質網路可以達成無間隙的handover。

無線網路導論

無線網路優點
1. 行動性
2. 部署容易、建置快速
3. 彈性
4. 後期成本低

Wireless bridge (無線橋樑)
Access Point (無線基地台)
Wireless Interface (無線網卡)

無線網路所使用的媒介不像實體線纜有明確定義的路徑,而祇是經過特殊編碼與調變過的無線電波鏈路。

IEEE標準 速度 頻段 附註
802.11 1Mbps 2Mbps 2.4 GHz 首份PHY標準(1997)。同時支援跳頻與直接序列調變技術。
802.11a 最大可到54Mbps 5GHz 第二份PHY標準(1999),產品遲至2000年末才推出
802.11b 5.5Mbps 11Mbps 2.4GHz 第三份PHY漂準
802.11g 最大可到54Mbps 2.4GHz 第四份PHY標準(2003)


無線電本質上屬於一種廣播媒介。一部工作站進行傳送時,所有其它工作站祇能聆聽。基地台的角色有一點像是以往的分享式Ethernet集線器,每一部基地台的傳輸能力固定,且必須由所有連線用戶共享。要增加網路的容量,網管人員必須添加基地台,同時縮小現有的基地台的覆蓋範圍。

無線網路工作原理?
什麼是無線網路系統呢?

2008年9月27日 星期六

UML

這一個學期一開始本來要選的課「物件導向程式設計」中使用的課本有提到UML這一個東西~讓我花了一點時間去找相關的資料~耶~針對物件導向程式設計(Java/C++)感覺好像很有用耶~
雖然還沒有開始讀,但是,我已去圖書管借了3本書回來看了~

總之呢~UML是就幫助我們了解程式的文件的一種,而主要是由圖型來表示~若我們在閱讀其他人程式的時候,若直接去由程式碼下去看,若程式很小時那還好,但是,若程式非常龐大,我們就必需要假定它其它部分是沒有問題了,而只去看我們要修改或是負責的部分~但是,還是要了解整個系統的架構,這個時候就必需要看文件或是架構圖~就好像建房子一樣,我不可能去看每一個角落是怎麼建立的~每一個人都要負責好自己的地方~interface的要建構好~

就好像硬體-韌體-軟體
每一個都有自定好的interface給上面使用,而上面的人只要依照下層給的規格去建立自己的程式,有問題再跟下面反應,這就是分層的觀念~

以下節錄至網路上:


UML是什麼?
UML是Unified Modeling Language的簡稱,中譯為「統一塑模語言」。其中:
●Unified:UML是一種標準語言,廣泛運用於全世界。
●Modeling:UML用途在於塑模(Modeling),也就是畫軟體藍圖。
●Language:UML是一種塑模語言,而非程式語言或標示語言。
也就是說,UML是軟體系統發展人員用以建造模型,而這些模型使得工作團隊能夠:將系統具象化(Visualization)、將系統結構及行為規格化 (Specification)、建構(Construction)系統、以及記錄(Documentation)發展系統過程中之各項決策。

什麼是塑模?
作曲家會將其腦袋中的旋律譜成樂曲,建築師會將其設計之建築物畫成藍圖,行銷廣告人員會將其創意製作成簡報;這些樂曲、藍圖及簡報就是模型(Model),而建構這些模型的過程就稱為塑模(Modeling)。
軟體開發如同音樂譜曲及建築設計,其過程中也必須將需求、分析、設計、實作、佈署等各項工作流程之構想與結果予以呈現,這就是軟體系統之塑模。

為什麼要塑模?
絕大部份的音樂演奏都需要樂譜(除了少數即性式表演外)!
絕大部份的建築施工都需要藍圖(除非要蓋的是一間狗屋)!
同樣的,所有軟體系統的建構最好都有適當的分析設計藍圖,因為軟體開發的過程絕對不是任意的、隨性的、且戰且走的、天馬行空的。
UML在軟體塑模中所扮演的角色是什麼?
軟體發展之方法論中包含了程序(Process)及表示法(Notation)兩個部份,其中:
●程序指的是系統開發的流程,例:瀑布模式、漸增模式、擴展模式、雛型模式、螺旋模式等。
●表示法指的是建構軟體模型中所會用到之符號及規則。
UML所涵蓋的內容是表式法而非程序,UML是與程序無關的(Process Independent),也就是說,無論以任何程序來開發軟體系統,都可以使用UML來建構軟體模型。
UML與物件導向方法之關係
●UML之訂定與物件導向方法的確有非常密切之關係。
●UML中的各種符號及規則與物件導向語言(Java,C++)之結構有完整對應。
●但是,UML絕對不僅限用在物件導向軟體開發,UML中有些概念與圖形甚至可說是與物件導向無關,
例:Use Case Diagram及Statechart Diagram
●因此,軟體開發時無論是否採用物件導向方法,UML都是適用的。

UML的重要性
●UML是OMG公佈的官方標準。
●UML已為全世界軟體業者所廣泛採用,各大軟體公司(Microsoft、IBM、Oracle等)
在其產品中均支援UML。
●UML的應用領域越來越廣(資料庫設計、韌體設計、資訊管理等)。

UML的現行版本
UML現行版本為1.5版(http://www.omg.org/technology/documents/formal/uml.htm),但2.0版將近完成,應會在短期內正式公佈(http://www.omg.org/uml)。

UML的內容到底是什麼?
UML對於軟體開發相關人員而言,其實就只是一組符號及規則,其中包括:
1.Basic Building Blocks(都有其相對的符號)
(1) Things
●Structura˙Things:Class、Interface、Collaboration、Use Case、Active Class、Component、Node
●Behaviora˙Things:Interaction、State Machine
●Grouping Things:Package
●Annotation Things:Note
(2) Relationships:Association、Generalization、Dependence、Realization
(3) Diagrams
●Structural:Class、Object、Component、Deployment
●Behavior:Use Case、Activity、Statechart、Sequence、Collaboration
2.Rules(符號的使用規則)
Name、Scope、Visibility、Integrity、Execution
3.Common Mechanisms(各類符號及圖形通用的機制)
Specification、Adornments、Common Division、Extensibility Mechanisms

如何學習UML?
●找本淺顯易懂的入門書籍,先掌握UML的全貌,千萬不要被過多抽象的軟體工程專有名詞所絆住。記住:UML只是一組符號而已!
●先學習讀圖,讓自己先習慣於UML之各種符號,尤其注意UML中以擴充機制(Extensibility Mechanisms)所產生之符號,此部份最容易使初學者迷惑。
●練習畫圖,訓練自已將心中之構想以UML符號呈現出來,注意各類符號之正確表示法,不要隨意更改之。
●選用適當之CASE工具,Rationa˙Rose,Microsoft Visio,Borland Together都是很好的軟體工具。
如何應用UML於軟體開發?
●選擇一個適當之開發程序(Process),例:RUP
●選擇一個適當之UML發展工具,例:Rationa˙Rose
●相關人員接受完整之訓練

參考資料:
淺談UML
為何要使用 UML?

頻寬

這裡要說明頻寬這一個東西~
其實早在碩一上剛進來的時候,就要先了解無線網路通訊的DSRC的基本觀念~
那一個時候還沒有無線是波的觀念~所以,一直搞不懂什麼是頻寬,難到是每一秒傳多少單位的頻寬嗎?

直到現在才真的有一點概念了~
不過,除了類比和數位訊號的差別,主要的是由這裡來得知的知識~

當然要整理一下囉~

頻率:一個波在一秒鐘震動的次數 也就是說 1Hz代表一秒鐘震動一次,1KHz代表一秒鐘震動1,000次,1MHz代表一秒鐘震動1,000,000次!!!

無論是有線電與無線電傳輸都有一個中心頻率在,ADSL的傳輸頻率在25KHZ~1.1MHz,手機的傳輸頻率大家都知道900MHz(or 1800MHz)

電學上的頻寬:而我們在這裡有說過,在傳送端與接收端產生一個相同頻率與相位的載波是不容易的,且訊號在傳送的過程中,有可能會有些微的變化,因此,當你設定傳送出去的訊號頻率為G Hz,那它會有一個頻寬B Hz,就就是說在G正負B/2 Hz都是屬於這一個訊號的傳送接收範圍~這就是無線通訊常說的頻寬(也就是要接收的頻率範圍)~

電學上的頻寬:也就是說有線電與無線電傳輸都有一個中心頻率,這裡不直接說頻率而說"中心頻率"因為在傳輸電波的過程中頻率其實並不是固定的,因為傳輸信號的時候因為解調變的動作以及傳輸資料的大小(以無線電來說聲音也是資料的一種),頻率會在一個範圍裡面上下波動,這個波動的範圍就是所說的頻寬,可以想像一下假設一個頻率代表一條線,如果有10個頻率就代表同時有10條線在傳輸資料,相對的傳輸的資料量就可以增加。因此無線電裡面所說的頻率455MHz頻率,頻寬5KHz的意思其實是中心頻率455MHz做上下2.5KHz範圍的移動!!(但是中間會相隔 0.5KHz的帶寬,所以實際上只有4個帶寬在用)

保護帶:而另外一提的~每個通道頻寬B Hz,為了防止互相干擾,通道間以沒有使用的頻譜(稱保護帶guard band)做分隔~

而無線的頻率高跟低其實跟傳送資料的速率是沒有關係的~頻率高不代表頻寬越大(這裡指的應該就是傳送速率),就好比數字由1~10,他的內容絕不會超過10,數字91~100他的內容也絕不會超過10,頻率越高他的衰減db值越大,有線與無線都一樣

剛才提過ADSL的頻率範圍是25KHZ~1.1MHz,也就是說以電學的角度來看,ADSL的頻寬將近1.1MHz,不過這裡就產生了另外一個問題!! 中華電信不是都說寬頻的頻寬有2~8M嗎?這裡指的並不是剛才所說的真實頻寬!!2~8M所說的是經過數位調變並且壓縮之後的"傳輸速率"!!!他只是經過換算之後對比電學傳輸頻寬的寬度.

而附帶一提的是,中華電信給我們的ADSL的傳送速率是bit/sec為單位
而我們電腦使用的是計算速率是以byte/sec為單位
而1 byte=8bit

參考資料:
有線電跟無線電所指的頻寬是否相同?

Office 2007 建立PDF檔案

在網路上找到這一篇文章~
嗯,其實我覺得透過Office自己轉似乎比較好一點哩~

直接到微軟網站下載

安裝完後,在檔案另存新檔會出現另為PDF檔,就這樣。以下有網站可以參考~

Office 2007 建立PDF檔案

無線的基本概念~

這一個禮拜完全沒有進度~
因為,我生病了~

那就把之前的進度拿出來寫吧~

前不久去參加「通訊系統模擬課程訓練與推廣」、「異質無線網路整合與漫遊技術研討會」。
對我這一個無線網路初學者都算是有收護啦~
不過,真的只是概念而以~

首先,先介紹一下無線網路的非常基本的概念吧~
這是在「通訊系統模擬課程訓練與推廣」學到了~
這一門課是教說如何透過Matlab去模擬數位訊號與類比訊號之間的轉換~

訊號的轉換的種類
類比訊號-類比訊號-類比訊號(例如廣播)
數位訊號-類比訊號-數位訊號(用數據機上網)
類比訊號-數位訊號-類比訊號(視訊會議系統)
數位訊號-數位訊號-數位訊號(數位資料編碼)

在真實世界中,在傳送訊號有傳送端與接收端~
傳送端:調變(modulation)
接受端:解調(demodulation)
有點像是編碼與解碼~
另外有一點要注意的是,傳送端與接收端必需使用相同的載波(也就是轉換function和inverse function),才能把原來的訊號解析出來~

這裡有課堂上使用到的例子,我覺得還蠻清楚的,就把它記錄下來吧~
這一些對有上過通訊系統的課的人應該會覺得很簡單吧~

基頻訊號:是指未經調變等方式處理過的自然訊號(可以為類比或數位型式),如語音和影像訊號。
載波:是指被調製以傳輸信號的波形,一般為正弦波。一般要求正弦載波的頻率遠遠高於調製信號的頻寬,否則會發生混疊,使傳輸信號失真。

訊號頻率遷移(訊號調變技術)屬於前述第一種類型之轉換。此轉換(類比調變)是將原始的基頻訊號轉換到高頻的訊號,經由類比調變後的高頻訊號稱為已調變訊號(modulated signal)。

大家已熟知一般無線通訊系統之收發機都需要天線將訊號做幅射或接收,依據天線理論,天線的長度(或大小)與所幅射或接收之訊號的頻率有很重要的關係,例如,常聽到的1/4波長天線表示天線的大小是所要幅射或接收之訊號波長的1/4倍。考量頻率為3 kHz的音頻訊號,其波長為3*10^8/3*10^3=10^5(公尺)
若要直接將此訊號直接幅射,所需天線的長度為10^5/4=25000(公尺)

另外考量一100 MHz的訊號,其波長為3*10^8/100*10^6=3(公尺)
若要幅射或接收此訊號所需天線的長度為3/4=0.75(m)

以上分析可知天線大小是與訊號的頻率成反比的,要傳送的資料訊號為基頻訊號,其頻率都比較低。因此若要以無線方式傳送基頻訊號,考量天線的實際狀況勢必要將基頻訊號轉移至較高的頻帶(透過傅利葉轉換)再傳送,也就是必須有一種「頻率遷移」技術以達到無線傳輸的目的。

前述這種訊號頻率遷移與訊號取回之程序稱為調變(modulation)與解調(demodulation),利用前述之調變與解調技巧可建立一個簡易訊號傳輸系統(如下圖所示),其中稱為載波頻率(carrier frequency);通道可以是有線或無線。


簡易訊號傳輸系統在傳送端與接收端皆使用相同的載波,此種使用相同載波的系統稱為同調系統(coherent system),在傳送端與接收端產生一個相同頻率與相位的載波是不容易的。


另一個觀念:分頻多工
多個相同頻帶的訊號移至不同頻帶使用同一個傳輸媒介傳送的方式,是順理成章的一種多工技術,我們稱之為分頻多工(frequency division multiplexing, FDM)。


一個簡單的分頻多工系統的架構如下圖所示,多工器以載波頻率、和分別將4個輸入訊號調變到不同的頻帶(稱之為通道channel),每個通道頻寬B Hz,為了防止互相干擾,通道間以沒有使用的頻譜(稱保護帶guard band)做分隔,以此方式在單一傳輸媒介內同時傳送4個訊號之目的。


以下這一張圖,就是數位訊號透過類比訊號傳送出去,把真正的數位訊號藏在類別訊號中,也就是數位訊號-類比訊號-數位訊號之間轉換的例子


以下例子是類比訊號-類比訊號-類比訊號中的調幅(改變的是訊號的振幅)
虛線是原始訊號、而實線是實際在空氣中傳送的訊號


以下例子是類比訊號-類比訊號-類比訊號中的調頻(改變的是訊號的頻率)
第一個圖是原始訊號
第二個圖的紫色是調頻之後的訊號
第三個圖是解調頻之後的訊號

2008年9月17日 星期三

軟體工程

最近在決定要修什麼課~
因為,最近在要修改學長的程式~在使用Qt,也就是C++的延伸~
所以,本來預定要選修「物件導向軟體工程」的,但是,很可惜的是,
課程使用的課本是用java語言的,而C++與java又非常的像~
因為,我C++也不是很熟~很怕被同時搞混~
所以,目前決定先不要選「物件導向軟體工程」這一門課~

目前的決定是:
打算選「軟體品質管理」,然後,旁聽「英文」、「 電腦通訊網路」、「 模糊邏輯」。

在聽過我們成大資工軟體大老「朱治平教授」,上的這兩門課之後,對軟體有一些新的認識~

這裡把它整理出來吧~
物件導向出來之前,我們寫一個系統是用功能去細分的,像是一個提款機,它有很多功能,我們就一直把它細分成許多功能~細分成不能在細分之後,就由最小的功能慢慢的寫到整個系統~

而物件導向出來之後,我們就是把系統分成許多「元件」,而「元件」是由許多的物件所組合而成的~而「元件」和「功能」最大的差別在於re-use。
只要可以增加re-use的比率,我們就可以減少re-work的比率,就可以多花一點時間在增加軟體品質上,而什麼叫作軟體的品質,這又是一個大問題~在軟體分為「功能面」與「非功能面」,而非功能面要如何量化~像是如何去計算寫這一個程式要花多少成本,也是一個目前的問題~

而軟體主要的功能有兩個部分~
1. 是輔助的角色:像是嵌入式的系統,主要是focus在硬體上面,軟體只是去如何操作這一個硬體。
2. 是主要的角色:像是office,電腦上的應用程式;硬體只是讓軟體可以在上面操作的一個輔助角色。

而老師在上課也有提到一些重點,軟體有其獨特性:
1. 軟體修改容易:假設我們寫了一個系統,在其中一個output出現錯誤~這個時候我們可能知道大概哪裡出了問題,這個時候我們把它作部分修改之後,測試ok,output正常,那就完成了~問題是,會不會還有其它元件,會使用到這一個部分~但是,我們沒有針對它去測試,直到最後,一堆隱藏的問題本來不會浮現,一起出現時,就會出現問題~就像豆腐和波菜,分別吃不會有問題,一起吃就會出現問題~
2. 軟體複製容易:若與硬體廠商做比較,硬體廠商在完成一個成品之後,之後要量產時,仍然需要一堆硬體成本~而軟體的話,像是你幫一家公司設計了一個人事管理系統,當要替第二家公司也設計人事管理系統時,這個時候你所需要的成本就相對的非常的少了~
3. 軟體不容易測試:同樣的也是相對硬體來說,當你設計好一個洗衣機時,如果要測試是否合格,那麼最多只是加入不同量的衣服來測試它的極限~但是,依軟體來說~很難說要拿哪一些情況來測試這一個程式,因為,可能性是在太多了~老師上課說了一個例子,就像100個迴圈,用最簡單的情況來說~若只有false與true兩個情況,那麼就有2的100次方個情況~

軟體工程就是學如何做好專案管理:若文件寫的好,有照一定的規範走,就算公司新人來也可以馬上接下來~若管理的不好,設計師一走,整個專案馬上就掛點~

而在設計一個管理系統時,軟體就是一個工具,仍然需要domain knowledge;像是客運的管理,薪水的管理、進貨存貨管理~這一些都是需要domain knowledge的~

而我目前自己想了一下,寫程式的程序應該是這樣~
思考架構(若遇到不確定程式是否有支援我們的需求可以寫一個單元程式來試試看)-撰寫程式(最好每寫一個程式,然後,單元測式)-測試整體程式

但是,基本上,應該大部分的程式設計師都沒有做到那麼詳細吧~反正,先把程式趕出來再說~誰管你後面的人接的如何啊?

軟體工程絕對是有用的,最佳的實例就在印度。你只消看看印度的軟體產業,如此講究軟體工程,而且開發軟體的成績如此輝煌,你就應該知道:軟體工程除了可以拿來發表論文幫助學生取得學位或幫助教授升等之外,也確實是可以幫助軟體工業的。

可以參考這兩篇文章
軟體工程的弔詭、沒人在乎軟體工程

另外一提:在成大要取得「軟體工程學程」要修過五門課~
三門必修:軟體工程、物件導向軟體工程、CMMI
選修(選兩門):(PSP)Person Software Process、軟體品質、軟體度量

就是因為軟體彈性很大,所以,才不易整合~倘若像硬體功能簡單化,就很容易管理了~
但是,彈性大就是軟體的特性,因為,我們必需要制定一些規範來統一文件的撰寫方式~

CMMI與大便風牛肉麵
成也 CMMI ,敗也 CMMI?