軟體開發
軟體開發
軟體開發是根據用戶要求建造出軟體系統或者系統中的軟體部分的過程。軟體開發是一項包括需求捕捉、需求分析、設計、實現和測試的系統工程。軟體一般是用某種程序設計語言來實現的。通常採用軟體開發工具可以進行開發。軟體分為系統軟體和應用軟體,並不只是包括可以在計算機上運行的程序,與這些程序相關的文件一般也被認為是軟體的一部分。軟體設計思路和方法的一般過程,包括設計軟體的功能和實現的演演算法和方法、軟體的總體結構設計和模塊設計、編程和調試、程序聯調和測試以及編寫、提交程序。
隨著計算機技術廣泛應用到社會生活的各個領域,使得軟體開發需求持續攀升。全國IT行業軟體人才總需求量達數十萬之多。軟體人才主要在各大軟體公司、企事業單位、高等院校、各大研究所、國防等重要部門從事軟體設計開發、應用與研究工作。
軟體開發包括:項目管理控制程序、需求分析控制程序、概要設計控制程序、編碼控制程序、設計評審控制程序、配置管理控制程序、軟體工具控制程序、測試和驗收控制程序等。
1、人員派遣服務服務模式:
軟體開發公司提供經驗豐富的IT專家參與您的項目組,在客戶的辦公地點為您服務比如中國、日本、歐洲、美洲等地。我們可以提供短期或長期的協助開發合同。
2、離岸開發中心
您提供行業專家,軟體開發公司提供設備和開發人員,通過雙方完美的合作,高效快捷地實現您的利潤最大化。
離岸開發組+本地支持,軟體開發公司提供全部的Off-shore和On-site工程師以滿足客戶對低成本的需求。
對所要解決的問題進行總體定義,包括了解用戶的要求及現實環境,從技術、經濟和社會因素等3個方面研究並論證本軟體項目的可行性,編寫可行性研究報告,探討解決問題的方案,並對可供使用的資源(如計算機系統軟(硬)件研究、人力等)成本,可取得的效益和開發進度作出估計。制訂完成開發任務的實施計劃。
軟體需求分析就是回答做什麼的問題。它是一個對用戶的需求進行去粗取精、去偽存真、正確理解,然後把它用軟體工程開發語言(形式功能規約,即需求規格說明書)表達出來的過程。本階段的基本任務是和用戶一起確定要解決的問題,建立軟體的邏輯模型,編寫需求規格說明書文檔並最終得到用戶的認可。需求分析的主要方法有結構化分析方法、數據流程圖和數據字典等方法。本階段的工作是根據需求說明書的要求,設計建立相應的軟體系統開發的體系結構,並將整個系統分解成若干個子系統或模塊,定義子系統或模塊間的介面關係,對各子系統進行具體設計定義,編寫軟體概要設計和詳細設計說明書,資料庫或數據結構設計說明書,組裝測試計劃。
軟體設計可以分為概要設計和詳細設計兩個階段。實際上軟體設計的主要任務就是將軟體分解成模塊是指能實現某個功能的數據和程序說明、可執行程序的程序單元。可以是一個函數、過程、子程序、一段帶有程序說明的獨立的程序和數據,也可以是可組合、可分解和可更換的功能單元。模塊,然後進行模塊設計。概要設計就是結構設計,其主要目標就是給出軟體的模塊結構,用軟體結構圖表示。詳細設計的首要任務就是設計模塊的程序流程、演演算法和數據結構,次要任務就是設計資料庫,常用方法還是結構化程序設計方法。
軟體編碼是指把軟體設計轉換成計算機可以接受的程序,即寫成以某一程序設計語言表示的"源程序清單"。充分了解軟體開發語言、工具的特性和編程風格,有助於開發工具的選擇以及保證軟體產品的開發質量。
當前軟體開發中除在專用場合,已經很少使用二十世紀80年代的高級語言了,取而代之的是面向對象的開發語言。而且面向對象的開發語言和開發環境大都合為一體,大大提高了開發的速度。
軟體測試的目的是以較小的代價發現儘可能多的錯誤。要實現這個目標的關鍵在於設計一套出色的測試用例(測試數據和預期的輸出結果組成了測試用例)。如何才能設計出一套出色的測試用例,關鍵在於理解測試方法。不同的測試方法有不同的測試用例設計方法。兩種常用的測試方法是白盒法測試對象是源程序,依據的是程序內部的的邏輯結構來發現軟體的編程錯誤、結構錯誤和數據錯誤。結構錯誤包括邏輯、數據流、初始化等錯誤。用例設計的關鍵是以較少的用例復蓋儘可能多的內部程序邏輯結果。白盒法和黑盒法依據的是軟體的功能或軟體行為描述,發現軟體的介面、功能和結構錯誤。其中介面錯誤包括內部/外部介面、資源管理、集成化以及系統錯誤。黑盒法用例設計的關鍵同樣也是以較少的用例復蓋模塊輸出和輸入介面。黑盒法。
維護是指在已完成對軟體的研製(分析、設計、編碼和測試)工作並交付使用以後,對軟體產品所進行的一些軟體工程的活動。即根據軟體運行的情況,對軟體進行適當修改,以適應新的要求,以及糾正運行中發現的錯誤。編寫軟體問題報告、軟體修改報告。
一個中等規模的軟體,如果研製階段需要一年至二年的時間,在它投入使用以後,其運行或工作時間可能持續五年至十年。那麼它的維護階段也是運行的這五年至十年期間。在這段時間,人們幾乎需要著手解決研製階段所遇到的各種問題,同時還要解決某些維護工作本身特有的問題。做好軟體維護工作,不僅能排除障礙,使軟體能正常工作,而且還可以使它擴展功能,提高性能,為用戶帶來明顯的經濟效益。然而遺憾的是,對軟體維護工作的重視往往遠不如對軟體研製工作的重視。而事實上,和軟體研製工作相比,軟體維護的工作量和成本都要大得多。
在實際開發過程中,軟體開發並不是從第一步進行到最後一步,而是在任何階段,在進入下一階段前一般都有一步或幾步的回溯。在測試過程中的問題可能要求修改設計,用戶可能會提出一些需要來修改需求說明書等。
軟體開發安全也是軟體開發工程中不可忽視的重要環節。關於安全、隱私保護等方面的話題是非常有價值的。從2001年的蠕蟲病毒事件,到後續的Blaster、SQLSlammer等各種攻擊,我們認識到安全是需要在軟體開發過程中就全面嵌入的理念。在服務客戶的過程中,我們也學到了針對安全問題的及時響應也是客戶服務的重要步驟。
軟體開發平台源於繁瑣的實踐開發過程中。開發人員在實踐中將常用的函數、類、抽象、介面等進行總結、封裝,成為了可以重複使用的“中間件”,而隨著“中間件”的成熟和通用,功能更強大、更能滿足企業級客戶需求的——軟體開發平台應運而生。
平台是一段時間內科研成果的匯聚,也是階段性平台期的標誌,為行業進入新的研發領域提供了基礎。由於平台對企業核心競爭力的提升非常明顯,目前國內的管理軟體市場,軟體開發平台的應用已經成為一種趨勢。
由於開發環境、開發人員、功能定位、行業背景等的不同,不同品牌的平台存在較大差別。
軟體開發環境在歐洲又叫集成式項目支持環境(Integrated Project Support Environment,IPSE)。軟體開發環境的主要組成成分是軟體工具。人機界面是軟體開發環境與用戶之間的一個統一的互動式對話系統,它是軟體開發環境的重要質量標誌。存儲各種軟體工具加工所產生的軟體產品或半成品(如源代碼、測試數據和各種文檔資料等)的軟體環境資料庫是軟體開發環境的核心。工具間的聯繫和相互理解都是通過存儲在信息庫中的共享數據得以實現的。
軟體開發環境資料庫是面向軟體工作者的知識型信息資料庫,其數據對象是多元化、帶有智能性質的。軟體開發資料庫用來支撐各種軟體工具,尤其是自動設計工具、編譯程序等的主動或被動的工作。
較初級的SDE資料庫一般包含通用子程序庫、可重組的程序加工信息庫、模塊描述與介面信息庫、軟體測試與糾錯依據信息庫等;較完整的SDE資料庫還應包括可行性與需求信息檔案、階段設計詳細檔案、測試驅動資料庫、軟體維護檔案等。更進一步的要求是面向軟體規劃到實現、維護全過程的自動進行,這要求SDE資料庫系統是具有智能的,其中比較基本的智能結果是軟體編碼的自動實現和優化、軟體工程項目的多方面不同角度的自我分析與總結。這種智能結果還應主動地被重新改造、學習,以豐富SDE資料庫的知識、信息和軟體積累。這時候,軟體開發環境在軟體工程人員的恰當的外部控制或幫助下逐步向高度智能與自動化邁進。
軟體實現的根據是計算機語言。時至今日,計算機語言發展為演演算法語言、資料庫語言、智能模擬語言等多種門類,在幾十種重要的演演算法語言中,C&C++語言日益成為廣大計算機軟體工作人員的親密夥伴,這不僅因為它功能強大、構造靈活,更在於它提供了高度結構化的語法、簡單而統一的軟體構造方式,使得以它為主構造的SDE資料庫的基礎成分——子程序庫的設計與建設顯得異常的方便。
常見的軟體開發語言:JAVA、C/C++/php/JSP/ASP/POWERBUILDER/DELPHI/.NET/C#/vb/等。
與應用最關鍵的需要用到資料庫,常見資料庫:MySQL/SQLSERVER/ORACLE等。
軟體開發專業主要培養德智體全面發展,具有一定計算機軟硬體維護、網路組建、維護管理的高級實用技術型人才。通過本專業的學習,能熟練掌握常用的計算機軟體的使用、維護與技巧;在硬體方面學生應了解計算機硬體的發展,熟練掌握計算機組裝的方法,能熟練運用應用軟體檢測計算機性能、故障的範圍所在,掌握硬體故障的一般處理方法;在網路方面,學生應掌握如今流行網路的技術特點,掌握網路工程、網路維護、網路安全及應用方面的知識。能勝任一般網路工程方案的設計、組建、網路維護、及簡單網站的建設與維護。
本專業學生主要學習計算機基礎,接受從事軟體應用方面的基本訓練,具備應用軟體解決實際問題的基本能力。
本專業畢業生適合的工作崗位是計算機程序設計師。適合於熟練地按照工程化的思路進行軟體編製、軟體測試的工作崗位,能擔任各種企事業單位和各級工程建設部門、管理部門的計算機軟體和硬體維護、網路的組建、維護等工作,也可從事計算機研究與應用、軟體開發等方面的工作。具體可分為以下方面:
2、WEB應用程序設計 具有美工基礎和網頁動畫設計能力,掌握互動式網頁程序的設計技術,能進行網站建設和維護。獲取Macromedia多媒體互動設計師或Delphi初級程序員或Delphi快速網路開發工程師認證。就業方向:企業、政府、社區、各類學校等WEB應用程序員。
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等系統的應用和維護能力。就業方向:企業、政府、社區、各類學校等系統管理
軟體開發工具是用於輔助軟體生命周期過程的基於計算機的工具。通常可以設計並實現工具來支持特定的軟體工程方法,減少手工方式管理的負擔。與軟體工程方法一樣,他們試圖讓軟體工程更加系統化,工具的種類包括支持單個任務的工具及囊括整個生命周期的工具。
軟體需求工具,包括需求建模工具和需求追蹤工具。
軟體設計工具,用於創建和檢查軟體設計,因為軟體設計方法的多樣性,這類工具的種類很多。
軟體構造工具,包括程序編輯器、編譯器和代碼生成器、解釋器和調試器等。
軟體測試工具,包括測試生成器、測試執行框架、測試評價工具、測試管理工具和性能分析工具。
軟體維護工具,包括理解工具(如可視化工具)和再造工具(如重構工具)。
軟體配置管理工具,包括追蹤工具、版本管理工具和發布工具。
軟體工程管理工具,包括項目計劃與追蹤工具、風險管理工具和度量工具。
軟體工程過程工具,包括建模工具、管理工具和軟體開發環境。
軟體質量工具,包括檢查工具和分析工具
淺顯的入門類圖書。這類書的標題往往是《XX天精通XXX》、《XXX從入門到精通》、《XX開發實戰》等,通常從軟體的安裝講起。有人批評這類書為爛 書、毫無價值,這並不公平。至少我曾經從這些書中學到了一些東西。即使是21天系列書,也有適合看的人群。只不過,它一般也就只能看21天而已,過後就可 以扔到廢紙堆。這類書只適於還沒有入門的初學者,從中學到一些入門招式。在剛起步時一般買一本就夠了。如果你善於使用搜索引擎,那幾乎沒有買這類書的必 要。
國內外高手寫的實戰類圖書。這類書實戰性很強,將技術及原理講得很透徹。比如《Windows環境下32位彙編語言程序設計》、《深入解析MFC》、 《Delphi深度探索》、《深入淺出WPF》、《深入剖析ASP .NET組件設計》等。以前這類書都是從國外翻譯或從台灣引進的,現在國內高手越來越多,出自國內作者的圖書也越來越多。如果能在學習的每個方向看兩三本 這類圖書,並通過實踐消化掉,那麼毫無疑問,你會成為一名優秀的程序員。
國外大牛寫的揭露本質、有豐富思想的書。這類書就是所謂的經典書,例如《代碼大全》、《編程珠璣》、《設計模式》、《重構》、《代碼整潔之道》等。經典書就像一個有深度、有思想的朋友,能給你啟發,每次閱讀都會有新的收穫,這類書具有真正的收藏價值。看經典書永遠是正確的選擇,它絕不會浪費你的時間,因為 經典書是無數人沙裡淘金、幫你挑選出的結果。
據有關數據顯示,目前,我國對軟體人才的需求已達20萬,並且以每年20%左右的速度增長。在未來5年內,合格軟體人才的需求將遠大於供給。2010年,我國軟體人才的缺口已達43.5萬,其中尤以JAVA人才最為缺乏。當前世界各地持有JavaProgrammer證書的人員供需差距極大,迫使企業不得不用高薪聘請Java程序員。因此,JavaProgrammer的含金量比一般的技術人員要高出很大一塊。在美國、加拿大、澳大利亞、新加坡等發達國家和中等發達國家,持有JavaProgrammer認證證書的人年薪均在4-10萬美金,而在國內持有JavaProgrammer認證的程序員也有極好的工作機會和很高的薪水。
根據業內發布的薪資報告,嵌入式行業初入門的開發人員平均月薪一般都能達到5000元左右,有3年以上經驗的人員年薪都在10萬元以上,中高級的嵌入式軟體工程師月薪平均已超過萬元,具有10年工作經驗的高級嵌入式軟體工程師年薪在30萬元左右。
隨著Android平台的擴張,引發了Android人才荒,2010年移動開發人才需求20萬,未來人才需求缺口將達百萬。但符合條件的Android工程師屈指可數,企業招聘難度可想而知。我們相信,在未來幾年內,Android開發工程師將成為3G行業炙手可熱的崗位之一。3G人才全球緊缺,實用人才培養已迫在眉睫!在國內三大運營商如火如荼的3G營銷戰持續升溫,再加上3G的推出對整個行業的巨大推動作用,無疑將引爆3G手機開發工程師這個黃金職位。
隨著世界產業轉移的加速,歐美、日本等發達國家將大量的軟體開發業務轉移到中國、印度等國家。據統計,目前全球軟體外包市場規模超過1000億元,我國軟體服務外包產業總收入在未來三年將達260多億美元,隨之而來的是對軟體服務外包人才的巨大需求,未來5年,國內服務外包產業人才需求量至少要達到100萬。目前軟體外包從業人員的薪資水平普遍高於一般軟體開發人員,就業前景廣闊。但是目前軟體開發行業人才輸入量遠遠小於人才需求量,例如一家叫做上海北大青鳥於達校區的軟體開發培訓機構每年輸送超過5000名優秀IT人才,但是這個數目還是遠遠小於人才需求。要想有個好的計算機職業,首先得有紮實的技術作為基礎;其次,要經常了解計算機方面的最新信息,學習最新的技術;第三,實踐經驗必不可少,在校期間通過多種渠道積累了實踐經驗,如暑期有針對性的打工,或通過熟人關係積累實踐經驗,也可有目的性地參加見習培訓,學校安排的實習等等。第四,了解計算機行業有哪些職位,以及這些職位需要什麼技術,有針對性地做好就業準備。
IOS
武漢航海職業技術學院IOS軟體開發專業畢業生可以在以iOS平台為主的iPhone/iPad/iPod/iTunes等系統研發及應用軟體開發工作(包括手機遊戲及各類功能的軟體開發)。比如Mac一體化架構師、iOS軟體開發工程師、iOS遊戲開發工程師、UI界面分析師、iOS應用測試工程師等。現在的安卓與IOS基本占手機市場的各一半,並且隨著4G牌照的發放,智能手機可能有一天替代電腦,成為人們的必需品之一。
手機遊戲
2014年,中國手游的市值突破10億美元。據易觀國際日前發布的報告顯示,2013年中國移動遊戲全平台發行商市場中,中國手游佔據17.9%的市場份額,排名第一。
2014年行業面臨洗牌,強者生存
2013年中國手游市場上有2千多款遊戲,但只有四五十款可以說是成功的。 2014年估計中國市場上會湧現4000-5000款遊戲,加上手握巨大資金的端游、頁游公司都轉型手游,手游市場上的廝殺將會更加激烈。如果說2013年是手游的爆發年的話,那2014年將是手游的洗牌年。2013年中國手游市場總值達到112億,手游用戶超過3億人,預計2014年中國手游市場總值將達到250億,2015年將會達四五百億。在行業整體洗牌的大背景下,渠道集中化的趨勢將會愈發明顯,資源將會集中到有限的十幾家大渠道上面。
優質發行商讓中小CP依然有機會
隨著行業洗牌,手游CP,特別是中小CP的生存壓力越來越大,與發行商合作,成了中小CP的最佳選擇。
優質IP成手游爭搶目標
無論是端游、頁游還有手游,“IP”已然成為業界最熱門的話題。廠商紛紛通過購買、合作、創造等各種形式來改變自身在市場的影響力。2014年將成為國內手遊行業的IP年,金庸武俠、西方文學、經典單機、動漫版權、電影版權等知名IP,成為廠商爭搶的對象。中手游在影視、動漫以及獨立IP已開啟戰略化布局。
Mac OS(蘋果的),Linux,Palm(最大特色是不能後台),BlackBerry(黑莓)Windows Phone(WP,不錯的系統,)Android(安卓,07年興起的,很好的系統),還有幾個新系統,三星與intel聯合開發的tizen,Mozilla 公司的FireFox OS ,N900的maemo。
企業管理軟體,如:如MES系統軟體、OA系統軟體、CRM系統軟體、HR系統軟體、ERP系統軟體
Mac OS(蘋果的),symbian(塞班、主要是諾基亞),Linux(過時的平台、但是很基礎,如安卓就是基於他開發的),Palm(最大特色是不能後台),BlackBerry(黑莓)Windows Mobile(WM,不錯的系統,)Android(安卓,02年興起的,很好的系統),還有幾個新系統,魅族M8的my phone,N900的maemo。
(1)縮進:縮進以 Tab 為單位,一個 Tab 為四個空格大小。全局數據、函數 原型、標題、附加說明、函數說明、標號等均頂格書寫。
(2)空格:數據和函數在其類型,修飾(如 __fastcall 等)名稱之間適當空格並據情況對 齊。關鍵字原則上空一格,不論是否有括弧,對語句行后加的註釋應用適當空格與語句隔開並儘可能對齊。
(3)對齊:原則上關係密切的行應對齊,對齊包括類型、修飾、名稱、參數等各部分對齊。另每一行的長度不應超過屏幕太多,必要時適當換行。
(4)空行:程序文件結構各部分之間空兩行,若不必要也可只空一行,各函數實現之間一般空兩行。
(5)註釋:對註釋有以下三點要求: A、必須是有意義; B、必須正確的描述了程序; C、必須是最新的。
委託開發軟體一般是應用戶(委託方)需要,編製適用於其生產或經營特點的軟體,這種軟體一般在市場上見不到或在市場上買到需經修改後才能使用,但是該用戶沒有開發或修改軟體的能力,必須委託一定軟體中其他具有開發、修改軟體能力的機構從事該項工作。被委託方雖然是開發軟體方面專家,但他可能對委託方所從事的行業或具體的生產或經營特點、方式了解甚少。因此,雙方簽訂的軟體合同就有許多事項需要明確。
委託人注意事項
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、一方接到另一方解除合同的通知時如有異議,可及時請求人民法院或者仲裁機構確認解除合同的效力。
以上細節問題,雙方在簽訂軟體開發合同時,應當加以重視,應嚴格按照法律規定辦理相關手續,從而最大限度規避法律風險。
極大的複雜性
大多數大型軟體軟體產品由幾十甚至幾百萬行源代碼構成,例如:Windows95操作系統由大約1100萬行代碼組成。每一行代碼都可能影響到程序的其它部分,並且各個部分之間都可能互相影響。這樣一個錯綜複雜的巨大系統當中,每一個小小的錯誤都可能導致整個系統崩潰。有些大型軟體,例如Windows,可能是人類曾經建造過的最複雜的事物之一,從古至今最複雜的建築都無法與之相比。
高度的不確定性
一個軟體項目從一開始就存在許多不確定性因素。其一:用戶需求很難確定。這是因為軟體開發者很難詳細了解用戶的需求,甚至用戶在看到產品之前也不清楚自己到底需要什麼,所以從項目開發的自始至終都可能會有新的需求提出,致使系統結構不斷修改,最終面目全非。其二:設計不完全可以預測。有時,一個設計時認為可行的方案,在實現時可能行不通,或者最初的設計方案存在很大的缺陷而沒有及時發現,或者突然一個設計時沒有料到的技術難點阻擋了項目的進度。從設計到實現實際上有著很大的不可預測性。其三:用戶需求不斷變化,如果最初的用戶需求沒有了解的很清楚,可能整個項目很快就會陷在不斷變化的需求之中不能自拔。其四:客觀條件的不確定性。在項目的進展過程中,可能會有人員的流動,可能會有資源的調整,可能會有這樣或那樣的客觀條件的限制而阻擋了項目的正常進行。在這樣高度的不確定之中,在較早階段精確估計一個項目不只是很難地,甚至是不可能的。
開發人員的過分樂觀
許多開發人員傾向於一切都會進展順利,這種盲目的自信對於項目開發來說是不對的。如果按照最樂觀的估計,可能絕大多數任務都不能按時完成,因為在軟體開發中不確定因素實在太多了。對於任務的複雜性和難度,對於自己能支配的時間,對於可能的突發事件的干擾等沒有清楚的認識和估計,即使對自己的時間表作出保證,也可能常常無法按時交貨。
來自外部的壓力
作為項目的管理者或者客戶都希望項目早日結束,因而為項目設置了一個個時間節點。
這些時間節點可能設置的根本就不可能實現或者實現起來會有很大難度,但是開發人員為了按時完工只好加班加點,以最快的速度完成要求的功能,而對於系統結構的考慮就會放到次要的位置上去,這樣就為今後程序的維護埋下了隱患。更可怕的是一個個bug會隨著壓力的增大而產生,最後造成更大量的返工。程序就象程序員的孩子一樣,每個人都希望自己的孩子茁壯成長,但是沒有辦法,多生快生就不能優生。
項目以外事情的干擾
如果一個項目的開發人員經常被項目以外的事情所干擾、牽制,不能全身心地投入到項目開發之中,常常會因此而影響了進度。這種現象在規模較小的軟體企業中比較多見,一個開發人員經常身兼多職,甚至同時參與多個項目的開發。如果其它項目急於完工,則該項目只好被拖延。
項目管理的混亂
軟體企業內部項目管理的混亂似乎是一個世界性的通病。卡耐基梅隆大學軟體工程研究所(SEI)建立了一套標準,用來衡量軟體企業從混亂到持續發展的這種狀態,這就是就是CMM五級標準。第一級最為混亂,每升高一級情況都有所好轉,第五級狀況最好。到2001年1月底,全世界只有1654家軟體公司和機構通過了不同級別的認證。從下圖可以看出,這是一個金字塔型的分佈狀態,圖上只顯示了二級和二級以上的企業,而處在金字塔最低層的那些一級企業的數目不知有多少個1654家!所以從世界範圍來看,軟體定製管理的總體水平還是很低的。
開發人員的不足
全世界對於人才的競爭可能在IT界表現的最為激烈。一方面人才的絕對數量不足導致了許多企業不能招到自己急需的人才;另一方面人才的流動也導致了企業很容易失去自己的員工。一個項目如果缺少人手或人才頻繁流動,將不能保證項目的正常進展。
對不確定性做好充分準備
中國人都對《三國演示》中的赤壁之戰非常熟悉,諸葛亮在赤壁埋伏了數路伏兵對曹操進行圍追堵截,一招不行,還有下一招,對整個過程做了非常周密的準備和部署,所以大獲全勝。軟體開發亦是如此,在項目展開的初期就應該對過程中可能會出現各種的情況有所準備,才不至於車到山前無路可走。
立足於產品的靈活性
設計的靈活性是一個軟體產品的靈魂。好的設計總是容易維護和升級,而不好的設計卻會為今後的維護帶來很大的麻煩,甚至整個產品都可能被廢棄重來。因此在軟體開發的的初期應花很大力氣致力於整體設計,而不是急於編碼,磨刀不誤砍柴工,前期的投入會獲得高額回報的。
提高軟體管理水平
SO9000質量管理系統的標準系列是建立在這樣一個前提上:如果生產和管理系統沒有問題,那麼其產品和提供的服務也就沒有問題,這說明管理水平如何於產品的質量有至關重要的影響。我認為一個軟體企業提高管理水平的最好途徑就是為自己制定一個目標,比如實現CMM的級別認證或者ISO9000質量體系認證,在對這些目標努力的過程中會逐漸提高自己的管理水平。