㈠ 軟體開發都有哪些
能否開發出一個好的軟體,關鍵是看軟體開發前期所做的工作,重點是這個軟體有沒有一個好的 軟體開發流程,因為一個好的軟體開發流程關繫到到這個軟體的成敗和最後能達到一個什麼的效果;下面我們就來說一下一個好的軟體需要有哪些軟體開發流程,也可以說軟體開發流程分為哪幾個階段:
第一個階段是市場調研:技術和市場要結合才能體現最大價值。
第二個階段是需求分析:這個階段需要出三樣東西,用戶視圖,數據詞典和用戶操作手冊。用戶視圖是該軟體用戶(包括終端用戶和管理用戶)所能看到的頁面樣 式,這裡麵包含了很多操作方面的流程和條件。數據詞典是指明數據邏輯關系並加以整理的東東,完成了數據詞典,資料庫的設計就完成了一半多。用戶操作手冊是 指明了操作流程的說明書。請注意,用戶操作流程和用戶視圖是由需求決定的,因此應該在軟體設計之前完成,完成這些,就為程序研發提供了約束和准繩,很遺憾 太多公司都不是這樣做的,因果顛倒,順序不分,開發工作和實際需求往往因此產生隔閡脫節的現象。需求分析,除了以上工作,筆者以為作為項目設計者應當完整 的做出項目的性能需求說明書,因為往往性能需求只有懂技術的人才可能理解,這就需要技術專家和需求方(客戶或公司市場部門)能夠有真正的溝通和了解。
第三個階段是概要設計:將系統功能模塊初步劃分,並給出合理的研發流程和資源要求。作為快速原型設計方法,完成概要設計就可以進入編碼階段了,通常採用這 種方法是因為涉及的研發任務屬於新領域,技術主管人員一上來無法給出明確的詳細設計說明書,但是並不是說詳細設計說明書不重要,事實上快速原型法在完成原 型代碼後,根據評測結果和經驗教訓的總結,還要重新進行詳細設計的步驟。
第四個階段是詳細設計:這是考驗技術專家設計思維的重要關卡,詳細設計說明書應當把具體的模塊以最『干凈』的方式(黑箱結構)提供給編碼者,使得系統整體 模塊化達到最大;一份好的詳細設計說明書,可以使編碼的復雜性減低到最低,實際上,嚴格的講詳細設計說明書應當把每個函數的每個參數的定義都精精細細的提 供出來,從需求分析到概要設計到完成詳細設計說明書,一個軟體項目就應當說完成了一半了。換言之,一個大型軟體系統在完成了一半的時候,其實還沒有開始一 行代碼工作。那些把作軟體的程序員簡單理解為寫代碼的,就從根子上犯了錯誤了。
第五個階段是編碼:在規范化的研發流程中,編碼工作在整個項目流程里最多不會超過1/2,通常在1/3的時間,所謂磨刀不誤砍柴功,設計過程完成的好,編 碼效率就會極大提高,編碼時不同模塊之間的進度協調和協作是最需要小心的,也許一個小模塊的問題就可能影響了整體進度,讓很多程序員因此被迫停下工作等 待,這種問題在很多研發過程中都出現過。我們在編碼的時候一定要軟體開發的 代碼規范編碼時的相互溝通和應急的解決手段都是相當重要的,對於程序員而言,bug永遠存在,你必須永遠面對這個問題,大 名鼎鼎的微軟,可曾有連續三個月不發補丁的時候嗎?從來沒有!
第六個階段是軟體測試有很多種:按照測試執行方,可以分為內部測試和外部測試;按照測試范圍,可以分為模塊測試和整體聯調;按照測試條件,可以分為正常操 作情況測試和異常情況測試;按照測試的輸入范圍,可以分為全覆蓋測試和抽樣測試。以上都很好理解,不再解釋。總之,測試同樣是項目研發中一個相當重要的步 驟,對於一個大型軟體,3個月到1年的外部測試都是正常的,因為永遠都會又不可預料的問題存在。完成測試後,完成驗收並完成最後的一些幫助文檔,整體項目 才算告一段落,當然日後少不了升級,修補等等工作,只要不是想通過一錘子買賣騙錢,就要不停的跟蹤軟體的運營狀況並持續修補升級,直到這個軟體被徹底淘汰 為止。
總結,前四個階段在軟體開發過程中占的比重比較大,真正編碼的時間是非常短的,只有市場調研做好,能有一個明確的方案,設計出詳細合理的開發步驟;我們在 進行編碼的時候才能很順利,開發出來的軟體才有價值。有的軟體在沒有開發出來,還沒有上線就註定不行了,所以說軟體開發流程對於能否開發出一個好的軟體是 非常重要的。
希望對您有所幫助!~
㈡ 阻礙軟體復用的技術和非技術因素有哪些
軟體復用的關鍵技術實現軟體復用的關鍵因素主要包括:軟體構件技術、領域工程、軟體構架、軟體再工程、開放系統、軟體過程、CASE技術等.以及 各種非技術因素。實現軟體...
㈢ 軟體工程師是什麼專業
計算機科學與技術專業
計算機科學與技術(Computer Science and Technology)是國家一級學科,下設信息安全、軟體工程、計算機軟體與理論、計算機系統結構、計算機應用技術、計算機技術等專業。
軟體工程師是一個廣義的概念,包括軟體設計人員、軟體架構人員、軟體工程管理人員、程序員等一系列崗位,工作內容都與軟體開發生產相關。軟體工程師的技術要求是比較全面的,除了最基礎的編程語言(C語言/C++/JAVA等)、資料庫技術(SQL/ORACLE/DB2等)等,還有諸多如JAVASCRIPT、AJAX、HIBERNATE、SPRING等前沿技術。此外,關於網路工程和軟體測試的其他技術也要有所涉獵。
(3)軟體再工程的相關技術有哪些擴展閱讀:
軟體工程師工作內容
1、 指導程序員的工作;
2、 參與軟體工程系統的設計、開發、測試等過程;
3 、協助工程管理人保證項目的質量;
4 、負責工程中主要功能的代碼實現;
5 、解決工程中的關鍵問題和技術難題;
6 、協調各個程序員的工作,並能與其它軟體工程師協作工作。
7、還要編寫各種各樣的軟體說明書,如:需求說明書,概要說明書等
8、考試科目工程師是中級職稱,考試的題目包括了計算機體系結構、軟體工程、資料庫、數據結構、編譯原理等計算機學科的基礎課程
㈣ 軟體再工程的再測試
一般來說,再測試是再工程過程中工作量最大的一項工作。如果能夠重用原有的測試用例及運行結果,將能大大降低再工程成本。對於重用的部分,特別是可重用的(獨立性較強的)局部系統,還可以免除測試,這也正是重用技術被再工程高度評價的關鍵原因之一。當然再工程後的系統總有變動和增加的部分,對受其影響的整個范圍都要毫無遺漏地進行測試,不可心存僥幸,以免因「一個蒼蠅壞了百年老湯」。
實用的重用戰略
在判斷既存系統應該如何重用時,首先要明確哪些是可重用對象,以及如何使用這些可重用對象。下面以既存LAN系統重構成Web系統的再工程為例,說明再分析和再編碼將遇到的一些重用課題。
我們可以將既存LAN系統劃分成界面、邏輯、數據三個層次。用既存系統的三個層次去分別對應典型Web系統的表示層、邏輯層和數據層。由此從邏輯上得到對應每個層次的輸入和輸出,然後為每一層尋找能夠實現最大程度重用的重構方法。
● 界面重用策略
界面模擬方法將基於文本的舊界麵包裝為新的圖形界面。舊界面運行在終端上,新界面可以是基於PC的圖形界面,也可以是運行在瀏覽器上的HTML頁面。新用戶界面通過一個界面模擬工具與舊界面通信。此方法重用率相當高。但是不修改既存系統會同時將舊系統的結構性缺點全部繼承下來。
基於客戶端的Web應用(Java Applet)Applet可以實現從界面、邏輯到資料庫的許多功能。完全用Java語言重寫一個系統是不現實的,重用率也不會很高,這不是軟體再工程所提倡的。已有許多Applet自動轉化工具,而且其轉化後代碼的重用率相當高。
基於伺服器端的Web應用即重新開發界面。這種方法看上去沒有重用既存界面代碼,其實不然。首先,界面設計完全可以重用,從而節省設計時間;其次,我們可以將某些界面做成可重用的,這樣也會減少工作量。
● 邏輯層包裝原則
通過對邏輯層的分解可以得到可重用和不可重用的兩部分代碼。對可重用部分可直接使用,對於不可重用部分則應盡量通過各種包裝技術按統一標准將其改造成可重用構件。包裝方法有很多,如對象包裝法、部件包裝法等。
● 數據層重用策略
數據層通常要求更高的重用率。邏輯和數據休戚相關,如果改動資料庫,邏輯勢必不能正常運行,對邏輯部分的重用也就無從談起。如果非改不可的話,也要以保證最大限度的重用為原則,爭取做到只增不刪,以保證數據的完整性。
軟體再工程分為哪兩個部分
答:軟體再工程的兩部分:首先,逆向過程:從代碼開始推導出設計或是規格說明(可理解性);其次,改善軟體的靜態質量(可維護性、復用性或演化性)。
為什麼實施軟體再工程
(1)再工程可幫助軟體機構降低軟體演化的風險
(2)再工程可幫助機構補償軟體投資
(3)再工程可使得軟體易於進一步變革
(4)軟體再工程有著廣闊的市場
(5)再工程能力擴大CASE工具集(如:Aidedsoft)
(6)再工程是推動自動軟體維護發展的動力
㈤ 什麼是軟體再工程軟體再工程的主要活動有哪些
什麼是軟體再工程
軟體再工程是指對既存對象系統進行調查,並將其重構為新形式代碼的開發過程。最大限度地重用既存系統的各種資源是再工程的最重要特點之一。從軟體重用方法學來說,如何開發可重用軟體和如何構造採用可重用軟體的系統體系結構是兩個最關鍵問題。不過對再工程來說前者很大一部分內容是對既存系統中非可重用構件的改造。軟體工程再工程是以軟體工程方法學為指導,對程序全部重新設計、重新編碼和測試,為此可以使用case工具(逆向工程和再工程工具)來幫助理解原有的設計。在軟體再工程的各個階段,軟體的可重用程度都將決定軟體再工程的工作量。
主要活動
在不破壞軟體的前提下,將舊版.NET軟體遷移到更加靈活、廣泛和可維護的架構中;
採用MVC、MVP和MVVM模式重構Web應用程序;
提出正確的問題,以預測可能發生的重構問題;
規劃和組織再工程項目,在恰當的時間將合適的技術運用到每一個任務;
採用創新的雙重測試使得單元測試更加有效;
應用依賴倒置打破緊耦合,並促進開發和測試;
應用源代碼控制、缺陷跟蹤和持續集成;
在未接觸業務邏輯之前,通過「清理」舊版解決方案進行改善;
建立堅實的開發基礎結構以支持再工程項目;
重構服務,涵蓋知識庫、域模型和命令調度程序的使用等高級技術;
重構控制器/視圖或視圖模型/視圖對。
㈥ 軟體再工程的過程
典型的軟體再工程過程模型如圖所示,該模型定義了6類活動。在某些情況下這些活動以線性順序發生,但也並非總是這樣,例如,為了理解某個程序的內部工作原理,可能在文檔重構開始之前必須先進行逆向工程。
在圖中顯示的再工程范型是一個循環模型。這意味著作為該范圍的組成部分的每個活動都可能被重復,而且對於任意一個特定的循環來說,過程可以在完成任意一個活動之後終止。下面簡要地介紹該模型所定義的6類活動。1.庫存目錄分析每個軟體組織都應該保存其擁有的所有應用系統的庫存目錄。該目錄包含關於每個應用系統的基本信息(例如,應用系統的名字,最初構建它的日期,已做過的實質性修改次數,過去18個月報告的錯誤,用戶數量,安裝它的機器數量,它的復雜程度,文檔質量,整體可維護性等級,預期壽命,在未來36個月內的預期修改次數,業務重要程度等)。每一個大的軟體開發機構都擁有上百萬行老代碼,它們都可能是逆向工程或再工程的對象。但是,某些程序並不頻繁使用而且不需要改變。此外,逆向工程和再工程工具尚不成熟,僅能對有限種類的應用系統執行逆向工程或再工程,代價又十分高昂,因此,對庫中每個程序都做逆向工程或再工程是不現實的。下述3類程序有可能成為預防性維護的對象。(1)預定將使用多年的程序。(2)當前正在成功地使用著的程序。(3)在最近的將來可能要做重大修改或增強的程序。應該仔細分析庫存目錄,按照業務重要程度、壽命、當前可維護性、預期的修改次數等標准,把庫中的應用系統排序,從中選出再工程的候選者,然後明智地分配再工程所需要的資源。3.文檔重構老程序固有的特點是缺乏文檔。具體情況不同,處理這個問題的方法也不同。(1)建立文檔非常耗費時間,不可能為數百個程序都重新建立文檔。如果一個程序是相對穩定的,正在走向其有用生命的終點,而且可能不會再經歷什麼變化,那麼,讓它保持現狀是個明智的選擇。(2)為了便於今後的維護,必須更新文檔,但是由於資源有限,應採用「使用時建文檔」的方法,也就是說,不是一下子把某應用系統的文檔全部都重建起來,而是只針對系統中當前正在修改的那些部分建立完整文檔。隨著時間流逝,將得到一組有用的和相關的文檔。(3)如果某應用系統是完成業務工作的關鍵,而且必須重構全部文檔,則仍然應該設法把文檔工作減少到必需的最小量。3.逆向工程軟體的逆向工程是分析程序以便在比源代碼更高的抽象層次上創建出程序的某種表示的過程。也就是說,逆向工程是一個恢復設計結果的過程,逆向工程工具從現存的程序代碼中抽取有關數據、體系結構和處理過程的設計信息。4.代碼重構代碼重構是最常見的再工程活動。某些老程序具有比較完整、合理的體系結構,但是,個體模塊的編碼方式卻是難於理解測試和維護的。在這種情況下,可以重構可疑模塊的代碼。為了完成代碼重構活動,首先用重構工具分析源代碼,標注出和結構化程序設計概念相違背的部分。然後重構有問題的代碼(此項工作可自動進行)。最後,復審和測試生成的重構代碼(以保證沒有引入異常)並更新代碼文檔。通常,重構並不修改整體的程序體系結構,它僅關注個體模塊的設計細節以及在模塊中定義的局部數據結構。如果重構擴展到模塊邊界之外並涉及軟體體系結構,則重構變成了正向工程。5.數據重構對數據體系結構差的程序很難進行適應性修改和增強,事實上,對許多應用系統來說,數據體系結構比源代碼本身對程序的長期生存力有更大影響。與代碼重構不同,數據重構發生在相當低的抽象層次上,它是一種全范圍的再工程活動。在大多數情況下,數據重構始於逆向工程活動,分解當前使用的數據體系結構,必要時定義數據模型,標識數據對象和屬性,並從軟體質量的角度復審現存的數據結構。當數據結構較差時(例如,在關系型方法可大大簡化處理的情況下卻使用平坦文件實現),應該對數據進行再工程。由於數據體系結構對程序體系結構及程序中的演算法有很大影響,對數據的修改必然會導致體系結構或代碼層的改變。6.正向工程正向工程也稱為革新或改造,這項活動不僅從現有程序中恢復設計信息,而且使用該信息去改變或重構現有系統,以提高其整體質量。正向工程過程應用軟體工程的原理、概念、技術和方法來重新開發某個現有的應用系統。在大多數情況下,被再工程的軟體不僅重新實現現有系統的功能,而且加入了新功能和提高了整體性能。