軟件開(kāi)發(fā)的歷史
軟件開(kāi)發(fā)屆的第一個(gè)程序員是誰(shuí)够吩?
阿達(dá)·洛芙萊斯(Ada Lovelace)
生于哪個(gè)年代比然?英國(guó)人。
十七世紀(jì)初周循。
性別是什么强法?
女。
美國(guó)國(guó)防部將耗費(fèi)巨資湾笛,研發(fā)出高級(jí)程序語(yǔ)言命名為Ada語(yǔ)言紀(jì)念她饮怯。
奧古斯塔·阿達(dá)·金,勒芙蕾絲伯爵夫人(Augusta Ada King, Countess of Lovelace
1950年代嚎研,軟件伴隨著第一臺(tái)電子計(jì)算機(jī)的問(wèn)世誕生了蓖墅,開(kāi)始出現(xiàn)以寫軟件謀生的人。
1960年代美國(guó)大學(xué)里開(kāi)始出現(xiàn)授予計(jì)算機(jī)專業(yè)的學(xué)位临扮,教人們寫軟件论矾。
1960年代中期軟件開(kāi)始作為一種產(chǎn)品被廣泛使用,出現(xiàn)了“軟件作坊”專職應(yīng)別人的需求寫軟件杆勇。
1960年代中期軟件的數(shù)量急劇膨脹贪壳,軟件需求日趨復(fù)雜,維護(hù)的難度越來(lái)越大蚜退,開(kāi)發(fā)成本令人吃驚地高闰靴,而失敗的軟件開(kāi)發(fā)項(xiàng)目卻屢見(jiàn)不鮮彪笼。“軟件危機(jī)”((software crisis))就這樣開(kāi)始了
概括來(lái)說(shuō)蚂且,軟件危機(jī)包含兩方面問(wèn)題:一配猫、如何開(kāi)發(fā)軟件,以滿足不斷增長(zhǎng)杏死,日趨復(fù)雜的需求泵肄;二、如何維護(hù)數(shù)量不斷膨脹的軟件產(chǎn)品识埋。
軟件危機(jī)一天都沒(méi)有消除凡伊。
1968年秋季,NATO(北約)的科技委員會(huì)召集了近50名一流的編程人員窒舟、計(jì)算機(jī)科學(xué)家和工業(yè)界巨頭系忙,討論和制定擺脫“軟件危機(jī)”的對(duì)策。在那次會(huì)議上第一次提出了軟件工程(software engineering)這個(gè)概念惠豺。
軟件工程包括兩方面內(nèi)容:軟件開(kāi)發(fā)技術(shù)和軟件項(xiàng)目管理银还。軟件開(kāi)發(fā)技術(shù)包括軟件開(kāi)發(fā)方法學(xué)、軟件工具和軟件工程環(huán)境洁墙。軟件項(xiàng)目管理包括軟件度量蛹疯、項(xiàng)目估算、進(jìn)度控制热监、人員組織捺弦、配置管理、項(xiàng)目計(jì)劃等孝扛。
思維如何影響我們列吼,例子:
一家大公司引進(jìn)了一條肥皂生產(chǎn)線。這條生產(chǎn)線能將肥皂從原材料的加入直到包裝裝箱自動(dòng)完成苦始。 但是銷售部門反映有的肥皂盒是空的寞钥,經(jīng)理要求工程師們解決這個(gè)問(wèn)題。于是成立一個(gè)以幾名博士為核心陌选、十幾名研究生為骨干的團(tuán)隊(duì)理郑。在耗費(fèi)數(shù)十萬(wàn)后,工程師們?cè)谏a(chǎn)線上一套X光機(jī)和高分辨率監(jiān)視器,當(dāng)機(jī)器對(duì)X光圖像進(jìn)行識(shí)別后,一條機(jī)械臂會(huì)自動(dòng)將空盒從生產(chǎn)線上拿走咨油。 另外一家鄉(xiāng)鎮(zhèn)企業(yè)也遇到了同樣的情況您炉,管理生產(chǎn)線的小工找來(lái)一臺(tái)電風(fēng)扇,擺在生產(chǎn)線旁臼勉。裝肥皂的盒子逐一在風(fēng)扇前通過(guò),只要有空盒子便會(huì)被吹離生產(chǎn)線邻吭,掉在籮筐里。 從揀空肥皂盒看宴霸,博士后和民工的區(qū)別 囱晴,博士后研究技術(shù)有時(shí)連民工都不如!
當(dāng)提起“軟件開(kāi)發(fā)”
大家會(huì)想到什么瓢谢?
會(huì)提出什么問(wèn)題畸写?
做軟件開(kāi)發(fā)哪些因素最重要,是記憶力氓扛,還是思維邏輯枯芬,還是英文還是其他的?
要開(kāi)發(fā)軟件數(shù)學(xué)是不是必須好采郎?軟件開(kāi)發(fā)與數(shù)學(xué)有什么關(guān)系千所?
應(yīng)聘軟件開(kāi)發(fā)的工作,一般會(huì)問(wèn)什么邏輯思維的問(wèn)題蒜埋?
我是學(xué)軟件開(kāi)發(fā)的但是邏輯思維特別差,我應(yīng)該怎么辦淫痰?
軟件開(kāi)發(fā)是一門科學(xué),軟件開(kāi)發(fā)是一項(xiàng)工程
軟件開(kāi)發(fā)需要科學(xué)思維整份;需要工程思維待错。
今天我們主要探討的是科學(xué)思維。
從“思維”兩個(gè)字中烈评,我們也可以領(lǐng)悟到一些東西火俄,“思”即是思考,比較容易理解讲冠,關(guān)鍵在“維”字瓜客,“維”其實(shí)是角度的意思。
獨(dú)立思考-》頭腦風(fēng)暴竿开,發(fā)散思維-》收斂思維
1谱仪、“面向過(guò)程”(Procedure Oriented)思維
就是分析出解決問(wèn)題所需要的步驟,然后用函數(shù)把這些步驟一步一步實(shí)現(xiàn)德迹,使用的時(shí)候一個(gè)一個(gè)依次調(diào)用就可以了芽卿。它是面向功能的,其結(jié)構(gòu)分析和結(jié)構(gòu)設(shè)計(jì)技術(shù)是圍繞著實(shí)現(xiàn)處理功能來(lái)構(gòu)造系統(tǒng)的胳搞,而在系統(tǒng)維護(hù)卸例、軟件升級(jí)的過(guò)程中,用戶的需求變化往往是針對(duì)系統(tǒng)功能的肌毅,所以筷转,采用這種技術(shù)設(shè)計(jì)的系統(tǒng)是不穩(wěn)定的,其可修改性和重用性都比較差的悬而。
側(cè)重點(diǎn)是流程呜舒,拆解,他是一種最最基本的思維方法笨奠。比如早上上班這個(gè)事情袭蝗。
1)起床2)洗簌3)穿衣)4)乘車5)打卡唤殴,在軟件開(kāi)發(fā)中可以用函數(shù)的方法對(duì)表達(dá)出每個(gè)步驟,然后有序的串起來(lái)到腥。
2朵逝、面向?qū)ο笏季S是從現(xiàn)實(shí)世界中客觀存在的事物(即對(duì)象)出發(fā)來(lái)構(gòu)造軟件系統(tǒng),側(cè)重以事物為中心去思考乡范,是把事物對(duì)象化配名。
具體的思維方法有抽象,封裝晋辆,繼承渠脉,多態(tài)。
在軟件系統(tǒng)開(kāi)發(fā)的過(guò)程中瓶佳,結(jié)構(gòu)分析和結(jié)構(gòu)設(shè)計(jì)技術(shù)具有很多優(yōu)點(diǎn)芋膘,但是也存在著許多難以克服的缺點(diǎn)。因?yàn)榻Y(jié)構(gòu)分析和結(jié)構(gòu)設(shè)計(jì)技術(shù)是圍繞著實(shí)現(xiàn)處理功能來(lái)構(gòu)造系統(tǒng)的涩哟,而在系統(tǒng)維護(hù)索赏、軟件升級(jí)的過(guò)程中,用戶的需求變化往往是針對(duì)系統(tǒng)功能的贴彼,所以潜腻,采用這種技術(shù)設(shè)計(jì)的系統(tǒng)是不穩(wěn)定的,其可修改性和重用性都非常差器仗。在這種情況下融涣,面向?qū)ο蟮某绦蚍治龊驮O(shè)計(jì)技術(shù)產(chǎn)生了,它盡可能地模擬人類習(xí)慣的思維方式精钮,使開(kāi)發(fā)軟件的方法和過(guò)程盡可能地接近人類認(rèn)識(shí)世界威鹿、解決問(wèn)題的方法與過(guò)程。采用面向?qū)ο蟮某绦蚍治龊驮O(shè)計(jì)技術(shù)開(kāi)發(fā)的軟件系統(tǒng)轨香,穩(wěn)定性忽你、可重用性和可維護(hù)性都很好。
3臂容、建模思維
用模型描述系統(tǒng)的因果關(guān)系或相互關(guān)系的過(guò)程都屬于建模科雳。建模就是一個(gè)實(shí)際系統(tǒng)模型化的過(guò)程。
現(xiàn)實(shí)的事物是變得越來(lái)越復(fù)雜了脓杉,太復(fù)雜了(我們無(wú)法掌握所有細(xì)節(jié))也往往就很難直接理解和把握它了糟秘,于是我們就先建立它的模型,然后研究模型以代替直接研究事物本身球散,
所以這個(gè)模型也就不能太失真了尿赚,否則研究結(jié)果也就跟現(xiàn)實(shí)相距甚遠(yuǎn)了。我們也經(jīng)常能見(jiàn)到各種模型,如城市模型凌净,汽車模型悲龟,輪船模型等等,這些模型都是一些實(shí)物模型泻蚊,
比較好理解躲舌,也比較好建立丑婿,我們姑且把它歸為物理模型性雄。還有一類模型就是邏輯模型或是抽象模型,
比如模擬一個(gè)城市的行政系統(tǒng)等羹奉,我們所說(shuō)的領(lǐng)域建模也是建立一種邏輯模型秒旋,即對(duì)企業(yè)某一功能系統(tǒng)建立模型。
① 分析和設(shè)計(jì)實(shí)際系統(tǒng)诀拭。②預(yù)測(cè)或預(yù)報(bào)實(shí)際系統(tǒng)某些狀態(tài)的未來(lái)發(fā)展趨勢(shì)迁筛。③對(duì)系統(tǒng)實(shí)行最優(yōu)控制。對(duì)于同一個(gè)實(shí)際系統(tǒng)耕挨,人們可以根據(jù)不同的用途和目的建立不同的模型细卧。所建模型只是實(shí)際系統(tǒng)原型的簡(jiǎn)化,因此既不可能也沒(méi)必要把實(shí)際系統(tǒng)的所有細(xì)節(jié)都列舉出來(lái)筒占。實(shí)際建模時(shí)贪庙,必須在模型的簡(jiǎn)化與分析結(jié)果的準(zhǔn)確性之間作出適當(dāng)?shù)恼壑校@是建模遵循的一條原則翰苫。
4止邮、框架思維
軟件開(kāi)發(fā)是一種知識(shí)活動(dòng),因此知識(shí)的聚集和積累是至關(guān)重要的奏窑〉寂框架能夠采用一種結(jié)構(gòu)化的方式對(duì)某個(gè)特定的業(yè)務(wù)領(lǐng)域進(jìn)行描述,也就是將這個(gè)領(lǐng)域相關(guān)的技術(shù)以代碼埃唯、文檔撩匕、模型等方式固化下來(lái)。
整體觀要強(qiáng)墨叛,從多角度多層面把握系統(tǒng)的框架止毕,所以說(shuō)發(fā)散性思維的培養(yǎng)是非常重要的。
5巍实、懶人思維
軟件的目標(biāo)滓技,就是某些工作自動(dòng)化,從而讓某些人可以更懶棚潦。重復(fù)的事情一定不要自己手工重復(fù)完成令漂,側(cè)重于自動(dòng)化。
思考如何把這些原來(lái)需要很麻煩的事情,自動(dòng)化執(zhí)行叠必。
一個(gè)岔口分別通向誠(chéng)實(shí)國(guó)和說(shuō)謊國(guó)荚孵。來(lái)了兩個(gè)人,已知一個(gè)是誠(chéng)實(shí)國(guó)的纬朝,一個(gè)是說(shuō)謊國(guó)的收叶,誠(chéng)實(shí)國(guó)永遠(yuǎn)說(shuō)實(shí)話,說(shuō)謊國(guó)永遠(yuǎn)說(shuō)謊話(你不知道他們具體是來(lái)自哪國(guó)的)共苛,你現(xiàn)在要去說(shuō)謊國(guó)判没,但不知道走哪條路,需要問(wèn)這兩個(gè)人隅茎,請(qǐng)問(wèn)應(yīng)該怎么問(wèn)澄峰?