『壹』 提高軟體質量的決定性因素
決定軟體可維護性的因素,主要有以下幾個方面:
1.系統代碼的質量。例如:軟體的架構、代碼的框架及程序員代碼的規范問題。代碼中結構是否合理,變數命名是否規范,代碼中注釋是否詳細,這些都會影響到系統的維護成本。
2.系統文檔是否完善。例如:概要設計文檔、詳細設計文檔、數據字典、介面文檔等。文檔的有無及詳細程度,這些都直接影響到軟體的維護成本。
3.團隊人員的穩定性。如果團隊的人員流動比較大,新人接手項目,中間有個熟悉原有系統代碼的成本,同時編碼風格的差異,也會造成系統維護成本的變化。於整個飼料加工生產線來說,要想在成品庫中得到混合均勻度達到標准要求的配合飼料,除了必須要配備一台結構和技術參數符合工藝要求,能在較短的時間內獲得滿意的混合均勻度的混合機外,前後工序的合理安排及混合機本身的合理使用均是決定性的因素。
1、物料的充滿系數
不論哪種類型的混合機,適宜的裝料狀況,是混合機能正常工作,並且得到預期的混合效果的前提條件。在分批混合機中,卧式螺帶混合機的充滿系數在0.6~0.8較為適宜,料位最高不能超過轉子頂部平面;分批立式混合機的充滿系數,一般控制在0.8~0.85;單軸或雙軸槳葉高效混合機充滿系數為0.8~1。物料容重>0.6時,按每批混合量計算;物料容重≤0.6時,可按容重范圍。
他們說你高冷,卻沒發現只不過是思想的不同
廣告
2、物料的混合時間
對於連續式混合機不存在這個問題,但對於分批式混合機,確定好混合時間對於混合物料的質量是非常重要的。混合時間過短,物料在混合機中沒有得到充分混合便被卸出,產品的混合質量肯定會受到影響;混合時間過長,物料在混合機中被長時間混合,不但造成能耗增加、產量下降,並且會因為過度混合,造成組分的分離積聚,使混合均勻度反而降低。決定軟體可維護性的因素有:
1)可理解性2)可測試性3)可修改性4)可移植性5)可重用性
應該採取哪些措施:
1)提高可理解性:模塊化·詳細的設計文檔·結構化設計·程序內部的文檔和良好的高級程序設計語言
2)提高可測試性:良好的文檔對於診斷和測試是至關重要的,此外,軟體結構·可用的測試工具和調試工具,以及以前設計的測試過程也都是非常重要的
3)提高可修改性;模塊結構良好,高內聚,低耦合。信息隱藏·局部化·控制域與作用域的關系等也影響軟體的可修改性
4)提高可移植性:把因環境變化而必須修改的程序局限在少數程序模塊中,從而降低修改難度
『貳』 抽象到底是什麼意思我怎麼總是弄不明白誰能具體的解釋一下舉個例子,請不要到百度百科那去復制的。
共同特徵是指那些能把一類事物與他類事物區分開來的特徵,這些具有區分作用的特徵又稱本質特徵。因此抽取事物的共同特徵就是抽取事物的本質特徵,舍棄非本質的特徵。所以抽象的過程也是一個裁剪的過程,將不同的、非本質性的特徵全部裁剪掉了。 所謂的共同特徵,是相對的,是指從某一個刻面看是共同的。比如,對於汽車和大米,從買賣的角度看都是商品,都有價格,這是他們的共同的特徵,而從其他方面來比較是,他們則是不同的。所以在抽象時,同與不同,決定於從什麼角度上來抽象。抽象的角度取決於分析問題的目的。
編輯本段主要目的
抽象化主要是為了使復雜度降低,以得到論域中較簡單的概念,好讓人們能夠控制其過程或以綜觀的角度來了解許多特定的事態。
編輯本段思考過程
在哲學里,「抽象化」是一種將觀念抽離原本客體的思想過程。 抽象化使用了簡單的手法,其將具體的細節保留成含糊、曖昧或無定義的樣子;因此對於抽象事物的有效溝通需要在溝通的發受者之間有著某種直覺或共同的經驗。 由具體事物中所抽離出的抽象事物之描述會有點含糊不清,此種含糊或曖昧即為抽象化的特徵之一。因此,如報紙之簡單的事物有可能可以被分成六個等級,例如道格拉斯·理查·郝夫斯台特在《哥德爾、埃舍爾、巴赫》(1979年)這本書中由抽象至具體排出之對含糊的描述: (1)一個出版品 (2)一份報紙 (3)《舊金山紀事報》 (4)5月18日的《舊金山紀事報》 (5)我的5月18日的《舊金山紀事報》 (6)我首次撿起時的我的5月18日的《舊金山紀事報》(而現在則不是我的了,因為我在幾天後丟進火爐里燒了) 抽象化可以因此以不失其一般性的方式包含著每個細節的層級。而或許一個偵探或一位哲學家/科學家/工程師可以以此來學習某些事實,以對細節漸進加深的方式,來解決一場犯罪或一件拼圖。
編輯本段指稱對象
抽象化有時會有些含糊不清的指稱對象;例如,「快樂」(當做為一個抽象化)可以指涉成能使人快樂的人事物。相同地,「建築」不只指涉著安全、功能性建築的設定,也指涉著創作和創新的元素,其目的是為了解決建造、空間利用及試圖引起建造者、擁有者、觀看者和使用者的情緒反應等問題。
具現化
不存在於任一特定地點和時間的事物通常會被認為是抽象的。相對地,此類抽象事物的例子或元素則可能會存在於許多不同的地點及時間內。此類的抽象事會被稱做是「多重具現」的。 但不必然需要將「抽象」的觀念定義成能具現的觀念,也不必然需要將「抽象化」定義成具現化的相反作用。這樣做會令「貓」和「電話」這些概念因不隨外觀而變而為抽象的觀念,而一個特定的貓或一個特定的電話則會是「貓」或「電話」等概念的一個例子。
物質性
一個物理物件(一個概念或一個字的可能指稱對象)被認為是「具體」的(非抽象的),若它是一個會出現在特定的地點和時間的「特定個體」的話。 抽象的事物有時可以被定義成不存在於現實或只存在於感官經驗上的事物,如紅色。但該定義會有如何決定哪些事是真實的(即哪些事是存在於現實中的)之困難性。例如,很難去決定如「神」、「三號」和「女神」等概念是真實的,還是抽象的,亦或是兩者都有。 解決此類困難的一種方法是將其述語不論事物是一真實的、抽象的、具體的或一特定性質(如「好」)等都將其做為一個一般性的詞彙。有關事物性質的問題故而會是個有關其述語的命題,其中的命題則仍然需要由研究者來判斷真偽。在上面的「圖2」中,如連接著方格和橢圓間箭頭的圖像間之關系可以標示著述語。不同抽象化的等級可以以多層的箭頭依序地連在一起來標記。
編輯本段哲學里的抽象
抽象是哲學的根本特點, 抽象不能脫離具體而獨自存在。 我們所看到的大自然景象就是大自然的實物在我們腦海中的抽象。抽象就是我們對某類事物共性的描述。 具體來說,抽象是指: 1、將復雜物體的一個或幾個特性抽出去,而只注意其他特性的行動或過程(如頭腦只思考樹本身的形狀或只考慮樹葉的顏色,不受它們的大小和形狀的限制)。 2、將幾個有區別的物體的共同性質或特性,形象地抽取出來或孤立地進行考慮的行動或過程。 抽象是認識復雜現象過程中使用的思維工具,即抽出事物本質的共同的特性而暫不考慮它的細節,不考慮其他因素。 軟體工程過程中的每一步部可以看作是對軟體解決方法的抽象層次的一次細化。在進行軟體設計時,抽象與逐步求精、模塊化密切相關,幫助我們定義軟體結構中模塊的實體,由抽象到具體地分析和構造出軟體的層次結構,提高軟體的可理解性。
編輯本段藝術里的抽象
大多數在藝術中一般會將「抽象」當做是抽象畫的同義詞。但它可以是指任何由現實世界中精煉出的物件或圖像,或者是完全無關的其他概念。在最現實的意義之下,抽象畫並不是真的是抽象的。 藝術家羅伯特·斯塔克寫道:「距離放棄了形式的風景畫且改去發覺不具表現主題地將顏料自由地塗在畫紙上之更直接的表現方式,已經過了有十年的時間了,我也發展出了一個新的詞彙;明和暗、暖和冷、making marks、brush-strokes like heart-rhythms。每一天都是一次獨自的作畫能力之測試。每一張畫作都會被不斷地被更改、被重製、被擦掉或被重畫,只要它還留在這個工作室里……」
編輯本段抽象藝術
抽象藝術是與具象藝術相對的名稱,也可稱為非具象藝術。它的特徵是缺乏描繪,用情緒的方法去表現概念和作畫,而這種方法基本上就是屬於表現主義的,最早見於康定斯基的作品。它是由各種反傳統的藝術影響融合而來,特別是由野獸派、立體派演變而來。 「抽象」藝術在畢加索看來並不存在,他認為只不過有人強調風格,有人強調生活罷了。在米歇爾·塞弗爾看來,抽象藝術是:「我把一切不帶任何提醒,不帶任何對於現實的回憶——不管這一現實是否是畫家的出發點——的藝術都叫作抽象藝術。 實際上野獸派和立體派促進了形與色的獨立發展。是康定斯基進一步發現了它的奧妙,他在1910年畫了第一幅斷然抽象的水彩畫,是一幅無具象願望的、充滿活力的重疊色點。康定斯基的創造性發明是從音樂中獲得美學啟迪,爾後捷克人庫普卡直接從音樂中獲取靈感進行抽象藝術創作。人稱他是音樂主義畫家鼻祖,後來他們共同組成抽象派。
編輯本段心理學里的抽象
榮格對抽象化的定義將思考過程擴展至包含四個互斥互補的心理功能:知覺、直覺、感情和思維。它們一起形成一個異化著抽象化過程的總體架構。當抽象化作用在相對立的功能之一時,其會排除到其他功能及如情緒等不相關事物在同一時間內的影響。抽象化需要對心裏面功能的結構分歧做選擇性的運用。抽象化的相對為具體化。
編輯本段程序設計的抽象
抽象(Abstraction)是簡化復雜的現實問題的途徑,它可以為具體問題找到最恰當的類定義,並且可以在最恰當的繼承級別解釋問題。它可以忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是數據抽象。
編輯本段科學中的抽象
概述
「抽象」這個詞拉丁文為abstractio,它的原意是排除、抽出。在自然語言中,很多人把凡是不能被人們的感官所直接把握的東西,也就是通常所說的「看不見,摸不著」的東西,叫做「抽象」;有的則把「抽象」作為孤立、片面、思想內容貧乏空洞的同義詞。這些是「抽象」的引伸和轉義。 在科學研究中,我們把科學抽象理解為單純提取某一特性加以認識的思維活動,科學抽象的直接起點是經驗事實,抽象的過程大體是這樣的:從解答問題出發,通過對各種經驗事實的比較,分析,排除那些無關緊要的因素,提取研究對象的重要特性 (普遍規律與因果關系)加以認識,從而為解答問題提供某種科學定律或一般原理。 在科學研究中,科學抽象的具體程序是千差萬別的,決沒有千篇一律的模式,但是一切科學抽象過程都具有以下的環節。我們把它概括為:分離—提純—簡略。 第一,所謂分離,就是暫時不考慮我們所要研究的對象與其他各個對象之間各式各樣的總體聯系。這是科學抽象的第—個環節。因為任何一種科學研究,都首先需要確定自己所特有的研究對象,而任何一種研究對象就其現實原型而言,它總是處於與其他的事物千絲萬縷的聯系之中,是復雜整體中的一部分。但是任何一項具體的科學研究課題都不可能對現象之間各種各樣的關系都加以考察,所以必須進行分離,而分離就是一種抽象。比如說,要研究落體運動這一種物理現象,揭示其規律,就首先必須撇開其他現象,如化學現象、生物現象以及其他形式的物理現象等等,而把落體運動這一種特定的物理現象從現象總體中抽取出來。 把研究對象分離出來;它的實質就是從學科的研究領域出發,從探索某一種規律性出發,撇開研究對象同客觀現實的整體聯系,這是進入抽象過程的第一步。 第二,所謂提純,就是在思想中排除那些模糊基本過程、掩蓋普遍規律的干擾因素,從而使我們能在純粹的狀態下對研究對象進行考察。大家知道,實際存在的具體現象總是復雜的,有多方面的因素錯綜交織在一起,綜合地起著作用。如果不進行合理的純化,就難以揭示事物的基本性質和運動規律。馬克思說:「物理學家是在自然過程表現得最確實、最少受干擾的地方考察自然過程的,或者,如有可能,是在保證過程以其純粹形態進行的條件下從事實驗的。」(《馬克思思格斯選集》第2卷,第206頁)這里,馬克思所說的是藉助於某種物質手段將自然過程加以純化。由於物質技術條件的局限性,有時不採用物質手段去排除那些干擾因素,這就需要藉助於思想抽象做到這一點。伽利略本人對落體運動的研究就是如此。 大家知道,在地球大氣層的自然狀態下,自由落體運動規律的表現受著空氣阻力因素的干擾。人們直觀到的現象是重物比輕物先落地。正是由於這一點,使人們長期以來認識不清落體運動的規律。古希臘偉大學者亞里士多德作出了重物體比輕物體墜落較快的錯誤結論。要排除空氣阻力因素的干擾,也就是要創造一個真空環境,考察真空中的自由落體是遵循什麼樣的規律運動的。在伽利略時代,人們還無法用物質手段創設真空環境來從事落體實驗。伽利略就依靠思維的抽象力,在思想上撇開空氣阻力的因素)設想在純粹形態下的落體運動,從而得出了自由落體定律,推翻了亞里士多德的錯誤結論。 在純粹狀態下對物體的性質及其規律進行考察,這是抽象過程的關鍵性的一個環節。 第三,所謂簡略,就是對純態研究的結果所必須進行的一種處理,或者說是對研究結果的一種表述方式。它是抽象過程的最後一個環節。在科學研究過程中,對復雜問題作純態的考察,這本身就是一種簡化。另外,對於考察結果的表達也有一個簡略的問題。不論是對於考察結果的定性表述還是定量表述,都只能簡略地反映客觀現實,也就是說,它必然要撇開那些非本質的因素,這樣才能把握事物的基本性質和它的規律。所以,簡略也是一種抽象,是抽象過程的一個必要環節。比如說,伽利略所發現的自由落體定律就可以簡略地用一個公式來表示: S=1/2gt2 這里,「S」表示物體在真空中的墜落距離;「t」表示墜落的時間,「g」表示重力加速度常數,它等於981厘米/秒2。伽利略的落體定律刻劃的是真空中的自由落體的運動規律,但是,一般所說的落體運動是由地球大氣層的自然狀態下進行的,因此要把握自然狀態下的落體運動的規律表現,不能不考慮到空氣阻力因素的影響,所以,相對於實際情況來說,伽利略的落體定律是—種抽象的簡略的認識。任一種科學抽象莫不如此。 綜上所述,分離、提純、簡略是抽象過程的基本環節,也可以說是抽象的方式與方法。 抽象作為一種科學方法,在古代、近代和現代被人們廣泛應用。誠然,嚴格意義的經驗科學在古代尚未形成,那時人們關於自然界的知識包溶在渾然一體的自然哲學之中,並且帶有樸素、直觀的特點,但是,這決不意味著當時的自然哲學家們是不應用抽象方法的。例如,古希臘米利都的留基伯和阿不地拉的德謨克利特,他們相信宇宙間萬物都是原子組成的,而原子是不可分的物質。宇宙間有無數的原子,並在一個無限的虛空中永遠運動著。它們既不能創造出來,又不能毀滅掉。應當肯定,留基伯和德謨克利特關於原子的認識,在二千多年前,確是了不起的抽象成果。 在近代,科學抽象法得到更自覺的應用,並對這種方法作出理論上的考察。英國的弗蘭西斯·培根是近代實驗科學的始祖。他所論述的歸納法其中就包含著科學抽象的方法。培根在《新工具》一書中說: 「我們必須不用火而用人心,來把自然完全分解開,分離開,因為人心亦就是火底一種。在發現形式方面講,真正歸納法底第一步是應該先排除了一些性質,因為有一些性質,往往不存在於所與性質存在的例證內,或存在於所與性質不存在的例證內;有時所與性質雖減, 它們卻增,所與性質雖增,它們卻減。因此,在適當地排斥了,拒絕了那些性質以後,一切輕浮的意見便煙消雲散,所余的只有肯定,堅固,真實,分明的形式。」(《新工具》,商務印書館,1936年版,第185頁) 培根所說的「人心」,就是人的思維能力,在他看來,我們必須用人的思維能力「把自然完全分解開,分離開開」,排除那些不相乾的性質,從而揭示現象的因果性和規律性。培根以探索熱現象為例,應用排除法,在排除了所有不相乾的性質以後,發現「熱是某種性質底一個特殊情況,那種性質就是所謂運動」。((新工具》,商務印書館,1936年版,第l86-190頁) 培根所說的排除法,歸納法中巳包含著抽象的方法。但是,科學抽象法並不局限於培根講的排除法、歸納法。 隨著科學的發展,抽象方法的應用也越來越深入,科學抽象的層次則越來越高。如果說與直觀、常識相一致的抽象為初級的科學抽象,那麼與直觀、常識相背離的抽象可以稱之為高層次的科學抽象。日本物理學家湯川秀樹根據對物理學史的考察,指出了物理學的抽象化發展這一規律性。 「如果我們考察物理學史,我們都知道在近三、四百年內曾發生過兩次大革命。第一次革命當然是由伽利略發起的和由牛頓完成的十七世紀革命。第二次革命則在將近十九世紀末發端於這樣一些偉大的事件——X射線、放射性和電子的發現。這第二次革命有兩次高潮:一次是在二十世紀初導致了普朗克和波爾的量子理論以及愛因斯坦的相對論,第二次是發生在本世紀二十年代量子力學建立之時。……」;結果就是導致了物理學的理論概念背離直覺(直觀)和常識。換言之,在從二十世紀初開始的物理學發展過程中,一種抽象化的傾向已經變得引人注目了。當抽象的數學概念是邏輯一致的,而且它們的結論符合於實驗時,即使它們與我們的直觀世界圖象相矛盾,物理學家們也不得不接受它們。」(湯川秀樹《科學思維中的直覺和抽象》,譯文載《哲學譯叢》1982年第2期第17—18頁) 在科學發現過程中,抽象方法起著什麼樣的作用,對於這個問題,歷史上存在過兩種對立的意見,一種意見認為科學發現靠的就是抽象法,科學發現的過程就是從經驗事實中抽出最初的基本概念,然後一層一層地往上抽象,構成金字塔形的科學體系。這是古典歸納主義者的觀點。如弗蘭西斯·培根就持這種觀點。他說:「尋求和發現真理的道路只有兩條,也只能有兩條。……感覺與特殊事物把公理引伸出來,然後不斷地逐漸上升,最後達到最普遍的公理。這是真正的道路」。(《十六——十八世紀西歐各國哲學》,商務印書館,1962年版;第10頁) 與此相反,另一種意見認為抽象法並非科學發現的方法。如愛因斯坦就持這種觀點。他在論述科學體系的層次問題時指出,「抽象法或者歸納法理論的信徒也許會把我們的各個層次叫做『抽象的程度』,但是我不認為這是合理的,因為它掩蓋了概念對於感覺經驗的邏輯獨立性」。(《愛因斯坦文集》,第1卷,商務印書館,1977年版,第34頁)在愛因斯坦看來,與經驗層次最接近的理論命題不是從經驗層次抽象得來,而是從更高層次的理論命題中推導出來的;最高層次的理論命題則是思維自由創造的產物。 科學活動的事實告訴我們,科學發現的過程是多種方法綜合運用的過程。因此不能把抽象法的作用和其他方法的作用,包括直覺的作用在內,互相對立起來。抽象法離開其他各種方法,是不可能孤立地作出科學發現的。 古典歸納主義者認為依靠抽象法就能從經驗事實中找出事物的規律性,形成科學理論,這種觀點是不符合科學發現過程的實際情況的。那麼,是不是說抽象法在科學發現過程中是毫無用處的呢?完全抹煞抽象法的作用,也是不妥當的。 抽象法在科學發現中是一種不可少的方法。人們之所以需要應用抽象法,其客觀的依據就在於自然界現象的復雜性和事物規律的隱蔽性。假如說自然界的現象十分單純,事物的規律是一目瞭然的,那倒是不必要應用抽象法,不僅抽象法成為不必要,就是整個科學也是多餘的了。但是,實際情祝並非如此。科學的任務就在於透過錯綜復雜的現象,排除假象的迷霧,揭開大自然的奧秘,科學地解釋各種事實。為此就需要撇開和排除那些偶然的因素,把普遍的聯系抽取出來。這就是抽象的過程。不管是什麼樣的規律,什麼樣的因果聯系,人們要發現它們,總是需要應用抽象法的。抽象法也同其他的各種科學思維的方法一樣,對於科 學發現來說,起著一種助發現的作用。
抽象的類型和合理性原則
抽象的類型和合理性原則 在科學研究中,抽象的具體形式是多種多樣的。如果以抽象的內容是事物所表現的特徵還是普遍性的定律作為標准加以區分,那麼,抽象大致可分為表徵性抽象和原理性抽象兩大類。
表徵性抽象
所謂表徵性抽象是以可觀察的事物現象為直接起點的一種初始抽象,它是對物體所表現出來的特徵的抽象。例如,物體的「形狀」、「重量」、「顏色」、「溫度」、「波長」等等,這些關於物體的物理性質的抽象,所概括的就是物體的一些表面特徵。這種抽象就屬於表徵性的抽象。 表徵性抽象同生動直觀是有區別的。生動直觀所把握的是事物的個性,是特定的「這一個」,如「部分浸入水中的那支筷子,看起來是彎的」,這里的筷子就是特定的「這一個」,「看起來是彎的」是那支筷子的表面特徵。而表徵性抽象卻不然,它概括的雖是事物的某些表面特徵,但是卻屬於一種抽象概括的認識,因為它撇開了事物的個性,它所把握的是事物的共性。比如古代人認為,「兩足直立」是人的一種特性,對這種特性的隊識已經是一種抽象,因為它所反映的不是這一個人或那一個人的個性,而是作為所有人的一種共性。但是,「兩足直立」對於人來說,畢竟是一種表面的特徵。所以,「兩足直立」作為一種抽象,可以說是一種典型的表徵性抽象。 表徵性抽象同生動直觀又是有聯系的。因為表徵性抽象所反映的是事物的表面特徵;所以,一般來說,表徵性抽象總是直接來自一種可觀察的現象,是同經驗事實比較接近的一種抽象。比如說「波長」,雖然我們憑感官無法直接把握它,但是,藉助於特定的儀器,就可以把握到波長的某種表徵圖象。所以,「波長」也是一種具有可感性的表徵性抽象。又如,「磁力線」的抽象也是如此。大家知道,磁力線本身是「看不見、摸不著』的,但是,如果我們把鐵屑放在磁場的范圍內,鐵屑的分布就會呈現出磁力線的表徵圖象,所以,在這個意義上說「磁力線」也是來自一種可觀察的表徵性抽象。
原理性抽象
所謂原理性抽象,是在表徵性抽象基礎上形成的一種深層抽象,它所把握的是事物的因果性和規律性的聯系。這種抽象的成果就是定律、原理。例如,杠桿原理、落體定律、牛頓的運動定律和萬有引力定律,光的反射和折射定律、化學元素周期律、生物體遺傳因子的分離定律、能的轉化和守恆定律、愛因斯坦的相對性運動原理等等,都屬於這種原理性抽象。 當我們考察原理性抽象的特點時,如下兩點是值得注意的: 第一,原理性抽象不同於表徵性抽象,它所抽取的不是事物的外露的表面特徵,而是事物內在的規律性聯系。比如說,「靜止」、「運動」、「直線」,「等距」等等,可以說是表徵性抽象,它們表徵著物體的一種狀態,而「每個物體繼續保持其靜止或沿一直線作等速運動的狀態,除非有力加於其上迫使它改變這種狀態」([美]H·S.塞耶編《牛頓自然哲學著作選》,上海人民出版社,1974年版第28頁),就可以說是一種原理性抽象,它抽取的是物體運動的一種規律性。正因為原理性抽象抽取的不是外露的表面特鉦,所以它同表徵性抽象相比,更遠離了經驗事實,但又是更探刻的認識,它認識到自然界的內部秘密。 第二,在科學發展的常規時期,原理性抽象的實現是以已有的理論作為指導,抽象的結果——定律、原理,與已有的理論之間的關系是相容的關系,或者說不推翻已有理論的框架,而在科學發展的革命時期,反常的原理性抽象的實現,不僅不依賴於原有理論的指導,而且與原有理論相違背。因此,反常的原理性抽象的實現必須突破已有理論的框架范圍。比如說,經典力學作為一種背景知識,對於預測宏觀低速運動的物體的運動狀態,把握其運動規律,曾經是十分有效的。但是,一旦進入了微觀領域,面臨的是高速運動的微觀物體,如果仍以經典力學為指導,並且在它的理論框架基礎上進行抽象活動,那就不僅不能有效地揭示諸如光、電現象這種高速運動的微觀客體的運動規律,而且反而會阻礙對這方面規律性的發現,所以,必須突破舊有理論的束縛,才能實現反常的原理性抽象,愛因斯坦建立相對論是極有說服力的一個例子。如果不突破牛頓力學的絕對時空觀,那麼就不可能建立相對論。
編輯本段科學抽象應當注意原則
上面我們一般地考察了科學抽象的類型問題,那麼,怎樣才能合理地、有效地進行科學抽象呢?科學抽象應當注意以下的原則:
科學抽象的東西必須是具有普遍性的東西
個別的、表面的東西是偶然的東西,要進行抽象,當然不能完全脫離這些個別的、表面的、偶然的東西,但是抽象的目的並不是去抽取那些個別的、偶然的東西,抽象的目的是在於從個別的經驗事實中抽出普遍性的東西,只有這樣才有意義,才能進一步去認識事物的規律性。當然,普遍性不一定是規律性,但是不普遍的東西不可能是規律性的東西。所以,什麼東西需要抽象,什麼東西不需要抽象,從定性的觀點來看,應當抽象出普遍性的東西。比如從對空氣的觀察和實驗的一系列事實中,抽象地認識存在於體積、溫度以及壓力之間的普遍關系,並進行定量的描述,這樣也就發現了氣體定律。
高層抽象必須能演繹出低層抽象
自然界事物及其規律是多層次的系統,與此相應,科學抽象也是一個多層次的系統。在科學抽象的不同層次中,有低層的抽象,也有高層的抽象。在科學發現中,相對於解釋性的理論原理來說,描述性的經驗定律可以說是低層抽象,而解釋性的理論原理就可以說是高層抽象。 必須指出,我們把科學抽象區分為低層抽象和高層抽象,是相對而言的。理論抽象本身也是多層次的。比如說,牛頓的運動定律和萬有引力定律相對於開普勒的行星運動三大定律來說,是高層抽象,因為我們通過牛頓三大運動定律和萬有引力定律的結合,就能從理論上推導出開普勒由觀測總結得到的行星運動三大定律。 如果高層抽象不能演繹出低層抽象,那就表明這種抽象並未真正發現了更普遍的定律和原理。一切普遍性較高的定律和原理,都能演繹出普遍性較低的定律和原理。一切低層的定律和原理都是高層的定律和原理的特例。如果一個研究者從事更高層的抽象,其結果無法演繹出低層抽象,那就意味著他所作的高層抽象是無效的,不合理的,應予糾正。
總結
抽象思維法是指在感性認識基礎上運用概念、判斷、推理等方式透過現象,抽取研究對象本質的理性思維法。具體地說,科學抽象就是人們在實踐的基礎上,對於豐富的感性材料通過「去粗取精、去偽存真、由此及彼、由表及裡」的加工製作,形成概念、判斷、推理等思維形式,以反映事物的本質和規律。 科學抽象是由三個階段和兩次飛躍構成的辯證思維過程。第一個階段是感性的具體,即通過感官把事物的信息在大腦中形成表象。第二階段是從感性到抽象的規定,也是第一次飛躍。這個階段是將事物的表象進行分解、加工、分析和研究,最終形成反映事物不同側面的各種本質屬性。第三階段是從抽象的規定上升到思維的具體,這是科學抽象的第二次飛躍。它是將事物的各種抽象規定在思維中加以綜合、完整地重現出來,形成對事物內在本質的綜合性的認識。
『叄』 誰知道如何提高軟體質量
【摘要】 軟體質量是軟體產品的靈魂。本文全面介紹了質量的概念,提出了從流程、技術、組織管理、人員技能發展等多個角度提高軟體質量的重要性;並對目前國際上流行的 CMM 標准進行了介紹,提出了使用 PSP 和 TSP 來實現 CMM 的方法。本文最後還給出了中小型軟體公司在提高軟體質量方面的一個初步思路。【關鍵字】 質量管理,軟體開發過程模型,軟體分析和設計方法,軟體測試, CMM 如何提高軟體的質量已經不是一個純粹的技術問題,而是一個工程的問題。自從計算機誕生以來,相應的軟體開發就存在了。由於早期的計算機運行性能較低,軟體的可編程范圍也較狹窄,因此質量問題就沒有那麼突出。 50 年代後期到 60 年代,高級語言的相繼誕生並得到了廣泛的應用,隨之而來的是軟體規模也越來越龐大,越來越復雜。伴隨著軟體應用的越來越廣泛,軟體的質量問題就變得越來越突出。根據美國國家宇航局 NASA 的統計,在 80 年代初,軟體引起的故障與硬體引起的故障,其比率約為 1.1:1.0 ,到了 80 年代末,這一比率已達到 2.5:1.0 。因此如何提高軟體的質量成為軟體工程研究的一個重點。自從軟體危機產生以來,出現了很多提高產品質量的理論和方法,有的從技術角度出發,例如:面向對象技術的產生和推廣,第四代語言的誕生等等;有的從自動化工具入手,例如: CASE 工具、過程式控制制軟體、自動化管理平台等;有的從過程模型角度出發,例如:迭代模型、螺旋模型、 RUP 、 IPD 、凈室軟體工程等;也有從管理角度出發的,例如:團隊管理、績效管理、 PSP 、 TSP 等;也有從測試角度出發的,例如:加強全流程的測試等;一些相應的規范和標准也孕育而生,例如: ISO9000 系列、 CMM 、 QMS 等。然而每一種技術都不是絕對的,軟體質量的提高應該是一個綜合的因素,需要從每個方面進行改進,同時還需要兼顧成本和進度。一、什麼是質量? 作為軟體產品的銷售人員,市場人員或維護人員經常會受到客戶這樣那樣的指責或抱怨,客戶說:你們產品的質量太差,不穩定等等。那麼什麼是質量呢?我們該如何來衡量質量呢?質量具有三個維度:" 符合目標。目標是客戶所定義的,符合目標即判斷我們是不是在做需要做的事情。" 符合需求。即產品是不是在做讓它做的事情。" 符合實際需求。實際的需求包括用戶明確說明的和隱含的需求。ISO 關於質量的定義表示如下:「 一個實體(產品或服務)的所有特性,基於這些特性可以滿足明顯的或隱含的需要。 」 注意,在這個定義中包含明顯的需求和隱含的需求。而往往我們會忽略隱含的需求。因此在控制一個產品的質量的過程中必須關注這些隱含的需求,並給予應有的驗證。 另一方面因為我們的產品是為客戶提供服務的,因此凡是不滿足客戶需求的,我們都認為是一個失效( failure )。所以我們的產品必須始終圍繞著客戶的需求進行開發和驗證。 這里我們談到客戶,其實在一個軟體的需求收集過程中需要關注客戶和用戶。而我們經常會忽略客戶與用戶之間的區別。那麼誰是客戶?誰是用戶呢?簡單的來說, 客戶是真正能夠決定是否購買你軟體的人,而用戶是實際使用軟體的人。了解了這個區別,對於你在分析需求的重要性的時候就可以進行參考。同時在產品質量驗證 的時候也可以做出不同的權衡。另一方面我們在考慮我們用戶需求的時候,往往只考慮了實際使用軟體的人員,而忽略了其它一些人員對軟體的要求或對軟體造成的 潛在競爭,這包括維護人員的要求、系統管理人員的要求、軟體上下遊人員的要求、先前版本的情況、市場上競爭對手的軟體情況等。 每個人提到質量的時候,經常會遇到下列矛盾,在這些矛盾中隱含著對質量的承諾【 5 】:" 質量需要一個承諾,尤其是高層管理者的承諾。但為了得到質量,高層管理者必須和其僱用的員工進行緊密合作;" 許多人相信沒有缺陷的產品和服務是不可能的。但是控制在一定級別的缺陷數是正常並可接受的;" 質量經常是和成本緊密聯系在一起,一個高質量的產品同時也意味著高投入。這是設計的質量和一致性質量的一個矛盾;" 一個高的質量要求需求規格說明書足夠詳細,以便產品可以根據這些規格說明書進行定量的分析。然而許多組織沒有能力或者不願意產生如此詳細程度的規格說明書;" 技術人員經常相信規范和標准會束縛他們的創造力,因此就不遵照標准做事。然而如果要得到高質量的產品,就必須遵循良好定義的標准和過程。二、流程對質量的貢獻 好了,既然已經了解了什麼是質量,那麼怎麼才能改進軟體產品的質量呢?從一個企業的長遠發展來看,首先應當從流程抓起,規范軟體產品的開發過程。這是一個 軟體企業從小作坊的生產方式向集成化、規范化的大公司邁進的必經之路,也是從根本上解決質量問題,提高工作效率的一個關鍵手段。 軟體產品的開發同其它產品(如汽車)的生產有著共同特性,即需要按一定的過程來進行生產。在工業界,流水線生產方式被證明是一種高效且能夠比較穩定地保證 產品質量的一種方式。通過這種方式,不同的人員被安排在流程的不同位置,最終為著一個目標共同努力,這樣可以防止人員工作間的內耗,極大的提高工作效率。 並且由於其過程來源於成功的實例,因此其最終的產品質量能夠滿足過程所設定的范圍要求。軟體工程在軟體的發展過程中吸取了這個經驗並把它應用到了軟體開發 中,這就形成了軟體工程過程,簡單的說就是開發流程。 無論做什麼事情,都有一個循序漸進的過程,從計劃到策略再到實現。軟體流程就是按照這種思維來定義開發過程,它根據不同的產品特點和以往的成功經驗,定義 了從需求到最終產品交付的一整套流程。流程告訴我們該怎麼一步一步去實現產品,可能會有那些風險,如何去避免風險等等。由於流程來源於成功的經驗,因此, 按照流程進行開發可以使得我們少走彎路,並有效的提高產品質量,提高用戶的滿意度。 目前流行的流程方法有很多種,不同的過程模型適合於不同類型的項目。瀑布模型是應用的最為廣泛的一種模型,也是最容易理解和掌握的模型,然而它的缺陷也是 顯而易見的。遺漏的需求或者不斷變更的需求會使得該模型無所適從。然而,對於那些容易理解但很復雜的項目,採用瀑布模型會是比較適合的,因為你可以按部就 班的去處理復雜的問題。在質量要求高於成本和進度要求的時候,該模型表現的尤其突出。螺旋模型是也是一個經典模型,它關注於發現和降低項目的風險【 8 】。螺旋型項目從小的規模開始,然後探測風險,制定風險控制計劃,接著確定下一步項目是否還要繼續,然後進行下一個螺旋的反復。該模型的最大優點就是隨著成本的增加,風險程度隨之降低。然而螺旋模型的缺點是比較復雜,且需要管理人員有責任心,專注以及有管理方面經驗。RUP ( Rational Unified Process )是 Rational 公司提出的一套開發過程模型,它是一個面向對象軟體工程的通用業務流程【 9 】。它描述了一系列相關的軟體工程流程,它們具有相同的結構,即相同的流程構架。 RUP 為在開發組織中分配任務和職責提供了一種規范方法,其目標是確保在可預計的時間安排和預算內開發出滿足最終用戶需求的高品質的軟體。 RUP 具有兩個軸,一個是時間軸,這是動態的。另一個是工作流軸,這是靜態的。在時間軸上, RUP 劃分了四個階段:初始階段、細化階段、構造階段和發布階段。每個階段都使用了迭代的概念。在工作流軸上, RUP 設計了六個核心工作流程和三個核心支撐工作流程,核心工作流軸包括:業務建模工作流、需求工作流、分析設計工作流、實現工作流、測試工作流和發布工作流。核心支撐工作流包括:環境工作流、項目管理工作流和配置與變更管理工作流。具體可以參考圖 1 。 RUP 匯集現代軟體開發中多方面的最佳經驗,並為適應各種項目及組織的需要提供了靈活的形式。作為一個商業模型,它具有非常詳細的過程指導和模板。但是同樣由於該模型比較復雜,因此在模型的掌握上需要花費比較大的成本。尤其對項目管理者提出了比較高的要求。圖1 RUP 工作流程示意圖IPD ( Integrated Proct Development )流程是由 IBM 提出來的一套集成產品開發流程,非常適合於復雜的大型開發項目,尤其涉及到軟硬體結合的項目。 IPD 從整個產品角度出發,流程綜合考慮了從系統工程、研發(硬體、軟體、結構工業設計、測試、資料開發等)、製造、財務到市場、采購、技術支援等所有流程。是 一個端到端的流程。在 IPD 流程中總共劃分了六個階段(概念階段、計劃階段、開發階段、驗證階段、發布階段和生命周期階段),四個個決策評審點(概念階段決策評審點、計劃階段決策評 審點、可獲得性決策評審點和生命周期終止決策評審點)以及六個技術評審點,具體可以參考圖 2 。 IPD 流程是一個階段性模型,具有瀑布模型的影子。該模型通過使用全面而又復雜的流程來把一個龐大而又復雜的系統進行分解並降低風險。一定程度上,該模型是通過 流程成本來提高整個產品的質量並獲得市場的佔有。由於該流程沒有定義如何進行流程回退的機制,因此對於需求經常變動的項目該流程就顯得不大適合了。並且對 於一些小的項目,也不是非常適合使用該流程。圖2 IPD 流程示意圖三、流程與技術 流程和成功不是等價的。沒有流程就成功是不可能得到保證,但有了流程並不意味著肯定能夠成功。這恐怕是很多迷信於流程的人所不能接受的。但這的確是個事實。記得有個做了將近 30 多年的需求分析專家說過:即使是一個已經達到 CMM4 級的公司,也完全有可能做不好需求分析。為什麼?技術,技術是成功的另外一個必要條件。就好比現在你要從上海到北京去,流程給你指出了最短的路徑,技術提供給你最快的交通工具。兩者結合就是完美。 對於軟體開發來說,要保證軟體的質量,需要掌握多方面的技術,包括分析技術、設計技術、編碼技術和測試技術等等。在國內有一個普遍的非正常現象,就是大家 覺得只有編程能力才是玩電腦的真正技能。就好像造一套房子,其它都不重要,只要磚瓦匠有高超的技能就行了。盡管這個比喻會打擊很多程序員的自尊心,但這的 確是一個事實。我們缺少系統級的工程師,在分析和設計方面的工作做得很不扎實。需求是一個項目的靈魂。模稜兩可的需求帶來不可避免的後果便是返工 —— 重做一些你認為已做好的事情。返工會耗費開發總費用的 4 0 % ,而 7 0 % ~ 8 5 % 的重做是由於需求方面的錯誤所導致的( l e ff i n g w e l l1 9 9 7 )【 10 】。想像一下如果你能減少一半的返工會是怎樣的情況?你能更快地開發出產品,在同樣的時間內開發更多、更好的產品,甚至能偶爾回家休息休息。在《軟體需求》一書中關於如何進行需求分析給出了比較詳細的介紹【 7 】, RUP 中關於需求的指導也是很實用的。 設計是最能體現一個工程師能力和水平的環節。一個好的設計基本上決定了產品的最終質量。設計是把需求轉換成系統的一個關鍵步驟,它需要從自然語言描述的需求中尋找出設計的基礎單元,構建出整個系統的構架。在 RUP 中關於系統構架師和設計師的定位是相當高的。關於設計方面的技能涉及面是很廣的,包括傳統的結構化設計到面向對象設計。設計人員需要掌握一定的建模技術。 UML 是國際上比較流行的一種建模語言【 11 】。在嵌入式方面, SDL 也是一種非常好的選擇。《設計模式》是在設計思想方面總結的非常出色的一本書【 6 】,作為一名設計人員(尤其是面向對象設計人員)必須要好好研究一下。但是對這些模式的應用應當講究一種自然的應用,千萬不要因為模式而去設計模式,否則會適得其反。 現在的程序員熱中於掌握多種編程語言,或者講究語言的過分技巧化,而往往忽略了編程語言的規范化。不規范的語言應用給程序的可理解性、可維護性以及可測試 性帶來了大的傷害,進而損害了產品的質量。某公司曾對中國程序員和印度程序員做過一個測驗,這個測驗要求參加者對一組數進行排序。測試結果發現,印度程序 員設計的程序使用的演算法並不是最優,但卻是最不容易出錯的,並且幾個程序員寫出來的代碼如出一轍。而幾個中國程序員寫出的代碼,有的非常漂亮,很精練,效 率很高;有的卻很冗雜,還有錯誤。如果大家是在做研究性的項目或純粹興趣性的項目,那麼充分發揮自己的編程天才也無可厚非。然而,對於一個軟體公司,產品 最終是要交給用戶的,需要遵循的是一個軟體產品的開發工程。因此這類軟體的開發需要遵循一定的編程規范,畢竟開發的軟體不是自己用,還需要和別人的集成, 還需要給以後版本重用和維護。 測試的技術將在第五節進行闡述。總之流程很關鍵,技術也很重要,我的觀點是:魚和熊掌,兩者都不能放。