欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      《軟件工程思想》

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

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

      《軟件工程思想》

      《軟件工程思想》 前言

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

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

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

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

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

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

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

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

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

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

      第七章“測試與改錯”;

      第八章“維護與再生工程”。

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

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

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

      如果您買了本書后覺得不值得,我一定賠償您的損失。致

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

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

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

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

      浙江大學(xué)計算機系的楊孟洲、周昆、曾震宇、楊建、白云、金鋒等同學(xué)和我合作開發(fā)軟件,給了我很多技術(shù)上的幫助。我對他們深表感謝?!盾浖こ趟枷搿分v述“軟件開發(fā)”和“做程序員”的道理,視野獨特,構(gòu)思新穎,內(nèi)容風(fēng)趣,不落窠臼,令人耳目一新??胺Q難得,以至回味無窮。

      作者從事了八年的軟件開發(fā)工作,在他的博士學(xué)位論文完成之際寫下了這本“心之所感”。雖然它探討的是軟件工程最常見的內(nèi)容,但他將親身所歷的感悟?qū)懗苫顫娚鷦拥奈淖郑瑢④浖こ痰暮芏嘣瓌t和方法融于笑談之中,讓人看得輕松,時有共鳴。盡管很薄,然其內(nèi)涵不遜于厚近千頁的有關(guān)教科書。

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

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

      正由于此,而不僅因為是同行,我才不慚淺陋,接受他的要求,榮幸地成為本書的第一位讀者,并在本來應(yīng)是名人大家留文的地方談林說森。

      第一章

      軟件工程基本觀念

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

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

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

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

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

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

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

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

      時間

      進度

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

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

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

      (b)

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

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

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

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

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

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

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

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

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

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

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

      解決原始問題

      分解

      集成

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

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

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

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

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

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

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

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

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

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

      解決方案:化9元9角9分錢買999克魚肉,化10元錢買1克熊掌肉,可做一道“熊掌戲魚”菜。剩下的那一分錢還可建立獎勵基金。1.3 一些不正確的觀念

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

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

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

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

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

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

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

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

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

      1.4 一些有爭議的觀念

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

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

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

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

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

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

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

      《狼三則》的故事告訴我們“失敗的技巧通常是技倆”。當(dāng)我們在編程時無法判斷是用了技巧還是用了技倆,那就少用?!顿u油翁》的故事又告訴我們“熟能生巧”,表明技巧是自然而然產(chǎn)生的,而不是賣弄出來的。賣油翁的絕技是可到中央電視臺表演的,而他老人家卻謙虛地說:“沒啥沒啥,用熟了而已”。

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

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

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

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

      結(jié)

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

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

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

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

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

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

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

      2.1 了 解 程 序 員

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

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

      一、誠實

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

      有一名市場營銷員和一名程序員都在新聞發(fā)布會上發(fā)言,將一項新技術(shù)的消息公布于眾。

      市場營銷員說:“這項技術(shù)比電話、晶體管和原子彈三項發(fā)明加起來對世界文明的影響都要大?!?/p>

      程序員說:“這項技術(shù)在有限的領(lǐng)域內(nèi),在有限的程度上,解決了一些技術(shù)性的問題?!?/p>

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

      二、簡單——實用主義

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

      數(shù)學(xué)家回答說:“有六個面,因為盒子是長方體?!?/p>

      物理學(xué)家回答說:“有12個面,分為6個外表面和6個內(nèi)表面?!?/p>

      程序員回答說:“只有兩個面,里面放電路板和硬盤,外面放顯示器和鍵盤。”

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

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

      三、愛憎分明

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

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

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

      大師回答說:“餓了的時候就吃,困的時候就睡,只要時機恰當(dāng)就進行程序設(shè)計?!?/p>

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

      我編程三日

      兩耳不聞人聲

      只有硬盤在歌唱

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

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

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

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

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

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

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

      每個程序員骨子里頭都有一股傲氣,如果你不能技壓群雄,他們就不會聽你指揮。一個技術(shù)水平較差的人被任命為程序經(jīng)理真是個悲劇,就象一個略有權(quán)勢的太監(jiān),表面上有人對他點頭哈腰,背后卻被人鄙視。

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

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

      三、有人格魅力

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

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

      結(jié)論:一個有活力的軟件公司的各級經(jīng)理都不會這樣感嘆,“因為我啥也不會干,所以只好當(dāng)領(lǐng)導(dǎo)?!?2.3 程序員升為經(jīng)理后是否還要編程

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

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

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

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

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

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

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

      第二篇:軟件工程的思想

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

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

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

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

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

      項目計劃與質(zhì)量管理

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

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

      3.1 項 目 計 劃

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

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

      3.1.1 知己知彼

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

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

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

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

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

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

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

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

      第三篇:軟件工程

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      3.軟件工程的基本原理 5.力爭降低模塊接口的復(fù)雜程度 邊界值分析是通過選擇等價類邊界的測

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      7.綜合測試:通過各種類型的測試使軟件2.表格工具

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

      8.軟件維護:通過各種必要的維護活動使4.jackson方法

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      確定問題是否能夠解決。補充:

      補充: 軟件測試步驟 :

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

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

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

      4.進一步定義問題黑盒測試

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

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

      7.草擬開發(fā)計劃2對程序接口進行測試,檢查程序功能是

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

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

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

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

      它用圖形符號來表示系統(tǒng)中的各個部件。整性

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

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

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

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

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

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

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

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

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

      第四篇:《軟件工程》

      《軟件工程》課程分析

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

      一、課程分析

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

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

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

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

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

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

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

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

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

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

      二、存在的問題與希望

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

      第五篇:軟件工程

      軟件工程

      1.談?wù)勀銓浖ぞ叩睦斫?,你用過什么軟件工具

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

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

      軟件工具分為六類:模擬工具、開發(fā)工具、測試和評估工具、運行和維護工具、性能質(zhì)量工具和程序設(shè)計支持工具。

      應(yīng)該是看對象來選擇測試工具!比如:

      功能測試工具:WinRunner

      性能測試工具:LoadRunner

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

      單元測試工具:Junit

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

      2.什么是軟件的可維護性:

      軟件可維護性即維護人員對該軟件進行維護的難易程度,具體包括理解、改正、改動和改進該軟件的難易程度。

      決定可維護性的因素:

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

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

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

      可維護性的度量:

      可理解性

      可測試性

      可修改性

      可移植性

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

      需求分析

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

      設(shè)計

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

      編碼

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

      測試

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

      維護

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

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

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

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

      對于低耦合,(模塊的獨立性)

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

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

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

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

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

      CASE工具帶來的好處

      計算機專業(yè)人員利用計算機使他們的企業(yè)提高了效率,企業(yè)的各個部門通過使用計算機

      提高了生產(chǎn)率和效率,增強了企業(yè)的競爭力并使之帶來了更多的利潤。

      6.為什么要進行軟件測試?常用的軟件測試的方法有哪些?

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

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

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

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

      2.個人感覺比溝通能力更重要的是,堅持原則,在遇到困難的時候,是不是還能堅持原則,在遇到項目組的種種不理不睬的時候,是不是還能堅持原則,在項目組不按照計劃走的時候,是不是還能堅持原則。

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

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

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

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

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

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

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

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

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

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

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

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

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

      選擇:是對重用對象進行存放,匹配和檢索的功能。

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

      集成:

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

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

      WindowsAPI函數(shù),因為WindowsAPI函數(shù)在Linux下是沒有的,如果想移植到Linux平臺下,使用WindowsAPI函數(shù)的部分代碼就要做出修改了。

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

      文檔為doc格式


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

      相關(guān)范文推薦

        軟件工程

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

        軟件工程

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

        軟件工程

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

        軟件工程

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

        軟件工程

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

        軟件工程練習(xí)題

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

        軟件工程報告

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

        軟件工程課件

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