階段劃分
1計劃
對所要解決的問題進行總體定義,包括了解用戶的要求及現實環境,從技術、經濟和社會因素等三個方面研究并論證本軟件項目的可行性,編寫可行性研究報告,探讨解決問題的方案,并對可供使用的資源(如計算機硬件、系統軟件、人力等)成本,可取得的效益和開發進度作出估計,制訂完成開發任務的實施計劃。
2分析
軟件需求分析就是對開發什麼樣的軟件的一個系統的分析與設想。它是一個對用戶的需求進行去粗取精、去僞存真、正确理解,然後把它用軟件工程開發語言(形式功能規約,即需求規格說明書)表達出來的過程。本階段的基本任務是和用戶一起确定要解決的問題,建立軟件的邏輯模型,編寫需求規格說明書文檔并最終得到用戶的認可。需求分析的主要方法有結構化分析方法、數據流程圖和數據字典等方法。本階段的工作是根據需求說明書的要求,設計建立相應的軟件系統的體系結構,并将整個系統分解成若幹個子系統或模塊,定義子系統或模塊間的接口關系,對各子系統進行具體設計定義,編寫軟件概要設計和詳細設計說明書,數據庫或數據結構設計說明書,組裝測試計劃。在任何軟件或系統開發的初始階段必須先完全掌握用戶需求,以期能将緊随的系統開發過程中哪些功能應該落實、采取何種規格以及設定哪些限制優先加以定位。系統工程師最終将據此完成設計方案,在此基礎上對随後的程序開發、系統功能和性能的描述及限制作出定義。
3設計
軟件設計可以分為概要設計和詳細設計兩個階段。實際上軟件設計的主要任務就是将軟件分解成模塊是指能實現某個功能的數據和程序說明、可執行程序的程序單元。可以是一個函數、過程、子程序、一段帶有程序說明的獨立的程序和數據,也可以是可組合、可分解和可更換的功能單元。模塊,然後進行模塊設計。概要設計就是結構設計,其主要目标就是給出軟件的模塊結構,用軟件結構圖表示。詳細設計的首要任務就是設計模塊的程序流程、算法和數據結構,次要任務就是設計數據庫,常用方法還是結構化程序設計方法。
4編碼
軟件編碼是指把軟件設計轉換成計算機可以接受的程序,即寫成以某一程序設計語言表示的“源程序清單”。充分了解軟件開發語言、工具的特性和編程風格,有助于開發工具的選擇以及保證軟件産品的開發質量。
當前軟件開發中除在專用場合,已經很少使用二十世紀80年代的高級語言了,取而代之的是面向對象的開發語言。而且面向對象的開發語言和開發環境大都合為一體,大大提高了開發的速度。
5測試
軟件測試的目的是以較小的代價發現盡可能多的錯誤。要實現這個目标的關鍵在于設計一套出色的測試用例(測試數據與功能和預期的輸出結果組成了測試用例)。如何才能設計出一套出色的測試用例,關鍵在于理解測試方法。不同的測試方法有不同的測試用例設計方法。兩種常用的測試方法是白盒法測試對象是源程序,依據的是程序内部的的邏輯結構來發現軟件的編程錯誤、結構錯誤和數據錯誤。結構錯誤包括邏輯、數據流、初始化等錯誤。用例設計的關鍵是以較少的用例覆蓋盡可能多的内部程序邏輯結果。白盒法和黑盒法依據的是軟件的功能或軟件行為描述,發現軟件的接口、功能和結構錯誤。其中接口錯誤包括内部/外部接口、資源管理、集成化以及系統錯誤。黑盒法用例設計的關鍵同樣也是以較少的用例覆蓋模塊輸出和輸入接口。
6維護
維護是指在已完成對軟件的研制(分析、設計、編碼和測試)工作并交付使用以後,對軟件産品所進行的一些軟件工程的活動。即根據軟件運行的情況,對軟件進行适當修改,以适應新的要求,以及糾正運行中發現的錯誤。編寫軟件問題報告、軟件修改報告。
一個中等規模的軟件,如果研制階段需要一年至二年的時間,在它投入使用以後,其運行或工作時間可能持續五年至十年。那麼它的維護階段也是運行的這五年至十年期間。在這段時間,人們幾乎需要着手解決研制階段所遇到的各種問題,同時還要解決某些維護工作本身特有的問題。做好軟件維護工作,不僅能排除障礙,使軟件能正常工作,而且還可以使它擴展功能,提高性能,為用戶帶來明顯的經濟效益。然而遺憾的是,對軟件維護工作的重視往往遠不如對軟件研制工作的重視。而事實上,和軟件研制工作相比,軟件維護的工作量和成本都要大得多。
在實際開發過程中,軟件開發并不是從第一步進行到最後一步,而是在任何階段,在進入下一階段前一般都有一步或幾步的回溯。在測試過程中的問題可能要求修改設計,用戶可能會提出一些需要來修改需求說明書等。
設施需求
1開發平台
軟件開發平台源于繁瑣的實踐開發過程中。開發人員在實踐中将常用的函數、類、抽象、接口等進行總結、封裝,成為了可以重複使用的“中間件”,而随着“中間件”的成熟和通用,功能更強大、更能滿足企業級客戶需求的——軟件開發平台應運而生。
平台是一段時間内科研成果的彙聚,也是階段性平台期的标志,為行業進入新的研發領域提供了基礎。由于平台對企業核心競争力的提升非常明顯,國内的管理軟件市場,軟件開發平台的應用已經成為一種趨勢。
由于開發環境、開發人員、功能定位、行業背景等的不同,不同品牌的平台存在較大差别。
2開發環境
軟件開發環境在歐洲又叫集成式項目支持環境(Integrated Project Support Environment,IPSE)。軟件開發環境的主要組成成分是軟件工具。人機界面是軟件開發環境與用戶之間的一個統一的交互式對話系統,它是軟件開發環境的重要質量标志。存儲各種軟件工具加工所産生的軟件産品或半成品(如源代碼、測試數據和各種文檔資料等)的軟件環境數據庫是軟件開發環境的核心。工具間的聯系和相互理解都是通過存儲在信息庫中的共享數據得以實現的。
軟件開發環境數據庫是面向軟件工作者的知識型信息數據庫,其數據對象是多元化、帶有智能性質的。軟件開發數據庫用來支撐各種軟件工具,尤其是自動設計工具、編譯程序等的主動或被動的工作。
較初級的SDE數據庫一般包含通用子程序庫、可重組的程序加工信息庫、模塊描述與接口信息庫、軟件測試與糾錯依據信息庫等;較完整的SDE數據庫還應包括可行性與需求信息檔案、階段設計詳細檔案、測試驅動數據庫、軟件維護檔案等。更進一步的要求是面向軟件規劃到實現、維護全過程的自動進行,這要求SDE數據庫系統是具有智能的,其中比較基本的智能結果是軟件編碼的自動實現和優化、軟件工程項目的多方面不同角度的自我分析與總結。這種智能結果還應主動地被重新改造、學習,以豐富SDE數據庫的知識、信息和軟件積累。這時候,軟件開發環境在軟件工程人員的恰當的外部控制或幫助下逐步向高度智能與自動化邁進。
軟件實現的根據是計算機語言。時至今日,計算機語言發展為算法語言、數據庫語言、智能模拟語言等多種門類,在幾十種重要的算法語言中,C&C++語言日益成為廣大計算機軟件工作人員的親密夥伴,這不僅因為它功能強大、構造靈活,更在于它提供了高度結構化的語法、簡單而統一的軟件構造方式,使得以它為主構造的SDE數據庫的基礎成分——子程序庫的設計與建設顯得異常的方便。
3開發語言
常見的軟件開發語言:JAVA、C/C++/php/JSP/ASP/POWERBUILDER/DELPHI/.NET/C#/vb/等。
與應用最關鍵的需要用到數據庫,常見數據庫:MySQL/SQLSERVER/ORACLE等。
專業需求
專業培養
軟件開發專業主要培養德智體全面發展,具有一定計算機軟硬件維護、網絡組建、維護管理的高級實用技術型人才。通過本專業的學習,能熟練掌握常用的計算機軟件的使用、維護與技巧;在硬件方面學生應了解計算機硬件的發展,熟練掌握計算機組裝的方法,能熟練運用應用軟件檢測計算機性能、故障的範圍所在,掌握硬件故障的一般處理方法;在網絡方面,學生應掌握如今流行網絡的技術特點,掌握網絡工程、網絡維護、網絡安全及應用方面的知識。能勝任一般網絡工程方案的設計、組建、網絡維護、及簡單網站的建設與維護。
培養對象
本專業學生主要學習計算機基礎,接受從事軟件應用方面的基本訓練,具備應用軟件解決實際問題的基本能力。
就業方向
本專業畢業生适合的工作崗位是計算機程序設計師。适合于熟練地按照工程化的思路進行軟件編制、軟件測試的工作崗位,能擔任各種企事業單位和各級工程建設部門、管理部門的計算機軟件和硬件維護、網絡的組建、維護等工作,也可從事計算機研究與應用、軟件開發等方面的工作。具體可分為以下方面:
1 可視化編程掌握程序設計方法及可視化技術,精通一種可視化平台及其軟件開發技術。獲取Delphi程序員系列、Java初級或VB開發能手認證。就業方向:企業、政府、社區、各類學校等可視化編程程序員。
2 WEB應用程序設計 具有美工基礎和網頁動畫設計能力,掌握交互式網頁程序的設計技術,能進行網站建設和維護。獲取Macromedia多媒體互動設計師或Delphi初級程序員或Delphi快速網絡開發工程師認證。就業方向:企業、政府、社區、各類學校等WEB應用程序員。
3 軟件測試 掌握軟件測試的基本原理、方法和組織管理,精通軟件測試工具。獲取ATA軟件測試工程師或Delphi初級程序員或Java初級程序員認證。就業方向:企業、政府、社區、各類學校等軟件測試員。
4 數據庫管理 能應用關系範式進行數據庫設計,精通SQL語言,勝任數據庫服務器管理與應用工作。獲取Oracle數據庫管理或SQL Server數據庫應用或Windows XP應用認證。就業方向:企業、政府、社區、各類學校等部門的中、大型數據庫管理員。
5 圖形圖像制作 精通國際上流行的圖形/圖像制作工具(如CorelDraw、Photoshop、Pagemaker等)。獲取平面設計師相關的認證。就業方向:廣告制作公司、建築設計公司、包裝裝璜設計公司、居室裝修公司、出版印刷公司。
6 網絡構建技術 熟悉網絡結構和組網方式,掌握建網方法,能利用工具分析和排除常見網絡故障。獲取Cisco路由配置或華為網絡工程或AMP應用工程師認證。就業方向:企業、政府、社區、各類學校等網絡構建工程師。
7 網絡系統管理 掌握網絡系統管理的基本知識與應用技能,能進行網絡系統的安全設置。獲取Window2000 Server或TurboLinux TLCE或Cisco路由配置專家認證。就業方向:企業、政府、社區、各類學校等網絡系統管理員。
8 多媒體制作 具有多媒體程序設計與多媒體制作策劃的能力。基本掌握面向對象程序設計與建模、造型設計、場景設計、分鏡頭原理等技能。獲取多媒體設計師相關的認證。就業方向:多媒體設計與制作公司、動畫美術制作出版公司、廣告制作公司。
9 計算機辦公應用 精通辦公自動化應用與管理,熟悉服務器的安裝、管理和維護,基于應用服務器的相關服務和軟件系統,具備對服務器的網絡安全設置、郵件、網頁發布、FTP、OA、BBS等系統的應用和維護能力。就業方向:企業、政府、社區、各類學校等系統管理
軟件開發工具
軟件開發工具是用于輔助軟件生命周期過程的基于計算機的工具。通常可以設計并實現工具來支持特定的軟件工程方法,減少手工方式管理的負擔。與軟件工程方法一樣,他們試圖讓軟件工程更加系統化,工具的種類包括支持單個任務的工具及囊括整個生命周期的工具。
軟件需求工具,包括需求建模工具和需求追蹤工具。
軟件設計工具,用于創建和檢查軟件設計,因為軟件設計方法的多樣性,這類工具的種類很多。
軟件構造工具,包括程序編輯器、編譯器和代碼生成器、解釋器和調試器等。
軟件測試工具,包括測試生成器、測試執行框架、測試評價工具、測試管理工具和性能分析工具。
軟件維護工具,包括理解工具(如可視化工具)和再造工具(如重構工具)。
軟件配置管理工具,包括追蹤工具、版本管理工具和發布工具。
軟件工程管理工具,包括項目計劃與追蹤工具、風險管理工具和度量工具。
軟件工程過程工具,包括建模工具、管理工具和軟件開發環境。
軟件質量工具,包括檢查工具和分析工具
行業劃分
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、合同雙方應明确約定受托人對委托人進行項目培訓,以及培訓費用的支付問題。
2、合同雙方應明确約定開發軟件的總價款以及各個部分的價格。
3、合同雙方應明确約定受托人向委托人提供進度報告的方式和時間。
4、委托人在領受了受托人交付件後,應立即對該交付件進行測試和評估,以确認其是否符合開發軟件的功能和規格。
5、委托人應向受托人提供有關信息與資料,特别是有關委托人對開發軟件的功能和目标需求方面的信息和資料,明确質量要求。
6、合同雙方應明确約定委托人對于委托人提交的有關需求說明、資料和信息所涉及的軟件功能、目标、需求構成及相關技術問題向受托人咨詢或征求意見的權利。
7、委托方應明确約定受托方向委托方進行軟件維護和支持服務的時間和内容。
受托人的注意事項
1、受托人在完成軟件開發後,需要增加開發費用時,該怎麼處理,應與委托人進行明确約定。
2、應在合同中約定完成軟件開發的彈性時間,避免由于委托人計算失誤,未能在合同規定的時間内完成軟件開發而承擔的違約責任。
3、合同雙方應明确約定受托人提交需求說明書、概要設計說明書、詳細設計說明書的具體時間。
4、合同雙方應明确約定委托人在受托人提交進度報告後答複的時間和方式。
5、明确所開發軟件的版權歸屬。
軟件版權的歸屬有兩種處理方法:其一是軟件版權歸委托方;其二是軟件版權歸被委托方。實踐中可采取以下辦法解決,即軟件版權歸委托人,反過來委托人給予被委托人在一定範圍内使用軟件的許可,如允許被委托人使用例行程序開發其他軟件等,由此雙方都能各得所需。
6、受托人應約定委托人檢驗軟件後出具書面領受文件或遞交缺陷報告及領受或出具缺陷報告時間。
委托人和受托人的注意事項
1、合同雙方應明确約定合同項目是否可以分包,如果可以,應寫明可分包的範圍。
2、合同雙方應明确約定軟件開發的目的、處理對象、軟件的主要功能和目标以及應達到的技術指标。
3、開發進度
①合同雙方應明确約定合理的軟件系統試運行的時間。
②合同雙方應明确約定開發軟件的交付時間和進度。
4、知識産權歸屬
①若合同約定軟件系統的知識産權歸一方所有時,應明确約定另一方所擁有的使用權及權限範圍。
②合同雙方應明确約定所開發軟件的知識産權的權屬,是共同所有還是一方所有。
5、驗收
驗收對委托開發軟件合同雙方都非常重要,它關系到如何确認以下幾個問題。
①、委托方在收到軟件程序以及第一批文檔後多長時間内完成對軟件的測驗,以及在多長時間内委托方有權以軟件程序質量未達到合同所規定的技術标準要求為由,要求被委托方對程序進行修改使其達到合同規定的标準。
②、對程序進行修改費用應哪方負責。
③、被委托方應在多長内完成修改程序的工作,并且應在何時、何地以及以何種方式将修改後的軟件交會給委托方。
④、委托方收到修改過的軟件之後應在多長時間完成第二次測驗,并應在多長時間内委托方應将第二次測驗的結果通知被委托方。
⑤、如第二次測驗計算機程序仍未達到合同規定的技術标準要求,委托方是否有權拒絕拒絕接受程序,交且是否有權要求被委托方按合同規定的索賠條款進行賠償。
⑥、如果委托方要按期将首次或者第二次測驗的結論通知被委托方,是否可以視為委托方已接受被委托方開發的軟件。
⑦、如果程序文檔分為兩次交付,在委托方實際接受軟件後多長時間内被委托方應将第二批文檔交付給委托方。
6、交付說明書
①合同雙方應明确約定交付的文檔的形式和内容。
②合同雙方應明确約定委托人對受托人提交的各種說明書的審核時間。
③合同雙方應明确約定委托人對受托人提交的說明書有異議,雙方應如何解決等問題。
合同雙方沒有明确約定當委托人對受托人提交的說明書有異議時,雙方應如何解決。導緻合同雙方對此發生争議,引起糾紛。
7、證據
①合同簽訂後,雙方應該妥善保管合同書以及主合同、相關憑據、有關會計資料以及其它承諾函、約定書等合同附件。
②對方拒絕接受函件等其他文書時,應當向公證機構或其他部門公證或提存保留證據。
③應嚴格按照法律法規的規定進行證據的公證和提存保留。
④當事人一方依照約定解除合同或依照法定事項主張解除合同,應保存通知對方解除合同的證據。
8、合同雙方應明确約定項目變更的條件。
9、合同雙方應明确約定軟件開發系統的名稱,分屬于不同當事人的軟件。
10、保密
①保密對象:合同雙方應明确約定保密對象,應該對保密對象加以細化,以例舉的方式列出,還應約定特定情況下的一些例外事項。
②保密責任:當事人應當明确約定雙方對商業秘密都負有保密義務,任何一方都不得擅自洩漏,否則承擔相應責任。
③保密期限:應約定對合同中的保密事項的具體保密期限,或隻是有個概述而未明确具體的時間段、時間點。
④保密條款的獨立性:雙方可以約定,不論合同是否變更、解除或終止,合同保密條款不受其限制而繼續有效,各方均應繼續承擔約定的保密義務。
11、合同雙方的權利義務是否可以轉讓。
12、簽約細節
①合同中應當說明雙方當事人信息。如當事人名稱,住所,法定代表人或主要負責人,開戶金融機構,帳号,電話,郵政編碼,簽訂合同日期。簽訂合同地點等。
②雙方均應簽署清楚無誤的簽名,當事方是單位的還應加蓋公章。
③簽訂時間:雙方應在合同尾部标明清楚無誤的簽約時間。
④合同用語要力求達到條款明确、具體、措辭确切,防止“基本”、“盡可能”、“如有可能”“應該”“最新”等不确切的條款和字眼在合同中出現。
13、不可抗力
①一方發生不可抗力時應當按照約定及時向對方告知、證明,并應及時采取措施防止損失擴大。
②雙方當事人應當明确約定不可抗力的範圍、遭遇不可抗力後的通知辦法和證明方法、雙方可否因不可抗力解除合同、可否因不可抗力造成的履行問題要求賠償、在何種情況下解除合同等。
③一方發生不可抗力後應依約及時向對方告知、證明時應保存證據。
14、履行過程中雙方都應注意相對方主體變更情況,若有變更解散情形的,應注意哪個法人或組織繼受其權利義務,并應收集相關證據證明以上事實。
15、争議解決方式
①如約定訴訟管轄法院,隻能約定由被告住所地、合同履行地、合同簽訂地、原告住所地、合同标的物所在地法院管轄,且隻能約定其中一個法院管轄。如果約定不明确、選擇兩個以上法院管轄、或約定上述5個法院以外的法院,或既約定仲裁又約定訴訟的,這樣解決争議的條款是無效的。
當事人選擇管轄法院時,選擇一個以上的法院;或者選擇仲裁,卻同時約定由法院管轄。這樣解決争議的條款是無效的,可能會增加當事人争議解決成本(時間、金錢),不符合當事人初始意圖,不利于争議有效率地解決。
②發生争議後當事人雙方可以平等協商達成共識,也可以由人民調解委員會調解或者向人民法院起訴以及依約定申請仲裁。人民法院的裁判、調解以及仲裁機構的裁決、調解都是具有強制力;當事人雙方協商達成的共識和人民調解委員會的調解沒有強制力但是其效力等同于簽訂了新的合同。
③如約定仲裁,應當明确約定具體的仲裁機構和仲裁事項。仲裁機構約定明确的标準為:仲裁機構所在地明确,同一地點有兩個以上仲裁機構的應當寫明約定的仲裁機構的詳細名稱。
16、合同雙方當事人應該在涉外合同中明确約定一旦發生争議應該适用的法律,而且這種約定要切實可行。
17、在訴訟中,應權衡利弊,最大限度要求對方承擔所有損失,不能主動放棄任何有利于己方的訴訟請求。
18、受到對方欺詐、脅迫,被人趁人之危簽訂合同的當事人應當保存好證據并且在一年之内向人民法院起訴或者依約向仲裁機構申請仲裁主張撤銷或者變更合同。
19、在簽訂合同時,應當附帶合同使用說明。如:合同的适用範圍,條款術語的理解等方面。
20、在合同履行過程中一方違約,另一方應采取措施提請對方注意并與對方進行協商,确定責任的負擔。
21、當雙方對合同内容協商一緻進行變更時應重新訂立書面合同或達成書面協議。
22、簽約主體
①合同雙方應正确區分單位與單位負責人的關系,應明确認識到單位負責人不能以其個人名義代表單位。
②一方當事人與對方當事人的委托代理人簽訂合同時,應該事先确認代簽約的人是否持有對方當事人的授權委托書。
③應對各自内部人員的權限作出規定,禁止無權人員濫用單位公章、簽字等與對方履行各項合同事宜,尤其不能作出不符合合同内容和己方利益的意思表示。
④雙方當事人應當調查簽約對方的簽約主體資格。
23、應在合同中寫明主合同、相關憑據、有關會計資料以及其它承諾函、約定書等為本合同附件。
24、違約責任
①合同雙方應在合同中約定,如一方違反合同約定,另一方可追究違約方的責任,并要求違約方承擔違約金或賠償損失。
②合同雙方隻要約定了違約金或賠償損失的,就要約定具體數額或計算方法。在約定違約金時,數額約定不能過高或過低,約定數額過低,損失得不到補償,約定數額過高,會因數額過高得不到法律支持無法實現。一般而言,約定的違約金數額不能超出合同标的額,若一方的損失确實超過合同标的,可直接約定賠償損失。
25、當事人一方依照約定解除合同或依照法定事項主張解除合同的,應當通知對方。合同自通知到達對方時解除。
26、雙方在合同中應明确約定合同履行中若一方組織解散,其合同權利義務的承擔者。若在合同訂立時一方正處于解散的變動期内且能預見其權利義務的繼受者,則應在合同中明确約定具體的繼受者名稱。同時須約定一方發生組織解散情形應及時告知相對方及違反此告知義務的責任。
27、雙方在簽訂合同時,合同用語的一定要準确、清楚,對一些專業性較強的關鍵性的名詞術語要在合同開頭作出必要的定義或解釋,以免發生歧義或造成理解障礙。
28、雙方應在合同中約定,合同未盡事宜依照有關法律法規執行,法律法規未作規定的,雙方可另行協商簽訂書面補充協議作為本合同的附件,補充協議與本合同具有同等法律效力。
29、雙方應在合同中明确約定合同生效與終止的條件、時間和事由等。
30、合同雙方應約定一方若變更通訊地址,應在變更之日起幾日内以書面形式通知對方及未通知對方應承擔的責任。
31、合同雙方應在合同中明确約定雙方的文件往來應采取何種形式。宜采書面形式,包括:書信、傳真、電報、當面送交等方式。
32、一方接到另一方解除合同的通知時如有異議,可及時請求人民法院或者仲裁機構确認解除合同的效力。
以上細節問題,雙方在簽訂軟件開發合同時,應當加以重視,應嚴格按照法律規定辦理相關手續,從而最大限度規避法律風險。