更新時間:2023-05-22 來源:黑馬程序員 瀏覽量:
為了保證程序與問題統(tǒng)一,也保證程序能長期穩(wěn)定使用,人們將程序的開發(fā)過程分為以下6個階段。
(1)分析問題。編程的目的是控制計算機解決問題,在解決問題之前,應充分了解要解決的問題,明確真正的需求,避免因理解偏差而設計出不符合需求的程序。
例如,“小張問小李明天什么,小李說他明天必須要去補課,不能有其他安排”這一描述有兩種理解:其一,“他”指小張,小張明天要去補課,小李的回答是提醒
他(小張)已有安排,既然無法一起活動,何必問自己(小李)的安排;其二,“他”指小李,小李表示自己明天要去補課,這就是他(小李)明天要做的事。
在實際開發(fā)中,提出問題和解決問題的通常是不同的人,自然語言又容易產(chǎn)生歧義,因此與需求方充分溝通,理清所需解決的問題是程序設計的前提。
(2)劃分邊界。準確描述程序要“做什么”,此時無須考慮程序具體要“怎么做”。例如對于“小李計劃從家出發(fā)到學校”這一問題,只需要確定核心人物“小李”從“家里出發(fā)”,最終“抵達學?!?,至于小李如何實現(xiàn)“家”到“學校”這一地址的轉(zhuǎn)換,這里不需要考慮。在這一階段可利用IPO方法(該方法將在1.5.2小節(jié)講解)描述問題,確定程序的輸入、處理和輸出之間的總體關系。
(3)程序設計。這一步驟需要考慮“怎么做”,即確定程序的結(jié)構(gòu)和流程。對于簡單的問題,使用IPO方法描述,再著重設計算法即可。對于復雜的程序,應先“化整為零,分而治之”,即將整個程序劃分為多個“小模塊”,每個小模塊實現(xiàn)小的功能,將每個小功能當作一個獨立的處理過程,為其設計算法,最后再“化零為整”,設計可以聯(lián)系各個小功能的流程。
(4)編寫程序。使用編程語言編寫程序。這一階段首要考慮的是編程語言的選擇,不同的編程語言在性能、開發(fā)周期、可維護性等方面有一定的差異,實際開發(fā)中開發(fā)人員會對性能、周期、可維護性等因素進行一定考量。
(5)測試與調(diào)試。運行程序,測試程序的功能,判斷功能是否與預期相符,是否存在疏漏。如果程序存在不足,應著手定位和修復(即“調(diào)試”)程序。在這一過程中應做盡量多的考量與測試。
(6)升級與維護。程序總不會完全完成,哪怕它已投入使用。后續(xù)需求方可能提出新的需求,此時需要為程序添加新功能,對其進行升級;程序使用時可能會產(chǎn)生問題,或發(fā)現(xiàn)漏洞,此時需要完善程序、對其進行維護
綜上所述,解決問題的過程不單單是程序編寫的過程、問題分析、邊界劃分、程序設計、程序測試與調(diào)試、升級與維護亦是解決問題不可或缺的步驟。