久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

《軟件工程思想》

時(shí)間:2019-05-12 12:37:17下載本文作者:會(huì)員上傳
簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《《軟件工程思想》》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《《軟件工程思想》》。

第一篇:《軟件工程思想》

《軟件工程思想》

《軟件工程思想》 前言

在60年代計(jì)算機(jī)發(fā)展初期,程序設(shè)計(jì)是少數(shù)聰明人干的事。他們的智力與技能超群,編寫(xiě)的程序既能控制弱智的計(jì)算機(jī),又能讓別人看不懂、不會(huì)用。那個(gè)時(shí)期編程就跟捏泥巴一樣隨心所欲,于是他們很過(guò)分地把程序的集合稱(chēng)為軟件,以便自己開(kāi)心或傷心時(shí)再把程序捏個(gè)面目全非。人們就在這種美滋滋的感覺(jué)下熱情地編程,結(jié)果產(chǎn)生了一堆問(wèn)題:程序質(zhì)量低下,錯(cuò)誤頻出,進(jìn)度延誤,費(fèi)用劇增……。這些問(wèn)題導(dǎo)致了“軟件危機(jī)”。

在1968年,一群程序員、計(jì)算機(jī)科學(xué)家與工業(yè)界人士聚集一起共商對(duì)策。通過(guò)借鑒傳統(tǒng)工業(yè)的成功做法,他們主張通過(guò)工程化的方法開(kāi)發(fā)軟件來(lái)解決軟件危機(jī),并冠以“軟件工程”這一術(shù)語(yǔ)。三十年余年來(lái),盡管軟件的一些毛病如人類(lèi)的感冒一樣無(wú)法根治,但軟件的發(fā)展速度超過(guò)了任何傳統(tǒng)工業(yè),期間并未出現(xiàn)真真的軟件危機(jī)。這的確是前人的先見(jiàn)之明。如今軟件工程成了一門(mén)學(xué)科。

軟件工程主要講述軟件開(kāi)發(fā)的道理,基本上是軟件實(shí)踐者的成功經(jīng)驗(yàn)和失敗教訓(xùn)的總結(jié)。軟件工程的觀念、方法、策略和規(guī)范都是樸實(shí)無(wú)華的,平凡之人皆可領(lǐng)會(huì),關(guān)鍵在于運(yùn)用。我們不可以把軟件工程方法看成是諸葛亮的錦囊妙計(jì)─—在出了問(wèn)題后才打開(kāi)看看,而應(yīng)該事先掌握,預(yù)料將要出現(xiàn)的問(wèn)題,控制每個(gè)實(shí)踐環(huán)節(jié),并防患于未然。研究軟件工程永遠(yuǎn)做不到理論家那么瀟灑:定理證明了,就完事。我在讀大學(xué)的十年里有八年從事軟件開(kāi)發(fā),盡管編寫(xiě)了幾十萬(wàn)行C++/C程序,也經(jīng)歷了若干次小不點(diǎn)兒大的成功和失敗,可老感覺(jué)只學(xué)了些皮毛,心里慌兮兮的。在博士研究生畢業(yè)前的半年里,我告戒自己不應(yīng)該再稀里糊涂地在程序堆里滾爬下去了,于是就面壁反省,做了一陣子木訥的和尚。在“打坐”時(shí),每有心得體會(huì)便記錄下來(lái),不知不覺(jué)湊成了八章經(jīng),我就給此經(jīng)書(shū)起名為《軟件工程思想》。

經(jīng)典的軟件工程書(shū)籍厚得象磚頭,或讓人望而卻步,或讓人看了心事重重。請(qǐng)寬恕我的幼稚,我試圖用三個(gè)問(wèn)題:是什么、為什么、怎么辦,來(lái)解釋軟件工程的道理。所以本書(shū)薄得象餃子皮─—用來(lái)包“思想”這種有味道的“餡”。本書(shū)的八章經(jīng)分別為:

第一章“軟件工程基本觀念”;

第二章“程序員與程序經(jīng)理”;

第三章“項(xiàng)目計(jì)劃與質(zhì)量管理”;

第四章“可行性分析與需求分析”;

第五章“系統(tǒng)設(shè)計(jì)”;

第六章“C++ 面向?qū)ο蟪绦蛟O(shè)計(jì)”;

第七章“測(cè)試與改錯(cuò)”;

第八章“維護(hù)與再生工程”。

附錄“大學(xué)十年”可以充當(dāng)飯后的水果。

我偶爾也擔(dān)心此書(shū)寫(xiě)得太膚淺,內(nèi)容少得可憐。就象一只雞在水里撲騰了幾下,并不能產(chǎn)生美味的雞湯。但是如果您化了幾分鐘時(shí)間翻閱本書(shū)的任意章節(jié),您馬上就愿意再化幾個(gè)小時(shí)一口氣讀完全書(shū),并且樂(lè)得直拍桌子:“好!很好!非常好!”

您可以把這本科技書(shū)當(dāng)小說(shuō)看,但在看書(shū)時(shí)請(qǐng)不要吃東西,免得噴了別人或者嗆著自己。

如果您買(mǎi)了本書(shū)后覺(jué)得不值得,我一定賠償您的損失。致

本書(shū)并不屬于我博士學(xué)位論文的研究范疇,但卻是我讀博士學(xué)位三年來(lái)寫(xiě)的最有意思的作品。

首先要感謝我的導(dǎo)師,浙江大學(xué)計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)(CAD&CG)國(guó)家重點(diǎn)實(shí)驗(yàn)室的石教英教授。在其他師兄弟正兒八經(jīng)地“攻讀”博士學(xué)位時(shí),我“不務(wù)正業(yè)”地開(kāi)了一家軟件公司。當(dāng)我摔了一個(gè)大跟頭灰溜溜地回到陌生的實(shí)驗(yàn)室時(shí),石老師仍然熱情地幫助我“修成正果”。臨近畢業(yè),我心中慚愧,三年來(lái)我從來(lái)都沒(méi)給石老師干過(guò)活,我這個(gè)博士生他算是白招了。我很希望大學(xué)里多一些象石老師那樣開(kāi)明而大度的導(dǎo)師。董軍博士是本書(shū)的第一位讀者。我們是“君子之交”卻不“淡如水”,除了漆夜長(zhǎng)談科技、藝術(shù)、哲學(xué)外,還不忘“吃喝玩樂(lè)”享受生活。他在品閱的同時(shí)完成了審稿工作。

北京因特國(guó)風(fēng)網(wǎng)絡(luò)軟件公司的周鴻一是個(gè)真正的軟件高手。他在我開(kāi)發(fā)軟件產(chǎn)品失敗時(shí)給予了最多的幫助,并指正我在軟件設(shè)計(jì)中存在的根深蒂固的方法錯(cuò)誤,使我能盡早地逐步改正。我平時(shí)能說(shuō)會(huì)道,但在他面前我啞口無(wú)言只有聽(tīng)的份,因?yàn)樗牟湃A已全方位地超過(guò)了我。我真希望多結(jié)識(shí)象他這樣的朋友。

高振華老先生是個(gè)糊涂而可愛(ài)的民營(yíng)企業(yè)家,我們是忘年交。我把他干的糊涂事(投資軟件公司)寫(xiě)進(jìn)書(shū)里,作為可行性分析的案例。高先生給予我經(jīng)濟(jì)上的幫助,使我能夠在舒適的環(huán)境中開(kāi)展最后一年博士學(xué)位論文工作。盡管我讀書(shū)的工資每月只有300元,但日子過(guò)得象神仙一樣舒服。

浙江大學(xué)計(jì)算機(jī)系的楊孟洲、周昆、曾震宇、楊建、白云、金鋒等同學(xué)和我合作開(kāi)發(fā)軟件,給了我很多技術(shù)上的幫助。我對(duì)他們深表感謝。《軟件工程思想》講述“軟件開(kāi)發(fā)”和“做程序員”的道理,視野獨(dú)特,構(gòu)思新穎,內(nèi)容風(fēng)趣,不落窠臼,令人耳目一新。堪稱(chēng)難得,以至回味無(wú)窮。

作者從事了八年的軟件開(kāi)發(fā)工作,在他的博士學(xué)位論文完成之際寫(xiě)下了這本“心之所感”。雖然它探討的是軟件工程最常見(jiàn)的內(nèi)容,但他將親身所歷的感悟?qū)懗苫顫娚鷦?dòng)的文字,將軟件工程的很多原則和方法融于笑談之中,讓人看得輕松,時(shí)有共鳴。盡管很薄,然其內(nèi)涵不遜于厚近千頁(yè)的有關(guān)教科書(shū)。

每次回浙大我都要和林銳相聚,談學(xué)術(shù)、論社會(huì),直面人生,“位卑未敢忘憂(yōu)國(guó)”,每每至凌晨。前不久我在某大學(xué)計(jì)算機(jī)系作講座,最后冒昧談了幾句題外話,其中之一是“學(xué)問(wèn)與明理”。古人云:“讀書(shū)明理”,意即讀書(shū)要明白做人的道理。我以為其中的重要內(nèi)涵,是要有積極的人生觀,以貢獻(xiàn)社會(huì)為己任。這也是我們的共識(shí)。林銳曾立誓做一名“真實(shí)、正直、優(yōu)秀的科技人員”。他在自己困難的時(shí)候依然資助數(shù)名貧困中學(xué)生和大學(xué)生;常常躬身拾撿被亂扔于地的廢紙、塑料袋,以示后生。這都會(huì)使很多的學(xué)人汗顏有加。

簡(jiǎn)言之,林銳對(duì)軟件工程實(shí)踐的積極思考、輕快而不失深邃的文筆及其言行,都是出色之處。

正由于此,而不僅因?yàn)槭峭校也挪粦M淺陋,接受他的要求,榮幸地成為本書(shū)的第一位讀者,并在本來(lái)應(yīng)是名人大家留文的地方談林說(shuō)森。

第一章

軟件工程基本觀念

本章講述軟件工程的基本觀念,是關(guān)于軟件工程宏觀上的探討。如果你是軟件公司的老板,用不著在第一線工作,那么看這一章就夠了。但你一定要讓員工們相信不停地工作是人生最大的快樂(lè),并且讓他們把本書(shū)看完。

1.1節(jié)講述軟件工程的目標(biāo)和常用的軟件工程模型。1.2節(jié)講述軟件開(kāi)發(fā)的基本策略:“復(fù)用”、“分而治之”、“優(yōu)化——折衷”,有助于指導(dǎo)實(shí)踐者選擇方法和產(chǎn)生新方法。1.3節(jié)例舉一些不正確的觀念,取材于早期軟件人員比較幼稚的想法,初學(xué)者可以引以為戒。1.4節(jié)探討一些有爭(zhēng)議的觀念。看完本章,要樹(shù)立這樣的信念:軟件開(kāi)發(fā)過(guò)程中的坎坎坷坷,仿佛只是人臉的凹凸不平,用熱水毛巾一把就可抹平。讓我們高舉程序主義、軟件工程思想的偉大旗幟,緊密團(tuán)結(jié)在以Microsoft為核心的軟件公司周?chē)刂葼枴どw茨的生財(cái)之道,不分白天黑夜地編程,把建設(shè)有中國(guó)特色的軟件產(chǎn)業(yè)的偉大事業(yè)全面推向21世紀(jì)。1.1 軟件工程的目標(biāo)與常用模型

軟件工程的目標(biāo)是提高軟件的質(zhì)量與生產(chǎn)率,最終實(shí)現(xiàn)軟件的工業(yè)化生產(chǎn)。質(zhì)量是軟件需求方最關(guān)心的問(wèn)題,用戶(hù)即使不圖物美價(jià)廉,也要求個(gè)貨真價(jià)實(shí)。生產(chǎn)率是軟件供應(yīng)方最關(guān)心的問(wèn)題,老板和員工都想用更少的時(shí)間掙更多的錢(qián)。質(zhì)量與生產(chǎn)率之間有著內(nèi)在的聯(lián)系,高生產(chǎn)率必須以質(zhì)量合格為前提。如果質(zhì)量不合格,對(duì)供需雙方都是壞事情。從短期效益看,追求高質(zhì)量會(huì)延長(zhǎng)軟件開(kāi)發(fā)時(shí)間并且增大費(fèi)用,似乎降低了生產(chǎn)率。從長(zhǎng)期效益看,高質(zhì)量將保證軟件開(kāi)發(fā)的全過(guò)程更加規(guī)范流暢,大大降低了軟件的維護(hù)代價(jià),實(shí)質(zhì)上是提高了生產(chǎn)率,同時(shí)可獲得很好的信譽(yù)。質(zhì)量與生產(chǎn)率之間不存在根本的對(duì)立,好的軟件工程方法可以同時(shí)提高質(zhì)量與生產(chǎn)率。

軟件供需雙方的代表能在餐桌上談笑風(fēng)生,歸功于第一線開(kāi)發(fā)人員的辛勤工作。質(zhì)量與生產(chǎn)率的提高就指望程序員與程序經(jīng)理。對(duì)開(kāi)發(fā)人員而言,如果非得在質(zhì)量與生產(chǎn)率之間分個(gè)主次不可,那么應(yīng)該是質(zhì)量第一,生產(chǎn)率第二。這是因?yàn)椋海?)質(zhì)量直接體現(xiàn)在軟件的每段程序中,高質(zhì)量自然是開(kāi)發(fā)人員的技術(shù)追求,也是職業(yè)道德的要求。(2)高質(zhì)量對(duì)所有的用戶(hù)都有價(jià)值,而高生產(chǎn)率只對(duì)開(kāi)發(fā)方有意義。(3)如果一開(kāi)始就追求高生產(chǎn)率,容易使人急功近利,留下隱患。寧可進(jìn)度慢些,也要保證每個(gè)環(huán)節(jié)的質(zhì)量,以圖長(zhǎng)遠(yuǎn)利益。

軟件的質(zhì)量因素很多,如正確性,性能、可靠性、容錯(cuò)性、易用性、靈活性、可擴(kuò)充性、可理解性、可維護(hù)性等等。有些因素相互重疊,有些則相抵觸,真要提高質(zhì)量可不容易啊!

軟件工程的主要環(huán)節(jié)有:人員管理、項(xiàng)目管理、可行性與需求分析、系統(tǒng)設(shè)計(jì)、程序設(shè)計(jì)、測(cè)試、維護(hù)等,如圖1.1所示。

圖1.1 軟件工程的主要環(huán)節(jié)

軟件工程模型建議用一定的流程將各個(gè)環(huán)節(jié)連接起來(lái),并可用規(guī)范的方式操作全過(guò)程,如同工廠的生產(chǎn)線。常見(jiàn)的軟件工程模型有:線性模型(圖1.2),漸增式模型(圖1.3),螺旋模型,快速原型模型,形式化描述模型等等 [Pressmam 1999, Sommerville 1992]。圖1.2 軟件工程的線性模型

時(shí)間

進(jìn)度

圖1.3 軟件工程的漸增式模型

最早出現(xiàn)的軟件工程模型是線性模型(又稱(chēng)瀑布模型)。線性模型太理想化,太單純,已不再適合現(xiàn)代的軟件開(kāi)發(fā)模式,幾乎被業(yè)界拋棄。偶而被人提起,都屬于被貶對(duì)象,未被留一絲惋惜。但我們應(yīng)該認(rèn)識(shí)到,“線性”是人們最容易掌握并能熟練應(yīng)用的思想方法。當(dāng)人們碰到一個(gè)復(fù)雜的“非線性”問(wèn)題時(shí),總是千方百計(jì)地將其分解或轉(zhuǎn)化為一系列簡(jiǎn)單的線性問(wèn)題,然后逐個(gè)解決。一個(gè)軟件系統(tǒng)的整體可能是復(fù)雜的,而單個(gè)子程序總是簡(jiǎn)單的,可以用線性的方式來(lái)實(shí)現(xiàn),否則干活就太累了。線性是一種簡(jiǎn)潔,簡(jiǎn)潔就是美。當(dāng)我們領(lǐng)會(huì)了線性的精神,就不要再呆板地套用線性模型的外表,而應(yīng)該用活它。例如漸增式模型實(shí)質(zhì)就是分段的線性模型,如圖1.3所示。螺旋模型則是接連的彎曲了的線性模型。在其它模型中都能夠找到線性模型的影子。

套用固定的模型不是程序員的聰明之舉。比如“程序設(shè)計(jì)”與“測(cè)試”之間的關(guān)系,習(xí)慣上總以為程序設(shè)計(jì)在先,測(cè)試在后,如圖1.4(a)所示。而對(duì)于一些復(fù)雜的程序,將測(cè)試分為同步測(cè)試與總測(cè)試更有效,如圖1.4(b)所示。(a)

(b)

圖1.4(a)程序設(shè)計(jì)在先測(cè)試在后

(b)測(cè)試分為同步測(cè)試與總測(cè)試

不論是什么軟件工程模型,總是少不了圖1.1中的各個(gè)環(huán)節(jié)。本書(shū)擗開(kāi)具體的軟件工程模型,順序講述人員管理、項(xiàng)目管理、可行性與需求分析、系統(tǒng)設(shè)計(jì)、程序設(shè)計(jì)、測(cè)試,以及維護(hù)與再生工程。其中程序設(shè)計(jì)部分以C++/C語(yǔ)言為例。1.2 軟件開(kāi)發(fā)的基本策略

人們都有自己的世界觀和方法論,能自然而然地運(yùn)用于生活和工作中。同樣,程序員腦子里的軟件工程觀念會(huì)無(wú)形地支配其怎么去做事情。軟件工程三十年的發(fā)展,已經(jīng)積累了相當(dāng)多的方法,但這些方法不是嚴(yán)密的理論。實(shí)踐人員不應(yīng)該教條地套用方法,更重要的是學(xué)會(huì)“選擇合適的方法”和“產(chǎn)生新方法”。有謀略才會(huì)有好的戰(zhàn)術(shù)。幾千年前,我們的祖先就在打鬧之際寫(xiě)下了很多心得體會(huì),被現(xiàn)代人很好地運(yùn)用于工業(yè)和商業(yè)。本節(jié)講述軟件開(kāi)發(fā)中的三種基本策略:“復(fù)用”、“分而治之”、“優(yōu)化——折衷”。1.2.1 復(fù)用

復(fù)用就是指“利用現(xiàn)成的東西”,文人稱(chēng)之為“拿來(lái)主義”。被復(fù)用的對(duì)象可以是有形的物體,也可以是無(wú)形的成果。復(fù)用不是人類(lèi)懶惰的表現(xiàn)而是智慧的表現(xiàn)。因?yàn)槿祟?lèi)總是在繼承了前人的成果,不斷加以利用、改進(jìn)或創(chuàng)新后才會(huì)進(jìn)步。所以當(dāng)我們歡度國(guó)慶時(shí),要搞清楚祖國(guó)遠(yuǎn)不止50歲,我們今天享用到的財(cái)富還有上下五千年人民的貢獻(xiàn)。進(jìn)步只是應(yīng)該的,不進(jìn)步則就可恥了。

復(fù)用的內(nèi)涵包括了提高質(zhì)量與生產(chǎn)率兩者。由經(jīng)驗(yàn)可知,在一個(gè)新系統(tǒng)中,大部分的內(nèi)容是成熟的,只有小部分內(nèi)容是創(chuàng)新的。一般地可以相信成熟的東西總是比較可靠的(即具有高質(zhì)量),而大量成熟的工作可以通過(guò)復(fù)用來(lái)快速實(shí)現(xiàn)(即具有高生產(chǎn)率)。勤勞并且聰明的人們應(yīng)該把大部分的時(shí)間用在小比例的創(chuàng)新工作上,而把小部分的時(shí)間用在大比例的成熟工作中,這樣才能把工作做得又快又好。

把復(fù)用的思想用于軟件開(kāi)發(fā),稱(chēng)為軟件復(fù)用。據(jù)統(tǒng)計(jì),世上已有1000億多行程序,無(wú)數(shù)功能被重寫(xiě)了成千上萬(wàn)次,真是浪費(fèi)哪。面向?qū)ο螅∣bject Oriented)學(xué)者的口頭禪就是“請(qǐng)不要再發(fā)明相同的車(chē)輪子了”。

將具有一定集成度并可以重復(fù)使用的軟件組成單元稱(chēng)為軟構(gòu)件(Software Component)。軟件復(fù)用可以表述為:構(gòu)造新的軟件系統(tǒng)可以不必每次從零做起,直接使用已有的軟構(gòu)件,即可組裝(或加以合理修改)成新的系統(tǒng)。復(fù)用方法合理化并簡(jiǎn)化了軟件開(kāi)發(fā)過(guò)程,減少了總的開(kāi)發(fā)工作量與維護(hù)代價(jià),既降低了軟件的成本又提高了生產(chǎn)率。另一方面,由于軟構(gòu)件是經(jīng)過(guò)反復(fù)使用驗(yàn)證的,自身具有較高的質(zhì)量。因此由軟構(gòu)件組成的新系統(tǒng)也具有較高的質(zhì)量。利用軟構(gòu)件生產(chǎn)應(yīng)用軟件的過(guò)程如圖1.5所示。

軟件復(fù)用不僅要使自己拿來(lái)方便,還要讓別人拿去方便,是“拿來(lái)拿去主義”。面向?qū)ο蠓椒ǎ琈icrosoft公司的COM規(guī)范 [Rogerson 1999],都能很好地用于實(shí)現(xiàn)大規(guī)模的軟件復(fù)用。

存在構(gòu)件不存在 圖1.5 利用軟構(gòu)件生產(chǎn)應(yīng)用軟件的過(guò)程 1.2.2 分而治之

分而治之是指把一個(gè)復(fù)雜的問(wèn)題分解成若干個(gè)簡(jiǎn)單的問(wèn)題,然后逐個(gè)解決。這種樸素的思想來(lái)源于人們生活與工作的經(jīng)驗(yàn),完全適合于技術(shù)領(lǐng)域。軟件人員在執(zhí)行分而治之的時(shí)候,應(yīng)該著重考慮:復(fù)雜問(wèn)題分解后,每個(gè)問(wèn)題能否用程序?qū)崿F(xiàn)?所有程序最終能否集成為一個(gè)軟件系統(tǒng)并有效解決原始的復(fù)雜問(wèn)題?

解決原始問(wèn)題

分解

集成

圖1.6 軟件領(lǐng)域的分而治之策略

圖1.6表示了軟件領(lǐng)域的分而治之策略。諸如軟件的體系結(jié)構(gòu)設(shè)計(jì)、模塊化設(shè)計(jì)都是分而治之的具體表現(xiàn)。軟件的分而治之不可以“硬分硬治”。不像為了吃一個(gè)西瓜或是一只雞,揮刀斬成n塊,再把每塊塞進(jìn)嘴里粉碎攪拌,然后交由胃腸來(lái)消化吸收,象征復(fù)雜問(wèn)題的西瓜或是雞也就此消失了。1.2.3 優(yōu)化——折衷

軟件的優(yōu)化是指優(yōu)化軟件的各個(gè)質(zhì)量因素,如提高運(yùn)行速度,提高對(duì)內(nèi)存資源的利用率,使用戶(hù)界面更加友好,使三維圖形的真實(shí)感更強(qiáng)等等。想做好優(yōu)化工作,首先要讓開(kāi)發(fā)人員都有正確的認(rèn)識(shí):優(yōu)化工作不是可有可無(wú)的事情,而是必須要做的事情。當(dāng)優(yōu)化工作成為一種責(zé)任時(shí),程序員才會(huì)不斷改進(jìn)軟件中的算法,數(shù)據(jù)結(jié)構(gòu)和程序組織,從而提高軟件質(zhì)量。

著名的3D游戲軟件Quake,能夠在PC機(jī)上實(shí)時(shí)地繪制高度真實(shí)感的復(fù)雜場(chǎng)景。Quake的開(kāi)發(fā)者能把很多成熟的圖形技術(shù)發(fā)揮到極致,例如把Bresenham畫(huà)線、多邊形裁剪、樹(shù)遍歷等算法的速度提高近一個(gè)數(shù)量級(jí)。我第一次看到Quake時(shí)不僅感到震動(dòng),而且深受打擊。這個(gè)PC游戲軟件的技術(shù)水平已經(jīng)遠(yuǎn)勝于我所見(jiàn)識(shí)到的國(guó)內(nèi)領(lǐng)先的圖形學(xué)相關(guān)科研成果。這對(duì)我們?nèi)找媸⑿械狞c(diǎn)到完止的研發(fā)工作真是莫大的諷刺。所以當(dāng)我們開(kāi)發(fā)的軟件表現(xiàn)出很多不可救藥的病癥時(shí),不要怨機(jī)器差。真的是我們自己沒(méi)有把工作做好,寫(xiě)不好字卻嫌筆鈍。

就假設(shè)我們經(jīng)過(guò)思想教育后,精神抖擻,隨時(shí)準(zhǔn)備為優(yōu)化工作干上六天七夜。但愿意做并不意味著就能把事情做好。優(yōu)化工作的復(fù)雜之處是很多目標(biāo)存在千絲萬(wàn)縷的關(guān)系,可謂數(shù)不清理還亂。當(dāng)不能夠使所有的目標(biāo)都得到優(yōu)化時(shí),就需要“折衷”策略。

軟件中的折衷策略是指通過(guò)協(xié)調(diào)各個(gè)質(zhì)量因素,實(shí)現(xiàn)整體質(zhì)量的最優(yōu)。就象黨支部副書(shū)記扮演和事佬的角色:“…為了使整個(gè)組織具有最好的戰(zhàn)斗力,我們要重用幾個(gè)人,照顧一些人,在萬(wàn)不得已的情況下委屈一批人”。

軟件折衷的重要原則是不能使某一方損失關(guān)鍵的職能,更不可以象“舍魚(yú)而取熊掌”那樣拋棄一方。例如3D動(dòng)畫(huà)軟件的瓶頸通常是速度,但如果為了提高速度而在程序中取消光照明計(jì)算,那么場(chǎng)景就會(huì)喪失真實(shí)感,3D動(dòng)畫(huà)也就不再有意義了(如果人類(lèi)全是色盲,計(jì)算機(jī)圖形學(xué)將變得異常簡(jiǎn)單)。

人都有惰性,如果允許濫用折衷的話,那么一當(dāng)碰到困難,人們就會(huì)用拆東墻補(bǔ)西墻的方式去折衷,不再下苦功去做有意義的優(yōu)化。所以我們有必要為折衷制定嚴(yán)正的立場(chǎng):在保證其它因素不差的前提下,使某些因素變得更好。

下面讓我們用“優(yōu)化——折衷”的策略解決“魚(yú)和熊掌不可得兼”的難題。

問(wèn)題提出:假設(shè)魚(yú)每千克10元,熊掌每千克一萬(wàn)元。有個(gè)倔脾氣的人只有20元錢(qián),非得要吃上一公斤美妙的“熊掌燒魚(yú)”,怎么辦?

解決方案:化9元9角9分錢(qián)買(mǎi)999克魚(yú)肉,化10元錢(qián)買(mǎi)1克熊掌肉,可做一道“熊掌戲魚(yú)”菜。剩下的那一分錢(qián)還可建立獎(jiǎng)勵(lì)基金。1.3 一些不正確的觀念

本節(jié)例舉并分析一些不正確的軟件工程觀念,可幫助初學(xué)者少犯相似的錯(cuò)誤。

觀念之一:我們擁有一套講述如何開(kāi)發(fā)軟件的書(shū)籍,書(shū)中充滿(mǎn)了標(biāo)準(zhǔn)與示例,可以幫助我們解決軟件開(kāi)發(fā)中遇到的任何問(wèn)題。

客觀情況:好的參考書(shū)無(wú)疑能指導(dǎo)我們的工作。充分利用書(shū)籍中的方法、技術(shù)和技巧,可以有效地解決軟件開(kāi)發(fā)中大量常見(jiàn)的問(wèn)題。但實(shí)踐者并不能因此依賴(lài)于書(shū)籍,這是因?yàn)椋海?)現(xiàn)實(shí)的工作中,由于條件千差萬(wàn)別,即使是相當(dāng)成熟的軟件工程規(guī)范,常常也無(wú)法套用。(2)軟件技術(shù)日新月異,沒(méi)有哪一種軟件標(biāo)準(zhǔn)能長(zhǎng)盛不衰。祖?zhèn)髅胤皆谀承╊I(lǐng)域很吃香,而在軟件領(lǐng)域則意味著落后。

觀念之二:我們擁有最好的開(kāi)發(fā)工具、最好的計(jì)算機(jī),一定能做出優(yōu)秀的軟件。

客觀情況:良好的開(kāi)發(fā)環(huán)境只是產(chǎn)出成果的必要條件,而不是充分條件。如果擁有好環(huán)境的是一群庸人,難保他們不干出南轅北轍的事情。

觀念之三:如果我們落后于計(jì)劃,可以增加更多的程序員來(lái)解決。

客觀情況:軟件開(kāi)發(fā)不同于傳統(tǒng)的農(nóng)業(yè)生產(chǎn),人多不見(jiàn)得力量大。如果給落后于計(jì)劃的項(xiàng)目增添新手,可能會(huì)更加延誤項(xiàng)目。因?yàn)椋海?)新手會(huì)產(chǎn)生很多新的錯(cuò)誤,使項(xiàng)目混亂。(2)老手向新手解釋工作以及交流思想都要花費(fèi)時(shí)間,使實(shí)際開(kāi)發(fā)時(shí)間更少。所以科學(xué)的項(xiàng)目計(jì)劃很重要,不在乎計(jì)劃能提前多少,重在恰如其分。如果用“大躍進(jìn)”的方式奔向共產(chǎn)主義,只會(huì)產(chǎn)生倒退的后果。

觀念之四:既然需求分析很困難,不管三七二十一先把軟件做了再說(shuō),反正軟件是靈活的,隨時(shí)可以修改。

客觀情況:對(duì)需求把握得越準(zhǔn)確,軟件的修修補(bǔ)補(bǔ)就越少。有些需求在一開(kāi)始時(shí)很難確定,在開(kāi)發(fā)過(guò)程中要不斷地加以改正。軟件修改越早代價(jià)越少,修改越晚代價(jià)越大,就跟治病一樣道理。

1.4 一些有爭(zhēng)議的觀念

本節(jié)探討一些有爭(zhēng)議的觀念,目的不在于得出“正確”或“錯(cuò)誤”的評(píng)斷,而在于爭(zhēng)議會(huì)激發(fā)更多理性的思考。爭(zhēng)議之一:如果軟件運(yùn)行較慢,是換一臺(tái)更快的計(jì)算機(jī),還是設(shè)計(jì)一種更快的算法?

作者觀點(diǎn):如果開(kāi)發(fā)軟件的目的是為了學(xué)習(xí)或是研究,那么應(yīng)該設(shè)計(jì)一種更快的算法。如果該軟件已經(jīng)用于商業(yè),則需謹(jǐn)慎考慮:若換一臺(tái)更快的計(jì)算機(jī)能解決問(wèn)題,則是最快的解決方案。改進(jìn)算法雖然可以從根本上提高軟件的運(yùn)行速度,但可能引入錯(cuò)誤以及延誤進(jìn)程。技術(shù)狂毫無(wú)疑問(wèn)會(huì)選擇后者,因?yàn)樗麄冇X(jué)得放棄任何可以?xún)?yōu)化的機(jī)會(huì)就等于犯罪。

類(lèi)似的爭(zhēng)議還有:是買(mǎi)現(xiàn)成的程序,還是徹底自己開(kāi)發(fā)?技術(shù)人員和商業(yè)人士常常會(huì)有不同的選擇。

爭(zhēng)議之二:有最好的軟件工程方法,最好的編程語(yǔ)言嗎? 作者觀點(diǎn):在軟件領(lǐng)域永遠(yuǎn)沒(méi)有最好的,只有更好的。能解決問(wèn)題的都是好方法或是好語(yǔ)言。程序員在最初學(xué)習(xí)Basic、Fortran、Pascal、C、C++等語(yǔ)言時(shí)會(huì)感覺(jué)一個(gè)比一個(gè)好,不免有喜新厭舊之舉。而如今的Visual Basic、Delphi、Visual C++、Java等語(yǔ)言各有所長(zhǎng),真的難分優(yōu)劣。開(kāi)發(fā)人員應(yīng)該根據(jù)客觀條件,選擇自己熟悉的方法和語(yǔ)言,才能保證合格的質(zhì)量與生產(chǎn)率。

程序設(shè)計(jì)是自由與快樂(lè)的事情,不要發(fā)誓忠于某某主義而自尋煩惱。

爭(zhēng)議之三:編程時(shí)是否應(yīng)該多使用技巧?

作者觀點(diǎn):就軟件開(kāi)發(fā)而言,技巧的優(yōu)點(diǎn)在于能另辟蹊徑地解決一些問(wèn)題,缺點(diǎn)是技巧并不為人熟知。若在程序中用太多的技巧,可能會(huì)留下隱患,別人也難以理解程序。鑒于一個(gè)局部的優(yōu)點(diǎn)對(duì)整個(gè)系統(tǒng)而言是微不足道的,而一個(gè)錯(cuò)誤則可能是致命的。作者建議用自然的方式編程,少用技巧。

《狼三則》的故事告訴我們“失敗的技巧通常是技倆”。當(dāng)我們?cè)诰幊虝r(shí)無(wú)法判斷是用了技巧還是用了技倆,那就少用。《賣(mài)油翁》的故事又告訴我們“熟能生巧”,表明技巧是自然而然產(chǎn)生的,而不是賣(mài)弄出來(lái)的。賣(mài)油翁的絕技是可到中央電視臺(tái)表演的,而他老人家卻謙虛地說(shuō):“沒(méi)啥沒(méi)啥,用熟了而已”。

爭(zhēng)議之四:軟件中的錯(cuò)誤是否可按嚴(yán)重程度分等級(jí)? 作者觀點(diǎn):在定量分析時(shí),可以將錯(cuò)誤分等級(jí),以便于管理。微軟的一些開(kāi)發(fā)小組將錯(cuò)誤分成四個(gè)等級(jí) [Cusumano 1996],如表1.1所示。一級(jí)嚴(yán)重:錯(cuò)誤導(dǎo)致軟件崩潰。

二級(jí)嚴(yán)重:錯(cuò)誤導(dǎo)致一個(gè)特性不能運(yùn)行并且沒(méi)有替代方案。三級(jí)嚴(yán)重:錯(cuò)誤導(dǎo)致一個(gè)特性不能運(yùn)行但有替代方案。四級(jí)嚴(yán)重:錯(cuò)誤是表面化的或是微小的。表1.1 錯(cuò)誤的四個(gè)等級(jí)

上述分類(lèi)是非常技術(shù)性的,并不是普適的。假設(shè)某個(gè)財(cái)務(wù)軟件有兩個(gè)錯(cuò)誤:錯(cuò)誤A使該軟件死掉,錯(cuò)誤B導(dǎo)致工資計(jì)算錯(cuò)誤。按表1.1分類(lèi),錯(cuò)誤A屬一級(jí)嚴(yán)重,錯(cuò)誤B屬二級(jí)嚴(yán)重。但事實(shí)上B要比A嚴(yán)重。工資算多了或者算少了,將會(huì)使老板或員工遭受經(jīng)濟(jì)損失。而錯(cuò)誤A只使操作員感到厭煩,并沒(méi)有造成經(jīng)濟(jì)損失。另一個(gè)示例是操作手冊(cè)寫(xiě)錯(cuò),按表1.1分類(lèi)則屬四級(jí)嚴(yán)重,但這種錯(cuò)誤可能導(dǎo)致機(jī)毀人亡。

開(kāi)發(fā)人員應(yīng)該意識(shí)到:所有的錯(cuò)誤都是嚴(yán)重的,不存在微不足道的錯(cuò)誤。這樣才能少犯錯(cuò)誤。1.5 小

結(jié)

軟件工程學(xué)科發(fā)展到今天,已經(jīng)有了很多方法和規(guī)范,學(xué)之不盡。本章只在宏觀上討論了軟件工程的一些思想,更具體的內(nèi)容將在后面的章節(jié)論述。無(wú)論是什么好方法,貴在理解與靈活運(yùn)用,而不可當(dāng)成靈丹妙藥,不象“吃了腦黃金或腦白金,就能使一億人先聰明起來(lái)”。第二章

程序員與程序經(jīng)理

工作在第一線的軟件開(kāi)發(fā)人員是程序員和程序經(jīng)理,他們決定著軟件的命運(yùn)。良好的程序員隊(duì)伍和出色的管理是軟件項(xiàng)目成功的必要條件。管理不是管制,不是去卡住人家的脖子,因?yàn)槌绦騿T不是一群野鴨子。管理的目的是讓大家一起把工作做好,并且讓各人獲得各自的快樂(lè)和滿(mǎn)足。當(dāng)一個(gè)組織被出色地領(lǐng)導(dǎo)時(shí),雇員甚至不知道他們已被領(lǐng)導(dǎo)。在項(xiàng)目完成時(shí),他們會(huì)自豪地說(shuō):“看看我們通過(guò)努力取得的成績(jī)吧”。所以管理者不能老惦記著自己是一個(gè)官,而應(yīng)時(shí)刻意識(shí)到自己是責(zé)任的主要承擔(dān)者。

我們經(jīng)常會(huì)聽(tīng)到有經(jīng)理頭銜的人在高談闊論:“編程我不會(huì),做個(gè)項(xiàng)目還不easy?派個(gè)人去搞系統(tǒng)分析,回頭再叫幾個(gè)程序員把需求譯成程序,不就OK了嗎?”

不懂英語(yǔ)的人準(zhǔn)以為easy和OK是貶義詞。要讓軟件項(xiàng)目失敗很容易,只要符合下列條件之一即可:(1)項(xiàng)目經(jīng)理對(duì)軟件一無(wú)所知;(2)技術(shù)負(fù)責(zé)人對(duì)編程不感興趣;

(3)真真編寫(xiě)代碼的程序員是臨時(shí)雇用的。如果上述三個(gè)條件同時(shí)具備,就請(qǐng)放心失敗好了。

讓我們少幻想自己是比爾·蓋茨,先當(dāng)好程序員和程序經(jīng)理再說(shuō)。

2.1 了 解 程 序 員

早期的程序員干活能從軟件直通硬件,個(gè)個(gè)生猛無(wú)比。又因他們的作息時(shí)間、言行舉止與常人不太一樣,久而久之就給人們留下了“神秘”、“孤僻”的印象。如今軟件行業(yè)被炒得熱火朝天,有能耐的程序員即便躲在大山岙的軍工廠里也能被挖出來(lái)。而更多原本不是程序員的人操起幾本“速成”、“二十一天通”等書(shū)籍也加入了這個(gè)行業(yè)。現(xiàn)在國(guó)內(nèi)號(hào)稱(chēng)有上百萬(wàn)程序員,這支大軍魚(yú)龍混雜,已搞不清那些是正規(guī)軍,那些是民兵游擊隊(duì)了。

真正的程序員都有如下秉性:

一、誠(chéng)實(shí)

程序員在學(xué)習(xí)與工作期間幾乎天天與機(jī)器打交道,壓根就沒(méi)有受欺騙或欺騙人的機(jī)會(huì)。勤奮的程序員在調(diào)試無(wú)窮多的程序Bug時(shí),已經(jīng)深深地接受了“誠(chéng)實(shí)”的教育。不誠(chéng)實(shí)的人,他肯定不想做、也做不好程序員。

有一名市場(chǎng)營(yíng)銷(xiāo)員和一名程序員都在新聞發(fā)布會(huì)上發(fā)言,將一項(xiàng)新技術(shù)的消息公布于眾。

市場(chǎng)營(yíng)銷(xiāo)員說(shuō):“這項(xiàng)技術(shù)比電話、晶體管和原子彈三項(xiàng)發(fā)明加起來(lái)對(duì)世界文明的影響都要大。”

程序員說(shuō):“這項(xiàng)技術(shù)在有限的領(lǐng)域內(nèi),在有限的程度上,解決了一些技術(shù)性的問(wèn)題。”

看來(lái)為了讓我們的民族更加誠(chéng)實(shí),學(xué)電腦真的要從娃娃抓起。

二、簡(jiǎn)單——實(shí)用主義

有人問(wèn)一個(gè)數(shù)學(xué)家,一個(gè)物理學(xué)家和一名程序員:“一個(gè)盒子有幾個(gè)面?”

數(shù)學(xué)家回答說(shuō):“有六個(gè)面,因?yàn)楹凶邮情L(zhǎng)方體。”

物理學(xué)家回答說(shuō):“有12個(gè)面,分為6個(gè)外表面和6個(gè)內(nèi)表面。”

程序員回答說(shuō):“只有兩個(gè)面,里面放電路板和硬盤(pán),外面放顯示器和鍵盤(pán)。”

目前即使最先進(jìn)的計(jì)算機(jī)也不具備智能,程序員的基本工作就是把復(fù)雜的問(wèn)題轉(zhuǎn)化為計(jì)算機(jī)能處理的簡(jiǎn)單的程序。如果一個(gè)問(wèn)題復(fù)雜到連程序員自己都不能理解,他就無(wú)法編出程序讓更笨的計(jì)算機(jī)來(lái)處理。所以程序員信奉“簡(jiǎn)單——實(shí)用”主義。

也有不少做計(jì)算機(jī)“學(xué)問(wèn)”的人顛倒行事。本來(lái)幾句話、幾行程序就能說(shuō)明白的事,非得要抬高到理論創(chuàng)新的程度,寫(xiě)成玄乎的文章去評(píng)教授或者弄個(gè)博士學(xué)位。所幸在第一線工作的程序員大多是實(shí)干的。

三、愛(ài)憎分明

程序員大都喜歡技術(shù)挑戰(zhàn),不喜歡搞測(cè)試與維護(hù)。高水平的程序員喜歡與高水平的程序員一起工作,因?yàn)樗麄兣隆芭c臭棋佬下棋,棋越下越臭”。程序員大都厭惡拉幫結(jié)派、耍政治手腕。不信,數(shù)一數(shù)你認(rèn)識(shí)的程序員,有幾個(gè)是黨派人士?

四、工作單調(diào)但不乏味

有人問(wèn)編程大師:“程序設(shè)計(jì)的真正含義是什么 ?”

大師回答說(shuō):“餓了的時(shí)候就吃,困的時(shí)候就睡,只要時(shí)機(jī)恰當(dāng)就進(jìn)行程序設(shè)計(jì)。”

其實(shí)程序員的生活和工作已融為一體,盡管單調(diào)卻不乏味,還能獨(dú)享孤獨(dú)。有詩(shī)為證:

我編程三日

兩耳不聞人聲

只有硬盤(pán)在歌唱

結(jié)論:優(yōu)秀的程序員沒(méi)有理由不讓人喜歡,他們遠(yuǎn)比怪僻來(lái)得可愛(ài)。奇*書(shū)$網(wǎng)收集整理

2.2 了 解 程 序 經(jīng) 理

這里程序經(jīng)理是指一支程序員隊(duì)伍的領(lǐng)導(dǎo)者,不管他的職務(wù)是開(kāi)發(fā)組長(zhǎng),項(xiàng)目經(jīng)理,還是部門(mén)經(jīng)理。程序經(jīng)理是技術(shù)性的基層或中層干部,是軟件企業(yè)得以發(fā)展的生力軍。程序經(jīng)理的選拔是不容草率的事。不象有些事業(yè)單位,只要政治口號(hào)喊得勤快、能左右逢緣不犯錯(cuò)誤就可混個(gè)領(lǐng)導(dǎo)當(dāng)當(dāng)。也不象一些官僚機(jī)構(gòu),只有兩個(gè)人的辦公室也要設(shè)正主任和副主任。如果碰巧正主任姓傅,副主任姓鄭,還會(huì)斗個(gè)沒(méi)完沒(méi)了。

在一個(gè)管理混亂的軟件公司里,如果某個(gè)程序員能大喊大叫并且干勁十足,那他就能成為一名程序經(jīng)理。微軟公司在選擇經(jīng)理人員時(shí),總是把他們的技術(shù)知識(shí)和運(yùn)用技術(shù)去賺錢(qián)的能力放在首位。程序經(jīng)理一般就是程序員隊(duì)伍中最聰明的那個(gè)家伙。比爾·蓋茨曾這樣描述聰明人[Cusumano1996]:

聰明人一定反應(yīng)敏捷,善于接受新事物。他能迅速進(jìn)入一個(gè)新領(lǐng)域,給你一個(gè)頭頭是道的解釋。他提出的問(wèn)題往往一針見(jiàn)血、擊中要害。他能及時(shí)掌握所學(xué)知識(shí),并且博聞強(qiáng)記,他能把本來(lái)認(rèn)為互不相干的領(lǐng)域聯(lián)系在一起使問(wèn)題得到解決。他富有創(chuàng)新精神與合作精神……

好的程序經(jīng)理應(yīng)該具備以下幾個(gè)條件:

一、技術(shù)水平是程序員隊(duì)伍中的最高級(jí)別

每個(gè)程序員骨子里頭都有一股傲氣,如果你不能技?jí)喝盒郏麄兙筒粫?huì)聽(tīng)你指揮。一個(gè)技術(shù)水平較差的人被任命為程序經(jīng)理真是個(gè)悲劇,就象一個(gè)略有權(quán)勢(shì)的太監(jiān),表面上有人對(duì)他點(diǎn)頭哈腰,背后卻被人鄙視。

二、能做最多且最難的工作

程序經(jīng)理編程要快且好。別人要干一天的活,他半天就能做完,這樣才會(huì)有精力去搞管理。程序經(jīng)理應(yīng)負(fù)責(zé)系統(tǒng)分析、系統(tǒng)設(shè)計(jì)這類(lèi)最難的開(kāi)發(fā)工作,并指導(dǎo)不同水平的程序員把各自的工作做好。如果人手不夠,程序經(jīng)理要能同時(shí)干幾個(gè)人的活。

三、有人格魅力

軟件開(kāi)發(fā)是智力創(chuàng)作過(guò)程,你不能指望僅通過(guò)執(zhí)行規(guī)章制度來(lái)產(chǎn)生好的作品。很多軟件公司的程序經(jīng)理都不是管理專(zhuān)業(yè)出身的,他們也不可能為了搞好管理而成天玩弄心機(jī)。技術(shù)出色的程序經(jīng)理一般少有心術(shù)不正的,所以管理的重點(diǎn)應(yīng)是“以身作則”、“公正待人”。如果程序經(jīng)理在上班時(shí)趴在桌上睡覺(jué),其他程序員也會(huì)這樣干。如果程序經(jīng)理發(fā)現(xiàn)有兩個(gè)程序員趴在機(jī)器旁睡覺(jué),不能只對(duì)其中一個(gè)大聲吼叫:“你一編程就想睡覺(jué),看看人家,在睡覺(jué)時(shí)都想著編程。”

如果管理者沒(méi)有人格魅力,就沒(méi)有人信服你,團(tuán)隊(duì)就不會(huì)有凝聚力,烏合之眾不可能開(kāi)發(fā)出優(yōu)秀的軟件。

結(jié)論:一個(gè)有活力的軟件公司的各級(jí)經(jīng)理都不會(huì)這樣感嘆,“因?yàn)槲疑兑膊粫?huì)干,所以只好當(dāng)領(lǐng)導(dǎo)。” 2.3 程序員升為經(jīng)理后是否還要編程

讓我們先看看Microsoft公司的系統(tǒng)軟件部門(mén)與應(yīng)用軟件部門(mén)的領(lǐng)導(dǎo)是怎樣看待這個(gè)問(wèn)題的[Cusumano1996]。Windows NT 3.0項(xiàng)目的軟件經(jīng)理婁·帕雷羅里讓他手下的經(jīng)理們像他一樣每天花一半的時(shí)間編寫(xiě)代碼:

我在組內(nèi)制定了許多規(guī)則,其中最重要的一條是每個(gè)人都得編程,誰(shuí)也別想坐在那兒發(fā)號(hào)施令……我發(fā)現(xiàn)管理者很容易失去目標(biāo),他們總是無(wú)法認(rèn)識(shí)到問(wèn)題的本質(zhì)并且反應(yīng)遲緩。如果你始終不放棄編寫(xiě)代碼,你就能對(duì)項(xiàng)目的進(jìn)展情況了如指掌,及時(shí)發(fā)現(xiàn)并解決問(wèn)題……我大概每天花一半的時(shí)間編寫(xiě)代碼并尋找項(xiàng)目的缺陷。

作為應(yīng)用軟件領(lǐng)域的經(jīng)理,克里斯·彼得斯也持同樣的看法。在他任Word項(xiàng)目總經(jīng)理時(shí)就認(rèn)為:

在一些大公司內(nèi)部,各部門(mén)經(jīng)理把具體操作的層次向下移。你一旦當(dāng)上開(kāi)發(fā)部門(mén)經(jīng)理,很快就會(huì)以自己身居高位、日理萬(wàn)機(jī)為由放棄編程;同樣地,開(kāi)發(fā)小組的組長(zhǎng)會(huì)以自己重任在肩而不愿編程;至于程序員也會(huì)覺(jué)得自己十分繁忙、分身無(wú)術(shù)而不再多編寫(xiě)程序。雖然我是270名員工的領(lǐng)導(dǎo),似乎不再需要做什么具體的工作了,但我還是為Word新版本編寫(xiě)了一個(gè)特性。

程序員升為經(jīng)理后一定要編程,這個(gè)道理已經(jīng)說(shuō)得很清楚了。最怕的是“虛心接受,堅(jiān)決不做”;或者僅是做個(gè)樣子,每天花一分鐘時(shí)間編程,編譯器還沒(méi)運(yùn)行完就關(guān)掉了。2.4 經(jīng)理與技術(shù)隊(duì)伍的建設(shè)

如果是經(jīng)營(yíng)一個(gè)加工廠或一個(gè)飯店,經(jīng)理們可以不必懂技術(shù)。因?yàn)樗麄兊某WR(shí),以及通過(guò)耳聞目睹或者咨詢(xún)都能解決實(shí)踐中的問(wèn)題。在軟件領(lǐng)域,技術(shù)的力量是無(wú)窮的,一天之內(nèi)就可使整個(gè)產(chǎn)業(yè)發(fā)生巨變。也許你在商業(yè)上很精明,但無(wú)法保證自己在技術(shù)浪潮中安然無(wú)恙。軟件公司的各級(jí)經(jīng)理最好既精通技術(shù)又懂管理。

一個(gè)出色的領(lǐng)導(dǎo),加上一支技術(shù)過(guò)硬的隊(duì)伍,才有可

第二篇:軟件工程的思想

在60年代計(jì)算機(jī)發(fā)展初期,程序設(shè)計(jì)是少數(shù)聰明人干的事。他們的智力與技能超群,編寫(xiě)的程序既能控制弱智的計(jì)算機(jī),又能讓別人看不懂、不會(huì)用。那個(gè)時(shí)期編程就跟捏泥巴一樣隨心所欲,于是他們很過(guò)分地把程序的集合稱(chēng)為軟件,以便自己開(kāi)心或傷心時(shí)再把程序捏個(gè)面目全非。人們就在這種美滋滋的感覺(jué)下熱情地編程,結(jié)果產(chǎn)生了一堆問(wèn)題:程序質(zhì)量低下,錯(cuò)誤頻出,進(jìn)度延誤,費(fèi)用劇增??。這些問(wèn)題導(dǎo)致了“軟件危機(jī)”。

在1968年,一群程序員、計(jì)算機(jī)科學(xué)家與工業(yè)界人士聚集一起共商對(duì)策。通過(guò)借鑒傳統(tǒng)工業(yè)的成功做法,他們主張通過(guò)工程化的方法開(kāi)發(fā)軟件來(lái)解決軟件危機(jī),并冠以“軟件工程”這一術(shù)語(yǔ)。三十年余年來(lái),盡管軟件的一些毛病如人類(lèi)的感冒一樣無(wú)法根治,但軟件的發(fā)展速度超過(guò)了任何傳統(tǒng)工業(yè),期間并未出現(xiàn)真真的軟件危機(jī)。這的確是前人的先見(jiàn)之明。如今軟件工程成了一門(mén)學(xué)科。

軟件工程主要講述軟件開(kāi)發(fā)的道理,基本上是軟件實(shí)踐者的成功經(jīng)驗(yàn)和失敗教訓(xùn)的總結(jié)。軟件工程的觀念、方法、策略和規(guī)范都是樸實(shí)無(wú)華的,平凡之人皆可領(lǐng)會(huì),關(guān)鍵在于運(yùn)用。我們不可以把軟件工程方法看成是諸葛亮的錦囊妙計(jì)─—在出了問(wèn)題后才打開(kāi)看看,而應(yīng)該事先掌握,預(yù)料將要出現(xiàn)的問(wèn)題,控制每個(gè)實(shí)踐環(huán)節(jié),并防患于未然。研究軟件工程永遠(yuǎn)做不到理論家那么瀟灑:定理證明了,就完事。

我在讀大學(xué)的十年里有八年從事軟件開(kāi)發(fā),盡管編寫(xiě)了幾十萬(wàn)行C++/C程序,也經(jīng)歷了若干次小不點(diǎn)兒大的成功和失敗,可老感覺(jué)只學(xué)了些皮毛,心里慌兮兮的。在博士研究生畢業(yè)前的半年里,我告戒自己不應(yīng)該再稀里糊涂地在程序堆里滾爬下去了,于是就面壁反省,做了一陣子木訥的和尚。在“打坐”時(shí),每有心得體會(huì)便記錄下來(lái),不知不覺(jué)湊成了八章經(jīng),我就給此經(jīng)書(shū)起名為《軟件工程思想》。

經(jīng)典的軟件工程書(shū)籍厚得象磚頭,或讓人望而卻步,或讓人看了心事重重。請(qǐng)寬恕我的幼稚,我試圖用三個(gè)問(wèn)題:是什么、為什么、怎么辦,來(lái)解釋軟件工程的道理。所以本書(shū)薄得象餃子皮─—用來(lái)包“思想”這種有味道的“餡”。

項(xiàng)目計(jì)劃與質(zhì)量管理

在可行性分析之后,項(xiàng)目計(jì)劃與質(zhì)量管理將貫穿需求分析、系統(tǒng)設(shè)計(jì)、程序設(shè)計(jì)、測(cè)試、維護(hù)等軟件工程環(huán)節(jié)。項(xiàng)目計(jì)劃是要提供一份合理的進(jìn)程表,讓所有開(kāi)發(fā)人員任務(wù)明確、步調(diào)一致,最終共同準(zhǔn)時(shí)地完成項(xiàng)目。項(xiàng)目計(jì)劃是要付諸實(shí)施的,不象用嘴巴喊政治口號(hào),可以很夸張。軟件的項(xiàng)目計(jì)劃重在“準(zhǔn)確”而非“快速”。

提高質(zhì)量是軟件工程的主要目標(biāo)。但由于軟件開(kāi)發(fā)是一種智力創(chuàng)作活動(dòng),很難象傳統(tǒng)工業(yè)那樣通過(guò)執(zhí)行嚴(yán)格的操作規(guī)范來(lái)保證軟件產(chǎn)品的質(zhì)量。世上最小心翼翼、最老實(shí)巴腳的程序員未必就能開(kāi)發(fā)出高質(zhì)量的軟件來(lái)。程序員必須了解軟件質(zhì)量的方方面面(稱(chēng)為質(zhì)量因素),如正確性、性能、易用性、靈活性、可復(fù)用性、可理解性等等,才能在進(jìn)行系統(tǒng)設(shè)計(jì)、程序設(shè)計(jì)時(shí)將高質(zhì)量?jī)?nèi)建其中。軟件的高質(zhì)量并不是“管理”出來(lái)的,實(shí)質(zhì)上是設(shè)計(jì)出來(lái)的,質(zhì)量的管理只是一種預(yù)防和認(rèn)證的手段而已。

3.1 項(xiàng) 目 計(jì) 劃

做項(xiàng)目計(jì)劃,如同給一個(gè)待出生的嬰兒寫(xiě)傳記那樣困難。如果允許項(xiàng)目結(jié)束后再寫(xiě)計(jì)劃,那就輕松多了,并且可以100% 地準(zhǔn)確。

[[ 歷史教訓(xùn)讓我們明白一個(gè)道理:如果一萬(wàn)年以后才會(huì)有一條陽(yáng)光大道通向共產(chǎn)主義,那么現(xiàn)在就不要忙著砸鍋煉鋼趕英超美,免得在跑步奔向共產(chǎn)主義時(shí)把自己累死餓死]]。在做軟件的項(xiàng)目計(jì)劃時(shí),應(yīng)屏棄一切浮夸作風(fēng)。只有“知已知彼”才能做出合理的項(xiàng)目計(jì)劃。這里“知彼”是指要了解項(xiàng)目的規(guī)模、難度與時(shí)間限制。“知已”是指要了解有多少可用資源,如可調(diào)用的程序員有幾個(gè)?他們的水平如何?軟硬件設(shè)施如何?

3.1.1 知己知彼

首先要了解項(xiàng)目的規(guī)模、難度與時(shí)間限制,才可以確定應(yīng)該投入多少人力、物力去做這個(gè)項(xiàng)目。在可行性分析階段就要考慮這個(gè)問(wèn)題。但不幸的是,人們?cè)谙萑腠?xiàng)目不能自撥之前總難以準(zhǔn)確地估計(jì)項(xiàng)目的規(guī)模與難度。這里經(jīng)驗(yàn)起到了最重要的作用。

項(xiàng)目的時(shí)間限制有兩類(lèi)。第一類(lèi),項(xiàng)目應(yīng)該完成的日期寫(xiě)在合同中,如果延期了,則開(kāi)發(fā)方要作出相應(yīng)的賠償。第二類(lèi)是開(kāi)發(fā)自己的軟件產(chǎn)品,雖然只確定了該產(chǎn)品大致的發(fā)行日期并允許有延誤,但如果拖延太久則會(huì)失去商機(jī)造成損失。項(xiàng)目的資源分為三類(lèi):“人”、“可復(fù)用的軟構(gòu)件”和“軟硬件環(huán)境”,如圖3.1所示。(1)人是最有價(jià)值的資源。項(xiàng)目計(jì)劃的制定者要確定開(kāi)發(fā)人員的名單,要根據(jù)他們的專(zhuān)長(zhǎng)進(jìn)行分工。

(2)可復(fù)用的軟構(gòu)件是次有價(jià)值的資源。1.2.1節(jié)論述了復(fù)用軟構(gòu)件可提高軟件的質(zhì)量與生產(chǎn)率。軟構(gòu)件并非一定要用自己的,可以向?qū)I(yè)的軟件供應(yīng)商購(gòu)買(mǎi)。(3)軟硬件環(huán)境雖然不是最重要的資源,卻是必需的資源。原則上軟硬件環(huán)境只要符合項(xiàng)目的開(kāi)發(fā)要求即可。有些項(xiàng)目可能要用到特殊的設(shè)備,則要事先作好準(zhǔn)備,以免用時(shí)找不到而擔(dān)擱了進(jìn)程。

一個(gè)軟件系統(tǒng)因能給用戶(hù)提供價(jià)值而具有存在價(jià)值,所有的決定都應(yīng)該基于這個(gè)思想。在確定系統(tǒng)需求之前,在關(guān)注系統(tǒng)功能之前,在決定硬件平臺(tái)或者開(kāi)發(fā)過(guò)程之前,問(wèn)問(wèn)你自己:這確實(shí)能為系統(tǒng)增加真正的價(jià)值嗎?如果答案是不,那就堅(jiān)決不做。所有的其他原則都以這條原則為基礎(chǔ)。第2原則:保持簡(jiǎn)潔

軟件設(shè)計(jì)并不是一種隨意的過(guò)程,在軟件設(shè)計(jì)中需要考慮很多因素。所有的設(shè)計(jì)都應(yīng)該盡可能簡(jiǎn)潔,但不是過(guò)于簡(jiǎn)化。這有助于構(gòu)建更易于理解和易于維護(hù)的系統(tǒng)。這并不是說(shuō)那些特征甚至是內(nèi)部特征應(yīng)該以“簡(jiǎn)練”為借口而取消。的確,優(yōu)雅的設(shè)計(jì)通常也是簡(jiǎn)潔的設(shè)計(jì),簡(jiǎn)練也不意味著“快速和粗糙”。事實(shí)上,它經(jīng)常是經(jīng)過(guò)大量思考和多次工作迭代才達(dá)到的,這樣做的回報(bào)是所得到的軟件更易于維護(hù)且存在更少錯(cuò)誤。第3原則:保持愿景

清晰的愿景是軟件項(xiàng)目成功的基礎(chǔ)。沒(méi)有愿景,項(xiàng)目將會(huì)由于它有“兩種或者更多種思想”而永遠(yuǎn)不能結(jié)束如果缺乏概念的一致性,系統(tǒng)就好像是由許多不協(xié)調(diào)的設(shè)計(jì)補(bǔ)丁、錯(cuò)誤的集成方式強(qiáng)行拼湊在一起…如果不能保持軟件系統(tǒng)體系架構(gòu)的愿景,將削弱甚至徹底破壞設(shè)計(jì)良好的系統(tǒng)。授權(quán)體系架構(gòu)師,使其能夠保持愿景,并保證系統(tǒng)實(shí)現(xiàn)始終與愿景保持一致,這對(duì)項(xiàng)目開(kāi)發(fā)成功至關(guān)重要。

第4原則:關(guān)注使用者

有產(chǎn)業(yè)實(shí)力的軟件系統(tǒng)不是在真空中開(kāi)發(fā)和使用的。通常軟件系統(tǒng)必定是由開(kāi)發(fā)者以外的人員使用、維護(hù)和編制文檔等,這就必須要讓別人理解你的系統(tǒng)。因此,在需求說(shuō)明、設(shè)計(jì)和實(shí)現(xiàn)時(shí),經(jīng)常要想到要讓別人理解你所做的事情。對(duì)于任何一個(gè)軟件產(chǎn)品,其工作產(chǎn)品都可能有很多讀者。需求說(shuō)明時(shí)應(yīng)時(shí)刻想到用戶(hù);設(shè)計(jì)中始終想到實(shí)現(xiàn);編碼時(shí)想著那些要維護(hù)和擴(kuò)展系統(tǒng)的人。一些人可能會(huì)被迫調(diào)試你所編寫(xiě)的代碼,這使得他們成了你所編寫(xiě)代碼的使用者,盡可能地使他們的工作簡(jiǎn)單化會(huì)大大提升系統(tǒng)的價(jià)值。

第三篇:軟件工程

1.軟件危機(jī)的概念 系統(tǒng)的數(shù)據(jù)要求,功能需求,性能需求,顯示出程序的輪廓。

軟件危機(jī)是指在計(jì)算機(jī)軟件開(kāi)發(fā)、使用與可靠性需求,可用性需求,出錯(cuò)處理需求,混合方式

維護(hù)過(guò)程中遇到的一系列嚴(yán)重問(wèn)題和難接口需求,約束,逆向需求以及將來(lái)可能優(yōu)點(diǎn):綜合了以上兩種策略的長(zhǎng)處 題。提出的需求。9.確認(rèn)測(cè)試

補(bǔ)充: 5.常使用的圖形工具 確認(rèn)測(cè)試又稱(chēng)有效性測(cè)試。有效性測(cè)試是

1.軟件危機(jī)的表現(xiàn)有哪些? 實(shí)體-聯(lián)系圖,數(shù)據(jù)流圖,狀態(tài)轉(zhuǎn)換圖,在模擬的環(huán)境下,運(yùn)用黑盒測(cè)試的方法,答:1)對(duì)軟件開(kāi)發(fā)成本和進(jìn)度的估計(jì)常層次方框圖,warnier圖,IPO圖。驗(yàn)證被測(cè)軟件是否滿(mǎn)足需求規(guī)格說(shuō)明書(shū)常很不準(zhǔn)確。第五章 列出的需求。任務(wù)是驗(yàn)證軟件的功能和性

2)用戶(hù)對(duì)已完成的軟件不滿(mǎn)意1.總體設(shè)計(jì)的任務(wù) 能及其他特性是否與用戶(hù)的要求一致。對(duì)的現(xiàn)象時(shí)有發(fā)生。劃分出組成系統(tǒng)的物理元素——程序、文軟件的功能和性能要求在軟件需求規(guī)格

3)軟件產(chǎn)品的質(zhì)量往往是靠不件、數(shù)據(jù)庫(kù)、人工過(guò)程和文檔等等 說(shuō)明書(shū)中已經(jīng)明確規(guī)定,它包含的信息就住的。設(shè)計(jì)軟件的結(jié)構(gòu)。也就是要確定系統(tǒng)中每是軟件確認(rèn)測(cè)試的基礎(chǔ)。

4)軟件常常是不可維護(hù)的。個(gè)程序是由哪些模塊組成的,以及這些模10.什么是白盒測(cè)試,其測(cè)試技術(shù)有那些,5)軟件通常沒(méi)有適當(dāng)?shù)奈臋n資塊相互間的關(guān)系。覆蓋標(biāo)準(zhǔn)的強(qiáng)弱程度

料。2.模塊化思想 白盒測(cè)試是一種測(cè)試用例設(shè)計(jì)方法,盒子

6)軟件成本在計(jì)算機(jī)系統(tǒng)總成就是把程序劃分成獨(dú)立命名且可獨(dú)立訪指的是被測(cè)試的軟件,白盒指的是盒子是本中所占比例逐年上升。問(wèn)的模塊,每個(gè)模塊完成一個(gè)子功能,把可視的,你清楚盒子內(nèi)部的東西以及里面

7)軟件開(kāi)發(fā)生產(chǎn)率提高的速度這些模塊集成起來(lái)構(gòu)成一個(gè)整體,可以完是如何運(yùn)作的。“白盒”法全面了解程序內(nèi)遠(yuǎn)跟不上日益增長(zhǎng)的軟件需求。成指定的功能滿(mǎn)足用戶(hù)的需求。部邏輯結(jié)構(gòu)、對(duì)所有邏輯路徑進(jìn)行測(cè)試。

2.產(chǎn)生軟件危機(jī)的原因主要有哪些? 3.衡量模塊獨(dú)立的標(biāo)準(zhǔn)(內(nèi)聚和耦合的白盒測(cè)試的測(cè)試方法有代碼檢查法、靜態(tài)答:1)用戶(hù)對(duì)軟件需求的描述不精確。含義,種類(lèi))結(jié)構(gòu)分析法、靜態(tài)質(zhì)量度量法、邏輯覆蓋

2)軟件開(kāi)發(fā)人員對(duì)用戶(hù)需求的內(nèi)聚:標(biāo)志著每一個(gè)模塊內(nèi)各個(gè)元素彼此法、基本路徑測(cè)試法、域測(cè)試、符號(hào)測(cè)試、理解有偏差。結(jié)合的緊密程度,是信息隱藏和局部化概路徑覆蓋和程序變異。

3)缺乏處理大型軟件項(xiàng)目的經(jīng)念的自然拓展。偶然內(nèi)聚,邏輯內(nèi)聚,時(shí)種覆蓋標(biāo)準(zhǔn):語(yǔ)句覆蓋、判定覆蓋、條件驗(yàn)。間內(nèi)聚,功能內(nèi)聚,順序內(nèi)聚,通信內(nèi)聚,覆蓋、判定/條件覆蓋、條件組合覆蓋和

4)開(kāi)發(fā)大型軟件易產(chǎn)生疏漏和過(guò)程內(nèi)聚。路徑覆蓋發(fā)現(xiàn)錯(cuò)誤的能力呈由弱至強(qiáng)的錯(cuò)誤。耦合:是對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間變化。

5)缺乏有力的方法學(xué)的指導(dǎo)和互連程度的度量。數(shù)據(jù)耦合,控制耦合,11.什么時(shí)候黑盒測(cè)試,其測(cè)試技術(shù)有哪有效的開(kāi)發(fā)工具的支持。特征耦合,公共環(huán)境耦合,內(nèi)容耦合。些,(等價(jià)劃分,邊介值分析法)

6)面對(duì)日益增長(zhǎng)的軟件需求,4.啟發(fā)式規(guī)則 黑盒測(cè)試也稱(chēng)功能測(cè)試,它是通過(guò)測(cè)試來(lái)人們顯得力不從心。1.改進(jìn)軟件結(jié)構(gòu)提高模塊的獨(dú)立性檢測(cè)每個(gè)功能是否都能正常使用。

2軟件的概念 2.模塊規(guī)模應(yīng)該適中等價(jià)類(lèi)劃分的辦法是把程序的輸入域劃完成特點(diǎn)功能的程序以及數(shù)據(jù)結(jié)構(gòu)和文 3.深度、寬度、扇出和扇入都應(yīng)適當(dāng) 分成若干部分(子集),然后從每個(gè)部分檔 4.模塊的作用范圍應(yīng)在控制范圍之內(nèi)中選取少數(shù)代表性數(shù)據(jù)作為測(cè)試用例

3.軟件工程的基本原理 5.力爭(zhēng)降低模塊接口的復(fù)雜程度 邊界值分析是通過(guò)選擇等價(jià)類(lèi)邊界的測(cè)

1.用分階段的生命周期計(jì)劃嚴(yán)格管理 6.設(shè)計(jì)單入口單出口的模塊試用例。邊界值分析法不僅重視輸入條件

2.堅(jiān)持進(jìn)行階段評(píng)審 7.模塊功能應(yīng)該可以預(yù)測(cè) 邊界,而且也必須考慮輸出域邊界。它是

3.實(shí)行嚴(yán)格的產(chǎn)品控制 5.面向數(shù)據(jù)流的設(shè)計(jì)方法把信息流映射對(duì)等價(jià)類(lèi)劃分方法的補(bǔ)充。

4.采用現(xiàn)代程序設(shè)計(jì)技術(shù) 成軟件結(jié)構(gòu) 12.軟件調(diào)試技術(shù)有哪些

5.結(jié)果應(yīng)能清楚地審查 信息流:變換流,事物流 蠻干法,蠻干法可能是尋找軟件錯(cuò)誤原因

6.開(kāi)發(fā)小組的人員應(yīng)該少而精 映射:變換分析,事物分析 的最低效的方法,僅當(dāng)所有其他方法都

7.承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性失敗的情況下才使用。

4軟件生命周期分成哪幾個(gè)階段?各階第六章 回溯法,回溯法是一種相當(dāng)常用的調(diào)試方段的任務(wù)是什么? 1.詳細(xì)設(shè)計(jì)的基本任務(wù) 法,當(dāng)調(diào)試小程序時(shí)很有效。從發(fā)現(xiàn)癥

1.問(wèn)題定義: 1.為每個(gè)模塊確定采用的算法。2.確定狀的地方開(kāi)始,人工沿程序的控制流往回

2.可行性研究:研究問(wèn)題的范圍,探索這每一模塊使用的數(shù)據(jù)結(jié)構(gòu)追蹤分析源程序代碼,知道找出錯(cuò)誤原因個(gè)問(wèn)題是否值得去解決,是否有可行的解3.確定模塊接口的細(xì)節(jié),包括對(duì)系統(tǒng)外為止。

決方法。部的接口和用戶(hù)界面,對(duì)系統(tǒng)內(nèi)部其 原因排除法,對(duì)分查找法、歸納法、演繹

3.需求分析:主要是確定目標(biāo)系統(tǒng)必須具它模塊的接口,以及關(guān)于模塊輸入數(shù)據(jù)、法都屬于原因排除法。

備哪些功能 輸出數(shù)據(jù)及局部數(shù)據(jù)的全部細(xì)節(jié)。13.軟件可靠性(可靠性和可用性的含義)

4.總體設(shè)計(jì): 4.為每一模塊設(shè)計(jì)出一組測(cè)試用例。

5.詳細(xì)設(shè)計(jì):就是把解法具體化,設(shè)計(jì)出2.程序的三種基本結(jié)構(gòu)

程序的詳細(xì)規(guī)格說(shuō)明。順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)

6.編碼和單元測(cè)試:寫(xiě)出正確的容易理解3.詳細(xì)設(shè)計(jì)的工具

容易維護(hù)的程序模塊。1.圖形工具

7.綜合測(cè)試:通過(guò)各種類(lèi)型的測(cè)試使軟件2.表格工具

達(dá)到預(yù)定的要求 3.語(yǔ)言工具

8.軟件維護(hù):通過(guò)各種必要的維護(hù)活動(dòng)使4.jackson方法

系統(tǒng)持久地滿(mǎn)足用戶(hù)的需要。(改正性維5.復(fù)雜性度量的方法

護(hù),適應(yīng)性維護(hù),完善性維護(hù),預(yù)防性維Halstead方法:它根據(jù)程序中運(yùn)算符和

護(hù))操作數(shù)的總數(shù)來(lái)度量程序的復(fù)雜程度

5.瀑布模型,快速原型模型,增量模型,McCabe方法 :McCabe方法根據(jù)程序控制

螺旋模型的特點(diǎn) 流的復(fù)雜程度定量度量程序的復(fù)雜程度,瀑布模型階:段時(shí)間具有順序性和依賴(lài)第七章

性。推遲現(xiàn)實(shí)的觀點(diǎn)。質(zhì)量保證的觀點(diǎn)。1.選擇程序設(shè)計(jì)語(yǔ)言應(yīng)考慮哪些因素

快速原型模型:軟件產(chǎn)品的開(kāi)發(fā)基本上是1.系統(tǒng)用戶(hù)的要求

線性順序進(jìn)行的,本質(zhì)是“快速”加速軟2.可以使用的編譯程序

件的開(kāi)發(fā)過(guò)程,節(jié)約軟件開(kāi)發(fā)成本。3.可以得到的軟件工具

增量模型:能在較短時(shí)間內(nèi)向用戶(hù)提交可4.工程規(guī)模

完成部分工作的產(chǎn)品。逐步增加產(chǎn)品功5.程序員的知識(shí)

能,可以使用戶(hù)有較充裕的時(shí)間學(xué)習(xí)和適6.軟件可移植性要求

應(yīng)新產(chǎn)品,從而減少一個(gè)全新的軟件可能7.軟件的應(yīng)用領(lǐng)域

給客戶(hù)組織帶來(lái)的沖擊。2.良好的編程風(fēng)格包括哪些方面

螺旋模型:對(duì)可選方案和約束條件的強(qiáng)調(diào)1.程序內(nèi)部的文檔2.數(shù)據(jù)說(shuō)明 3.語(yǔ)句構(gòu)

有利于已有軟件的重用,也有助于把軟件造4.輸入輸出 5.效率

質(zhì)量作為軟件開(kāi)發(fā)的一個(gè)重要目標(biāo)。減少3軟件測(cè)試的目標(biāo)

了過(guò)多的測(cè)試或測(cè)試不足帶來(lái)的風(fēng)險(xiǎn)。更目的:(1)測(cè)試是為了發(fā)現(xiàn)程序中的錯(cuò)誤

重要的是在螺旋模型中維護(hù)只是模型的而執(zhí)行程序的過(guò)程;

另一個(gè)周期,在維護(hù)和開(kāi)發(fā)之間并沒(méi)有本(2)好的測(cè)試方案是極可能發(fā)現(xiàn)迄今為

質(zhì)區(qū)別。風(fēng)險(xiǎn)驅(qū)動(dòng)的。止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案;

(3)成功的測(cè)試是發(fā)現(xiàn)了至今為止尚未

第二章 發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。

1.可行性研究的目的 定義:為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序

就是用最小的代價(jià)在盡可能短的時(shí)間內(nèi)的過(guò)程。

確定問(wèn)題是否能夠解決。補(bǔ)充:

補(bǔ)充: 軟件測(cè)試步驟 :

可行性研究的步驟 :(1)模塊測(cè)試(2)子系統(tǒng)測(cè)試(3)系統(tǒng)

1.復(fù)查系統(tǒng)規(guī)模和目標(biāo)。測(cè)試(4)驗(yàn)收測(cè)試(5)平行運(yùn)行

2.研究現(xiàn)有的系統(tǒng)。4.確定測(cè)試計(jì)劃是在哪個(gè)階段制定的3.導(dǎo)出新系統(tǒng)高層邏輯模型。5.黑盒測(cè)試和白盒測(cè)試的概念

4.進(jìn)一步定義問(wèn)題黑盒測(cè)試

5.導(dǎo)出和評(píng)價(jià)供選擇的解法。1把程序看作一個(gè)黑盒子,完全不考慮程

6.推薦行動(dòng)方針序的內(nèi)部結(jié)構(gòu)和處理過(guò)程

7.草擬開(kāi)發(fā)計(jì)劃2對(duì)程序接口進(jìn)行測(cè)試,檢查程序功能是

8.書(shū)寫(xiě)文檔提交審查 否能按規(guī)格說(shuō)明書(shū)的規(guī)定正常使用;

程序是否能適當(dāng)?shù)亟邮茌斎霐?shù)據(jù)并產(chǎn)生

2.系統(tǒng)流程圖的作用 正確的輸出信息;

系統(tǒng)流程圖是描繪物理系統(tǒng)的傳統(tǒng)工具,程序運(yùn)行過(guò)程中能否保持外部信息的完

它用圖形符號(hào)來(lái)表示系統(tǒng)中的各個(gè)部件。整性

它表達(dá)了系統(tǒng)中各個(gè)元素之間的信息流白盒測(cè)試

動(dòng)的情況。1把程序堪稱(chēng)裝在一個(gè)透明的白盒子里,3.數(shù)據(jù)流圖的概念 測(cè)試者完全知道程序的結(jié)構(gòu)處理算法

數(shù)據(jù)流圖是一種圖形化技術(shù),它描繪信息2按照程序內(nèi)部的邏輯測(cè)試程序,檢測(cè)程

流和數(shù)據(jù)從移動(dòng)到輸出的過(guò)程中所經(jīng)受序中的主要執(zhí)行通路是否都能按的變換。預(yù)定要求正確工作

4.數(shù)據(jù)流圖里面的符號(hào),畫(huà)數(shù)據(jù)流圖。6.測(cè)試的步驟及每個(gè)步驟形成的文檔

5.數(shù)據(jù)字典最基本的功能,以及與數(shù)據(jù)流單元測(cè)試:(模塊測(cè)試)發(fā)現(xiàn)的往往是編

圖的關(guān)系。碼和詳細(xì)設(shè)計(jì)的錯(cuò)誤

最基本的功能:在軟件分析和設(shè)計(jì)的過(guò)程集成測(cè)試:著重測(cè)試模塊的接口 中給人提供關(guān)于數(shù)據(jù)的描述信息。

關(guān)系:數(shù)據(jù)流圖和數(shù)據(jù)字典共同構(gòu)成系統(tǒng)系統(tǒng)測(cè)試:發(fā)現(xiàn)的往往是軟件設(shè)計(jì)中的錯(cuò)的邏輯模型,沒(méi)有數(shù)據(jù)字典,數(shù)據(jù)流圖就誤,也可能發(fā)現(xiàn)需要說(shuō)明中的錯(cuò)誤 不嚴(yán)格,然而沒(méi)有數(shù)據(jù)流圖,數(shù)據(jù)字典也驗(yàn)收測(cè)試:(確認(rèn)測(cè)試)往往發(fā)現(xiàn)需求說(shuō)難于發(fā)揮作用。只有數(shù)據(jù)流圖和對(duì)數(shù)據(jù)流明書(shū)中的錯(cuò)誤 圖中每個(gè)元素的精確定義放在一起,才能7.漸增式和非漸增式的區(qū)別 共同構(gòu)成系統(tǒng)的規(guī)格說(shuō)明。“非漸增式”,即先獨(dú)立地測(cè)試每一模塊,第三章 然后將所有這些模塊連接到一起運(yùn)行; 1.需求分析屬于哪一個(gè)階段,任務(wù)是什“漸增式”,即在已測(cè)試過(guò)的N個(gè)模塊的么。基礎(chǔ)上再增加一個(gè)模塊,再對(duì)N十1個(gè)模需求分析是軟件定義時(shí)期的最后一個(gè)階塊進(jìn)行測(cè)試。段.漸增式比非漸增式優(yōu)越,因?yàn)橛脻u增式,1.確定對(duì)系統(tǒng)的綜合要求(功能需求,性如果是“由頂向下”則可利用前面已測(cè)試能需求,可靠性和可用性需求,出錯(cuò)處理過(guò)的模塊,而不必另外準(zhǔn)備驅(qū)動(dòng)模塊,如需求,接口需求,約束,逆向需求,將來(lái)果是“由底向上”,也可利用已測(cè)試過(guò)的可能提出的要求)模塊,不必再準(zhǔn)備樁模塊。漸增式可以較2.分析系統(tǒng)的數(shù)據(jù)要求早地發(fā)現(xiàn)模塊界面之間的錯(cuò)誤,有利于排3.導(dǎo)出系統(tǒng)的邏輯模型 錯(cuò),檢查比較徹底 4.修正系統(tǒng)開(kāi)發(fā)計(jì)劃2.需求分析的產(chǎn)品是什么 8.自頂向下,自下而上,以及混合策略的3.面向過(guò)程的分析方法主要是建立三類(lèi)優(yōu)缺點(diǎn) 模型 自頂向下數(shù)據(jù)模型(按照用戶(hù)的觀點(diǎn)對(duì)數(shù)據(jù)建立的優(yōu)點(diǎn):能較早顯示整個(gè)程序的輪廓,向用模型,把用戶(hù)的數(shù)據(jù)要求清楚,準(zhǔn)確地描戶(hù)展示程序的概貌,取得用戶(hù)的理解與支述出來(lái)。描述了從用戶(hù)角度看到的數(shù)據(jù),持。缺點(diǎn):當(dāng)測(cè)試上層模塊時(shí)因使用樁它反應(yīng)了用戶(hù)的現(xiàn)實(shí)環(huán)境,屬性,聯(lián)系),模塊較多,很難模擬出真實(shí)模塊的全部功功能模型,行為模型(通過(guò)描繪系統(tǒng)的狀能,使部分測(cè)試內(nèi)容被迫推遲,只能等待態(tài)及引起系統(tǒng)狀態(tài)轉(zhuǎn)換的事件來(lái)表示系換上真實(shí)模塊后再補(bǔ)充測(cè)試。統(tǒng)的行為)由底向上4.軟件需求規(guī)格說(shuō)明書(shū)的內(nèi)容 優(yōu)點(diǎn):測(cè)試從下層模塊開(kāi)始,測(cè)試設(shè)計(jì)用通常用自然語(yǔ)言完整,準(zhǔn)確,具體地描述例比較容易。缺點(diǎn):在測(cè)試的早期不能

第四篇:《軟件工程》

《軟件工程》課程分析

本課程是軟件技術(shù)專(zhuān)業(yè)學(xué)生必修的一門(mén)專(zhuān)業(yè)必修課。根據(jù)培養(yǎng)軟件開(kāi)發(fā)人員的需要,本課程的任務(wù)是使學(xué)生通過(guò)本課程的學(xué)習(xí),了解軟件項(xiàng)目開(kāi)發(fā)和維護(hù)的一般過(guò)程,掌握軟件開(kāi)發(fā)的傳統(tǒng)方法和最新方法。能在軟件工程的理論指導(dǎo)下,開(kāi)發(fā)一個(gè)小型管理系統(tǒng),為今后從事軟件工程實(shí)踐打下良好的基礎(chǔ)。

一、課程分析

(一)教學(xué)計(jì)劃的制定和教學(xué)內(nèi)容的選取

根據(jù)培養(yǎng)應(yīng)用技能型人才的總目標(biāo),制訂本專(zhuān)業(yè)教學(xué)計(jì)劃,課程的教材配套,教學(xué)、實(shí)驗(yàn)、實(shí)訓(xùn)、課程設(shè)計(jì)大綱和指導(dǎo)書(shū)等教學(xué)文件齊全,近幾年來(lái)引入了現(xiàn)代教學(xué)技術(shù)手段,已初步建設(shè)、形成了具有特色的全套課堂教學(xué)和實(shí)驗(yàn)教學(xué)課件。

根據(jù)該課程的基本教學(xué)要求和特點(diǎn),結(jié)合學(xué)時(shí)的安排,從教材的整體內(nèi)容出發(fā),有側(cè)重地進(jìn)行取舍,篩選出學(xué)生必須掌握的基本教學(xué)內(nèi)容,較好地解決了教學(xué)中質(zhì)量與數(shù)量的矛盾。

(二)教學(xué)方法分析

由于該課程是用于指導(dǎo)軟件開(kāi)發(fā)的,和實(shí)踐聯(lián)系非常緊密。所以采用了理論聯(lián)系實(shí)際的方法進(jìn)行授課。一方面,讓學(xué)生模擬軟件公司的項(xiàng)目小組進(jìn)行軟件開(kāi)發(fā);一方面,對(duì)學(xué)生進(jìn)行適時(shí)的理論指導(dǎo)。既調(diào)動(dòng)了學(xué)生的積極性,又讓學(xué)生了解了該課程的理論內(nèi)容,收到了一舉兩得的效果。具體教學(xué)過(guò)程如下:

第一步:模擬軟件公司的開(kāi)發(fā)項(xiàng)目小組,分組,分設(shè)角色(項(xiàng)目經(jīng)理、用戶(hù)、需求人員、設(shè)計(jì)人員、程序員、測(cè)試人員、軟件安裝培訓(xùn)維護(hù)人員),確定開(kāi)發(fā)題。讓每個(gè)小組的學(xué)生聚在一起,在項(xiàng)目經(jīng)理的組織下通過(guò)調(diào)研、討論來(lái)制定自己小組的開(kāi)發(fā)題目,大家感覺(jué)就象在軟件公司實(shí)習(xí)一樣,非常新鮮,感興趣。每個(gè)學(xué)生都積極主動(dòng)的去完成自己應(yīng)承擔(dān)的那部分工作。

第二步:模擬軟件項(xiàng)目開(kāi)發(fā)全過(guò)程的各個(gè)階段,進(jìn)行相關(guān)的理論授課和實(shí)際開(kāi)發(fā)。即對(duì)軟件開(kāi)發(fā)的每一階段,首先按照教材內(nèi)容進(jìn)行理論授課,然后讓學(xué)生參照授課內(nèi)容進(jìn)行實(shí)際的軟件開(kāi)發(fā)實(shí)踐。

在此階段結(jié)束后,每班召開(kāi)一個(gè)模擬方案論證會(huì),由各開(kāi)發(fā)小組選出代表上臺(tái)講解本組的開(kāi)發(fā)方案,其他同學(xué)模擬用戶(hù)對(duì)開(kāi)發(fā)方案提出意見(jiàn)。由于大家對(duì)模擬方案論證會(huì)非常感興趣,發(fā)言積極踴躍,論證會(huì)結(jié)束后,每個(gè)小組的設(shè)計(jì)方案都得到了很好的補(bǔ)充和完善。

第三步:學(xué)期末各小組提交各自完成的軟件系統(tǒng)及開(kāi)發(fā)文檔,并進(jìn)行總結(jié)演示,由任課教師進(jìn)行講評(píng)。

抽象理論課的教學(xué)應(yīng)理論聯(lián)系實(shí)際,讓學(xué)生在實(shí)際應(yīng)用中掌握抽象的理論,在興趣中學(xué)習(xí),達(dá)到我們高職的雙向型培養(yǎng)目標(biāo)。

二、存在的問(wèn)題與希望

在上述的教學(xué)中,雖然實(shí)現(xiàn)了理論聯(lián)系實(shí)際,但也存在著一些問(wèn)題,比如每個(gè)項(xiàng)目小組中總有個(gè)別同學(xué)存在依賴(lài)心理,不參與項(xiàng)目開(kāi)發(fā),最后抄襲別的同學(xué)的項(xiàng)目成果,自己得不到實(shí)際的鍛煉,影響了大三的畢業(yè)設(shè)計(jì)和日后的軟件開(kāi)發(fā)。另外,如果該課程只上課,沒(méi)有實(shí)訓(xùn)的話,實(shí)驗(yàn)課時(shí)太少,學(xué)生很難全面完成一個(gè)系統(tǒng)的開(kāi)發(fā)。

第五篇:軟件工程

軟件工程

1.談?wù)勀銓?duì)軟件工具的理解,你用過(guò)什么軟件工具

軟件工具是指為支持計(jì)算機(jī)軟件的開(kāi)發(fā)、維護(hù)、模擬、移植或管理而研制的程序系統(tǒng)。它是為專(zhuān)門(mén)目的而開(kāi)發(fā)的,在軟件工程范圍內(nèi)也就是為實(shí)現(xiàn)軟件生存期中的各種處理活動(dòng)(包括管理、開(kāi)發(fā)和維護(hù))的自動(dòng)化和半自動(dòng)化面開(kāi)發(fā)的程序系統(tǒng)。

開(kāi)發(fā)軟件工具的最終目的是為了提高軟件生產(chǎn)率和改善軟件的質(zhì)量。

軟件工具分為六類(lèi):模擬工具、開(kāi)發(fā)工具、測(cè)試和評(píng)估工具、運(yùn)行和維護(hù)工具、性能質(zhì)量工具和程序設(shè)計(jì)支持工具。

應(yīng)該是看對(duì)象來(lái)選擇測(cè)試工具!比如:

功能測(cè)試工具:WinRunner

性能測(cè)試工具:LoadRunner

內(nèi)存泄漏測(cè)試工具:Purify

單元測(cè)試工具:Junit

測(cè)試管理工具:TestDirector還有東軟的bugbaseIBM開(kāi)發(fā)的 rational。

2.什么是軟件的可維護(hù)性:

軟件可維護(hù)性即維護(hù)人員對(duì)該軟件進(jìn)行維護(hù)的難易程度,具體包括理解、改正、改動(dòng)和改進(jìn)該軟件的難易程度。

決定可維護(hù)性的因素:

1.系統(tǒng)的大小

2.系統(tǒng)的年齡

3.結(jié)構(gòu)合理性

可維護(hù)性的度量:

可理解性

可測(cè)試性

可修改性

可移植性

3.軟件開(kāi)發(fā)和寫(xiě)程序有什么不同?軟件開(kāi)發(fā)的內(nèi)容是:需求、設(shè)計(jì)、編程和 測(cè)試 維護(hù)!

需求分析

軟件需求分析就是回答做什么的問(wèn)題。它是一個(gè)對(duì)用戶(hù)的需求進(jìn)行去粗取精、去偽存真、正確理解,然后把它用軟件工程開(kāi)發(fā)語(yǔ)言(形式功能規(guī)約,即需求規(guī)格說(shuō)明書(shū))表達(dá)出來(lái)的過(guò)程。本階段的基本任務(wù)是和用戶(hù)一起確定要解決的問(wèn)題,建立軟件的邏輯模型,編寫(xiě)需求規(guī)格說(shuō)明書(shū)文檔并最終得到用戶(hù)的認(rèn)可。需求分析的主要方法有結(jié)構(gòu)化分析方法、數(shù)據(jù)流程圖和數(shù)據(jù)字典等方法。本階段的工作是根據(jù)需求說(shuō)明書(shū)的要求,設(shè)計(jì)建立相應(yīng)的軟件系統(tǒng)的體系結(jié)構(gòu),并將整個(gè)系統(tǒng)分解成若干個(gè)子系統(tǒng)或模塊,定義子系統(tǒng)或模塊間的接口關(guān)系,對(duì)各子系統(tǒng)進(jìn)行具體設(shè)計(jì)定義,編寫(xiě)軟件概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)說(shuō)明書(shū),數(shù)據(jù)庫(kù)或數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)說(shuō)明書(shū),組裝測(cè)試計(jì)劃。

設(shè)計(jì)

軟件設(shè)計(jì)可以分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個(gè)階段。實(shí)際上軟件設(shè)計(jì)的主要任務(wù)就是將軟件分解成模塊是指能實(shí)現(xiàn)某個(gè)功能的數(shù)據(jù)和程序說(shuō)明、可執(zhí)行程序的程序單元。可以是一個(gè)函數(shù)、過(guò)程、子程序、一段帶有程序說(shuō)明的獨(dú)立的程序和數(shù)據(jù),也可以是可組合、可分解和可更換的功能單元。模塊,然后進(jìn)行模塊設(shè)計(jì)。概要設(shè)計(jì)就是結(jié)構(gòu)設(shè)計(jì),其主要目標(biāo)就是給出軟件的模塊結(jié)構(gòu),用軟件結(jié)構(gòu)圖表示。詳細(xì)設(shè)計(jì)的首要任務(wù)就是設(shè)計(jì)模塊的程序流程、算法和數(shù)據(jù)結(jié)構(gòu),次要任務(wù)就是設(shè)計(jì)數(shù)據(jù)庫(kù),常用方法還是結(jié)構(gòu)化程序設(shè)計(jì)方法。

編碼

軟件編碼是指把軟件設(shè)計(jì)轉(zhuǎn)換成計(jì)算機(jī)可以接受的程序,即寫(xiě)成以某一程序設(shè)計(jì)語(yǔ)言表示的“源程序清單”。充分了解軟件開(kāi)發(fā)語(yǔ)言、工具的特性和編程風(fēng)格,有助于開(kāi)發(fā)工具的選擇以及保證軟件產(chǎn)品的開(kāi)發(fā)質(zhì)量。

測(cè)試

軟件測(cè)試的目的是以較小的代價(jià)發(fā)現(xiàn)盡可能多的錯(cuò)誤。不同的測(cè)試方法有不同的測(cè)試用例設(shè)計(jì)方法。兩種常用的測(cè)試方法是白盒法測(cè)試對(duì)象是源程序,依據(jù)的是程序內(nèi)部的的邏輯結(jié)構(gòu)來(lái)發(fā)現(xiàn)軟件的編程錯(cuò)誤、結(jié)構(gòu)錯(cuò)誤和數(shù)據(jù)錯(cuò)誤。結(jié)構(gòu)錯(cuò)誤包括邏輯、數(shù)據(jù)流、初始化等錯(cuò)誤。用例設(shè)計(jì)的關(guān)鍵是以較少的用例覆蓋盡可能多的內(nèi)部程序邏輯結(jié)果。白盒法和黑盒法依據(jù)的是軟件的功能或軟件行為描述,發(fā)現(xiàn)軟件的接口、功能和結(jié)構(gòu)錯(cuò)誤。其中接口錯(cuò)誤包括內(nèi)部/外部接口、資源管理、集成化以及系統(tǒng)錯(cuò)誤。黑盒法用例設(shè)計(jì)的關(guān)鍵同樣也是以較少的用例覆蓋模塊輸出和輸入接口。黑盒法。

維護(hù)

維護(hù)是旨在已完成對(duì)軟件的研制(分析、設(shè)計(jì)、編碼和測(cè)試)工作并交付使用以后,對(duì)軟件產(chǎn)品所進(jìn)行的一些軟件工程的活動(dòng)。即根據(jù)軟件運(yùn)行的情況,對(duì)軟件進(jìn)行適當(dāng)修改,以適應(yīng)新的要求,以及糾正運(yùn)行中發(fā)現(xiàn)的錯(cuò)誤。編寫(xiě)軟件問(wèn)題報(bào)告、軟件修改報(bào)告。

4.什么是軟件設(shè)計(jì)的”高內(nèi)聚 低耦合”

內(nèi)聚:一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度

耦合:一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量

對(duì)于低耦合,(模塊的獨(dú)立性)

一個(gè)完整的系統(tǒng),模塊與模塊之間,盡可能的使其獨(dú)立存在。也就是說(shuō),讓每個(gè)模塊,盡可能的獨(dú)立完成某個(gè)特定的子功能。模塊與模塊之間的接口,盡量的少而簡(jiǎn)單。如果某兩個(gè)模塊間的關(guān)系比較復(fù)雜的話,最好首先考慮進(jìn)一步的模塊劃分。這樣有利于修改和組合.對(duì)于高內(nèi)聚:

在一個(gè)模塊內(nèi),讓每個(gè)元素之間都盡可能的緊密相連。也就是充分利用每一個(gè)元素的功能,各施所能,以最終實(shí)現(xiàn)某個(gè)功能。

5.case在軟件工程中的作用

CASE(Computer Aided(or Assisted)Software Engineering計(jì)算機(jī)輔助軟件工程。CASE的一個(gè)基本思想就是提供一組能夠自動(dòng)覆蓋軟件開(kāi)發(fā)生命周期各個(gè)階段的集成的、減少勞動(dòng)力的工具。CASE已被證明可以加快開(kāi)發(fā)速度,提高應(yīng)用軟件生產(chǎn)率并保證應(yīng)用軟件的可靠品質(zhì)。CASE工具由許多部分組成,一般我們按軟件開(kāi)發(fā)的不同階段分為上層CASE和下層CASE產(chǎn)品。上層或前端CASE工具自動(dòng)進(jìn)行應(yīng)用的計(jì)劃、設(shè)計(jì)和分析,幫助用戶(hù)定義需求,產(chǎn)生需求說(shuō)明,并可完成與應(yīng)用開(kāi)發(fā)相關(guān)的所有計(jì)劃工作。下層或后端CASE工具自動(dòng)進(jìn)行應(yīng)用系統(tǒng)的編程、測(cè)試和維護(hù)工作。

除非下層CASE和上層CASE工具的供應(yīng)商提供統(tǒng)一界面,否則用戶(hù)必須編寫(xiě)或重新將所有信息從上層CASE工具轉(zhuǎn)換到下層CASE工具。獨(dú)立的CASE工具供應(yīng)商愈來(lái)愈希望將它們的工具連接在一起建立統(tǒng)一的界面以減少用戶(hù)不必要的開(kāi)發(fā)工作。

CASE工具帶來(lái)的好處

計(jì)算機(jī)專(zhuān)業(yè)人員利用計(jì)算機(jī)使他們的企業(yè)提高了效率,企業(yè)的各個(gè)部門(mén)通過(guò)使用計(jì)算機(jī)

提高了生產(chǎn)率和效率,增強(qiáng)了企業(yè)的競(jìng)爭(zhēng)力并使之帶來(lái)了更多的利潤(rùn)。

6.為什么要進(jìn)行軟件測(cè)試?常用的軟件測(cè)試的方法有哪些?

軟件測(cè)試的目的:盡可能發(fā)現(xiàn)并改正被測(cè)試軟件中的錯(cuò)誤,提高軟件的可靠性。

軟件測(cè)試方法主要包括單元測(cè)試,集成測(cè)試,系統(tǒng)測(cè)試,用戶(hù)測(cè)試,回歸測(cè)試。

還有就是自定而下,和自下而上的方法。

7.談?wù)勀銓?duì)保證軟件質(zhì)量的技術(shù)和方法的認(rèn)識(shí)? 1.作為一個(gè)軟件質(zhì)量保證人員需要良好的溝通能力,因?yàn)槿绻麤](méi)有良好的溝通能力,很多問(wèn)題都沒(méi)有辦法解決,原因很簡(jiǎn)單,測(cè)試人員發(fā)現(xiàn)了bug,開(kāi)發(fā)人員或項(xiàng)目經(jīng)理在怎么不理,但是他們都會(huì)想到,萬(wàn)一測(cè)試人員發(fā)現(xiàn)了bug而自己忽視了,那么就有可能成為軟件里的一顆不定時(shí)地炸彈,那么作為一個(gè)開(kāi)發(fā)人員或項(xiàng)目經(jīng)理對(duì)bug的重視程度肯定相對(duì)比較高,至少要看測(cè)試人員發(fā)現(xiàn)的bug,但是QA就不一定了,因?yàn)镼A保證的流程的正確的執(zhí)行,相關(guān)人員就是認(rèn)為流程不重要,只要我開(kāi)發(fā)的產(chǎn)品沒(méi)有問(wèn)題那就沒(méi)有問(wèn)題,客戶(hù)肯定不會(huì)關(guān)注我的流程,在加上古人的名言“結(jié)果說(shuō)明了一切”,所以沒(méi)有良好的溝通能力,一些問(wèn)題將很難去解決,做起來(lái)就沒(méi)有成就感。

2.個(gè)人感覺(jué)比溝通能力更重要的是,堅(jiān)持原則,在遇到困難的時(shí)候,是不是還能堅(jiān)持原則,在遇到項(xiàng)目組的種種不理不睬的時(shí)候,是不是還能堅(jiān)持原則,在項(xiàng)目組不按照計(jì)劃走的時(shí)候,是不是還能堅(jiān)持原則。

3.個(gè)人心態(tài),我工作三年的經(jīng)歷告訴我,如果開(kāi)發(fā)和測(cè)試相比,開(kāi)發(fā)是天堂,測(cè)試是地獄的話,但如果測(cè)試和QA相比的話,那測(cè)試就是天堂,QA就是地獄,所以心態(tài)很重要,在三年里我就鍛煉成一個(gè)非常好的心態(tài),隨便怎么說(shuō)CMMI沒(méi)用,隨便怎么說(shuō)CMMI就是寫(xiě)文檔,隨便怎么說(shuō)QA真煩人,我笑容依然燦爛,從容面對(duì),而且一個(gè)QA要有堅(jiān)定的信念,如果你都不相信過(guò)程能給項(xiàng)目開(kāi)發(fā)帶來(lái)好處,那你還指望誰(shuí)能相信。

8.提高軟件生產(chǎn)率有哪些手段?

1.挑選精干人員(管理 計(jì)劃不好 技術(shù)搭配不當(dāng))

2.提高階段效率 3消除人工階段

4.減少重復(fù)勞動(dòng) 5.建造簡(jiǎn)單產(chǎn)品

6.重用軟部件庫(kù)(已經(jīng)存在的軟件功能部件

9.什么是軟件的可靠性和有用性

可靠性就是指軟件運(yùn)行的穩(wěn)定性,可用性就是操作的便利性。比如一輛汽車(chē),可靠性好應(yīng)該歸功于機(jī)械部分,可用性好則是內(nèi)飾和中控系統(tǒng)的功勞。

10什么是軟件規(guī)格說(shuō)明?作用是什么?將其形式化的意義是什么?

11.什么是軟件重用?實(shí)現(xiàn)軟件重用的方法有哪些?

軟件重用,是指在兩次或多次不同的軟件開(kāi)發(fā)過(guò)程中重復(fù)使用相同或相似軟件元素的過(guò)程。軟件元素包括程序代碼、測(cè)試用例、設(shè)計(jì)文檔、設(shè)計(jì)過(guò)程、需要分析文檔甚至領(lǐng)域知識(shí)。通常,可重用的元素也稱(chēng)作軟構(gòu)件,可重用的軟構(gòu)件越大,重用的粒度越大。

根據(jù)軟件開(kāi)發(fā)的不同階段實(shí)現(xiàn)軟件重用主要有四個(gè)途徑:

抽象:對(duì)重用對(duì)象概括提煉,從而得到能全面描述側(cè)重算法和數(shù)據(jù)結(jié)構(gòu)的軟件構(gòu)件的各部分的描述。

選擇:是對(duì)重用對(duì)象進(jìn)行存放,匹配和檢索的功能。

實(shí)例化:對(duì)數(shù)據(jù)類(lèi)型中對(duì)象進(jìn)行參數(shù)的提供 轉(zhuǎn)換。

集成:

12.什么是軟件移植?你認(rèn)為構(gòu)造一個(gè)工具實(shí)現(xiàn)windows到Unix的移植有意義嗎?難大不? 軟件可移植性是指代碼可以在不同平臺(tái)間移植,我們一般說(shuō)的軟件的可移植性指的是軟件可移植性,簡(jiǎn)單的說(shuō)就是指源代碼移到不同的平臺(tái)下(不同的操作系統(tǒng),例如從Windows

下移到Linux下)時(shí),需要修改的內(nèi)容越少,移植性越好。要保證軟件可移植性,就是少用或不用系統(tǒng)特有的東西,比如你用C語(yǔ)言編程,你可以使用C語(yǔ)言本身的庫(kù),但不要用

WindowsAPI函數(shù),因?yàn)閃indowsAPI函數(shù)在Linux下是沒(méi)有的,如果想移植到Linux平臺(tái)下,使用WindowsAPI函數(shù)的部分代碼就要做出修改了。

下載《軟件工程思想》word格式文檔
下載《軟件工程思想》.doc
將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
點(diǎn)此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    軟件工程

    軟件工程—心得體會(huì) 摘要 本文結(jié)合基層實(shí)踐教學(xué)的實(shí)際情況和現(xiàn)實(shí)需要,系統(tǒng)地總結(jié)了《軟件工程》實(shí)踐教學(xué)的特征,詳細(xì)分析了實(shí)踐教學(xué)過(guò)程存在的問(wèn)題,并提出了該課程實(shí)踐教學(xué)改革......

    軟件工程

    一、名詞解釋 軟件: 指計(jì)算機(jī)系統(tǒng)中的程序及其文檔。 支持軟件:支持軟件的開(kāi)發(fā)和維護(hù)的軟件。 系統(tǒng)軟件:屬于計(jì)算機(jī)系統(tǒng)中最靠近硬件的一層,其它軟件一般都通過(guò)系統(tǒng)軟件發(fā)揮作......

    軟件工程

    2.2軟件開(kāi)發(fā)的基本策略 人們都有自己的世界觀和方法論,能自然而然地運(yùn)用于生活和工作中。同樣,程序員腦子里的軟件工程觀念會(huì)無(wú)形地支配其怎么去做事情。軟件工程三十年的發(fā)......

    軟件工程

    填好發(fā)給我!!!!一、填空題: 1.面向?qū)ο蠓治龅哪康氖菍?duì)客觀世界的系統(tǒng)進(jìn)行 __________________,對(duì)象就是客觀世界的; 2.軟件工程方法學(xué)包括:工程環(huán)境建立、方法、工具和過(guò)程; 3.思想概括......

    軟件工程

    1. 軟件工程:是指導(dǎo)計(jì)算機(jī)軟件開(kāi)發(fā)和維護(hù)的工程學(xué)科 2. 軟件危機(jī):是指在計(jì)算機(jī)軟件的開(kāi)發(fā)和維護(hù)過(guò)程中所遇到的一系列嚴(yán)重問(wèn)題 3. 軟件過(guò)程:是為了開(kāi)發(fā)出高質(zhì)量的軟件產(chǎn)品所需......

    軟件工程練習(xí)題

    練習(xí)題 一、判斷題 1. 螺旋模型是在瀑布模型和增量模型的基礎(chǔ)上增加了風(fēng)險(xiǎn)分析活動(dòng)。(錯(cuò)) 2. 軟件的模塊數(shù)越少,其軟件成本越低。(錯(cuò)) 3. JAVA語(yǔ)言編譯器是一個(gè)CASE工具。(對(duì))。......

    軟件工程報(bào)告

    軟件工程實(shí)訓(xùn)(論文) 論文題目 學(xué) 院應(yīng)用數(shù)學(xué)學(xué)院 專(zhuān)業(yè)信息與計(jì)算科學(xué) 年級(jí)班別12級(jí)2班 學(xué) 號(hào)3212008007 學(xué)生姓名 洪春暉 指導(dǎo)老師 李小英 2015 年12月 對(duì)軟件工程的認(rèn)識(shí)......

    軟件工程課件

    題目一:“教務(wù)管理系統(tǒng)之子系統(tǒng)——學(xué)院課程安排” 1.系統(tǒng)簡(jiǎn)介 每個(gè)學(xué)期的期中,學(xué)校教務(wù)處向各個(gè)學(xué)院發(fā)出下各學(xué)期的教學(xué)計(jì)劃,包括課程名稱(chēng)、課程代碼、課時(shí)、班級(jí)類(lèi)別(本科、專(zhuān)......

主站蜘蛛池模板: 曰韩无码无遮挡a级毛片| 久久精品网站免费观看| 欧美日韩人妻精品一区二区三区| 中文字幕在线亚洲二区| 国产成人精品自产拍在线观看| 国产精品av免费观看| 国产97色在线 | 国产| 成人国产mv免费视频| 国产精品爽爽久久久久久| 一本久道久久综合狠狠爱| 久久只精品99品免费久23| 免费a级毛片又大又粗又黑| 无码h黄肉动漫在线观看| 亚洲亚洲精品av在线动态图| 996久久国产精品线观看| 国产无遮挡又黄又爽又色| 18禁女裸乳扒开免费视频| 久久青青草免费线频观| 精品少妇人妻av一区二区| 国产永久免费观看的黄网站| 午夜性又黄又爽免费看尤物| 国产乱子伦无码精品小说| 51久久国产露脸精品国产| 国产精品久久久久久久| 日本又色又爽又黄的a片18禁| 国内少妇人妻丰满av| 色狠狠久久av五月综合| 麻花传媒剧国产mv高清播放| 天堂va蜜桃一区二区三区| 好了av第四综合无码久久| 国产99久久久国产精品免费看| 国产精品午夜不卡片在线| 男女啪啪永久免费观看网站| 高清午夜福利电影在线| 亚洲 欧美 国产 日韩 精品| 亚洲码欧美码一区二区三区| 极品少妇被弄得高潮不断| 色婷婷婷丁香亚洲综合| 亚洲国产aⅴ成人精品无吗| 国产真人性做爰久久网站| 自偷自拍亚洲综合精品|