⑴ 什麼是軟體再工程軟體再工程的主要活動有哪些
什麼是軟體再工程
軟體再工程是指對既存對象系統進行調查,並將其重構為新形式代碼的開發過程。最大限度地重用既存系統的各種資源是再工程的最重要特點之一。從軟體重用方法學來說,如何開發可重用軟體和如何構造採用可重用軟體的系統體系結構是兩個最關鍵問題。不過對再工程來說前者很大一部分內容是對既存系統中非可重用構件的改造。軟體工程再工程是以軟體工程方法學為指導,對程序全部重新設計、重新編碼和測試,為此可以使用case工具(逆向工程和再工程工具)來幫助理解原有的設計。在軟體再工程的各個階段,軟體的可重用程度都將決定軟體再工程的工作量。
主要活動
在不破壞軟體的前提下,將舊版.NET軟體遷移到更加靈活、廣泛和可維護的架構中;
採用MVC、MVP和MVVM模式重構Web應用程序;
提出正確的問題,以預測可能發生的重構問題;
規劃和組織再工程項目,在恰當的時間將合適的技術運用到每一個任務;
採用創新的雙重測試使得單元測試更加有效;
應用依賴倒置打破緊耦合,並促進開發和測試;
應用源代碼控制、缺陷跟蹤和持續集成;
在未接觸業務邏輯之前,通過「清理」舊版解決方案進行改善;
建立堅實的開發基礎結構以支持再工程項目;
重構服務,涵蓋知識庫、域模型和命令調度程序的使用等高級技術;
重構控制器/視圖或視圖模型/視圖對。
⑵ 軟體工程師需要什麼基礎
[390219Z10]軟體工程基礎免費下載
鏈接:https://pan..com/s/1pVyabDzbF1nyfbBg67V4xA
《軟體工程基礎》是2006年由中國電力出版社出版的圖書,作者是(意)蓋伊曼德若利。本書通過嚴格的形式化方法和非形式化方法闡述了軟體工程原則和方法的重要性,有選擇地介紹了軟體工程基礎;強調並確定了適用於整個軟體生命期的基本原則,全面而深入地介紹了這些基本原則在軟體設計、規范、驗證、軟體生產過程和管理活動中的運用。
⑶ 軟體工程主要課程有哪些
軟體工程的主要課程:一、培養目標
本專業培養具有良好科學素養,能較系統和深入地掌握計算機科學技術基礎以及軟體工程專業知識和工作技能的高級專業技術人才。學生畢業後可在進行軟體規劃、設計與開發及應用的相關企業、事業單位或政府機關等從事計算機軟體規劃、咨詢、監理、生產、軟體技術研發、以及軟體應用系統維護等方面技術工作。
二、培養規格
本專業學生應系統掌握計算機科學技術及其應用有關基礎理論、建立從事軟體工程方面工作的必要專業知識結構和工作技能,包括計算理論基礎、計算機系統及其硬軟介面、系統軟體與工具軟體、計算機應用技術、軟體工程方法與工具等。通過四年時間的學習,學生應具備以下幾方面知識和工作能力:
1、 掌握計算機科學與技術基本理論和專業知識;
2、 掌握軟體系統分析、設計和說明的基本方法,具備軟體研究與技術開發能力;
3、 了解信息系統安全與知識產權保護的有關技術方法和法規;
4、 具備進行軟體系統規劃、設計、咨詢、軟體測試與評估以及軟體工程管理和系統運行管理的基本能力;
5、 了解現代信息技術的發展動態;
6、精通一門以上外語,具有較強專業外語閱讀和寫作能力;
7、 掌握文獻檢索、資料查詢的.基本方法,具有獨立獲取信息的能力。
三、計劃學制、最低畢業學分、授予學位
計劃學制:本專業實行學分制,學制一般為四年,允許提前畢業和推遲畢業,具體按學校有關學分制管理條例執行。鼓勵學生攻讀雙專業、雙學位和輔修。
最低畢業學分:162
授予學位:工學學士學位
四、課程修讀要求
1、 全校公共課分為公共必修課(34個學分)和公共選修課(11個學分)。公共必修課34個學分必須全修。公共選修課應在人文社會科學和藝術類課程中各選修4個學分,在社會科學類中修2個學分。就業指導課以講座形式進行,開設4-6個講座,計1個公選課學分。
2、學科基礎課共計52個學分,包括學科基礎課和學科專業課程,要求學生全修。
3、 專業必修課共計21個學分,要求學生全修。
4、 選修課學生必須修讀不低於34個學分,其中限選課程模塊為必選模塊,不夠部分的學分可在任選課模塊和計算機科學與技術的相關模塊中選擇。
5、 「學科前沿講座「為學科導引課程,以講座形式分散安排在各個學期。
6、 「就業指導課」以講座形式進行,開設4-6個講座,計1個公選課學分.
7、 本專業設置六門雙語教學課程(課程方案表中課程名稱前打*者),本專業不再單獨開設專業英語課程。
8、 課程計劃表中課程名稱前打☆者為綜合設計類課程。
9、 專業技能與實踐共計8個學分,學生可在課程結構比例表中自主選擇課程設計內容或專業實習,如選擇專業實習,則學生必須再選修至少2個課程設計。
⑷ 軟體工程的就業方向是什麼
1、Java方向:
JAVA初級程序員、JAVA計算程序員 、 JAVA工程師 、J2EE系統工程師等。
2、.Net方向:
.Net程序員網站開發工程師 .Net工程師等。
3、其它方向:
簡單的管理信息系統開發和維護人員 、網頁製作和客戶端腳本程序編寫人員 、初級資料庫管理和維護人員 、資料庫開發工程師 、系統分析設計工程 、軟體項目配置管理員 、文檔編寫工程師。
軟體工程專業是一門研究用工程化方法構建和維護有效的、實用的和高質量的軟體的學科。它涉及到程序設計語言,資料庫,軟體開發工具,系統平台,標准,設計模式等方面。
在現代社會中,軟體應用於多個方面。典型的軟體比如有電子郵件,嵌入式系統,人機界面,辦公套件,操作系統,編譯器,資料庫,游戲等。
同時,各個行業幾乎都有計算機軟體的應用,比如工業,農業,銀行,航空,政府部門等。這些應用促進了經濟和社會的發展,使得人們的工作更加高效,同時提高了生活質量。
(4)軟體再工程的相關技術有哪些擴展閱讀:
一、學科地位:
軟體工程學科是計算學科的分支,計算學科中理論、抽象、設計等三個學科形態,綁定、大問題的復雜性、概念和形式模型、一致性和完備性、效率、演化、抽象層次、按空間排序、按時間排序、
重用、安全性、折衷與決策等十二個基本概念,數學方法、系統科學方法在軟體工程學科中佔有重要地位。
此外,軟體工程還十分重視管理過程,以提高軟體產品的質量、降低開發成本、保證工程按時完成。系統性、規范性、可度量性也是軟體工程非常關注的。
軟體工程學科的理論基礎是數學、計算機科學。軟體工程的研究和實踐涉及人力、技術、資金、進度的綜合管理,是開展最優化生產活動的過程。
軟體工程必須劃分系統的邊界,給出系統的解決方案。因此,軟體工程的相關學科有計算機科學與技術、數學、計算機工程、管理學、系統工程和人類工程學等。
二、工程與科學:
軟體的開發到底是一門科學還是一門工程,這是一個被爭論了很久的問題。實際上,軟體開發兼有兩者的特點。但是這並不意味著它們可以被互相混淆。
很多人認為軟體工程基於計算機科學和信息科學就如傳統意義上的工程學之於物理和化學一樣。在美國,大約40%的軟體工程師具有計算機科學的學位。
在世界其他地方,這個比例也差不多。他們並不一定會每天使用計算機科學方面的知識,但是他們每天都會使用軟體工程方面的知識。
⑸ 阻礙軟體復用的技術和非技術因素有哪些
軟體復用的關鍵技術實現軟體復用的關鍵因素主要包括:軟體構件技術、領域工程、軟體構架、軟體再工程、開放系統、軟體過程、CASE技術等.以及 各種非技術因素。實現軟體...
⑹ 軟體開發的技術有哪些
一、從行業上劃分,軟體開發有以下:
1、手機
Mac OS(蘋果的),Linux,Palm(最大特色是不能後台),BlackBerry(黑莓)Windows Phone(WP,不錯的系統,)
Android(安卓,07年興起的,很好的系統),還有幾個新系統,三星與intel聯合開發的tizen,Mozilla 公司的FireFox OS ,N900的maemo。
2、電腦
企業管理軟體,如:如MES系統軟體、OA系統軟體、CRM系統軟體、HR系統軟體、ERP系統軟體合同。
二、從設計領域劃分,包括以下領域:
1、 桌面程序:Java、C++、C#、VB、C均可。
2、網站伺服器端開發:JSP(Java語法)、PHP、ASP(C#語法)、Web App框架等
3、網站客戶端:HTML、CSS、Javascript、Flash等等
4、智能手機程序:安卓使用Java,iPhone使用Objective-C
5、底層、工具開發:C、C++
6、多功能腳本程序:Python、Perl、Ruby等等
7.、人工智慧:Prolog、PDDL
8、 工業控制:C、PLC、匯編
9、通用應用層數據交換處理技術:標記語言XML/XPATH/XSLT、JSON、YAML等等
10、資料庫 SQL/PLSQL
(6)軟體再工程的相關技術有哪些擴展閱讀
軟體開發工具:
軟體開發工具是用於輔助軟體生命周期過程的基於計算機的工具。通常可以設計並實現工具來支持特定的軟體工程方法,減少手工方式管理的負擔。
與軟體工程方法一樣,他們試圖讓軟體工程更加系統化,工具的種類包括支持單個任務的工具及囊括整個生命周期的工具。
軟體需求工具,包括需求建模工具和需求追蹤工具。
軟體設計工具,用於創建和檢查軟體設計,因為軟體設計方法的多樣性,這類工具的種類很多。
軟體構造工具,包括程序編輯器、編譯器和代碼生成器、解釋器和調試器等。
軟體測試工具,包括測試生成器、測試執行框架、測試評價工具、測試管理工具和性能分析工具。
軟體維護工具,包括理解工具(如可視化工具)和再造工具(如重構工具)。
軟體配置管理工具,包括追蹤工具、版本管理工具和發布工具。
軟體工程管理工具,包括項目計劃與追蹤工具、風險管理工具和度量工具。
軟體工程過程工具,包括建模工具、管理工具和軟體開發環境。
軟體質量工具,包括檢查工具和分析工具。
⑺ 軟體再工程的再測試
一般來說,再測試是再工程過程中工作量最大的一項工作。如果能夠重用原有的測試用例及運行結果,將能大大降低再工程成本。對於重用的部分,特別是可重用的(獨立性較強的)局部系統,還可以免除測試,這也正是重用技術被再工程高度評價的關鍵原因之一。當然再工程後的系統總有變動和增加的部分,對受其影響的整個范圍都要毫無遺漏地進行測試,不可心存僥幸,以免因「一個蒼蠅壞了百年老湯」。
實用的重用戰略
在判斷既存系統應該如何重用時,首先要明確哪些是可重用對象,以及如何使用這些可重用對象。下面以既存LAN系統重構成Web系統的再工程為例,說明再分析和再編碼將遇到的一些重用課題。
我們可以將既存LAN系統劃分成界面、邏輯、數據三個層次。用既存系統的三個層次去分別對應典型Web系統的表示層、邏輯層和數據層。由此從邏輯上得到對應每個層次的輸入和輸出,然後為每一層尋找能夠實現最大程度重用的重構方法。
● 界面重用策略
界面模擬方法將基於文本的舊界麵包裝為新的圖形界面。舊界面運行在終端上,新界面可以是基於PC的圖形界面,也可以是運行在瀏覽器上的HTML頁面。新用戶界面通過一個界面模擬工具與舊界面通信。此方法重用率相當高。但是不修改既存系統會同時將舊系統的結構性缺點全部繼承下來。
基於客戶端的Web應用(Java Applet)Applet可以實現從界面、邏輯到資料庫的許多功能。完全用Java語言重寫一個系統是不現實的,重用率也不會很高,這不是軟體再工程所提倡的。已有許多Applet自動轉化工具,而且其轉化後代碼的重用率相當高。
基於伺服器端的Web應用即重新開發界面。這種方法看上去沒有重用既存界面代碼,其實不然。首先,界面設計完全可以重用,從而節省設計時間;其次,我們可以將某些界面做成可重用的,這樣也會減少工作量。
● 邏輯層包裝原則
通過對邏輯層的分解可以得到可重用和不可重用的兩部分代碼。對可重用部分可直接使用,對於不可重用部分則應盡量通過各種包裝技術按統一標准將其改造成可重用構件。包裝方法有很多,如對象包裝法、部件包裝法等。
● 數據層重用策略
數據層通常要求更高的重用率。邏輯和數據休戚相關,如果改動資料庫,邏輯勢必不能正常運行,對邏輯部分的重用也就無從談起。如果非改不可的話,也要以保證最大限度的重用為原則,爭取做到只增不刪,以保證數據的完整性。
軟體再工程分為哪兩個部分
答:軟體再工程的兩部分:首先,逆向過程:從代碼開始推導出設計或是規格說明(可理解性);其次,改善軟體的靜態質量(可維護性、復用性或演化性)。
為什麼實施軟體再工程
(1)再工程可幫助軟體機構降低軟體演化的風險
(2)再工程可幫助機構補償軟體投資
(3)再工程可使得軟體易於進一步變革
(4)軟體再工程有著廣闊的市場
(5)再工程能力擴大CASE工具集(如:Aidedsoft)
(6)再工程是推動自動軟體維護發展的動力
⑻ 軟體再工程的過程
典型的軟體再工程過程模型如圖所示,該模型定義了6類活動。在某些情況下這些活動以線性順序發生,但也並非總是這樣,例如,為了理解某個程序的內部工作原理,可能在文檔重構開始之前必須先進行逆向工程。
在圖中顯示的再工程范型是一個循環模型。這意味著作為該范圍的組成部分的每個活動都可能被重復,而且對於任意一個特定的循環來說,過程可以在完成任意一個活動之後終止。下面簡要地介紹該模型所定義的6類活動。1.庫存目錄分析每個軟體組織都應該保存其擁有的所有應用系統的庫存目錄。該目錄包含關於每個應用系統的基本信息(例如,應用系統的名字,最初構建它的日期,已做過的實質性修改次數,過去18個月報告的錯誤,用戶數量,安裝它的機器數量,它的復雜程度,文檔質量,整體可維護性等級,預期壽命,在未來36個月內的預期修改次數,業務重要程度等)。每一個大的軟體開發機構都擁有上百萬行老代碼,它們都可能是逆向工程或再工程的對象。但是,某些程序並不頻繁使用而且不需要改變。此外,逆向工程和再工程工具尚不成熟,僅能對有限種類的應用系統執行逆向工程或再工程,代價又十分高昂,因此,對庫中每個程序都做逆向工程或再工程是不現實的。下述3類程序有可能成為預防性維護的對象。(1)預定將使用多年的程序。(2)當前正在成功地使用著的程序。(3)在最近的將來可能要做重大修改或增強的程序。應該仔細分析庫存目錄,按照業務重要程度、壽命、當前可維護性、預期的修改次數等標准,把庫中的應用系統排序,從中選出再工程的候選者,然後明智地分配再工程所需要的資源。3.文檔重構老程序固有的特點是缺乏文檔。具體情況不同,處理這個問題的方法也不同。(1)建立文檔非常耗費時間,不可能為數百個程序都重新建立文檔。如果一個程序是相對穩定的,正在走向其有用生命的終點,而且可能不會再經歷什麼變化,那麼,讓它保持現狀是個明智的選擇。(2)為了便於今後的維護,必須更新文檔,但是由於資源有限,應採用「使用時建文檔」的方法,也就是說,不是一下子把某應用系統的文檔全部都重建起來,而是只針對系統中當前正在修改的那些部分建立完整文檔。隨著時間流逝,將得到一組有用的和相關的文檔。(3)如果某應用系統是完成業務工作的關鍵,而且必須重構全部文檔,則仍然應該設法把文檔工作減少到必需的最小量。3.逆向工程軟體的逆向工程是分析程序以便在比源代碼更高的抽象層次上創建出程序的某種表示的過程。也就是說,逆向工程是一個恢復設計結果的過程,逆向工程工具從現存的程序代碼中抽取有關數據、體系結構和處理過程的設計信息。4.代碼重構代碼重構是最常見的再工程活動。某些老程序具有比較完整、合理的體系結構,但是,個體模塊的編碼方式卻是難於理解測試和維護的。在這種情況下,可以重構可疑模塊的代碼。為了完成代碼重構活動,首先用重構工具分析源代碼,標注出和結構化程序設計概念相違背的部分。然後重構有問題的代碼(此項工作可自動進行)。最後,復審和測試生成的重構代碼(以保證沒有引入異常)並更新代碼文檔。通常,重構並不修改整體的程序體系結構,它僅關注個體模塊的設計細節以及在模塊中定義的局部數據結構。如果重構擴展到模塊邊界之外並涉及軟體體系結構,則重構變成了正向工程。5.數據重構對數據體系結構差的程序很難進行適應性修改和增強,事實上,對許多應用系統來說,數據體系結構比源代碼本身對程序的長期生存力有更大影響。與代碼重構不同,數據重構發生在相當低的抽象層次上,它是一種全范圍的再工程活動。在大多數情況下,數據重構始於逆向工程活動,分解當前使用的數據體系結構,必要時定義數據模型,標識數據對象和屬性,並從軟體質量的角度復審現存的數據結構。當數據結構較差時(例如,在關系型方法可大大簡化處理的情況下卻使用平坦文件實現),應該對數據進行再工程。由於數據體系結構對程序體系結構及程序中的演算法有很大影響,對數據的修改必然會導致體系結構或代碼層的改變。6.正向工程正向工程也稱為革新或改造,這項活動不僅從現有程序中恢復設計信息,而且使用該信息去改變或重構現有系統,以提高其整體質量。正向工程過程應用軟體工程的原理、概念、技術和方法來重新開發某個現有的應用系統。在大多數情況下,被再工程的軟體不僅重新實現現有系統的功能,而且加入了新功能和提高了整體性能。