




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 第二章第二章軟件開發(fā)中的人員與過程軟件開發(fā)中的人員與過程_2 上節(jié)回顧上節(jié)回顧l 軟件的三要素:軟件的三要素:程序、數(shù)據(jù)、文檔程序、數(shù)據(jù)、文檔l 軟件工程師應(yīng)具備的素質(zhì)要求:軟件工程師應(yīng)具備的素質(zhì)要求:智力、個人素質(zhì)、技術(shù)能力、共同合作能力、危機感智力、個人素質(zhì)、技術(shù)能力、共同合作能力、危機感l(wèi) 軟件工程師職責要求與任職條件:軟件工程師職責要求與任職條件:程序員、軟件工程師、系統(tǒng)分析師、項目經(jīng)理程序員、軟件工程師、系統(tǒng)分析師、項目經(jīng)理l 軟件工程師的軟件工程師的“武器武器”:編程語言、開發(fā)工具編程語言、開發(fā)工具/平臺、數(shù)據(jù)庫管理系統(tǒng)、操作系統(tǒng)、平臺、數(shù)據(jù)庫管理系統(tǒng)、操作系統(tǒng)、軟件工程軟件工程
2、 本節(jié)目標本節(jié)目標l軟件工程師需養(yǎng)成的習(xí)慣:軟件工程師需養(yǎng)成的習(xí)慣:編碼習(xí)慣與規(guī)范、撰寫文檔能力編碼習(xí)慣與規(guī)范、撰寫文檔能力 、源代碼管理習(xí)、源代碼管理習(xí)慣慣 、主動溝通與反饋、主動溝通與反饋 、計劃與總結(jié)的習(xí)慣、計劃與總結(jié)的習(xí)慣 、測、測試習(xí)慣試習(xí)慣 l軟件開發(fā)生命周期介紹軟件開發(fā)生命周期介紹需求分析、系統(tǒng)設(shè)計、編碼實現(xiàn)介紹與難點分析需求分析、系統(tǒng)設(shè)計、編碼實現(xiàn)介紹與難點分析 軟件工程師需養(yǎng)成的習(xí)慣軟件工程師需養(yǎng)成的習(xí)慣l編碼習(xí)慣與規(guī)范編碼習(xí)慣與規(guī)范編碼規(guī)范編碼規(guī)范編碼風(fēng)格編碼風(fēng)格編碼誤區(qū)編碼誤區(qū)l文檔撰寫能力文檔撰寫能力l源代碼管理習(xí)慣源代碼管理習(xí)慣l主動溝通與反饋主動溝通與反饋l計劃與總
3、結(jié)的習(xí)慣計劃與總結(jié)的習(xí)慣l測試習(xí)慣測試習(xí)慣 編碼規(guī)范編碼規(guī)范1l編碼習(xí)慣與規(guī)范編碼習(xí)慣與規(guī)范 作為一名合格的軟件工程師,代碼必須按一定規(guī)作為一名合格的軟件工程師,代碼必須按一定規(guī)范編寫,范編寫,Martin Fowler曾經(jīng)說過曾經(jīng)說過“任何一個傻瓜任何一個傻瓜都能寫出計算機可以理解的代碼,未有寫出人類都能寫出計算機可以理解的代碼,未有寫出人類容易理解的代碼,才是一個優(yōu)秀的程序員容易理解的代碼,才是一個優(yōu)秀的程序員”。 編碼規(guī)范編碼規(guī)范 2l 編碼規(guī)范是公司或團體對代碼編寫的一個規(guī)定和約定,目的編碼規(guī)范是公司或團體對代碼編寫的一個規(guī)定和約定,目的是使程序代碼具有更好的一致性與可讀性。是使程序代
4、碼具有更好的一致性與可讀性。l 寫代碼首先要遵循一定的編碼規(guī)范。寫代碼首先要遵循一定的編碼規(guī)范。“沒有規(guī)矩,不成方?jīng)]有規(guī)矩,不成方圓圓”。作為專業(yè)的軟件工程師,即使在程序設(shè)計工作中總能。作為專業(yè)的軟件工程師,即使在程序設(shè)計工作中總能創(chuàng)造性地奇思妙想,也必須遵守一定的規(guī)則和限制。創(chuàng)造性地奇思妙想,也必須遵守一定的規(guī)則和限制。l 現(xiàn)代軟件項目的開發(fā)往往需要團隊協(xié)作,那么所編寫的代碼現(xiàn)代軟件項目的開發(fā)往往需要團隊協(xié)作,那么所編寫的代碼就不僅僅是給自己閱讀的。況且,代碼風(fēng)格的簡單一致通常就不僅僅是給自己閱讀的。況且,代碼風(fēng)格的簡單一致通常會減少會減少bug;相反,對于風(fēng)格糟糕的代碼,軟件工程師往往;相
5、反,對于風(fēng)格糟糕的代碼,軟件工程師往往寧愿重起爐灶,也不愿去閱讀和維護。寧愿重起爐灶,也不愿去閱讀和維護。 編碼規(guī)范編碼規(guī)范 3l 代碼本身也可能會進行合作開發(fā)或后期維護,一個軟件的生代碼本身也可能會進行合作開發(fā)或后期維護,一個軟件的生命周期中,命周期中,80%的花費在于系統(tǒng)維護,而且?guī)缀鯖]有一個軟的花費在于系統(tǒng)維護,而且?guī)缀鯖]有一個軟件,在其整個開發(fā)生命周期中,由最初的程序員維護舊代碼,件,在其整個開發(fā)生命周期中,由最初的程序員維護舊代碼,若代碼按規(guī)范編寫,可以讓維護者盡快理解代碼要表現(xiàn)的意若代碼按規(guī)范編寫,可以讓維護者盡快理解代碼要表現(xiàn)的意圖。圖。l 規(guī)范無所謂規(guī)范無所謂“好好”與與“不好
6、不好”,同一門編程語言,可能會有,同一門編程語言,可能會有多種編程規(guī)范,各公司所用規(guī)范也不完全相同,但是為了執(zhí)多種編程規(guī)范,各公司所用規(guī)范也不完全相同,但是為了執(zhí)行規(guī)范,每個軟件開發(fā)人員必須一致遵守編碼規(guī)范。行規(guī)范,每個軟件開發(fā)人員必須一致遵守編碼規(guī)范。 HandsOn實訓(xùn)體系中為各種用到的編程語言都提供了編碼規(guī)范,實訓(xùn)體系中為各種用到的編程語言都提供了編碼規(guī)范,按編碼規(guī)范編寫代碼,可以促使自己養(yǎng)成良好的編碼習(xí)慣,另外,按編碼規(guī)范編寫代碼,可以促使自己養(yǎng)成良好的編碼習(xí)慣,另外,編碼規(guī)范中還對如何編寫高質(zhì)量的代碼提供了指導(dǎo),而且有助于自編碼規(guī)范中還對如何編寫高質(zhì)量的代碼提供了指導(dǎo),而且有助于自身
7、編碼水平的提高。身編碼水平的提高。 編碼風(fēng)格編碼風(fēng)格 l代碼是給人看的,除了遵循編碼規(guī)范外,還需代碼是給人看的,除了遵循編碼規(guī)范外,還需要有良好的代編碼風(fēng)格。好的代碼應(yīng)該簡明扼要有良好的代編碼風(fēng)格。好的代碼應(yīng)該簡明扼要、平實易懂。要、平實易懂。l首先,要求代碼條例清晰,順著代碼,很容易首先,要求代碼條例清晰,順著代碼,很容易看出作者的邏輯思路。要傳達什么信息,要求看出作者的邏輯思路。要傳達什么信息,要求什么樣的結(jié)果,直截了當,沒有岐義。什么樣的結(jié)果,直截了當,沒有岐義。l其次要求代碼平實簡明,不要簡單問題復(fù)雜化,其次要求代碼平實簡明,不要簡單問題復(fù)雜化,不要在代碼中賣弄編程技巧,不要在代碼中賣
8、弄編程技巧,smiple is the best。 編碼誤區(qū)編碼誤區(qū) 1l 飛流直下三千尺,疑是銀河落九天飛流直下三千尺,疑是銀河落九天 這里用來形容象瀑布一樣的代碼,一個函數(shù)或類寫上千行,甚至上萬這里用來形容象瀑布一樣的代碼,一個函數(shù)或類寫上千行,甚至上萬行,有人將這樣的類或函數(shù)為行,有人將這樣的類或函數(shù)為“上帝類上帝類”或或“上帝函數(shù)上帝函數(shù)”,意思來戲,意思來戲稱它們是稱它們是“萬能的萬能的”。 一個函數(shù)行數(shù)太多,不符合人類的認知習(xí)慣,一般來講,一個函數(shù)或一個函數(shù)行數(shù)太多,不符合人類的認知習(xí)慣,一般來講,一個函數(shù)或功能模塊代碼不要超過一屏幕,最好保持在功能模塊代碼不要超過一屏幕,最好保持
9、在30行以內(nèi)。行以內(nèi)。 如果把一個函數(shù)類比喻成文章中的一個段落的話,那么一個上千行的如果把一個函數(shù)類比喻成文章中的一個段落的話,那么一個上千行的函數(shù)就是一個跨度為幾頁的一個長段落??梢韵胂?,沒有人愿意讀這函數(shù)就是一個跨度為幾頁的一個長段落。可以想象,沒有人愿意讀這種長段落。種長段落。 把一個很長的函數(shù)分化成很多很小的子函數(shù)或者子函數(shù)的子函數(shù),不把一個很長的函數(shù)分化成很多很小的子函數(shù)或者子函數(shù)的子函數(shù),不僅可讀性會變好,而且總體的代碼量也會也會減少。因為很長的函數(shù)僅可讀性會變好,而且總體的代碼量也會也會減少。因為很長的函數(shù)中往往伴隨著重復(fù)代碼,變大為小的過程,我們稱之為中往往伴隨著重復(fù)代碼,變大
10、為小的過程,我們稱之為“重構(gòu)重構(gòu)”的過的過程。程。 如果一個類中定義了太多的屬性與方法,也說明它有可能需要改進。如果一個類中定義了太多的屬性與方法,也說明它有可能需要改進。這時候可以考慮分拆成多個類,或者抽象父類等方法。這時候可以考慮分拆成多個類,或者抽象父類等方法。 編碼誤區(qū)編碼誤區(qū) 2l 為人性僻耽佳句,語不驚人死不休為人性僻耽佳句,語不驚人死不休詩人寫詩可以打破常規(guī),追求新奇,但是代碼絕對不能這詩人寫詩可以打破常規(guī),追求新奇,但是代碼絕對不能這樣。在代碼中,我們要按照常規(guī)的手法來寫,不要出樣。在代碼中,我們要按照常規(guī)的手法來寫,不要出“奇奇招招”、“怪招怪招”,因為稀奇古怪的代碼容易引起
11、隱含的,因為稀奇古怪的代碼容易引起隱含的bug,另外可讀性也不好。,另外可讀性也不好。l 千呼萬喚始出來,猶抱琵琶半遮面千呼萬喚始出來,猶抱琵琶半遮面這里指函數(shù)與變量的命名要見名知意。例如:這里指函數(shù)與變量的命名要見名知意。例如:function1(int i1,int i2)這樣的函數(shù),我們很難知道它的作)這樣的函數(shù),我們很難知道它的作用,以及參數(shù)的意義。用,以及參數(shù)的意義。在實際的命名中,不要怕費事,長一點的函數(shù)與變量名可在實際的命名中,不要怕費事,長一點的函數(shù)與變量名可以提高代碼的可讀性。以提高代碼的可讀性。猶抱琵琶半遮面的不僅僅是變量命名,迂回曲折的邏輯同猶抱琵琶半遮面的不僅僅是變量命
12、名,迂回曲折的邏輯同樣讓人糊涂,我們在編寫代碼時,不論變量還是邏輯,都樣讓人糊涂,我們在編寫代碼時,不論變量還是邏輯,都要以清晰易懂為佳。要以清晰易懂為佳。 編碼誤區(qū)編碼誤區(qū) 3l為賦新詞強說愁為賦新詞強說愁這里指有些軟件工程師為了顯示水平而套用一些這里指有些軟件工程師為了顯示水平而套用一些不必要的結(jié)構(gòu)和定勢做法。尤其是在對面向?qū)ο蟛槐匾慕Y(jié)構(gòu)和定勢做法。尤其是在對面向?qū)ο笈c設(shè)計模式不太理解的情況下,抽象出不必要的與設(shè)計模式不太理解的情況下,抽象出不必要的類結(jié)構(gòu)和繼承關(guān)系。類結(jié)構(gòu)和繼承關(guān)系。把代碼及其表達的邏輯分散到太多的類中,在代把代碼及其表達的邏輯分散到太多的類中,在代碼管理和閱讀理解上都
13、會造成困難,同時對于系碼管理和閱讀理解上都會造成困難,同時對于系統(tǒng)性能,也有負面影響。統(tǒng)性能,也有負面影響。 文檔撰寫能力文檔撰寫能力 l多數(shù)的軟件工程師的代碼水平好于其寫文檔水多數(shù)的軟件工程師的代碼水平好于其寫文檔水平,軟件是文檔的重要組成部分,這要求軟件平,軟件是文檔的重要組成部分,這要求軟件工程師必須具備文檔書寫能力。工程師必須具備文檔書寫能力。l文檔的書寫,一是要按文檔模板完成,各公司文檔的書寫,一是要按文檔模板完成,各公司均提供各種文檔模板,二是要求文檔易讀、直均提供各種文檔模板,二是要求文檔易讀、直白,采用書面語書寫。白,采用書面語書寫。 HandsOn實訓(xùn)體系提供了一套相對簡單的
14、文檔模板,實訓(xùn)體系提供了一套相對簡單的文檔模板,要求我們在做項目時,按模板要求完成相關(guān)項目文檔。要求我們在做項目時,按模板要求完成相關(guān)項目文檔。 源代碼管理習(xí)慣源代碼管理習(xí)慣 l絕大多數(shù)軟件工程師都經(jīng)歷過源代碼丟失,或絕大多數(shù)軟件工程師都經(jīng)歷過源代碼丟失,或者舊版本覆蓋新版本的問題,防止這種情形發(fā)者舊版本覆蓋新版本的問題,防止這種情形發(fā)生的一個好的方式就是采取版本控制工具。生的一個好的方式就是采取版本控制工具。l關(guān)于版本控制工具的配置及使用,我們將在第關(guān)于版本控制工具的配置及使用,我們將在第二階段的軟件素養(yǎng)課程里面具體介紹。二階段的軟件素養(yǎng)課程里面具體介紹。 主動溝通與反饋主動溝通與反饋 l一
15、個項目組由多名軟件工程師組成,我們要學(xué)一個項目組由多名軟件工程師組成,我們要學(xué)會積極主動地與其他成員溝通與交流,保證項會積極主動地與其他成員溝通與交流,保證項目組成員對問題理解地一致性。遇到自己無法目組成員對問題理解地一致性。遇到自己無法解決的技術(shù)難題,要多與其他成員討論,用最解決的技術(shù)難題,要多與其他成員討論,用最短的時間解決問題。短的時間解決問題。 計劃與總結(jié)的習(xí)慣計劃與總結(jié)的習(xí)慣 l 項目有項目計劃,項目組每個軟件工程師需要根據(jù)項目有項目計劃,項目組每個軟件工程師需要根據(jù)項目計劃制定自己的工作進度,如何準確估量自己項目計劃制定自己的工作進度,如何準確估量自己的工作進度,按項目計劃安排好自
16、己的工作計劃,的工作進度,按項目計劃安排好自己的工作計劃,這個需要軟件工程師有經(jīng)常性的計劃習(xí)慣。這個需要軟件工程師有經(jīng)常性的計劃習(xí)慣。l 要做好計劃,需要有好的時間管理計劃及學(xué)會使用要做好計劃,需要有好的時間管理計劃及學(xué)會使用時間管理工具,例如甘特圖。時間管理工具,例如甘特圖。l 總結(jié)是學(xué)習(xí)與工作過程中一個重要的環(huán)節(jié)。善于學(xué)總結(jié)是學(xué)習(xí)與工作過程中一個重要的環(huán)節(jié)。善于學(xué)習(xí)的人必然善于總結(jié)??偨Y(jié)能夠?qū)⒆约毫闵⒌氖斋@習(xí)的人必然善于總結(jié)??偨Y(jié)能夠?qū)⒆约毫闵⒌氖斋@條理化,變成自己的知識與經(jīng)驗的積累。條理化,變成自己的知識與經(jīng)驗的積累。 測試習(xí)慣測試習(xí)慣 l 鑒別軟件工程師優(yōu)秀與否的一個方面就是看其提交鑒
17、別軟件工程師優(yōu)秀與否的一個方面就是看其提交的代碼的代碼bug是否足夠少。這必然要求軟件工程師在提是否足夠少。這必然要求軟件工程師在提交代碼之前,先要自己測試無誤。交代碼之前,先要自己測試無誤。l 作為一些商業(yè)化正規(guī)化的開發(fā)而言,專職的測試工作為一些商業(yè)化正規(guī)化的開發(fā)而言,專職的測試工程師是不可少的。程師是不可少的。l 問題發(fā)現(xiàn)的越早,解決的代價就越低。問題發(fā)現(xiàn)的越早,解決的代價就越低。l 開發(fā)人員在每段代碼,每個子模塊完成后進行認真開發(fā)人員在每段代碼,每個子模塊完成后進行認真的測試,就可以盡量將一些潛在的問題最早的發(fā)現(xiàn)的測試,就可以盡量將一些潛在的問題最早的發(fā)現(xiàn)和解決,這樣對整體系統(tǒng)建設(shè)的效率
18、和可靠性就有和解決,這樣對整體系統(tǒng)建設(shè)的效率和可靠性就有了最大的保證。了最大的保證。 軟件生命周期概述軟件生命周期概述 1 l一個人要經(jīng)過胎兒、兒童、青年、中年、老年,一個人要經(jīng)過胎兒、兒童、青年、中年、老年,直到最終死亡的生命周期。直到最終死亡的生命周期。l一個軟件同樣有一個從定義、開發(fā)、使用和維一個軟件同樣有一個從定義、開發(fā)、使用和維護,直到最終被廢棄的生命周期。護,直到最終被廢棄的生命周期。l在軟件的生命周期中,需要完成許多性質(zhì)各異在軟件的生命周期中,需要完成許多性質(zhì)各異的工作,這就要求把軟件生命周期劃分成若干的工作,這就要求把軟件生命周期劃分成若干個階段,并相應(yīng)地制定出切實可行的計劃,
19、然個階段,并相應(yīng)地制定出切實可行的計劃,然后按照計劃對軟件的開發(fā)與維護工作進行管理。后按照計劃對軟件的開發(fā)與維護工作進行管理。 軟件生命周期概述軟件生命周期概述 2l 軟件產(chǎn)品從形成概念開始,經(jīng)過開發(fā)、使用和維護,軟件產(chǎn)品從形成概念開始,經(jīng)過開發(fā)、使用和維護,直到最后退役的全過程稱為軟件生命周期。直到最后退役的全過程稱為軟件生命周期。l 軟件工程是把軟件生命周期依此劃分為若干個階段,軟件工程是把軟件生命周期依此劃分為若干個階段,每個階段有相對獨立的任務(wù),然后對每一階段進行每個階段有相對獨立的任務(wù),然后對每一階段進行嚴格管理。嚴格管理。l 把軟件生命周期劃分成若干個階段,每個階段的任把軟件生命周
20、期劃分成若干個階段,每個階段的任務(wù)相對獨立,而且比較簡單,便于不同人員分工協(xié)務(wù)相對獨立,而且比較簡單,便于不同人員分工協(xié)作,從而降低了整個軟件開發(fā)工程的困難程度;在作,從而降低了整個軟件開發(fā)工程的困難程度;在軟件生命周期的每個階段都采用科學(xué)的管理技術(shù)和軟件生命周期的每個階段都采用科學(xué)的管理技術(shù)和良好的技術(shù)方法,使得軟件開發(fā)的全過程以一種有良好的技術(shù)方法,使得軟件開發(fā)的全過程以一種有條不紊的方式進行,這樣,能保證軟件的質(zhì)量,特條不紊的方式進行,這樣,能保證軟件的質(zhì)量,特別是提高軟件的可維護性。別是提高軟件的可維護性。 軟件生命周期概述軟件生命周期概述 3l軟件的生命周期通常劃分為五個階段:軟件的
21、生命周期通常劃分為五個階段:需求分析需求分析系統(tǒng)設(shè)計系統(tǒng)設(shè)計編碼實現(xiàn)編碼實現(xiàn)軟件測試軟件測試運行維護運行維護 需求分析概述需求分析概述l需求分析是解決需求分析是解決“做什么做什么”的問題,即我們需的問題,即我們需要做一個什么樣的系統(tǒng)。要做一個什么樣的系統(tǒng)。l系統(tǒng)分析階段的基本任務(wù)是:系統(tǒng)分析員與用系統(tǒng)分析階段的基本任務(wù)是:系統(tǒng)分析員與用戶在一起交流,充分了解用戶的要求,并把雙戶在一起交流,充分了解用戶的要求,并把雙方的理解用系統(tǒng)方案書表達出來。方的理解用系統(tǒng)方案書表達出來。 需求分析可行性分析需求分析可行性分析 l 在進行具體需求分析之前,還需要對項目進行可行性分析,在進行具體需求分析之前,還
22、需要對項目進行可行性分析,可行性分析是解決可行性分析是解決“做與不做做與不做”的問題。即我們能否做這個的問題。即我們能否做這個項目。項目。l 從理論上講,只要資源和時間不加限制,所有的項目都是可從理論上講,只要資源和時間不加限制,所有的項目都是可行的。然而,由于資源缺乏和交付時間限制的困擾以及項目行的。然而,由于資源缺乏和交付時間限制的困擾以及項目是否能夠盈利,對軟件項目的可行性做出細致而謹慎的評估是否能夠盈利,對軟件項目的可行性做出細致而謹慎的評估是十分必要的。如果在制定計劃階段及早發(fā)現(xiàn)將來可能在開是十分必要的。如果在制定計劃階段及早發(fā)現(xiàn)將來可能在開發(fā)過程中遇到的問題,及早做出決定,可以避免
23、大量的人力、發(fā)過程中遇到的問題,及早做出決定,可以避免大量的人力、財力、時間上的浪費。財力、時間上的浪費。l 可行性分析內(nèi)容主要包括:市場可行性分析、政策可行性分可行性分析內(nèi)容主要包括:市場可行性分析、政策可行性分析、技術(shù)可行性分析、成本效益分析、析、技術(shù)可行性分析、成本效益分析、SWOT分析等幾個方分析等幾個方面。面。 需求分析需求分析SWOT分析分析 1lSWOT分析即分析即“強弱機威強弱機威”綜合分析法,是一綜合分析法,是一種企業(yè)項目競爭態(tài)勢分析方法,通過評價項目種企業(yè)項目競爭態(tài)勢分析方法,通過評價項目的:的:優(yōu)點優(yōu)點(Strengths)弱點弱點(Weaknesses)競爭市場上的機會
24、競爭市場上的機會(Opportunities)威脅威脅(Threats)l通過通過SWOT用以在決定企業(yè)項目前對企業(yè)項目用以在決定企業(yè)項目前對企業(yè)項目進行深入全面的分析以及競爭優(yōu)勢的定位。進行深入全面的分析以及競爭優(yōu)勢的定位。 需求分析需求分析SWOT分析分析 2l 分析出項目的分析出項目的SWOT后進而需用后進而需用USED技巧來產(chǎn)出解技巧來產(chǎn)出解決方案,決方案,USED是下列四個方向的重點縮寫,如用中是下列四個方向的重點縮寫,如用中文的四個關(guān)鍵字,會是文的四個關(guān)鍵字,會是 用、停、成、御用、停、成、御 。USED分別是:分別是:How can we Use each Strength ?
25、如何善用每個優(yōu)勢?如何善用每個優(yōu)勢?How can we Stop each Weakness ? 如何停止每個劣勢?如何停止每個劣勢?How can we Exploit each Opportunity ? 如何成就每個如何成就每個機會?機會?How can we Defend against each Threat ? 如何抵御每如何抵御每個威脅?個威脅? 需求分析難點解析需求分析難點解析 1 l開發(fā)軟件系統(tǒng)最困難的部分就是準確說明開發(fā)開發(fā)軟件系統(tǒng)最困難的部分就是準確說明開發(fā)什么。最困難的概念性工作是編寫出詳細的需什么。最困難的概念性工作是編寫出詳細的需求,包括所有面向用戶、面向機器和其
26、它軟件求,包括所有面向用戶、面向機器和其它軟件系統(tǒng)的接口。此工作一旦做錯,將會給系統(tǒng)帶系統(tǒng)的接口。此工作一旦做錯,將會給系統(tǒng)帶來極大的損害,并且以后對它修改也極為困難。來極大的損害,并且以后對它修改也極為困難。l需求是產(chǎn)品的根源,需求工作的優(yōu)劣對產(chǎn)品影需求是產(chǎn)品的根源,需求工作的優(yōu)劣對產(chǎn)品影響最大。就像一條河流,如果源頭被污染了,響最大。就像一條河流,如果源頭被污染了,那么整條河流也就被污染了。那么整條河流也就被污染了。 需求分析難點解析需求分析難點解析 2 需求分析難點解析需求分析難點解析 3l 把所有與需求直接相關(guān)的活動通稱為需求工程。需把所有與需求直接相關(guān)的活動通稱為需求工程。需求工程中
27、的活動可分為兩大類,一類屬于需求開發(fā),求工程中的活動可分為兩大類,一類屬于需求開發(fā),另一類屬于需求管理。另一類屬于需求管理。 需求分析難點解析需求分析難點解析 4l行業(yè)知識匱乏行業(yè)知識匱乏軟件工程師一般技術(shù)比較在行,但是業(yè)務(wù)知識不軟件工程師一般技術(shù)比較在行,但是業(yè)務(wù)知識不一定理解。假如對用戶所在的行業(yè)不了解,則不一定理解。假如對用戶所在的行業(yè)不了解,則不能很好地與用戶溝通,需求也難以詳細調(diào)查清楚。能很好地與用戶溝通,需求也難以詳細調(diào)查清楚。例如,需要為客戶做一套財務(wù)軟件,若是需求調(diào)例如,需要為客戶做一套財務(wù)軟件,若是需求調(diào)查人員根本不懂財務(wù)知識,則與用戶交流都很困查人員根本不懂財務(wù)知識,則與用
28、戶交流都很困難。難。此時應(yīng)當趕緊補習(xí)應(yīng)用域知識,不論是通過自學(xué)此時應(yīng)當趕緊補習(xí)應(yīng)用域知識,不論是通過自學(xué)還是培訓(xùn)的方式,如果可能的話,開發(fā)方最好請還是培訓(xùn)的方式,如果可能的話,開發(fā)方最好請既懂軟件又懂應(yīng)用域知識的行業(yè)專家來幫忙。既懂軟件又懂應(yīng)用域知識的行業(yè)專家來幫忙。 需求分析難點解析需求分析難點解析 5l 用戶說不清需求用戶說不清需求用戶說不清楚需求是普遍現(xiàn)象,這是讓開發(fā)人員頭痛的大用戶說不清楚需求是普遍現(xiàn)象,這是讓開發(fā)人員頭痛的大問題。其實這個并不能怪用戶,試想,假如我們?nèi)ベI鞋子,問題。其實這個并不能怪用戶,試想,假如我們?nèi)ベI鞋子,我們非常了解自已的腳,但很難用語言說清楚腳的大小和我們非常
29、了解自已的腳,但很難用語言說清楚腳的大小和形狀。通常拿鞋子去試,試穿時感覺到舒服才會買鞋。形狀。通常拿鞋子去試,試穿時感覺到舒服才會買鞋。需求分析員絕不能以用戶說不清楚需求為借口而草率地對需求分析員絕不能以用戶說不清楚需求為借口而草率地對待需求開發(fā)工作,否則會連累整個開發(fā)團隊的。待需求開發(fā)工作,否則會連累整個開發(fā)團隊的。無論是什么原因?qū)е掠脩粽f不清楚需求,需求分析員必須無論是什么原因?qū)е掠脩粽f不清楚需求,需求分析員必須設(shè)法搞清楚用戶真正的需求,這是分析人員的職責,也是設(shè)法搞清楚用戶真正的需求,這是分析人員的職責,也是職業(yè)的挑戰(zhàn)。職業(yè)的挑戰(zhàn)。 需求分析階段成果需求分析階段成果 l可行性研究報告可
30、行性研究報告l軟件系統(tǒng)需求說明書。軟件系統(tǒng)需求說明書。 系統(tǒng)設(shè)計系統(tǒng)設(shè)計 l系統(tǒng)設(shè)計要回答的中心問題是系統(tǒng)系統(tǒng)設(shè)計要回答的中心問題是系統(tǒng)“怎么做怎么做”,即如何實現(xiàn)產(chǎn)品需求規(guī)格說明書規(guī)定的系統(tǒng)功即如何實現(xiàn)產(chǎn)品需求規(guī)格說明書規(guī)定的系統(tǒng)功能。能。 l依據(jù)依據(jù)“分而治之分而治之”的思想,我們把系統(tǒng)設(shè)計過的思想,我們把系統(tǒng)設(shè)計過程劃分為兩個階段:程劃分為兩個階段:高層設(shè)計階段高層設(shè)計階段詳細設(shè)計階段。詳細設(shè)計階段。高層設(shè)計階段的重點是體系結(jié)構(gòu)設(shè)計。高層設(shè)計階段的重點是體系結(jié)構(gòu)設(shè)計。詳細設(shè)計階段的重點是用戶界面設(shè)計、數(shù)據(jù)庫設(shè)計、模詳細設(shè)計階段的重點是用戶界面設(shè)計、數(shù)據(jù)庫設(shè)計、模塊設(shè)計、數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計
31、等。塊設(shè)計、數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計等。 系統(tǒng)設(shè)計過程系統(tǒng)設(shè)計過程 1 系統(tǒng)設(shè)計過程系統(tǒng)設(shè)計過程 2 l 體系結(jié)構(gòu)如同人的骨架,決定著我們整個項目的主體系結(jié)構(gòu)如同人的骨架,決定著我們整個項目的主體架構(gòu)。體架構(gòu)。l 用戶界面如同人的外表,我們在設(shè)計軟件時不要沉用戶界面如同人的外表,我們在設(shè)計軟件時不要沉迷于技術(shù),而要多多思考什么樣的界面才能讓用戶迷于技術(shù),而要多多思考什么樣的界面才能讓用戶更加喜歡。更加喜歡。l 數(shù)據(jù)庫是存儲和處理數(shù)據(jù)用的。人體的數(shù)據(jù)庫是大數(shù)據(jù)庫是存儲和處理數(shù)據(jù)用的。人體的數(shù)據(jù)庫是大腦,知識相當于數(shù)據(jù),存儲在大腦里。腦,知識相當于數(shù)據(jù),存儲在大腦里。l 模塊如同人的器官。每個器官都具有
32、特定的功能,模塊如同人的器官。每個器官都具有特定的功能,器官們依附在骨架上。模塊是軟件系統(tǒng)的部件,它器官們依附在骨架上。模塊是軟件系統(tǒng)的部件,它們安插在體系結(jié)構(gòu)上。們安插在體系結(jié)構(gòu)上。l 數(shù)據(jù)結(jié)構(gòu)與算法如同人的神經(jīng)和肌肉,它分布在全數(shù)據(jù)結(jié)構(gòu)與算法如同人的神經(jīng)和肌肉,它分布在全身,讓器官具有生命并能發(fā)揮功能。身,讓器官具有生命并能發(fā)揮功能。 體系結(jié)構(gòu)設(shè)計難點分析體系結(jié)構(gòu)設(shè)計難點分析 l 體系結(jié)構(gòu)是指軟件系統(tǒng)的基本和主體的形態(tài),也就是軟件系體系結(jié)構(gòu)是指軟件系統(tǒng)的基本和主體的形態(tài),也就是軟件系統(tǒng)中統(tǒng)中“最本質(zhì)最本質(zhì)”的東西。一個軟件系統(tǒng)的體系結(jié)構(gòu)設(shè)計得好的東西。一個軟件系統(tǒng)的體系結(jié)構(gòu)設(shè)計得好不好,可
33、以用不好,可以用“合適性、結(jié)構(gòu)穩(wěn)定性、可擴展性、可復(fù)用性合適性、結(jié)構(gòu)穩(wěn)定性、可擴展性、可復(fù)用性”這些特征量來評估。這些特征量來評估。l 對于軟件系統(tǒng)而言,能夠滿足需求的設(shè)計方案可能有很多種,對于軟件系統(tǒng)而言,能夠滿足需求的設(shè)計方案可能有很多種,究竟該選哪一種?此時商業(yè)目標是決策依據(jù),即選擇能夠為究竟該選哪一種?此時商業(yè)目標是決策依據(jù),即選擇能夠為開發(fā)方和客戶帶來最大利益的那個設(shè)計方案。大部分軟件開開發(fā)方和客戶帶來最大利益的那個設(shè)計方案。大部分軟件開發(fā)人員天生有使用新技術(shù)的傾向,而這種傾向?qū)﹂_發(fā)商業(yè)產(chǎn)發(fā)人員天生有使用新技術(shù)的傾向,而這種傾向?qū)﹂_發(fā)商業(yè)產(chǎn)品而言可能是不利的。品而言可能是不利的。l
34、體系結(jié)構(gòu)一旦設(shè)計完成,應(yīng)當在一定的時間內(nèi)保持穩(wěn)定不變,體系結(jié)構(gòu)一旦設(shè)計完成,應(yīng)當在一定的時間內(nèi)保持穩(wěn)定不變,只有這樣才能使后續(xù)工作順利開展。如果體系結(jié)構(gòu)經(jīng)常變動,只有這樣才能使后續(xù)工作順利開展。如果體系結(jié)構(gòu)經(jīng)常變動,那么建筑在體系結(jié)構(gòu)之上的用戶界面、數(shù)據(jù)庫、模塊、數(shù)據(jù)那么建筑在體系結(jié)構(gòu)之上的用戶界面、數(shù)據(jù)庫、模塊、數(shù)據(jù)結(jié)構(gòu)等等也跟著經(jīng)常變動,這將導(dǎo)致項目發(fā)生混亂。結(jié)構(gòu)等等也跟著經(jīng)常變動,這將導(dǎo)致項目發(fā)生混亂。 用戶界面設(shè)計難點分析用戶界面設(shè)計難點分析 l通俗地講,用戶界面通俗地講,用戶界面“好不好好不好”主要看它是否主要看它是否“容易使用容易使用”和和“美觀美觀”。易用性是指用戶使用軟件的容易
35、程度,是否簡單易用性是指用戶使用軟件的容易程度,是否簡單容易上手,不要有太高的學(xué)習(xí)曲線。容易上手,不要有太高的學(xué)習(xí)曲線。除了要求軟件易用之外,人們還希望用戶界面美除了要求軟件易用之外,人們還希望用戶界面美觀。觀。l一般來講,我們開發(fā)應(yīng)用系統(tǒng),其界面應(yīng)該與一般來講,我們開發(fā)應(yīng)用系統(tǒng),其界面應(yīng)該與Windows界面保持一致性。界面保持一致性。 數(shù)據(jù)庫設(shè)計難點分析數(shù)據(jù)庫設(shè)計難點分析 l數(shù)據(jù)庫是存儲和處理數(shù)據(jù)用的。數(shù)據(jù)庫設(shè)計的數(shù)據(jù)庫是存儲和處理數(shù)據(jù)用的。數(shù)據(jù)庫設(shè)計的主要工作是:設(shè)計數(shù)據(jù)庫的表(數(shù)據(jù)就存在表主要工作是:設(shè)計數(shù)據(jù)庫的表(數(shù)據(jù)就存在表里面),表的結(jié)構(gòu)就是數(shù)據(jù)的存儲結(jié)構(gòu);對這里面),表的結(jié)構(gòu)就
36、是數(shù)據(jù)的存儲結(jié)構(gòu);對這些表中的數(shù)據(jù)進行操作,常見操作如查詢、插些表中的數(shù)據(jù)進行操作,常見操作如查詢、插入、修改、刪除等。入、修改、刪除等。l數(shù)據(jù)庫設(shè)計一般要經(jīng)歷數(shù)據(jù)庫設(shè)計一般要經(jīng)歷“邏輯設(shè)計邏輯設(shè)計物理設(shè)物理設(shè)計計安全性設(shè)計安全性設(shè)計性能優(yōu)化性能優(yōu)化”等步驟,通等步驟,通常要迭代進行。常要迭代進行。 模塊設(shè)計難點分析模塊設(shè)計難點分析 l 對于軟件而言,我們習(xí)慣從功能角度描述模塊。所以模塊泛對于軟件而言,我們習(xí)慣從功能角度描述模塊。所以模塊泛指軟件系統(tǒng)的功能部件。在軟件的體系結(jié)構(gòu)設(shè)計完成之際,指軟件系統(tǒng)的功能部件。在軟件的體系結(jié)構(gòu)設(shè)計完成之際,我們就已經(jīng)確定了所有模塊的功能,并且把模塊們安放在體
37、我們就已經(jīng)確定了所有模塊的功能,并且把模塊們安放在體系結(jié)構(gòu)的恰當位置上。系結(jié)構(gòu)的恰當位置上。l “模塊化模塊化”(Modularization)是指:將系統(tǒng)分解為一系列)是指:將系統(tǒng)分解為一系列功能模塊,然后逐一實現(xiàn)這些模塊,最后把所有的模塊集成功能模塊,然后逐一實現(xiàn)這些模塊,最后把所有的模塊集成為原來的系統(tǒng)。這樣做的好處是能夠大大降低系統(tǒng)的開發(fā)難為原來的系統(tǒng)。這樣做的好處是能夠大大降低系統(tǒng)的開發(fā)難度。度。l 每個模塊都具有特定的、明確的功能。我們在設(shè)計模塊時應(yīng)每個模塊都具有特定的、明確的功能。我們在設(shè)計模塊時應(yīng)當盡量使模塊的功能獨立,因為功能獨立的模塊可以降低開當盡量使模塊的功能獨立,因為功
38、能獨立的模塊可以降低開發(fā)、測試、維護的代價。但是功能獨立并不意味著模塊是絕發(fā)、測試、維護的代價。但是功能獨立并不意味著模塊是絕對孤立的。所有的模塊應(yīng)當能夠被集成為一個系統(tǒng),所以模對孤立的。所有的模塊應(yīng)當能夠被集成為一個系統(tǒng),所以模塊之間必定要交流信息、相互配合。塊之間必定要交流信息、相互配合。 系統(tǒng)設(shè)計階段成果系統(tǒng)設(shè)計階段成果 l體系結(jié)構(gòu)設(shè)計報告體系結(jié)構(gòu)設(shè)計報告l用戶界面設(shè)計報告用戶界面設(shè)計報告l數(shù)據(jù)庫設(shè)計報告數(shù)據(jù)庫設(shè)計報告l模塊設(shè)計報告模塊設(shè)計報告 編碼實現(xiàn)編碼實現(xiàn) l 軟件實現(xiàn)是將軟件實現(xiàn)是將“軟件設(shè)計軟件設(shè)計”的結(jié)果變換成用程序設(shè)的結(jié)果變換成用程序設(shè)計語言編寫的計算機能識別的程序。計語言
39、編寫的計算機能識別的程序。l 系統(tǒng)實現(xiàn)是在系統(tǒng)分析、系統(tǒng)設(shè)計的基礎(chǔ)上,將系系統(tǒng)實現(xiàn)是在系統(tǒng)分析、系統(tǒng)設(shè)計的基礎(chǔ)上,將系統(tǒng)設(shè)計的每一個細節(jié),用計算機語言(或開發(fā)工具)統(tǒng)設(shè)計的每一個細節(jié),用計算機語言(或開發(fā)工具)完整地表達出來,在計算機上應(yīng)用該系統(tǒng)。系統(tǒng)的完整地表達出來,在計算機上應(yīng)用該系統(tǒng)。系統(tǒng)的實現(xiàn)既是對系統(tǒng)分析、系統(tǒng)設(shè)計階段工作的檢驗,實現(xiàn)既是對系統(tǒng)分析、系統(tǒng)設(shè)計階段工作的檢驗,又是取得用戶對系統(tǒng)信任的關(guān)鍵階段。系統(tǒng)的規(guī)模又是取得用戶對系統(tǒng)信任的關(guān)鍵階段。系統(tǒng)的規(guī)模越大,系統(tǒng)的實現(xiàn)就越復(fù)雜。為此,程序設(shè)計人員越大,系統(tǒng)的實現(xiàn)就越復(fù)雜。為此,程序設(shè)計人員要具有比較豐富的程序設(shè)計經(jīng)驗,具有良好
40、的程序要具有比較豐富的程序設(shè)計經(jīng)驗,具有良好的程序設(shè)計風(fēng)格和豐富的編程技巧。設(shè)計風(fēng)格和豐富的編程技巧。l 系統(tǒng)實現(xiàn)的主要任務(wù)是進行編程語言的選擇、程序系統(tǒng)實現(xiàn)的主要任務(wù)是進行編程語言的選擇、程序的編寫與調(diào)試。的編寫與調(diào)試。 編碼實現(xiàn)難點解析編碼實現(xiàn)難點解析 1 l編程語言的選擇編程語言的選擇選擇開發(fā)人員最熟悉的,最合適的編程語言,而選擇開發(fā)人員最熟悉的,最合適的編程語言,而不是最新的,最不是最新的,最COOL的語言。的語言。對于編程語言的選擇,要根據(jù)具體項目的要求,對于編程語言的選擇,要根據(jù)具體項目的要求,選擇最合適的編程語言,例如,選擇最合適的編程語言,例如,C/S架構(gòu)的項目,架構(gòu)的項目,可以選用可以選用Delphi或或Winform或或PB,小型,小型WEB應(yīng)用應(yīng)用項目,沒有必要選擇項目,沒有必要選擇Java。采用新技術(shù)總是機遇與風(fēng)險并存。風(fēng)險主要體現(xiàn)采用新技術(shù)總是機遇與風(fēng)險并存。風(fēng)險主要體現(xiàn)在:新技術(shù)大家都不熟,開發(fā)起來效率不如用我在:新技術(shù)大家都不熟,開發(fā)起來效率不如用我們熟悉的技術(shù)高,新技術(shù)可能某些方面不成熟,們熟悉的技術(shù)高,新技術(shù)可能某些方面不成熟,會對我們的項目造成影響。會對我們的項目造成影響。 編碼實現(xiàn)難點解析編碼實現(xiàn)難點解析 2l 按規(guī)范編碼按規(guī)范編碼正規(guī)項目
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 乳品工藝技術(shù)創(chuàng)新與發(fā)展考核試卷
- 勘察項目項目管理氣候變化與勘察應(yīng)對策略考核試卷
- 批發(fā)市場的產(chǎn)品陳列與促銷技巧考核試卷
- 施工監(jiān)督與試車開車中安全注意事項考核試卷
- 小學(xué)生天氣安全教育課件
- 農(nóng)田土壤售賣合同范本
- 個人產(chǎn)品交易合同范本
- 玻璃浴房合同范本
- 委托裝修安全合同范本
- 礦供銷合同范本
- 第19課 法國大革命和拿破侖帝國 教案
- 房地產(chǎn) -碧桂園住宅項目設(shè)計成本優(yōu)化手冊
- 江蘇省環(huán)保集團有限公司招聘筆試題庫2024
- 商場物料制作合同協(xié)議書
- 醫(yī)院論文發(fā)表前誠信承諾及備案表
- 2024年廣州市中考語文試卷真題(含官方答案)
- 標桿地產(chǎn)五星級酒店精裝修標準
- 2024年江蘇農(nóng)林職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫1套
- 城軌站務(wù)班組管理
- 《燃煤火力發(fā)電企業(yè)設(shè)備檢修導(dǎo)則》
- 專題 勾股定理與全等三角形的綜合運用( 基礎(chǔ)題&提升題&壓軸題 )(解析版)
評論
0/150
提交評論