LabVIEW 助力優(yōu)化軟件開(kāi)發(fā)實(shí)踐和源代碼控制
掃描二維碼
隨時(shí)隨地手機(jī)看文章
作為一款系統(tǒng)設(shè)計(jì)軟件(LabVIEW可以提供搭建最先進(jìn)、最具技術(shù)挑戰(zhàn)性的系統(tǒng)所需的所有工程元素
隨著工程應(yīng)用的挑戰(zhàn)性和復(fù)雜度日益增加(軟件工程的概念也融入了系統(tǒng)開(kāi)發(fā)之中。所謂軟件工程就是可以保證軟件的可擴(kuò)展性和可維護(hù)性的工程開(kāi)發(fā)實(shí)踐。正確實(shí)施的軟件工程可以提高應(yīng)用程序的全局質(zhì)量(提高開(kāi)發(fā)者的工作效率并且降低維護(hù)成本。在這篇文章中(可以學(xué)習(xí)到如何使用LabVIEW內(nèi)建專用的特性和工具來(lái)完成最佳的軟件開(kāi)發(fā)實(shí)踐和程序源代碼控制管理。
源代碼控制管理
源代碼控制管理是軟件工程最基本的環(huán)節(jié)之一(因?yàn)樗鼪Q定了如何對(duì)一個(gè)應(yīng)用程序的依賴關(guān)系進(jìn)行存儲(chǔ)、組織管理以及在開(kāi)發(fā)者之間共享,甚至?xí)苯佑绊懗绦虻牟渴?。這樣的過(guò)程(source code control-SCC)及相應(yīng)的管理工具會(huì)在整個(gè)軟件生命周期中完成這些任務(wù),以減少人工完成這些任務(wù)可能帶來(lái)的損失和風(fēng)險(xiǎn)。但是,如果沒(méi)有一個(gè)合理的計(jì)劃以及應(yīng)用架構(gòu)來(lái)保證項(xiàng)目自身的緊湊性和代碼的模塊化特點(diǎn),只依靠軟件來(lái)管理,則效果實(shí)在有限,所以需要對(duì)相關(guān)的概念進(jìn)行學(xué)習(xí)并通過(guò)NI認(rèn)證的LabVIEW系統(tǒng)架構(gòu)師考試。
對(duì)任何一個(gè)項(xiàng)目來(lái)說(shuō),無(wú)論項(xiàng)目復(fù)雜程度高低或團(tuán)隊(duì)的人數(shù)多少,源代碼控制都是重要且必要的。目前,很多的供應(yīng)商都提供了各種不同的源代碼控制工具,它們都可以用來(lái)追蹤、存儲(chǔ)和管理LabVIEW的文件。
這些工具中可以既有免費(fèi)且易用的解決方案(例如Subversion),也有商業(yè)級(jí)的、具有完整生命周期管理的解決方案(例如Perforce)。
代碼的重復(fù)利用對(duì)提高工作效率是非常有效的方法,但是它要求非常嚴(yán)格的源代碼管理措施。一些高級(jí)的工具,例如VI程序包管理器,可以幫助用戶有效地管理和創(chuàng)建可重復(fù)使用的庫(kù)文件或者VI程序包,還可以智能追蹤庫(kù)文件的版本變化、所需依賴關(guān)系變化以及該庫(kù)文件在多個(gè)LabVIEW版本之間的兼容性變化等。
應(yīng)用結(jié)構(gòu)化的開(kāi)發(fā)方法
許多LabVIEW的程序員都經(jīng)歷過(guò)使用非結(jié)構(gòu)化開(kāi)發(fā)方法所造成的不良后果,或者,至少受到過(guò)影響。一些程序框圖可以往任何一個(gè)方向進(jìn)行滾動(dòng),一頁(yè)又一頁(yè),沒(méi)有可辯識(shí)的標(biāo)志和足夠的連線的幫助,甚至可以讓人誤認(rèn)為那是一幅大都市的地圖。不幸的是,這樣的程序框圖往往又包含需要運(yùn)行的代碼,所以如果有人接下了這樣的應(yīng)用程序,往往會(huì)覺(jué)得它令人難以添加功能和修正錯(cuò)誤。除了程序運(yùn)行風(fēng)險(xiǎn)高以及內(nèi)含不可預(yù)知的程序缺陷以外,這種程序的維護(hù)成本還很高。所以,當(dāng)你在接受程序任務(wù)的時(shí)候,如果對(duì)方告訴你“我們需要對(duì)代碼進(jìn)行重整”,那你一定要將它看成一個(gè)警告。軟件工程和一個(gè)有序的可擴(kuò)展的應(yīng)用程序架構(gòu),可以有效地幫助你避免這樣的風(fēng)險(xiǎn)以及這些風(fēng)險(xiǎn)帶來(lái)的損失。
典型的軟件工程是指一種人為管理的、有序的軟件開(kāi)發(fā)方法,在開(kāi)發(fā)過(guò)程之前就已經(jīng)有擬定的審核清單,以及在軟件生命周期的不同階段應(yīng)該完成的任務(wù),而這個(gè)開(kāi)發(fā)實(shí)踐需要做到何種程度,以及需要哪些開(kāi)發(fā)工具,則是由這個(gè)工程項(xiàng)目自身的特點(diǎn)來(lái)決定的。但是,有些要素卻是任何類型項(xiàng)目的開(kāi)發(fā)都需要的。通常來(lái)說(shuō),前期的規(guī)劃、開(kāi)發(fā)耗時(shí)的預(yù)計(jì)都是會(huì)提前計(jì)劃的,當(dāng)然,這些計(jì)劃同時(shí)也會(huì)增加時(shí)間和成本的消耗。
雖然軟件工程的模式有很多種,例如瀑布型、螺旋型或者靈活型,但它們都具有共同的開(kāi)發(fā)階段。圖1中列出了各種LabVIEW的特性和工具,可以在各個(gè)開(kāi)發(fā)階段給予幫助。
圖1 LabVIEW提供的各種特性和相關(guān)工具可以在不同的開(kāi)發(fā)環(huán)節(jié)給你提供幫助
軟件架構(gòu)
通過(guò)設(shè)計(jì)應(yīng)用程序的整體架構(gòu),開(kāi)發(fā)者可以確保程序框架滿足指定的要求,并且確保程序有良好的擴(kuò)展性,在將來(lái)為系統(tǒng)添加新功能。進(jìn)行架構(gòu)設(shè)計(jì)時(shí),需要定義系統(tǒng)的各個(gè)功能單元,以及不同單元之間的交互方式(通過(guò)交互接口和API),從而可以將相關(guān)性不高的單元進(jìn)行解耦,以保證它們是緊湊且獨(dú)立的。一個(gè)好的程序架構(gòu)會(huì)綜合考慮代碼的可擴(kuò)展性、程序模塊性、可重用性和可延展性之間的平衡,同時(shí)又能夠保證不會(huì)無(wú)謂地增加程序的復(fù)雜性。
NI公司提供的LabVIEW高級(jí)培訓(xùn)課程涵蓋了所有這些概念,并且將這些概念作為CLA考試的主要部分。用戶可訪問(wèn)ni.com/training/certification來(lái)評(píng)估自己的編程水平,以確保自己有足夠的能力編寫出可以經(jīng)受實(shí)踐檢驗(yàn)的LabVIEW程序。
掌握LabVIEW軟件工程
了解數(shù)據(jù)流編程語(yǔ)言的語(yǔ)法結(jié)構(gòu)僅僅是熟練使用LabVIEW的一部分。一個(gè)堅(jiān)實(shí)的軟件工程理論基礎(chǔ)和源代碼控制的最佳實(shí)踐可以保證你有能力管理一個(gè)開(kāi)發(fā)小組,領(lǐng)導(dǎo)他們?cè)O(shè)計(jì)并實(shí)現(xiàn)高水平的LabVIEW系統(tǒng)。本文中所討論的各種工具和開(kāi)發(fā)實(shí)踐可以幫助你顯著地改進(jìn)開(kāi)發(fā)過(guò)程,使其更加合理,從而提高工作效率。
這樣你和你的開(kāi)發(fā)團(tuán)隊(duì)就可以把最主要的精力放在系統(tǒng)的開(kāi)發(fā)上,而不是浪費(fèi)在煩瑣的源代碼管理和設(shè)計(jì)結(jié)構(gòu)重整上。所有這些概念對(duì)任何一種編程環(huán)境來(lái)說(shuō)都是通用的,它們也是參加CLA考試時(shí)所必需的。