要開發一個軟件應該考慮哪些方面?
軟件是一個系統工程,業內有軟件工程的說法。軟件工程也是各個學校計算機系的必修科目。開發一個軟件需要考慮哪些方面?我們將引入軟件工程中的一些概念和元素來描述它們。
同時,作為企業、客戶或個人,在軟件開發中,不僅要考慮軟件工程,還要考慮相關資源。這里的資源包括人、預算、費用、時間等等。而這些都包括在內,這就涉及到項目管理的范圍。
接下來我將從軟件工程和項目管理的角度來描述軟件開發中需要注意的方面。
從軟件工程的角度來說,軟件開發包括前期的需求分析、系統設計、詳細設計,然后就到了大家通常認為的編碼實現階段,然后就是測試和培訓,上線交付。最后,還有一個不可忽視的階段,就是系統維護階段。
需求分析階段:訪談、工作坊、問卷等。通常被采用,高級應用/業務顧問了解來自客戶的需求并確認它。初期的需求分析很重要。稍有偏差,就有一失足成千古恨的風險。相信大部分程序員朋友都經歷過變化,尤其是項目后期。當你的代碼經過一遍又一遍的測試后,你就有信心幾乎沒有bug了。這時候領導跟你說對不起,改的來了,你做的那塊要改成這個,還有:(改成那個)。當然,項目需求收集和分析的前期有很多不確定性,所以我強調需要有自己的應用/業務顧問來把關。當然,有些變化是不可避免的。系統設計:需求分析后,需要進行方案設計。這時,解決方案架構師進入現場(高級解決方案架構師)。如果說后期編碼實現很容易的話,如果在系統設計階段有一個大牛學長的話,后面的日子會輕松很多。包括系統的基本處理流程、組織結構、模塊劃分、功能分配、界面設計、操作設計、數據結構設計和錯誤處理設計。有時候需要新技術,需要快速研究新技術。在今天在技術蓬勃發展的年代,有時顧客需求必須使用新技術,可能之前整個團隊都沒有接觸過。這時候建筑師就有必要從整體上檢查一下情況。通常,有技術天賦的團隊成員會進行技術可行性研究。詳細設計:在系統設計階段完成大框架結構和技術方向。確定后,將對每個模塊進行詳細設計。一個好的詳細設計文檔包含模塊中所有用例的邏輯處理以及邏輯處理中涉及的算法。一般需要資深程序員來做。這部分文檔的寫作如果一個好的文檔寫好了,后面編碼的同學就輕松了。編碼實現:如果詳細設計做得好,這個階段會相對容易。但是程序員的基本功還是很苛刻的。還有一點就是一定要做好自己的單元測試。測試訓練:這個階段其實分為兩個小階段。一個是測試,一個是用戶培訓。測試包括組裝測試、壓力測試等等,最后是UAT(用戶驗收測試)。如果沒有問題,就選個好日子上線。用戶培訓非常重要,不可忽視,直接關系到最終用戶對整個系統的接受程度。一般會先挑選種子用戶進行功能培訓,所有用戶和種子用戶一起進行整個軟件的使用培訓。線上發貨:前面的階段都完成了,測試都通過了。上線流暢嗎?呵呵,根據我的經驗,不一定。上線的時候多多少少都有些蛀蟲。新系統運行良好。對于舊系統升級,如果系統相當龐大,在國內只能在國慶/春節進行。為什么,有7天假期,也就是說,用戶7天不會使用系統,如果在這7天內出現問題,不會影響用戶s操作。但是如果你能7天內不能上線,我對不起,所以我必須回去等待下一個7天假期。維護:it當我們上網時,是慶祝的時候了。一般軟件公司上線后都會有慶功宴。慶典結束后,唐不要忘記軟件系統的維護。首先,沒有一個系統能保證沒有bug。其次,對于實際應用,對于復雜系統,每天產生的數據量是巨大的,對于性能,需要有相關的監控和對應。用戶使用一段時間后,會發現一些問題,產生一些需求。因此,軟件系統的維護也很重要。
上面說了這么多,都是從軟件工程的角度,還有高級架構師,高級顧問,好的詳細設計等等。這些都是需要爭取的資源。如果我們能我贏不了他們。;對不起,項目經理必須努力工作。
接下來,從軟件開發和項目管理的角度來看,需要注意什么?我用PMP系統來描述項目管理。我以前通過了PMP認證,覺得PMP系統在整個項目管理過程中也是有效的。PMP涉及項目范圍管理、時間管理、成本管理、質量管理、人力資源管理、溝通管理、風險管理、采購管理和利益相關者管理。我將描述對軟件開發特別重要的幾個環節。
時間管理:開發軟件的時候,一定要有一個時間表,什么時候開始,什么時候結束。那么這里的日程就顯得尤為重要。它必須在指定的時間送到。成本管理:無論是公司還是今天的公司。客戶或一個獨立的自然人所擁有的資源和時間是有限的,能夠投入到軟件開發中的資源也是有限的。如何在給定的資源下完成軟件開發,是對項目經理的一個要求。很有可能我上面說的高級顧問、高級架構師、項目經理根本沒有,或者公司可以我無法提供。這時候就要另想辦法了。風險管理:進行早期風險識別和相應的定性定量分析,制定應對方案,實現風險控制。實施整體變更控制:大多數項目都會發生變更,軟件開發也不例外。筆者對此頗有心得。對項目經理來說,控制變更也是一項具有挑戰性的任務。
以上都考慮到了,基本上整個軟件開發不會有什么大問題。
如需進一步溝通,請留言或私信。