如何獨立設計完成一個軟件項目

一、程序員高薪的祕訣
 
無非一個:機遇+經驗+靈感。
程序員的薪資與所用語言關係不大,並且高薪的程序員的學歷也參差不齊,而從業的時間和業績更大程度上影響了程序員所能得到的待遇,如下表所示
  
年限
月薪
0
800-3000
2
3000-6000
3
5000-15000
4年以上
6000-40000
一個合格的程序員應當具有敬業、靈活、創新、博學等全面優秀的素質。很多程序員抱怨自己待遇不公,但往往忽略了自身的因素,首先程序員在要求月薪之前,就應當首先考慮自己在所在的企業的位置,自己的能力專長是否正是該企業所需要的,能給企業帶來多少產出。當然,初入行業時,也許會因爲管理的因素造成不公的待遇,但是當逐漸融入工作之後,對企業以及環境有了一定的瞭解,就可以根據自己的實際情況理直氣壯地提出要求。同時,由於軟件行業的變動很大,程序員跳槽或“下課”是常有是事,有時候一些工作崗位也不能只注重它的薪酬多少,關鍵是看自己能夠得到多大的提高與發展,某些時候,低薪但富有挑戰力的工作也不失爲開拓自己以後道路的跳板。
一個小網絡公司的招聘廣告:
招聘程序員,要求熟練掌握 VC、 VB、JAVA腳本、 SQLServer、 Access、 月薪800-1500、 包食宿。
 
二、程序員的報酬有幾種方式:

1、傳統的月薪或年薪+獎金
追求穩定的程序員可以選擇基礎好的企業以薪金謀生,並求穩步發展。
2、期權方式
有創業精神的則可以選擇有發展前景的企業或團隊,獲得效益分享,期權曾經造就了不少程序員暴富的神話,但其風險也比較大。
3、臨時工
只做一兩個項目,做完走人,按項目獲取相應酬勞。
 
三、軟件公司對軟件開發人員的資源分配
1、傳統意義的軟件公司——大公司
       一般有明確的分工,各個流程或模塊由不同的程序員完成。也許你是相當優秀並且知識是相當全面的,但是實際上的工作當中並不需要你做超出範圍的事情,工作一般比較單一,同時也能得到穩定的收入。
2、作坊式的軟件公司——小公司
       一個技術人員通常要完成更多方面的工作,諸如需求分析、系統設計、詳細設計、編寫代碼、軟件測試、撰寫文檔、安裝調試、系統維護等,這些工作通常會混在一起,而不是按照什麼軟件工程的順序來完成。

注: 在從創業的趣味性來說,有的程序員會更加喜歡後者,但是這同時也要考慮到薪酬的分配是否合理,自己所付出的勞動是否得到了應有的回報。

四、將自己改造成爲一個複合型人才

具備多種能力和素質,並能夠將多種能力進行綜合運用
1、軟件開發的技能水平
(1)、對使用的開發工具要了解透徹;
(2)、對使用的開發語言要熟練和精通。
2、應用行業的瞭解程度
(1)、對應用行業方面的知識要了解;
(2)、對應用行業的運作模式要了解。
3、軟件開發技術知識與行業知識的結合
(1)、將行業中的管理流程進行轉化,用計算機代替手工;
(2)、在轉化過程中不斷提高程序開發的水平。
注:僅僅只會計算機的程序員是不可能適合這些專業性極強的行業的,對特殊行業本身有深刻了解的程序員到這些部門肯定會大受歡迎
五、軟件企業要求基礎軟件工程師具備六大基本素質
1、良好的編碼能力
軟件人員的一個重要職責是把用戶的需求功能用某種計算機語言予以實現。編碼能力直接決定了項目開發的效率。
2、自覺的規範意識和團隊精神
程序員分爲兩種,一種是程序“游擊隊員”,他們可能對編程工具很熟,能力很強,把編碼編得很簡潔高效,但卻缺乏規範和合作的觀念;另一種程序員編程不一定很快,但是很規範,個人能力不一定很強,但合作意識很好。
3、認識和運用數據庫的能力
信息是以數據爲中心的,因此與數據庫的交互在所有軟件中都是必不可少的,瞭解數據庫操作和編程是軟件工程師需要具備的基本素質之一。
4、較強的英語閱讀和寫作能力
編寫程序開發文檔和開發工具幫助文件離不開英文,瞭解業界的最新動向、閱讀技術文章離不開英文,與世界各地編程高手交流、發佈幫助請求同樣離不開英文。
5、具有軟件工程的概念
從項目需求分析開始到安裝調試完畢,基礎軟件工程師都必須能清楚地理解和把握這些過程,並能勝任各種環節的具體工作
6、求知慾和進取心
軟件工程師應具有較強的學習總結能力、需求理解能力和對IT新技術比較敏感,同時,掌握最新的IT實用技術。
六、必須掌握的開發方法
採用瀑布型和快速原型法結合的開發方法,
 即:系統需求分析->開發方案設計->子系統實現->系統集成與確認下,
圖爲開發模型示意圖
 
七、獨立設計開發軟件必須經過的九個過程
 
1、需求分析
從用戶的業務中提取出軟件系統能夠幫助用戶解決的業務問題,通過對用戶業務問題的分析,規劃出我們的軟件產品。
A、 提取出核心、主要、急迫的業務,明晰業務流程
(1)針對客戶對軟件項目或產品的最初提出的需求目標和範圍,爲用戶解決什麼樣的問題,從衆多的業務中提取出用戶核心的、主要的、急需的業務。
(2)從用戶繁雜的業務中進行業務、業務流程的提取,把那些分佈在各個部門的同一種業務提取出來。分析用戶的這個業務流程中哪些是系統能幫助管理的,哪些是要在系統外處理的,充分分析用戶現有的業務和業務流程。
B、 運用管理思想,優化業務流程
(1)採用網絡計算機這些新的技術手段代替原先手工、電話等方式在信息的傳遞、信息的共享、數據的處理等方面將會帶來新的方式,必將改變原有的業務流程。
(2)根據對用戶業務的理解,考慮是否可以運用先進的管理思想,比如MRPII、ERP、JIT等等管理模型,進行現有業務流程的重組或優化。
製造資源計劃管理系統(MRPⅡ)、企業資源計劃管理系統(ERP)。
C、要求最終用戶參與到項目的整個開發過程
   一個軟件項目在需求分析階段時的信息收集非常重要,但由於每個企業的管理模式不同,企業內部各部門所需要的軟件功能也不同,在收集信息時,公司高層提供的信息量爲實現軟件項目80%的內容,部門主管根據公司高層提出的要求進行理解能提供本部門80%的內容,具體崗位的工作人員根據主管提出的要求進行理解能夠提供本崗位80%的內容,根據三方面收集到的信息能夠在軟件項目完成後實現預定目標的
100*0.8*0.8*0.8=51.2%,剩下的48.8%要經過很長時間,開發者與企業各部門之間進行協商,再原來80%的基礎上提取出15%的信息100*0.95*0.95*0.95=94.12%,最後剩下的5.88%只能做爲軟件項目完工投入使用後的維護升級中進行解決
 
2、系統設計
A、 根據需求分析繪製出系統框架圖和系統流程圖
(1)、 系統框架圖要體現出軟件的整體架構;
(2)、 採用鬆散組合式設計,使各功能模塊間即相互獨立又可相互配合;
(3)、 系統流程圖要體現出客戶的業務流程;
(4)、系統框架就象人的骨架、系統流程就象人的神精、血液偱環系統和肌肉
(5)、系統框架、流程的設計直接影響到軟件的開發週期和最終產品的質量。
B、 制定項目實施計劃
(1)、 項目總體需要多少時間、多少人、多少設備、多少錢;
(2)、 每個功能模塊需要多少時間、多少人、多少錢;
(3)、 對每個功能模塊的測試需要多少時間多少人、多少錢;
(4)、 培訓需要多少時間、多少人、多少錢;
(5)、 軟件過行後期維護需要多少人、多少錢;
3、詳細設計
A、 根據系統框架圖對每個功能模塊進行分解設計;
B、 根據系統框架圖繪製各功能模塊的子框架圖;
C、 根據系統流程圖繪製各功能模塊的子流程圖;
D、 各子功能模塊之間要做好數據接口;
E、 根據子框架和子流程設計數據字典;
F、 數據字典要結構設計合理,不合理的設計將給軟件造成巨大的隱患;
Verify(用戶信息及密碼驗證表) 序號 主鍵 字段名 中文對照 數據類型 長度 小數 默認值 允許空 1 ID 用戶ID varchar 10     Not Null 2   password 密碼 varchar 72     Not Null 3   level 等級 varchar 10     Not Null 4   name 姓名 varchar 10     Not Null 5   station 崗位 varchar 30     Not Null 6   dept 部門 varchar 10     Not Null System_Function(系統功能表) 序號 主鍵 字段名 中文對照 數據類型 長度 小數 默認值 允許空 1   akey 主功能鍵 varchar 10     Not Null 2   bkey 次功能鍵 varchar 10     Not Null 3 mkmc 模塊名稱 varchar 20     Not Null 4   id 用戶ID varchar 10     Null 5   enabled 功能使用標記 bit     0 Null 6   imageurl 功能圖標名 varchar 30     Not Null 7   navigateurl 功能文件名 varchar 30     Null User_Purview(用戶權限表) 序號 主鍵 字段名 中文對照 數據類型 長度 小數 默認值 允許空 1   akey 主功能鍵 varchar 10     Not Null 2   bkey 次功能鍵 varchar 10     Not Null 3 mkmc 模塊名稱 varchar 20     Not Null 4   id 用戶ID varchar 10     Null 5   enabled 功能使用標記 bit     0 Null 6   imageurl 功能圖標名 varchar 30     Not Null 7   navigateurl 功能文件名 varchar 30     Null Dept(部門表) 序號 主鍵 字段名 中文對照 數據類型 長度 小數 默認值 允許空 1 id 部門ID varchar 10     Not Null 2   dept 部門名稱 varchar 10     Not Null
 
4、編寫代碼
A、 編寫代碼時要標準化、規範化;
B、 每行或每段代碼要做出中文或英文註釋;
C、 一個功能可實現的代碼不要分解到兩個功能模塊中;
D、 前臺定義數據名稱要儘可能與後臺數據庫定義一致;
E、 重複使用的代碼段要做到一個類中,以提高開發效率和軟件運行效率;
F、程序界面各控件的佈局擺放要符合人機工程,充分考慮到用戶的需求,方便用戶操作;
G、做好代碼的防錯和容錯,在出現意外情況時要給出錯誤提示,以便用戶找出解決問題的方法。
5、軟件測試
A、 單個功能模塊的獨立測試,可以與編碼同時進行;
B、 各個功能模塊的整體配合測試,找出各模塊接口出現的問題,並儘快加以解決。
C、 在軟件測試中靈活運用逆向思維,找出軟件中的錯誤,儘可能將可預知的錯誤在軟件投入使用前解決掉;
D、負責測試的人員不能和代碼編寫人員是同一個人;
E、對測試的過程和結果要作好記錄,以便以後出現問題時可以儘快找出解決的方法;

6、撰寫文檔
A、 對軟件進行整體綜合的描述;
B、 對軟件各功能模塊作出詳細的使用說明;
C、 作好幫助索引,以方便用戶可以儘快的找到答案;
D、 軟件各功能模塊要與幫助文檔動態聯接;
E、 幫助文檔要儘可能的作到圖文並茂,充分體現出軟件
      的功能和流程。
F、 幫助文檔要儘可能的將程序運行過程中出現的錯誤作
      出說明,並明確出解決問題的方法和手段。
 
7、安裝調試
A、 軟件開發完畢後要進行產品打包發佈;
B、 要給軟件安裝運行作出詳細的操作說明;
C、 做好軟件與操作系統之間的配合;
8、人員培訓
A、 軟件在開發完畢後需要對最終用戶進行操作培訓;
B、 除了培訓軟件的基本操作外,還要指導用戶在軟件出
      錯時如何找到解決的方法;
C、最終用戶的文化水平和業務水平各有不同,要根據用
      戶的接受理解能力來制定培訓計劃;
D、切記用戶永遠是對的,如果用戶出現錯誤,那是培訓不到位造成的,對用戶提出的每一個問題要耐心的解答。
E、做好培訓記錄,以便在以後出現問題時明確責任。
9、系統維護
A、軟件運行後會出現各種問題,這些問題在軟件開發過程中是不可預知的;
B、對出現的問題要儘快加以解決,以滿足客戶的需求;
C、軟件所以要設計成鬆散組合架構,給軟件後期維護和升級提供了有利條件;
D、系統應具備動態數據備份與恢復功能,使用戶可以隨時對系統進行備份,在數據出現問題時可以將數據恢復到操作前的狀態。
 八、設計一套通用系統架構
1、程序加載;
2、程序登錄驗證;
3、用戶密碼更改;
4、主程序,包括系統菜單、工具欄、狀態欄等;
5、系統用戶管理;
6、系統用戶使用權限分配;
7、系統功能管理;
8、系統備份與恢復;
9、重新登錄和退出系統;
九、設計軟件架構所需要運用的知識點

1、數據庫操作:
      包括數據庫連接、對數據的增刪改、存儲過程的應用;
2、基本界面元素的使用:
      包括標籤、文本框、下拉列表框、進度條、工具欄、菜單、
              狀態欄、按鈕、選項組、樹控件、計時器、圖象控件、
              視圖控件、頁框、數據表格等
3、基本編程語言的使用:
      包括變量、數組、判斷語句、偱環語句、 API函數、
               錯誤提示語句、錯誤異常處理語句等
4、函數和類的設計
5、與辦公軟件集成應用:
      包括對EXCL表格、WORD文檔、文本文件的處理等

本文出自 “半瓶香油-好男人時來運轉” 博客,請務必保留此出處http://chenxing.blog.51cto.com/240526/48973

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章