軟體術語為什麼不重要
1. 計算機專業,關於軟體產品術語,基礎知識的求解
操作系統用於管理計算機的資源和控製程序的運行。語言處理系統是用於處理軟體語言等的軟體,如編譯程序等。資料庫系統是用於支持數據管理和存取的軟體,它包括資料庫、資料庫管理系統等。資料庫是常駐在計算機系統內的一組數據,它們之間的關系用數據模式來定義,並用數據定義語言來描述;資料庫管理系統是使用戶可以把數據作為軸象項進行存取、使用和修改的軟體。分布式軟體系統包括分布式操作系統、分布式程序設計系統、分布式文件系統、分布式資料庫系統等。人機交互系統是提供用戶與計算機系統之間按照一定的約定進行信息交互的軟體系統,可為用戶提供一個友善的人機界面。操作系統的功能包括處理器管理、存儲管理、文件管理、設備管理和作業管理。其主要研究內容包括:操作系統的結構、進程(任務)調度、同步機制、死鎖防止、內存分配、設備分配、並行機制、容錯和恢復機制等。
2. 為什麼需要軟體工程理論
�匭路⑾秩砑�こ痰謀局省�acobson等撰寫了三篇文章詳細闡述Semat思想,本刊將陸續刊載,本文是其中第二篇。
這種行為可以從很多地方看出來,很多團隊草率地丟棄昂貴的過程和工具的投資,甚至在嘗試它們之前。每個項目都採用新方法。每次工作發生變化,在手頭真正的工作取得進展前,他們必須學習新方法。這是沒有效率的,人們不能從經驗中學習,因為他們永遠從頭開始。底線是,沒有什麼新事物能夠被適當地固定下來即使經過幾種現代軟體開發趨勢,最流行的軟體開發方法仍然是規范型的瀑布開發或自由hacking。作為一個行業,我們沒有什麼真正可以堅守的東西,而且一切似乎沒有什麼變化。
最新橫掃行業的趨勢是敏捷。現在,我們可以很明確地說,敏捷運動對軟體產業做出了非常積極的 [1] 貢獻。它提醒我們,軟體開發中,人是第一位的,也是最重要的。事實上,這不是什麼新觀念,但這是重要的,而且這一點似乎被以前更加技術導向的趨勢所忽視,比如說面向對象和Java編程。通過展現一系列優點,敏捷宣言創造了某種強健和適應力強的東西,可以抵擋下一次趨勢帶來的變革風浪。[2]許多聲稱支持敏捷哲學的敏捷方法,卻沒能做到這一點,這是非常讓人遺憾的。對一項將人的價值放在過程和工具之上的運動來說,這確實帶給了我們很多新的過程和工具。其中的大部分已經顯示出效率,通過將團隊帶回到之前完成的開發軟體工作。但在重新聚焦到這上面之前,許多人已經迷失或迷茫,因為將新術語引入舊事物後,讓人覺得這一切似乎是全新的。這個對舊思想的不斷重新包裝和品牌重樹讓軟體開發團隊的工作方式劇烈搖擺。對他們的工作和產品任意命名,而不是讓人們遠離浪費時間的工作,將精力重新聚焦在對高質量軟體的開發上。
即使有些方法能夠像敏捷哲學一樣正確、有益,但相關的信息可能會在搖擺和炒作中丟失。我們已經開始看到對敏捷的反彈,我們擔心的是利益將會丟失,當早期使用者投入下一個趨勢,而晚期大眾則重新主張自己的權利,拒絕採納這些顯然不再流行的東西。
有可能會發生的事情是,我們增加更多時髦的詞彙和相互沖突的名詞,最終為這一切喧囂所累!
很顯然,我們需要停止對流行和永遠令人失望的簡單答案的追逐,同時不能阻礙創新和新想法。為了做到這一點,人們需要停止對舊思想不斷重新包裝和品牌重樹。相反,他們應側重於幫助人們了解如何建立優秀的軟體。但我們如何才能重點推動這一變化?我們認為,這個理論就在眼前我們要做的只是抓住它。首先,我們應該從所有流行的方法、過程和實踐開始,並從中提煉出軟體工程的真理。然後,我們可以描述和捕捉一個最小集合的基本概念,以最小獨立過程的形式我們將這個本質物的最小集合稱之為內核。
然後以這個內核為出發點,我們可以分析現有的過程和方法,並確定它們所包含的實踐。從內核開始,我們可以找到一種描述實踐的方式,使它們能夠進行比較和結合。
現在所說的這種創造理論的方法本身並不是理論。這是我們已經做過的事情。通過研究一些方法,包括XP、Scrum和統一過程,我們的團隊已經確定了20多個內核元素,我們總是做的事情或產生的東西。從表面上看,在這些被研究的方法和我們的工作方式中,有可能會出現很大差異;但在實質上,它們有相同的DNA。舉例來說,你可以捕捉功能或用例或用戶故事的條件,你可以在沒有生命周期與統一過程的生命周期,甚至瀑布生命周期(就像有些人仍然在堅持的那樣)的情況下使用這些條件。這些方法肯定有一個共同基礎,能夠以小的簡單的內核要素集的形式被捕獲。
現在,還不能冒失地聲稱,我們的內核提供了必要的理論。需要有比我們更多、更大的頭腦來做到這一點。但是,我們會將它作為一項證據,證明它的能力和我們需要的理論就近在眼前。
許多大公司都有自己的方法或過程,也就是一系列標准方法,搭配自己對更具體業務的想法。這些過程通常要用一本厚書或網站來介紹,大量資金被投入到歸檔工作中。有時,人們被訓練使用這些過程,有時只是被簡單告知它們在哪兒。在現實中,過程常常被忽視;僅有的被實際使用的部分是,組織中形成了口頭傳統的那些。這被解釋成重新發現的自然法則:人們不看過程的書籍。新的思路引入到組織中,舊過程退出流行,而有關它們的書成為擺設。
在某些大公司甚至會出現多個過程。例如,大型系統集成商可能有十個或二十個不同的過程。有時它們很相似,但相似性背後隱藏著差異。
如果貴公司採用這種實踐觀,你就不需要因為一些新的性感的東西正成為流行,而拋棄整個工作方式。相反,你只需要對現有的工作方式進行改進,一次改進一個實踐。你甚至可以採取那些被其他公司使用的實踐,而不用丟掉似乎運作良好的現有實踐。作為開始,你需要將現在的工作方式看作一個實踐集合。然後尋找你的痛點,然後修補目前的工作方式,通過刪除沒用的實踐,代之以解決這些薄弱環節的實踐。一旦你理解了內核和它的使用,就很容易做到這一點。在具有多種不同工作方式的大型組織,你可以使用此方法先後改進每個工作方式,而不必強迫大家使用相同的方法或過程。
這種做法將使新實踐更容易被採納,而無須改變其他實踐。想像一下,幾年前,你已經引入了內核,並描述你的實踐。然後,你將能夠輕松引入Scrum,通過用Scrum取代項目管理中現有的實踐,而無須對其他實踐進行任何重大修改。展望未來,Scrum將很有可能被新的實踐代替,你將能夠很容易地做到這一點了。
如果我們的技術學院或大學教授學生軟體工程基礎知識,然後訓練學生在一系列良好的實踐中使用該基礎,那將是非常棒的。教育將會更合乎邏輯,因為它著重以獨特的想法,而不是特定的思想,來形成每個方法、過程或方法論。我相信學生們會喜歡的。這里也為相關研究留下了很多空間。記住Kurt Lewin的話:沒有什麼比一個好的理論更實用了。一個好的理論使得學習和開發你的知識更容易,而不會帶來過分的崇拜。這將是聰明的。大多數大學教授們在學術生涯中,從來沒有真正的機會來實踐大規模的軟體開發。但是他們仍然不得不教授軟體工程,這當然是不容易或者只是依葫蘆畫瓢。他們只能這樣做,因為這門課在課程表上,而不是因為他們確實有什麼可教的。他們沒有傳授理論,只是一套想法或一個特定的方法。當被問及此事時,一名成功的計算機科學家、教授軟體工程課程的教授說:令人驚訝的是,學生們喜歡沐浴在我們交給他們的爛泥塘里。我知道這么說並不嚴肅,但是可以肯定這位老師並不為他做的事情而感到自豪。
一個理論,將從根本上改變這種局面。學生將學習軟體的基礎知識。他們將得到一種語言,來溝通軟體過程、實踐、模式,等等。可以想像,他們將會得到一種以內核為語法的語言和描述過程構成成分的時間的語言結構。這樣的語言需要是可執行的,這樣實踐才會變得生動。我說這些是為了表明這些實踐不僅是規范,而且也可執行。當一個項目進行時,這些實踐將開始運行,而且活動實例、工作產物,實例、技能角色將被真實物創造和填充。這些方面似乎能與實踐模式很好地吻合,有非常有趣的語義規則需要確定和定義。向學生打開了一個全新的世界,可以幫助他們了解軟體工程的基本原理。更不用說,為對實踐和理論感興趣的研究人員打開了一個全新的世界。
回顧自己1987年後的職業生涯,許多人建議我寫一本有關方法論的書。當時Objectory有一些新的想法,比如說用例、用例驅動的開發(這是一個測試驅動設計、合作、序列圖、組件和基於組件的開發)。其餘的大部分內容都沒什麼特別的。實施、單元測試、系統測試、性能測試、配置、規劃都是相當傳統的。當然,我有整個生命周期的經驗,但我不是所有事情的世界級專家。然而,為了寫書,我不得不包含整個生命周期的內容,即使其中很多不是我的專長。隨著我們尋找的新理論,沒有任何必要再說明不包含創新的內容。你不需要寫一本書來發布新想法,然後把軟體開發團隊需要做的一切都放進去,而只需要描述你的新實踐或新模式,也許第二天你就能向全世界發布了。全世界的任何好點子都可以貢獻出來並獲得成功。
終於,軟體團隊將能夠擺脫亦步亦趨地追隨潮流所造成的無休止的搖擺,成為嚴格意義上的軟體工程團隊。團隊在堅實的基礎上通過優秀的軟體開發實踐建設和擴展知識。這個基礎不會頻繁變化,不會強迫你一遍又一遍學習同樣的事情。它可以讓你通過自己的總結,而不是出席的課程來展示專業。它可以讓你輕松和無縫地引進新思路和新隊友,而不會造成性能驟降或精力浪費。團隊最終能夠不斷改進和適應他們的工作方式,迎接他們每天面對的挑戰。他們將能夠開發自己的知識和技能,以一種能夠讓他們順利地和來自不同背景、團隊和組織的其他人合作的方式,而不必一遍又一遍地重復學習同樣的事情了。
最後的話我們對軟體工程的了解缺乏一個基本理論。因此,我們不斷用略有不同的詞再造舊方法,掩蓋了真正的創新,同時讓拋棄舊的不好的部分,利用新的好的部分變得困難。該理論將幫助我們大大改進軟體工程教育。這將幫助我們在面對身邊涌現的新想法時的反應不那麼天真。最後,它也將幫助我們更快地接受新的思想。這一理論的真正受益者將是軟體行業,這一點已經在許多公司得到證明。我們將能夠方便地教育我們的人員,讓他們加快速度;改進我們生產產品的方式;系統地重新設計(比重構程度更強)我們的產品;不斷改進我們的工作方式。其結果將是更好的軟體、更快的速度和大幅降低的成本。正如上面提到的,我們需要齊心協力才能做到這一點。從Scott Ambler最近的一篇文章理論需要戰略中可以看到這種勢頭已經開始,但仍有許多工作要做。
我們已經證明它的有效性,但我們仍然要做許多工作才能建立一個公認的標准,必須在一組專家和權威之間建立共識才能完成這點。我們期待著與這些專家的合作。
3. 軟體的重要性
軟體的重要性:
1)驅動軟體支持硬體在系統下使用。
2)系統軟體是負責管理計算機系統中各種獨立的硬體,使得它們可以協調工作。系統軟體使得計算機使用者和其他軟體將計算機當作一個整體而不需要顧及到底層每個硬體是如何工作的。
3)支撐軟體是支撐各種軟體的開發與維護的軟體,又稱為軟體開發環境(SDE)。它主要包括環境資料庫、各種介面軟體和工具組。
4)應用軟體是為了某種特定的用途而被開發的軟體。它可以是一個特定的程序,比如一個圖像瀏覽器。也可以是一組功能聯系緊密,可以互相協作的程序的集合,比如微軟的Office軟體。也可以是一個由眾多獨立程序組成的龐大的軟體系統,比如資料庫管理系統。
5)軟體(中國大陸及香港用語,台灣稱作軟體,英文:Software)是一系列按照特定順序組織的計算機數據和指令的集合。一般來講軟體被劃分為系統軟體、應用軟體和介於這兩者之間的中間件。軟體並不只是包括可以在計算機(這里的計算機是指廣義的計算機)上運行的電腦程序,與這些電腦程序相關的文檔一般也被認為是軟體的一部分。簡單的說軟體就是程序加文檔的集合體。
4. 軟體破解最基本的6個術語
1. 斷點:
所謂斷點就是程序被中斷的地方,這個詞對於解密者來說是再熟悉不過了。那麼什麼又是中斷呢?中斷就是由於有特殊事件(中斷事件)發生,計算機暫停當前的任務(即程序),轉而去執行另外的任務(中斷服務程序),然後再返回原先的任務繼續執行。打個比方:你正在上班,突然有同學打電話告訴你他從外地坐火車過來,要你去火車站接他。然後你就向老闆臨時請假,趕往火車站去接同學,接著將他安頓好,隨後你又返回公司繼續上班,這就是一個中斷過程。我們解密的過程就是等到程序去獲取我們輸入的注冊碼並准備和正確的注冊碼相比較的時候將它中斷下來,然後我們通過分析程序,找到正確的注冊碼。所以我們需要為被解密的程序設置斷點,在適當的時候切入程序內部,追蹤到程序的注冊碼,從而達到crack的目的。
2. 領空:
這是個非常重要的概念,但是也初學者是常常不明白的地方。我們在各種各樣的破解文章里都能看到領空這個詞,如果你搞不清楚到底程序的領空在哪裡,那麼你就不可能進入破解的大門。或許你也曾破解過某些軟體,但那隻是瞎貓碰到死老鼠而已(以前我就是這樣的^_^,現在說起來都不好意思喔!)。所謂程序的領空,說白了就是程序自己的地方,也就是我們要破解的程序自己程序碼所處的位置。也許你馬上會問:我是在程序運行的時候設置的斷點,為什麼中斷後不是在程序自己的空間呢?因為每個程序的編寫都沒有固定的模式,所以我們要在想要切入程序的時候中斷程序,就必須不依賴具體的程序設置斷點,也就是我們設置的斷點應該是每個程序都會用到的東西。在DOS時代,基本上所有的程序都是工作在中斷程序之上的,即幾乎所有的DOS程序都會去調用各種中斷來完成任務。但是到了WINDOWS時代,程序沒有權力直接調用中斷,WINDOWS系統提供了一個系統功能調用平台(API),就向DOS程序以中斷程序為基礎一樣,WINDOWS程序以API為基礎來實現和系統打交道,從而各種功能,所以WINDWOS下的軟體破解其斷點設置是以API函數為基礎的,即當程序調用某個API函數時中斷其正常運行,然後進行解密。例如在SOFTICE中設置下面的斷點:bpx GetDlgItemText(獲取對話框文本),當我們要破解的程序要讀取輸入的數據而調用GetDlgItemText時,立即被SOFTICE攔截到,從而被破解的程序停留在GetDlgItemText的程序區,而GetDlgItemText是處於WINDWOS自己管理的系統區域,如果我們擅自改掉這部分的程序代碼,那就大禍臨頭了^_^!所以我們要從系統區域返回到被破解程序自己的地方(即程序的領空),才能對程序進行破解,至於怎樣看程序的領空請看前面的SOFTICE圖解。試想一下:對於每個程序都會調用的程序段,我們可能從那裡找到什麼有用的東西嗎?(怎麼樣去加密是程序自己決定的,而不是調用系統功能實現的!)
3. API:
即Application Programming Interface的簡寫,中文叫應用程序編程介面,是一個系統定義函數的大集合,它提供了訪問操作系統特徵的方法。 API包含了幾百個應用程序調用的函數,這些函數執行所有必須的與操作系統相關的操作,如內存分配、向屏幕輸出和創建窗口等,用戶的程序通過調用API介面同WINDOWS打交道,無論什麼樣的應用程序,其底層最終都是通過調用各種API函數來實現各種功能的。通常API有兩中基本形式:Win16和Win32。 Win16是原來的、API的16位版本,用於Windows 3.1;Win32是現在的、API的32位版本,用於Windows 95/98/NT/ME/2000。Win32包括了Win16,是Win16的超集,大多數函數的名字、用法都是相同的。16位的API函數和32位的API函數的區別在於最後的一個字母,例如我們設置這樣的斷點:bpx GetDlgItemText、bpx GetDlgItemTextA和bpx GetDlgItemTextW,其中 GetDlgItemText是16位API函數,GetDlgItemTextA和GetDlgItemTextW是32位API函數,而GetDlgItemTextA表示函數使用單位元組,GetDlgItemTextW表示函數使用雙位元組。現在我們破解中常用到的是Win32單位元組API函數,就是和GetDlgItemTextA類似的函數,其它的兩種(Win16 API和Win32雙位元組API函數)則比較少見。 Win32 API函數包含在動態鏈接庫(Dynamic Link Libraries,簡稱DLLs)中,即包含在kernel32.dll、user32.dll、gdi32.dll和comctl32.dll中,這就是為什麼我們要在softice中用exp=C:\windows\system\kernel32.dll等命令行將這些動態鏈接庫導入softice中的原因。因為不這樣做的話,我們就無法攔截到系統Win32 API函數調用了。
4. 關於程序中注冊碼的存在方式:
破解過程中我們都會去找程序中將輸入的注冊碼和正確的注冊碼相比較的地方,然後通過對程序的跟蹤、分析找到正確的注冊碼。但是正確的注冊碼通常在程序中以兩種形態存在:顯式的和隱式的,對於顯式存在的注冊碼,我們可以直接在程序所處的內存中看到它,例如你可以直接在SOFTICE的數據窗口中看到類似"297500523"這樣存在的注冊碼(這里是隨意寫的),對於注冊碼顯式存在的軟體破解起來比較容易;但是有些軟體的程序中並不會直接將我們輸入的注冊碼和正確的注冊碼進行比較,比如有可能將注冊碼換算成整數、或是將注冊碼拆開,然後將每一位注冊碼分開在不同的地方逐一進行比較,或者是將我們輸入的注冊碼進行某種變換,再用某個特殊的程序進行驗證等等。總之,應用程序會採取各種不同的復雜運算方式來迴避直接的注冊碼比較,對於這類程序,我們通常要下功夫去仔細跟蹤、分析每個程序功能,找到加密演算法,然後才能破解它,當然這需要一定的8086匯編編程功底和很大的耐心與精力。
5. 關於軟體的破解方式:
本人將破解方式分為兩大類,即完全破解和暴力破解。所謂完全破解主要是針對那些需要輸入注冊碼或密碼等軟體來說的,如果我們能通過對程序的跟蹤找到正確的注冊碼,通過軟體本身的注冊功能正常注冊了軟體,這樣的破解稱之為完全破解;但如果有些軟體本身沒有提供注冊功能,只是提供試用(DEMO),或是注冊不能通過軟體本身進行(例如需要獲取另外一個專用的注冊程序,通過INTERNET的注冊等等),或者是軟體本身的加密技術比較復雜,軟體破解者的能力、精力、時間有限,不能直接得到正確的注冊碼,此時我們需要去修改軟體本身的程序碼。
6. 關於破解教程中程序代碼地址問題:
破解教程中都會放上一部分程序代碼以幫助講解程序的分析方法
5. 《大學計算機基礎》 什麼是軟體,為什麼軟體是重要的
辦公軟體,文檔,表格,幻燈片,OFFICE一套,以及最簡單常規的一些操作。
6. 軟體編程常用術語
1. XML 首先,你要了解XML。我不是說僅僅是XML規格本身,還包括一系列相關的基於XML的語言:最重要的是XHTML、XSLT、XSL、DTDs、XML Schema (XSD)、XPath、XQuery和SOAP。那些在過去5年內從未碰過鍵盤的人,可能不知道XML為何物。XML是一種文本文件,使用與HTML類似的標記。XML能定義一個樹狀結構,並能描述所含的數據。 XML最好的一點是既能存結構化數據也能存非結構化數據。它既能存貯和描述「規格的」(regular)表格數據,也能容納和描述「粗糙的」(ragged)文件數據。 XHTML是現今寫HTML的首選方法。因為它是形式完好(well formed)的XML,比起古老的、通常是畸形(malformed)的HTML文件,XHTML格式的文件更容易處理。 XSLT和XSL是用於把XML文件轉成其它格式的語言。可轉換的格式包括:文本文件、PDF文件、HTML、以逗號為分隔符的文件,或其它XML文件。 DTD和XML Schema描述XML文件所能包含的內容的類型,並讓你「驗證」XML文件內容的合理性,而不用寫特殊代碼以確保內容符合規則要求。 XPath和XQuery是用於從XML文件中抽取單個項目或一組項目的查詢語言。XQuery擴展了XPath,因而更重要。XQuery與XML的關系正像SQL與關系資料庫的關系。 SOAP是Web服務之間的一個標准通訊協議。盡管你不需要對SOAP標准一清二楚,你應該熟悉一般的schema和它的工作原理,以便能應用這門技術。 2. Web服務 Web服務是XML流行後的一個直接產物。因為你能用XML描述數據和物件,因為你能用schema確保XML文件內容的合理性,因為XML是基於文本的規范,XML為跨平台通訊標准提供了一個極其方便的基本格式。如果你還從來沒碰到Web服務,你可能很快就會碰到,在未來5年內,你幾乎肯定會碰到。熟悉Web服務十分重要,因為它是目前所有跨不同機器、不同語言、不同平台和不同地點的通訊協議中最簡單的一個。不管你需要與否,Web服務是邁向互用性的重要一步。 XML工作組主席John Bosak曾說XML「給Java一些事做」。實際上,Web服務讓所有語言都有了一些事做。Web服務讓在大型機上運行的COBOL應用軟體能調用在手持設備上運行的Java應用程序、能讓Java applet與.NET伺服器交談、能讓微機軟體與Web伺服器無縫連接,並提供了一個相對容易的方法,讓企業不光能向外界提供數據,還能提供功能,而且是一種與語言、平台和位置都獨立的方法。 3. 面向對象的編程 很多程序員仍認為OOP是象牙塔里的技術。但如果你想一下是什麼語言在過去的10年裡佔主導地位,你就會理解OOP不是象牙塔里的技術。OOP從Smalltalk開始,傳到C++和Pascal (Delphi)。Java使OOP大踏步地邁向主流,幾年後的VB.NET和C#則完全確立了OOP的優勢地位。盡管這些語言中的多數並不要求你必須會OOP,但我覺得如果你不了解OOP的基本概念也不知道如何應用這些概念,你能找到的編程工作將越來越少。 4. Java、C++、C#和VB.NET 我把這些語言列在一起,並不是建議你成為每一種語言的專家。我的理由是:學習編程最有效的方法之一是看代碼,而你能看到的大量的代碼很可能不是用你所喜愛的語言編寫的。 在過去幾年,各語言的能力越來越接近。現在,你可以用VB.NET寫Windows服務、Web應用程序或命令行程序。即使你只使用一種語言,你也應該學一些其它語言,以便能看懂那些樣例,並將其翻譯到你所用的語言。這4種語言是基本核心,還有其它一些滿足不同需要、頗具用途的語言,如FORTRAN、COBOL、APL、ADA、Perl和Lisp。 5. javascript 盡管名字有些相像,但Java與javascript並無關聯。為什麼一個腳本語言會如此重要呢?因為所有主流瀏覽器都用javascript。如果你需要寫Web應用程序,你就有足夠的理由學javascript。javascript可以用作ASP或ASP.NET的伺服器語言,也可以當做用於擴展XSLT的功能語言(functional language)。javascript是Mozilla/Netscape中用於激活基於XUL的程序介面的首選語言。javascript的一個變種ActionScript是Flash MX的編程語言。將來,javascript很可能成為新設備的編程語言,以及大型應用軟體中的宏語言。 與javascript相對照的是VBScript。盡管Microsoft的軟體對VBScript有良好的支持,但VBScript在未來的開發工作中很可能是一個糟糕的選擇。就是Microsoft也傾向於用javascript(或Microsoft自己的變種:JScript)寫客戶端程序。在選擇腳本語言時,請選擇javascript。 6. 正則表達式(Regular Expressions) 查尋關系資料庫可以用SQL,查詢XML可以用XPath和XQuery,查詢純文本文件則可以用正則表達式。例如,你可以用一個命令從一個HTML文件中查找並刪除所有的注釋。各種開發語言內置的一些簡單的文本查詢功能,如"IndexOf"函數或VB中經典的"InStr"函數或"Like"操作符,根本不能與正則表達式相提並論。現在,各種主要的開發語言都提供使用正則表達式的途徑。盡管正則表達式本身既難懂更難讀(是回到早期計算機時代的一種倒退),但它卻是一個功能強大而且未被充分利用的工具。 7. 設計模式 正像OOP通過把對象分類以簡化編程一樣,設計模式對一些普遍的對象之間的交互進行分類,並賦予一個恰當的名稱。OOP用得越多,設計模式就越有用。一些最常用的模式的名稱已經變成了軟體開發領域共同使用的術語,所以要跟上信息的主流,你就要對設計模式有相當的理解。 8. Flash MX 如果你需要在客戶端得到比HTML和CSS更多的圖形和更強的編程功能,Flash是你的答案。用Flash編程比開發Java applets或寫.NET代碼要快得多,也容易得多。 在最新版本 (MX) 中,Flash不僅僅是畫圖和製造動畫的工具,它已經成為一個編程功能強大的開發環境:能調用SOAP Web服務,也能調用遠端伺服器上的ColdFusion、Java或.NET程序。Flash無處不在。它的引擎存在於世界上大多數客戶端計算機,包括手持設備、置頂盒、甚至是新的書寫板電腦。所以使用Flash能大大擴展你的程序的應用范圍。 9. Linux/Windows 熟悉Linux。在一台舊機器或新機器上安裝Linux。下載圖形用戶界面,在其基礎上寫一些程序。安裝Apache,寫一個Web應用程序。這個世界不再僅僅是屬於Windows,這種趨勢可能還會持續下去。如果你是一名中堅的Linux開發人員,那就拋棄你對Windows的憎惡,看看你能否做一些Windows編程。Windows能繼續在台式電腦上稱王是有其原因的,這不僅僅是因為Microsoft控制了這個市場。 沒人知道你們公司會在什麼時候決定從Linux轉向Windows(或從Windows轉向Linux),或者你想跳到一家用另一種平台的公司,或者你想出了開發一個殺手軟體的好主意,所以你要爭取擁有在不同操作系統上的編程經驗。 10. SQL 盡管SQL不像本文討論的其它技術那樣新,而且SQL的重要性在未來10年內很可能降低,但它仍然是一項基本技能。很多開發人員還沒有掌握這門技術,或掌握得不夠,不足以有效率地使用它。不要依賴具有圖形用戶界面的SQL生成器替你做事情,你要自己手工地寫查詢命令,直到你熟悉基本的SQL語法為止。了解SQL不僅能幫助你日後學習XQuery,你還有可能馬上發現能簡化或改進目前項目的方法。 培養好奇心 最後,(對,我意識到這是第11門技術),好奇心是你最重要的技能。要去嘗試各種東西。新語言或新技術對你當前或將來的工作可能有用,也可能沒用,但並不是你所學的每一件事都是為了工作。不要害怕失敗,萬事開頭難,學新技術也是如此。大多數失敗是因為人們希望太快地學到太多的東西。要對每一點進步感到滿意,不要讓時間(或缺乏時間)妨礙你。相反,你要安排時間留心、研究、試驗新的開發技術和工具。 你可能永遠也沒有必要成為這些技術的專家,而且我的選擇可能根本不適合你的特殊情況,但通過培養好奇心,你將會發現你應該了解的東西。
7. 1.為什麼說軟體測試是軟體開發中不可缺少的重要一環,但不是軟體質量保證的安全網
你說的前半句我沒異議, 後半句可以討論一下.
根據軟體工程的思想, 軟體測試是檢測軟體功能和性能的一個流程, 如果沒有軟體測試, 那麼軟體的正常使用將得不到保障. 軟體的風險將會很大.
軟體測試在實際執行過程中不能100%的找出軟體的所有問題, 如果軟體產品中有潛在的大問題沒有被發現, 同樣會有隱患.
但是經過嚴格流程測試過的軟體, 一般不會出現致命的問題, 當然, 小問題應該會有. 所以說軟體測試是軟體質量的保障. 至於說是安全網, 這個詞個人覺得用的很模糊.
還有什麼問題我們可以討論, 相互學習..
8. 軟體公司術語
就是客戶的售後服務。不是軟體公司的核心部門。想成長的不要去。