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

高質量軟件模塊開發總結(最終5篇)

時間:2019-05-13 19:30:12下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《高質量軟件模塊開發總結》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《高質量軟件模塊開發總結》。

第一篇:高質量軟件模塊開發總結

當開始進行模塊開發時,系統負責人會給模塊開發負責人描述模塊功能與要求,但是此時模塊功能與需求一般是比較粗線條和不完備的,例如很多細粒度異常情況處理需求一般系統負責人可能會考慮不到。

模塊負責人通過詳細設計完成:細化和確定模塊的功能(包括異常處理需求)、識別關鍵問題和實現策略與流程、以及主要靜態類和線程結構設計等。

詳細設計完成并通過評審之后,模塊負責人根據詳細設計指導,進行編碼并實現模塊。

需要指出的是即使詳細設計,但一般只是初步設計了主要的類和線程結構,以及一些比較大方面的異常情況處理。雖然可能不同的人完成的詳細設計的細致粒度存在差別,即使是設計比較細致的詳細設計一般不能到達可以直接根據詳細設計自動生成代碼的粒度,當然個人認為類和線程結構等實現方面的設計也沒有必要太過細致,要把握好度,不要太過也不要不夠。因此即使在編碼和實現階段其實也存在大量的設計工作,此時設計的粒度較為細致,一般是類級別的詳細設計和編碼實現(包括詳細劃分和確認類的功能規格說明書,并實現類的功能)。

雖然個人認為在詳細設計階段類和線程結構等實現方面的設計不必要太過細致,但是對模塊功能規格(包括異常處理需求)的確認和細化一定要盡可能細致和想全。對關鍵問題和實現策略也一定要盡可能的細致和想全。對實現方面的類和線程結構設計能夠想細還是細的為好,即盡量想細一點為好。所謂“謀定而后動”,只有先設計好了,想好了后面才能少出錯。

根據上面論述,我們可以得出不管是詳細設計還是編碼實現都包括兩個階段工作:首先確認和細化功能規格,然后是實現功能規格。對詳細設計而言是確認和細化模塊的功能規格,并初步設計如何實現模塊功能。對編碼實現而言是確認和細化各個類的功能規格,然后實現各個類功能,最終實現模塊功能。

而導致模塊質量不高的主要原因是整個開發過程,沒有明確地區分“確認和細化功能規格”和“實現功能規格”兩個階段,很多開發者的開發過程是兩個過程混在一起,整個過程屬于沒有明確方向和不斷變化的狀態,惡果是導致很多例外情況沒有考慮到并進行妥當處理,最終導致大量BUG的出現。具體表現如下:

??詳細設計時,模塊功能需求確認不夠細致,甚至是一直到編碼實現階段都是處于模糊狀態,導致很多情況沒有想到。例如各個對外提供接口的功能細節,特別是在一些異常情況下的返回值細節或者響應細節都不是很明確。

??詳細設計時,不仔細考慮會存在哪些異常情況,以及設計相應異常處理措施,導致在設計階段很多異常根本沒有考慮。??詳細設計時,不識別模塊實現中關鍵問題,導致很多關鍵實現策略要到編碼時才確定,但是由于編碼時一般思維焦點是當前類,導致確定實現策略時缺乏全局考慮,同時加上還要考慮如何實現,因此會導致采用不是最優的或者是錯誤的實現策略。??詳細設計時,類、類狀態變化、線程結構設計等考慮太粗。由于詳細設計時能不考慮具體實現,會忽略一些細節,這樣更能集中精力從整體和全局來考慮一些關鍵的實現策略和以及類和線程結構設計。而實現階段一般更加關注細節,但只關注當前類細節和局部細節,因此詳細設計時類、類狀態變化、線程結構設計等考慮太粗會導致這些問題遺留到開發階段,使得整個編碼過程混亂,最終很多例外情況想不到。至少要保證詳細設計完成后,模塊開發者能在自己大腦里面把模塊跑起來。

??編碼實現階段,還沒有制定清楚每個類、類方法的詳細功能規格說明(即要處理哪些情況,異常情況下如何處理等)的情況下,就開始編碼實現。明確區分兩個階段的好處是每次大腦只需要集中精力考慮一個方面問題,這樣大腦考慮問題會比較輕松,使得問題能夠容易想全,出現紕漏的概率要小一些。

1詳細設計過程明確劃分為兩個階段

第一個階段是明確模塊的需求,能夠以詳細的功能規格說明書的方式,明確模塊的功能需求,重點考慮模塊要處理哪些例外和異常情況,盡自己最大努力把情況想全。

例如對本模塊對外提供的接口要詳細寫清楚,各種輸入參數情況下的行為是什么,以及返回什么值。對本模塊要調用的外部接口,要寫明白本模塊要求的響應是什么,以及調用失敗情況下的處理策略等。

此階段同時要描述清楚本模塊運行環境包括:與周圍模塊交互描述、對內存以及磁盤的要求等對外圍環境的需求、模塊部署方式(多機并發部署、還是單節點運行)等。注意此時只集中精力考慮需求,不要考慮如何實現。

第二階段是設計中的實現階段。此階段要求必須包括有:關鍵問題與實現策略、主要靜態類圖設計和說明(主要類、主要方法說明)、線程結構說明(包含哪幾類線程、每類線程個數、每類線程職責、每類線程會訪問到的類和對象等,如果比較復雜則要說清楚為什么這些設計,設計目標是解決什么問題)、在線程結構基礎上描述互斥策略以及線程間關系等、主要的處理活動圖(個人推薦更多使用泳道圖,能更直觀看到對象之間的職責劃分和交互過程)。如果類對象的狀態比較多,則建議采用狀態機圖的方式描述清楚,并通過審查狀態機變化來檢查是否有情況沒有處理。

2編碼階段建議采用三個步驟

??先想清楚,并寫出類和每個方法詳細功能規格說明(可以先把類名和方法名寫好,然后以注釋的方式把類的職責、關鍵實現策略、以及每個方法的功能規格說明<重點是例外和異常情況的處理與返回值>)。??根據規格說明中列舉情況,寫出相應測試代碼。??編寫實現代碼,并通過測試。?編寫模塊功能規格說明書,重構代碼?經過編碼階段之后,模塊功能已經非常明確了,此時應該細致、清楚地編寫模塊功能規格說明書。原因如下:

1)模塊功能規格說明中描述的功能會比詳細設計中更為細致和清楚。另外經過編碼階段,此時模塊實現的功能可能與詳細設計時考慮的模塊功能在細節方面可能會有些變化。項目描述本模塊的功能說明,可以方便自己和其他人日后進行系統維護工作。

2)通過編寫該功能規格說明可以彌補詳細設計萬一考慮不細情況下,一些例外和異常情況是否處沒有處理或者處理不周到。由于在詳細設計階段,設計出模塊的類和對象構成以及運行機制還是有一些模糊,因此很可能存在某些例外、特別分布式情況下某些狀態組合沒有考慮到的情況發生。但是在編碼階段,由于一般只會關注當前類和當前的方法的實現,因此考慮問題一般比較局部。為此在完成整個模塊編碼后,所有細節都已經明確(特別是在寫代碼過程中會發現存在一些新的異常情況需要處理<詳細設計時沒考慮到>),此時必須再一次從整體來考慮模塊運行起來后在處理邏輯是否有缺陷,這樣能更早發現以前設計中缺陷,避免上線后才發現缺陷。此時重點考慮是否還有情況沒有考慮到或者某些處理不到位。

很多BUG難以發現和定位原因是在不同類和對象之間的發生交互和聯系后,組合排列后的情況非常多,從而想不到某些組合。這種BUG只有從整體考慮、考慮不同類和對象之間交互關聯后才可能想到。模塊詳細設計指南與規范

模塊詳細設計要完成兩個方面工作:一是明確模塊的功能需求和非功能需求、二是設計如何完成和實現模塊的功能需求,包括類結構、線程結構設計等。本節根據后臺模塊特點,描述了兩部分工作需要考慮和設計的關鍵點。

3.1確定模塊的功能規格

1)本模塊概述

概述主要描述了本模塊所屬子系統,以及在子系統中所承當職責的簡單描述。2)本模塊在系統中與周圍模塊關系和交互情況 很多模塊一般要依賴周圍的模塊或者數據庫,為此建議以圖形方式描述本模塊與本模塊依賴的其他模塊或者數據庫之間交互情況。交互方式主要包括: 基于接口調用的交互、基于數據流的交互,直接訪問數據庫。

基于接口交互要描述:接口實現方式(ICE、WCF等)、接口調用目的、以及什么時候調用等。

基于數據流交互要描述:傳輸數據類型,傳輸方式等。對數據庫或者存儲要描述:需要訪問的數據庫名稱、表格名稱以及表格存儲數據含義、訪問數據庫中表格的目的等。

3)本模塊部署角色以及對基礎軟硬件要求 描述本模塊將要部署的角色、部署模式、對操作系統要求、對基礎軟件要求、對硬盤要求、對內存要求等。

部署模式主要考慮是分布式多機部署、還是只會單實例部署。操作主要考慮需要對操作系統版本的要求。

基礎軟件主要包括:jdk版本要求、需要安裝其他基礎軟件以及版本等。對硬盤要求:是否需要臨時存儲、大概需要多大(盡量能不用存儲就不用)。對內存要求:大概需要多大內存等。4)本模塊所處理數據的數據格式描述

對數據預處理模塊,描述本模塊對待處理數據的格式的假定和要求。5)本模塊調用接口描述

詳細描述清楚需要調用接口:接口名字、參數類型、參數單位、接口功能、接口執行時間要求(超時處理)、分片傳輸(消息大小限制導致分片傳輸需求)。接口功能部分重點要描述清楚異常情況下接口返回值和應該執行操作,例如調用的接口是否會返回NULL等。

6)本模塊功能性需求描述

以功能點方式詳細描述本模塊功能。

如果是涉及對外提供接口的,明確描述:接口名字、參數類型、參數單位、各種輸入參數下預期行為和返回值、接口應該滿足執行時間要求。

7)例外與異常情況下描述與處理要求

詳細考慮本模塊第2)、3)、4)、5)中所描述本模塊依賴的外部環境不滿足本模塊要求情況下的處理方式。

3.2設計與實現部分

1)關鍵問題與策略

只要有一點復雜或者難度模塊的設計工作都會存在幾個有難度或者關鍵問題去解決,這些關鍵問題的解決方案好壞決定了整個模塊實現質量。一般而言這些關鍵問題解決方案會有多種,并且有好有壞,且會存在較大爭議。相反一般非關鍵點設計就比較沒有異議。關鍵問題與策略是開展設計評審的重點。模塊設計評審就是審查兩點:是否存在有些關鍵問題沒考慮到、二是每個關鍵問題的解決方案是否是最優的。因此要求模塊設計人員,在確認了功能規格后,第一件事就是要考慮本模塊設計中存在哪些關鍵問題,然后再思考對應解決方案。在確定了所有影響比較大的關鍵問題的解決方案之后,剩余的類結構設計和線程設計等就會比較順利。

此部分要求設計人員要反復問自己:一是否所有值得斟酌的問題都想到了、二目前設計的策略是否是最好的(好的策略一般是簡單策略),要敢于否定自己已經設計好的策略。

衡量優秀實現策略的標準是:“用最簡單方式滿足最重要需求”。后臺設計過程中要避免的事情是:不要為了某個不常用、但是聽起來很美好的功能點導致設計很復雜。有時候為了模塊運行簡單和穩定,寧肯不要太完美。特別是很多時候很多需求是矛盾和有沖突的,作為設計人員一定要能識別哪些是主要需求,哪些是次要需求。

例如某全文檢索檢索模塊,第一版本為提高檢索性能,設計了檢索結果緩存功能。但是實際使用過程中發現緩存命中概率很低,而這個功能導致整個模塊設計復雜很多。

2)靜態類結構設計 類結構設計,主要設計出本模塊主要類以及類之間的關系,并利用類圖的方式表達出來。

在靜態類結構設計中,除類圖外,還需要對各個類的職責分工,以及類中主要的方法要進行描述。另外要仔細考慮哪些類是主動類。

在靜態類結構設計好壞,主要取決與設計人員面向對象設計的能力。要求設計人員考慮以下幾個方面:

??是否可以采用現成的設計模式。

??是否違反了面向對象的幾個原則:單一職責原則、開放封閉原則、替換原則、依賴倒置原則、接口隔離原則。

為了提高自己此方面設計能力,希望大家多看一些面向對象設計方面的書,以及一些經典優秀開源軟件的結構,能真正領會設計模式和面向對象的幾個原則的精髓,并能指導自己模塊類結構設計。

另外如果感覺自己負責多個模塊存在重復部分,例如感覺可能幾個模塊大的處理步驟基本相同,只是在處理細節上不同,則可以考慮將其中相同部分抽出來設計成一個具備一定通用性的框架或者共用代碼,并貢獻出來。

3)線程結構與同步互斥策略設計 后臺模塊一般會涉及多線程的處理,因此線程結構設計是后臺組模塊設計經常會遇到的問題。

??線程結構設計必須描述以下幾個部分: ??包括那幾類線程以及每類線程的職責

??每類線程的個數

??每類線程的啟動和停止時間

??線程間的協作關系:消費者-生成者關系、同步互斥、共享變量等。為了清楚描述和思考同步互斥問題,建議采用圖的方式劃出每類線程與每類線程會訪問到公共對象,這樣就能很直觀識別出需要保護的對象,然后在詳細設計和描述同步互斥策略。

線程結構設計基本經驗是: ??盡量減少線程間的交互。例如有三類線程,本來可能需要每類之間都要交互,則可以考慮以以某類線程作為樞紐,其他兩類線程都和該線程交互,而其他兩類線程之間不交互。

??同步互斥在后臺性能不是很重要情況下,可以考慮加鎖的粒度粗一點。例如多個線程都要從一個隊列取任務,并執行任務,且修改任務狀態,則可以每次都鎖整個隊列,包括修改隊列中某個任務的狀態也變成隊列類中的一個被同步保護的方法,而不是直接調用任務類的修改狀態的方法。??被同步互斥保護代碼禁止有訪問數據庫、訪問文件、調用遠程接口等操作,必須都是只訪問本地內存的操作,確保不會長期被鎖住。被同步互斥保護代碼只應該是“控制”代碼而不能是“干活”的代碼。

4)主要執行流程

描述本模塊所需要處理的主要業務事件對應的處理過程。建議多采用泳道圖來表示,好處是能直觀的看到各類在該業務處理過程中的職責,方便設計人員對類的職責進行調整。

5)模塊配置項設計

模塊配置項設計主要為提高模塊通用性,減少模塊修改,讓設計人員多考慮將很多參數作為配置而不要寫死。

對于配置項考慮:

??哪些配置項是全局配置、哪些配置項只是本模塊需要讀的。??哪些配置項和建設方案有關、哪些配置項和建設方案無關。對全局配置項和與建設方案有關的配置項,應該放入到系統配置中去。方便系統部署時,可以實現設備安裝與建設方案無關,實現設備安裝程序標準化。

3.3與應用運維相關的考慮

為了與即將實現的應用運維系統進行對接。每個模塊在設計時要考慮兩個方面問題:一是如何從模塊外面對模塊運行狀態進行監控,以及判斷模塊是否正常運行的標準是什么;二是如果是因為外部環境無法滿足本模塊要求,則在日志里面表達清楚。代碼編程指南與過程規范

強烈建議采用測試驅動的模式來完成代碼編程。測試驅動開發中編寫測試代碼目的是利用測試代碼來描述和確認類的功能規格,然后編寫實現代碼來實現測試代碼規定的功能規格并利用測試來驗證編寫的代碼確實是符合事先設計好的功能規格。

根據前面的闡述,在詳細設計時是不可能把每個類設計的很細,也就是每個類很細致的功能規格是沒有設計好的。此部分工作是留在代碼編寫階段來完成的,即在代碼編寫階段包括:類功能規格設計和實現。

大部分開發者在編碼時其實是在一邊在編碼實現、一邊在確定類和方法的功能規格,并且會不斷的調整(有時候會因為突然想到一種以前沒考慮到的情況沒處理、有時候是為了代碼實現簡單等等)。此時由于大部分精力是在考慮實現,并且是局部的實現,很容易導致某些需要全局考慮的一些例外或者異常情況沒有考慮到,從而出現BUG。通過測試驅動模式可以強制大家把第二部分所講的兩個階段區分開。

4.1代碼編寫建議采取以下步驟

??寫代碼前,先站在使用者角度考慮清楚將要實現的類功能規格。類分為高層類和低層類(例如數據庫連接池代碼,數據庫連接池類屬于高層類、數據庫連接類屬于低層類)。一般情況下會出現一個高層類和多個低層類組成一個內聚的包。在這種情況下,可以先寫出整個包或者高層類的功能職責,然后逐步下低層的,也可以先寫低層再寫上層,具體過程看大家自己。因此不管怎么樣,都會出現類職責調整的情況發生。??編寫類名和類中間的方法,但是不實現。

??以注釋方式,描述類的職責、本類一些關鍵或者復雜的策略(方便別人能讀懂你的代碼)、本類需要處理的情況(要求從設計上,每個類職責要單一,否則這里就會寫的很復雜)。??以注釋方式,詳細描述public方法功能規格,特別是各種異常和例外情況下的處理方式(此時還沒有私有方法,類的職責是通過public方法來體現的)。

??根據上述注釋,以類為單位編寫測試代碼。??實現各個方法,并通過測試。

4.2對于編寫測試代碼的建議如下??必須先寫測試代碼

??盡可能的去寫測試代碼

??要以類的使用者角度來編寫測試代碼。

??針對類的功能點來寫測試代碼,而不是針對方法

不要采取為每個Public方法編寫一個測試方法的模式來編寫測試方法。每個測試方法應該測試的是該類需要處理的某一種情況。因為類的一個功能點可能要涉及多個Public方法。

類似軟件測試每個測試用例,都對應一個測試點一樣。每個測試方法其實都是測試類的一個功能點。

例如:一個隊列類,有pop和push兩個public 方法。則不要寫兩個測試代碼:一個是testPop,一個是testPush。

而是要站在使用者角度來考慮隊列類的功能規格: 1)如果隊列為空,則彈出空對象。2)隊列應該保證先進后出。3)如果隊列滿,則Push失敗。

然后針對以上三種情況,分別對應寫出三個測試函數。模塊功能說明編寫規范5.1編寫模塊功能說明的目的??編寫完整個模塊后,從模塊整體思考和檢查所實現的模塊是否符合設計要求,以及在相應細節處理方面是否存在BUG,或者不合理的情況。??方便開發人員和維護人員日后的維護

5.2功能說明內容及規范

編寫功能說明時,由開發人員站在使用者角度來描述和重新審查模塊

1、模塊部署環境和與周圍模塊交互情況描述

??以圖方式描述本模塊與周圍模塊的交互情況,以及部署方式。??本模塊調用的外部接口描述。

??本模塊對基礎環境要求:內存、網絡、磁盤等。

2、模塊配置說明

??配置文件設計理由,那些固定不變的,哪些是應對業務變化。??仔細描述各個配置文件的含義

??說明如何通過配置來對應業務變化

3、模塊功能說明

詳細描述本模塊的功能點。對每個功能點,一般描述以下幾個方面: ??功能名

??與該功能相關的配置文件中的配置項 ??處理流程 ??故障處理

??可能存在的問題。

例如: ??功能N:按比例刪除老數據 ??相關參數

STORE_POLICY :各數據類型的存儲比例

PARTITION_MIN_FREESIZE_GB:每個分區應該保留的剩余空間 DELETE_INTERVAL_MINUTE:老數據覆蓋的觸發間隔。

??處理流程

1)判斷是否所有磁盤分區的數據塊都被掃描,如果存在退出 2)判斷是否獲取了所有磁盤分區的總空間TotalSpace,如果存在某個分區因故障無法獲取,則退出。

3)針對本小組內每種數據類型執行下列步驟

4)根據塊信息計算出本數據類型所有數據塊的總大小UsedSpace 5)UsedSpace <(TotalSpace– 磁盤個數* minFreeSpace)* storagePer則退出類型處理

6)計算UsedSpace-(TotalSpace – 磁盤個數* minFreeSpace)* storagePer得到需要刪除空間needDelSize。

7)依次刪除登記表中本類型最老數據塊,直到刪除塊總大小大于needDelSize,或者刪除干凈。

??故障處理

1.被刪除數據塊不存在:刪除邏輯直接返回刪除成功。

2.被刪除數據塊刪除失敗(遠程代理通訊失敗、該分區目前不能訪問、被占用無法訪問等):將該數據塊加入到“刪除失敗數據塊列表”,定期重試。

3.磁盤分區故障: 導致從來沒有成功獲取過總空間,會導致所屬小組會覆蓋停止工作,導致沒有成功掃過數據塊,會導致所屬小組覆蓋停止工作。

4.MASTER重起,會導致“刪除失敗數據塊列表”被清空,不過MASTER重起會掃描到所有數據塊,并重新刪除。

??可能存在問題

1)實際數據塊分布與MASTER記錄不一致,導致錯誤刪除老數據。例如有人手工刪除了一塊比較新數據。

2)有些刪除失敗數據塊,會導致實際剩余空間不夠。

4、模塊故障診斷說明

模塊故障診斷用于當開發人員不在時,維護人員可以根據此部分初步判斷出模塊工作不正常時的原因。

由于一般模塊出問題,開發人員去維護,一般都是先檢查是否是本模塊依賴的其他模塊或者環境不正常,如果本模塊所依賴的環境和模塊都正常,那么可能是本模塊的問題。診斷說明里要描述所有的檢查步驟。可以依次寫出所有的檢查步驟,每個檢查步驟包括:

??檢查方法:如何檢查(檢查日志中的異常輸出、檢查基礎環境)??異常原因:XXX硬件故障、XXX軟件故障、XXX模塊異常

第二篇:軟件開發心得總結

有感于網盤開發過程

有感于網盤開發過程..............................................................................................................................1

一、軟件開發個人體會:.................................................................................................................2

二、做軟件開發我覺得要明白:.....................................................................................................2

三、在開發中遇到問題應該怎么去解決?......................................................................................2

四、怎么樣才能提高自身的能力?..................................................................................................2

五、怎么樣才能做好軟件開發?.....................................................................................................2

六、文檔的重要性.............................................................................................................................3

七、我的收獲.....................................................................................................................................3

八、網盤項目開發的最大體會.........................................................................................................4

九、軟件測試(單體測試和連接測試)..........................................................................................4

常熟理工學院SIG小組

3/28/2013

一、軟件開發個人體會:

1.軟件領域中的知識在于積累。

2.做軟件開發,就類似算數學題和世界杯足球賽一樣:重在結果,而不在乎過程。3.軟件服務于人類,軟件是在解決一些生活中的問題和錯誤,問題決定解決方案。

二、做軟件開發我覺得要明白:

1.職業的樂趣:

(A)用自己的智慧去創建新事物的快樂(B)開發對別人有用的東西(C)不斷學習來充實自己 2.職業的苦惱:(A)總是追求完美

(B)所有要實現的功能由他人而定

(C)概念設計計是有趣的,但找Bug總是很苦惱的

三、在開發中遇到問題應該怎么去解決?

1.2.3.4.不明白就多問,不要自已一直去琢磨。

一個問題如果30分鐘還沒有解決就應該考慮是不是問問別人。一個問題在沒有用過3種以上的方法解決過就不要去問別人。解決問題思路是關鍵:

相信問題總歸有解決的辦法,就算連技術上都沒法實現的問題,相信通過良好的溝通終究也會有解決的方法。

5.解決問題的前提是:理解別人的意思,理解別人的需求,多溝通,及時給客戶反饋信息。

四、怎么樣才能提高自身的能力?

1.程序員怎么樣進步最快? - 理論結合實踐

2.不要怕出錯,不怕遇到錯誤,有錯誤就有挑戰,這樣才可以進步,但不要讓同一個石頭把你絆倒2次。

五、怎么樣才能做好軟件開發?

1.首先要明白解決的問題是什么,理解問題,其次再決定怎么解決這個問題 2.碰到很復雜的問題,我們就簡單想,把問題簡單化,細化到能夠實現為止

常熟理工學院SIG小組

3/28/2013

3.出了問題,我們要先分析問題,然后知道引起問題的原因,最后并想出問題的解決辦法 4.我們應該從2個方面去把握一個項目:從業務角度和項目的關鍵問題上去把握一個項目

(A)從不同的系統場景

(B)從不同的用戶角色(充當什么角色)(C)從不同的系統使用角度(擁有那些權限)

5.其實我覺得開發人員說實在應該要比使用系統的人更了解系統需求,只有真正徹底的了解了項目的業務需求,我們才能做真的做好這個項目

六、文檔的重要性

記得我當初剛開發項目的時候都是寫個大致的需求說明書,做一個E-R圖,畫幾個大致的數據流程圖,然后建立數據字典和表結構關系。再接著搭建一個開發環境,配置幾臺服務器,劃分一下模塊,分工,我們就可以Coding了,一直到項目結束了,也沒有完整的設計文檔,更沒有完整的測試文檔,雖然這樣的確是很快的完成了Coding工作,感覺上好像節省了好多成本和開發時間,但后期的維護和Bug 就是經常出現的事。

小項目沒有文檔關系不大,但如果遇到一個大項目的時候,那這樣的開發方式就很有問題很危險的。

大項目沒有文檔: 首先維護就很麻煩,也很亂,寫的代碼,過幾天都不知道它是完成什么功能的了,其次系統的穩定性和可靠性也讓人懷疑,擴展性就不用說了。

七、我的收獲

A.程序員大多都不喜歡寫文檔,我們以前也是特討厭,記得以前都是系統開發完了,為了應付項目驗收,就匆匆忙忙的一組人在那里補文檔。在我們的思想里,所謂的文檔就是一些廢話,一句話硬是用十句話來代替的無聊透頂。B.代碼風格要規范

以前做項目,我們都是不怎么去注意代碼風格和寫代碼的規范,都是稍微想一下就直接開始寫代碼了。注釋也很少用,總感覺我們自己寫的代碼,我們怎么會不知道它做了些什么事呢 ?總覺得我們自己寫的代碼我們怎么會不知道它是用來做什么的呢。一直都不相信這是個事實,但事實上,項目驗收后,系統剛開始使用的人少,也就不會出現潛在的錯誤,隨著時間的增加,久而久之,當大量用戶并發訪問的時候,系統的Bug 就暴漏出來了,那時你再用熟悉的Eclipse打開整個項目的源碼時,再去看自己寫的代碼的時候,真的發現,我們定義的這個變量名是什么意思啊 ? 我們的這個Flag 是用來判斷什么的啊 ?我們的if()中條件不知道是判斷什么? Function()也忘記是什么功能了? 想想好可怕啊。難道真的都忘記了嗎 ?回答是肯定的: 真的忘了。C.心得體會: 通過做該網盤項目,在這2年的鍛煉中,我們才真的體會到,良好的文檔是正規研發流程中非常重要的環節,一個好的程序是先寫好設計文檔再進行編程的,在設計文檔的指導下,才能寫出安全的代碼。如果你不寫文檔,一開始就寫程序,這樣你就不會按已設計好的路線走,而是想到哪寫到哪。小功能還好說,要是大功能,就容易混亂.常熟理工學院SIG小組

3/28/2013

剛開始我們還很不習慣這一系列的編程風格,很多的規范,尤其是命名,方法和注釋,都有這著很多限制,讓我們覺得真羅唆,寫個程序完成功能不就可以了嗎,明明1小時做完的事情非得讓人用3、4個小時去做,我們現在真的明白這樣做的好處了,我們已經習慣這樣的編程風格了,這也養成了我們的一個編程習慣了,深有體會啊。

最忙的時候就是我們成長和收獲最多的時候。

八、網盤項目開發的最大體會

我們覺得項目開發的開始時候,應該由項目負責人很好的對項目是什么項目,具體大概做什么事情,是誰提出來的,目的是解決什么問題,以及里面用到的很多專有名詞做個細致的說明,而不是從一開始就分幾本式樣書,給個靜態Html 的Demo看看,然后搭建好開發環境就按照式樣設計書來開發。

九、軟件測試(單體測試和連接測試)

我們首先認為,編寫程序的時候不要想出了問題再解決,而是要想如何不會出現問題,要根據經驗來預測可能出現的問題,然后避免出現。

測試,說的直接點就是給軟件找錯誤。

很多人認為發現錯誤是軟件測試的唯一目的,查找不出錯誤的測試就是沒有價值的測試,實際上我們不這么認為。

我們覺得對開發人員來說,我們要把測試出來的Bug都應該做個分析,知道錯的原因之后,我們就應該在下個項目中防止類似的錯誤發生,而真正來提高我們開發的效率。

常熟理工學院SIG小組

3/28/2013

第三篇:648軟件開發總結

內部

648軟件開發介紹

一 DM648介紹

DM648屬于TI達芬奇系列,采用單核C64X+定點CPU,支持最高頻率1.1GHz,有兩個乘法器支持四個16bits*16bits(結果32bits)單個clock cycle或者八個8bits*8bits(結果16bits)單個clock cycle。還有6個ALU。

648的片上存儲器有L1P(32KB),L1D(32KB),L2(512KB)648集成了五個視頻口VPORT,省去FPGA做FIFO,可以節省產品成本。

648集成了豐富的外設,包括edma(64個通道),SPI,I2C,UART,EMIF,DDR2,Ethernet,gpio(32個),McASP,PCI。

二 搭建軟件開發環境 2.1操作系統環境

Win7 32位或win-XP環境 2.2軟件安裝和配置

需準備的安裝軟件 Ccs3.3

bios3.08 648dvsdk perl Bios是TI針對DSP開發的實時嵌入式操作系統。

Dvsdk是基于BIOS系統的視頻開發包。Perl是腳本工具,燒寫程序時將out文件轉換為ais文件。

建議所有軟件安裝到默認目錄下,安裝完后

配置操作系統環境變量

修改BIOS_INSTALL_DIR變量為 C:/CCStudio_v3.3/bios_5_31_08 配置CCS的組件管理器,如圖2-1

點“開始->所有程序->TI->component manager,修改Target Content(DSP/BIOS)->TMS320C64XX為當前版本的DSP/BIOS

圖 2-1 2.3 DVSDK目錄文件介紹

默認安裝到C:dvsdk_1_11_00_00_DM648目錄下,其中

edma3_lld_1_05_00是edma3驅動包

examples 包含很多基于BIOS的示例應用工程,我們參考video_preview示例程序作為框架,添加圖像處理算法和通訊驅動。flashutil 包含flash燒寫工程norwriter,bootloader程序ubl,ais文件生成腳本

ndk_1_92_00_22_eval 網絡開發軟件包 pspdrivers_1_10_00 包含了TI提供的很多基于BIOS系統的驅動,我們參考其中VPORT的驅動,將按幀采集修改為按場采集的功能 xdc_2_95_02 xdc工具安裝路徑,xdc是ccs的子工具,是一個javascript編譯工具,用于編譯cfg文件,cfg文件在后面講。如圖2-2安裝XDC后,會在工程的編譯選項界面增加XDC選項。

圖2-2 2.4仿真器

TDS560USB PLUS

在CCS setup界面選擇TDS560USB PLUS platform和C64x+ family的DM648。如圖2-3.圖2-3 三 VPORT+EDMA工作原理 3.1 VPORT介紹

DM648集成了五個VPORT口,用于視頻輸入輸出,每個VPORT可以配置為capture或display模式。Capture模式又分為雙通道8bit BT656,單通道16 bit Y/C模式。Display模式又分為單通道8bit BT656, 單通道16 bit Y/C模式。

目前,capture和display模式都采用8bit BT656子模式,PAL視頻編碼芯片和解碼芯片也設置為BT656模式。3.2 BT656標準簡介

BT656標準將4:2:2格式YCbCr數據統一封裝在一個數據流中,按照CbYCrY順序排列,Y的數據數量是Cb,Cr的2倍。

BT656數據流中,ffh和00h保留用于時序標示。在視頻數據每行的開頭和結尾有標示SAV(start of video),EAV(end of video)。SAV和EAV的格式是ffh,00h,00h,XYh,前三個字節固定,第四個字節包含場標示,場消隱狀態和行消隱狀態,如圖3-1。

圖3-1 3.3 VPORT FIFO 每個VPORT有一個FIFO存儲進入的數據或者從FIFO輸出。

BT656 capture模式中,FIFO分成A、B兩個通道,如圖3-2,A通道接收VDIN[9-2]管腳的數據,B通道接收VDIN[19-12]管腳的數據。每個通道又分Y,Cb,Cr三個緩存,每個緩存區有獨立的讀寄存器。

圖3-2 BT656 display模式中,如圖3-3,只有一路輸出,FIFO分為Y,Cb,Cr三個緩存區,每個緩存區有獨立的寫寄存器。

圖3-3 VPORT和EDMA配合在FIFO和外部或片上存儲器之間移數。我們可以編程FIFO的閾值寄存器,當FIFO達到設置滿度(fullness)(對于捕獲模式)或者低于設置滿度(對于顯示模式)時,生成EDMA事件,觸發相應EDMA通道移數。

每個VPORT對應6個EDMA事件,分別是

VPxYEVTA,VPxCbEVTA,VPxCrEVTA,VPxYEVTB,VPxCbEVTB,VPxCrEVTB 例如,我們用VP0口的A通道做為BT656視頻輸入,VP1口做為BT656視頻輸出。

設置VP0口A通道Y,Cb,Cr三個緩存區的閾值為720,360,360。當PAL圖像數據傳輸完一行后,三個緩存區都達到閾值,生成VP0YEVTA,VP0CbEVTA,VP0CrEVTA三個事件,觸發對應的三個EDMA通道將三個FIFO緩存區的一行圖像數據移入DDR2緩存區。

設置VP1口Y,Cb,Cr三個緩存區的閾值為720,360,360。當三個緩存區數據數量低于閾值時,生成VP1YEVTA,VP1CbEVTA,VP1CrEVTA三個事件,觸發對應的三個EDMA通道將DDR2緩存區的一行圖像數據移入三個FIFO緩存區。

四 應用程序及驅動解析

4.1兩個重要文件

基于BIOS/DSP系統開發軟件,有兩個重要工程文件tcf和cfg文件,如圖4-1中紅圈1和2。

圖4-1

tcf文件包含了DSP/BIOS的配置信息。紅圈3的global settings設置DSP工作頻率,L1,L2 cache size,大小端,L2 cache 128kB。Memory section設置程序和數據各部分在存儲器中的段地址。

紅圈4 HWI(hardware interrupt)處,添加硬件中斷處理函數

紅圈5 添加BIOS/DSP的線程

cfg文件包含了庫鏈接路徑信息,使用javascript語言,如圖紅圈6。使用XDC工具編譯cfg文件,生成庫鏈接信息,供C編譯器鏈接庫時使用。cfg文件常鏈接的庫有vport驅動,edma驅動程序。

4.2圖像緩存分配和管理

Edma在VPORT和SDRAM之間搬數,CPU要訪問SDRAM最新的圖像數據,程序采用多個圖像緩存區循環的方式將這兩個過程并行化。

應用層創建捕獲或顯示通道時,調用驅動層程序在DDR2分配存放圖像數據的緩存區。分配之前,驅動根據通道的配置參數計算每個緩存區的大小。

例如,vp0按場采集,vp1按幀顯示。Vp0的每個緩存區的大小是720*288*2,vp1的每個緩存區的大小是720*576*2。

應用程序使用FVID_dequeue()出隊函數和FVID_queue()入隊函數或FVID_exchange()交換函數,在應用程序和驅動程序之間交換圖像緩存區。

捕獲和顯示驅動的緩存管理方法不同,如下面兩圖4-2和4-3:

圖中藍塊表示應用程序的圖像緩存區,白塊表示驅動程序的圖像緩存區。

圖像捕獲緩存區,初始時所有的緩存區都在捕獲隊列里,捕獲驅動程序以循環的方式填充每個緩存區。

當應用程序調用FVID_dequeue()函數時,將放有最新圖像數據的緩存區出隊并返回給應用程序,驅動在余下的隊列里循環填充,如(a)到(b)和(b)到(e)。

當應用程序調用FVID_queue()函數時,將一個空的緩存區交給驅動程序并加入隊列,如圖(b)到(a)和(e)到(b)。

當應用程序調用FVID_exchange()函數時,應用程序交給驅動一個空的緩存區,驅動交給應用程序放有最新圖像的緩存區,相當于同時調用FVID_dequeue()和FVID_queue()兩個函數,如圖(b)到(c)和(c)到(d)。

圖4-2

圖像顯示緩存區,初始時只有一個緩沖區用于顯示,其它緩存區等待出隊,如圖(a),黃塊表示顯示驅動隊列里準備出隊的緩存區。顯示驅動程序重復顯示一個緩存區的圖像。

當應用程序調用FVID_dequeue()函數時,從驅動獲得一個緩存區,應用程序向它填充顯示數據,同時驅動仍然顯示之前的緩存區,如圖(b)和(d)。當應用程序調用FVID_queue()函數時,應用程序給驅動程序一個準備顯示的緩存區,同時驅動將它設置為當前的緩存區,如圖(b)到(c)到(d)。

當應用程序調用FVID_exchange()函數時,應用程序給驅動一個準備顯示的緩存區,從驅動得到一個空的緩存區,相當于同時調用FVID_dequeue()和FVID_queue()函數,如圖(d)到(e)。

圖4-3

4.3 應用程序框架介紹

基于dvsdk_install_dir/example目錄下的video_preview示例程序,做為項目軟件框架

應用程序主要包含三部分:

Main函數

Video_preview線程

自添加的中斷處理函數

許多實時DSP應用都需要同時執行很多不相關的功能,這些功能一般是對外部事件的響應,這些功能就加線程。

DSP/BIOS支持4種線程:

(1)硬件中斷(HWI):頻率可達200KHz(5us)(2)軟件中斷(SWI):SWI允許HWI將一些非關鍵處理在低優先級上延遲執行,這樣可以減少在中斷服務程序中的駐留時間。

(3)任務(TSK):任務與中斷不同點在于,任務在執行過程中可以被掛起。

(4)后臺線程(IDL):空閑循環,運行那些沒有執行時間限制的函數。

上電加載完操作系統內核后,首先執行main函數。

Main函數執行完后,啟動video_preview線程,線程生命期直到執行結束后。此線程主要功能有圖像采集,處理,字符疊加,顯示。

Video_preview線程第一步調用FVID_create()函數為vp0口創建捕獲通道對象capChan,初始化vp0寄存器,為vp1口創建顯示通道對象disChan,初始化vp1寄存器。

第二步調用FVID_allocBuffer()為capChan和disChan分別分配三個圖像緩存區,然后調用FVID_queue()將三個緩存區組成隊列,同時為capChan和disChan分配edma通道,設置edma參數表。

第三步調用FVID_control()函數使能vp0,vp1口,vp0開始捕獲,vp1開始輸出顯示。

第四步調用FVID_dequeue()從capChan和disChan的緩存隊列中各出一個緩存。

第五步 進入while(1)循環,在循環中執行兩次FVID_exchange()。FVID_exchange(capChan,pImg1)捕獲新的一場圖像數據,FVID_exchange(disChan,pImg)顯示新的一幀圖像。捕獲兩次,顯示一次。

FVID_exchange(capChan,pImg1)后面添加圖像處理算法和疊加字符。

4.4添加圖像處理算法

在FVID_exchange(capChan,img)函數捕獲圖像后添加圖像處理算法。為了減少CPU訪問圖像數據時間,將圖像數據和訪問頻率高的中間數組放在L2 RAM里。DM648 L2的大小512KB,其中128KB用于cache,剩余384KB可用于應用程序存放圖像數據。

4.5 VPORT驅動調試方法

VPORT驅動采用BIOS的兩層驅動模型class/mini-driver,BIOS現在抽象定義了三種class驅動,PIP/PIO,SIO/DIO,GIO,應用程序通過這三類BIOS API接口與mini driver通訊,在一個應用工程中可以同時使用這三種API 接口。

Mini層通過CSL層訪問外圍硬件的寄存器,存儲器,中斷資源,如圖4-6。

圖4-6 Video_preview應用工程中使用了BIOS GIO接口API,如圖4-7是GIO和mini diver層包含的API,FVID函數是GIO API的宏定義,如下:

#define FVID_create(name, mode, status, optArgs, attrs)

GIO_create(name, mode, status, optArgs, attrs)#define FVID_exchange(gioChan, bufp)

GIO_submit(gioChan, FVID_EXCHANGE, bufp, NULL, NULL)#define FVID_control(gioChan, cmd, args)

GIO_control(gioChan, cmd, args)

圖4-7 VPORT的mini driver層實現工程vport_bios_dm648_drv_lib.pjt在dvsdk_install_dir/pspdriver目錄下,將其設置為video_preview_PAL.pjt的依賴工程(Dependent Projects),如圖4-8,這樣應用工程重新編譯之后就可以同時調試應用工程

和mini driver層。

圖4-8 五 flash芯片燒寫程序

在燒寫程序之前需要準備兩個文件ubl.ais和video_preview_PAL.ais,使用Dvsdk_install_dirflashutil目錄下的perl腳本命令create_ais.bat將ubl.out和video_preview_PAL.out生成對應的ais文件。

Ubl(user boot loader)是DSP啟動加載器,DSP上電后會自動將UBL代碼從 flash加載到存儲器中,開始執行UBL,ubl先初始化pll,ddr2,emif,再將video_preview_PAL工程從flash加載到存儲器中,然后開始執行應用程序。

準備好ais文件后,加載運行norwrite工程Dvsdk_install_dirflashutilDM647_8CCSDM648_NORWriter,norwriter包含四個步驟:

(1)設備初始化,pll,ddr2,emif初始化。(2)擦寫flash塊0xa000 0000-0xa002 0000,將UBL二進制文件寫入該flash塊。

(3)擦寫flash塊0xa002 0000-0xa008 0000,將video_preview工程二進制文件寫入該flash塊。

(4)擦寫flash塊0xa060 0000-0xa060 2000,將軸位寫入該flash塊

第四篇:軟件開發期末總結

MTTF:平均無故障時間;MTBF:平均故障間隔時間

1軟件開發的本質:高層概念到低層概念的映射。2.軟件的本質特征:構造性,演化性

3面向對象的四個原則:抽象,繼承,多態,封裝。4抽象概念的理解:對抽象事物的理解;歸納概括;總結事物共同點;進行邏輯思維和推理 java最大特點:簡單,面向對象,可移植,最大限度利用網絡 java與C++區別:全局變量;goto語句;指針;內存管理;類型轉換;頭文件

7軟件危機: 軟件的開發和維護過程中所遇到的一系列嚴重問題。不僅只軟件不能運行,幾乎所有的軟件都存在這些問題,所包含:如何開發軟件;如何維護

軟件過程 一系列任務步驟和框架

8軟件工程: 是指導計算機軟件開發和維護的一門工程學科。采用工程的概念、原理、技術和方法來開發與維護軟件,把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來,以經濟地開發出高質量的軟件并有效地維護它,這就是軟件工程。

9中間件 定義:是位于平臺(硬件和操作系統)和應用之間的通用服務,這些服務具有標準的程序接口和協議。目的:提出中間件的概念是為解決分布異構問題。分類:基礎中間件;業務中間件;領域中間件。構件:是系統中實際存在的可更換部分,它實現特定的功能,符合一套接口標準并實現一組接口 組件:組件技術就是利用某種編程手段,將一些人們所關心的,但又不便于讓最終用戶去直接操作的細節進行了封裝,同時對各種業務邏輯規則進行了實現,用于處理用戶的內部操作細節,甚至于將安全機制和事物機制體現的淋漓盡致。而這個封裝體就常常的被我們稱作組件。12 軟件生產線:是共享同樣的體系結構和實現平臺的軟件系統的集合,它是具有公共的系統需求集的軟件系統。這些需求是針對一組共享公共的設計和標準(或構件)的產品族,或者是一類特定的行為或任務。

13操作系統發展趨勢:操作系統內核將呈現多平臺統一的趨勢

14軟件開發趨勢

開源:兩個作用,社區和標準的建立。SOA:面向服務的體系結構;IT治理:公司治理的一部分。

15軟件開發技術趨勢(1)下一代Web開發;(2)企

業應用2.0(SOA).(3)系統開發.(4)開發工具和語言.(5)項目管理及安全 不同的軟件開發方法(1)結構化開發方法(2)面

向對象開發方法(3)統一軟件開發過程(4)敏捷軟件開發.軟件的體系結構:一個程序或系統各構件的結

構,他們之間的相互關系及進行設計的原則和指導方針;本質:對復雜事物的抽象; 一定時間內保持穩定 三要素:構件的層次結構;構件之間交互方式;數據結構

組成元素從靜態模式轉向動態模式,組件模塊有被動調用轉向主動調用以適應系統環境 軟件架構技術:根據項目情況分析系統行為,設計系統組件,給出構架表示方式,描述構架的各個方面,最后對系統構架進行精化。框架比架構更加具體 數據庫設計 方法:(1)屬性主導設計(2)實體主

導設計; 遵循原則:(1)信息隱藏(2)適當冗余(3)慎用外鍵 數據一致性:域完整性,實體完整性,引用完整性,數據有效性 插件 定義:系統運行時的功能單元,是一種遵

循一定規范的應用程序結構編寫出來的程序。呈現方式:運行時根據外部配置文件來定 基本功能:插件注冊,管理和調用 軟件質量定義 明確聲明的功能和性能需求,明

確文檔化過得開發標準,以及專業人員開發的軟件應具有的所有隱含特征 軟件需求是進行質量度量的基礎,軟件質量特性反應了軟件的本質。影響軟件質量的4個方面:開發技術;人員素

質;成本時間,進度;過程質量 軟件項目管理 為了使軟件項目能夠按照預定的成本,進度,質量順利完成,對成本,人員,進度,質量,風險等進行分析和管理的活動。24 軟件配置: 計算機程序(源代碼和可執行程序);

描述計算機程序的文檔(針對開發技術者和用戶); 數據(包含程序內部和外部)軟件維護和軟件配置管理的區別: 維護是發生

在軟件以交付給客戶,并且投資運行后的一系列軟件工程活動;軟件配置管理則是當軟件項目開始,并且僅僅當軟件退出運行后在終止的一組跟蹤和控制活動 軟件過程成熟度:指一個特定的軟件過程被顯示定義、管理、度量、和能行的程度 JavaBean開發的三個階段:構造階段,內造階段,執行階段; 包含的基本元素:屬性,方法,事件 一個Java對象具有以下特征就可以是JavaBeans 定制、持久性、通信、反省 簡單的時說(1)作為一個類必須被聲明為public(2)必須要有get/set方法(3)有構造函數但不能有參數 29 引發事件 當javaBean觸發某個事件是,javabean講點用該事件的監聽對象的響應函數 30 監聽事件 javabean被添加到某個類改事件的監聽隊列中,并且具有該事件的響應函數,被監聽類的此事件被激發時被監聽類就會調用javaBean的響應函數

JDBC工作的四個主要組件 java應用程序,JDBC驅動器管理器、驅動器,數據源

數據源的種類 用戶DNS、系統DNS 文件DNS 33 java多線程的生命周期 新建狀態;就緒狀態或可運行狀態;運行狀態、阻塞狀態、消亡狀態 33 J2EE規定的web曾包括 jsp頁面、基于web的java applet、以及用于動態生成的html頁面的Servlet構成。

作業 1簡述Servlet設計中涉及的類和接口

(1)Servlet interface: 所有的servlet直接或間接實現這個interface, 它提供安排servlet與客戶端聯系的方法.最關鍵的方法是Service,負責處理ServletRequest對象和ServletResponse對象。2)HttpServlet class: 實現Servlet interface,重寫了Service方法以區分請求(常見的HTTP請求類型是GET和POST),并調用相應的方法來處理(doGet、doPost)。

servlet接收來自客戶端的調用請求, 它接收兩個對象: 一個是ServletRequest,另外一個是ServletResponse。

3)HttpServletRequest interface: 概括從客戶端到服務器之間的聯系,實現該接口的對象包含了客戶端的請求信息。

4)HttpServletResponse interface: 概括從Servlet返回客戶端的聯系,實現該接口的對象提供了方法,使Servlet向客戶端發回響應。

1.現有數據庫db位于名為lz的MS SQL Server

服務器上,用戶名為sa,密碼為空,請編寫數據庫連接dbConnect類,實現數據庫的連接、返回連接對象及重載有關的close()方法。public class dbConnect {

public dbConnect(){

try{

Class.forName(“com.microsoft.jdbc.sqls

erver.SQLServerDriver”);

}

catch(ClassNotFoundException ee){

}

}

public static Connection getconn()throws SQLException{

String url

=

“jdbc:microsoft:sqlserver://lz:1433;DatabaseName=

db”;

String username= “sa”;

String password= "";

return

DriverManager.getConnection(url,username,password);

}

public static void close(ResultSet rs){

try{

rs.close();

}

catch(Exception ex){

}

}

public static void close(Statement stmt){

try{

stmt.close();

}

catch(Exception ex){

}

}

public static void close(Connection conn){

try{

conn.close();

}

catch(Exception ex){

}

}

private static dbConnect dbconn = new dbConnect();

}

第五篇:一份高質量的總結如何寫

一份高質量的總結如何寫?

到了年尾,各公司開始忙著寫年終總結,班組年終總結,個人年終總結,銷售年終總結,財務年終總結??很多人為此頭疼不已,不知道年終總結該如何寫?下面一篇文章,教你如何寫出一篇高質量的年終總結。

一份高質量的總結究竟應該如何寫呢?

一、要充分認識到總結的要義。總結是最好的老師,沒有總結就沒有進步,總結是一面鏡子,通過總結可以全面地對自己成績與教訓、長處與不足、困難與機遇的進行客觀評判,為下一步工作理清思路,明確目標,制訂措施,提供參考和保障。所以總結不僅僅是給領導看的,更是對自己進行全方位的剖析,使自己更加認識自己,發揮優點,彌補不足,不斷提高。為此,必須認識到總結的重要意義。當然各級領導也要重視總結的重要性,要讓下屬廣開言道,言無不盡,言者無罪,實事求是,客觀認真地總結。

二、對一年來工作的回顧。對一年來各項工作的完成情況進行總結,全面總結成績:各項計劃完成了多少、銷售指標(銷量、銷售額、回款、利潤)完成情況、與去年同期相比各項任務是否有增長、產品結構是否得到優化、渠道建設和客戶關系是否得到加強、經銷商的素質是否得到提高、經銷商與消費者對品牌的滿意度和忠誠度是否得到提升、競爭對手衰退了沒有、如果作為團隊領導還要總結團隊建設、培訓學習等方面的內容。

三、分析取得成績的原因。沒有人會隨隨便便成功,每一個成功的后面都是付出的艱辛努力。認真分析取得成績的原因,總結經驗,并使之得以傳承,是實現工作業績持續提升的前提和基礎。成績固然要全面總結,原因更要認真客觀分析:

1、成績的取得客觀因素分析:行業宏觀環境的勢利性、競爭對手失誤所造成的機會、公司所給予的資源支持程度、團隊領導在具體方面的指導、同事的幫助。

2、成績取得的主觀因素分析:自己對目標任務的認識和分解、自己對市場的前瞻性認識、自己的困難的挑戰意識、自己自我學習素質提升、解決問題能力提升、自己對市場變化的反應能力。

四、分析導致工作目標沒有達成的失誤和問題。人貴有自知之明,總結并不是要總結得形勢一片大好,必須認真客觀的分析在工作中的失誤和存在的問題。通過分析問題,查找原因,認識不足,不斷改進和提高,實現工作質量的持續提高。來反思自己為什么沒有進步。一般來說工作中往往會存在以下的失誤和問題:

1、主觀認識不足,思路不夠高度重視。

2、自身沒有遠大理想與目標,對自己不能嚴格要求,對下屬和自己過于放任。

3、計劃制訂得不合理,脫離客觀實際。

4、對計劃的分解不到位,執行和過程監控不到位。

5、對競爭對手的跟蹤分析不深入,市場反應速度滯后。

6、產品結構、價格策略、促銷組合、渠道建設、品牌傳播計劃不合理、執行不到位。

7、團隊管理能力差、個體成員素質差,不能勝任工作的要求。

8、來自于競爭對手的強大壓力,使自身的優勢不能突顯。

五、對當前形勢的展望與分析。總結不僅要回顧過去,還要展望未來。要對當前的形勢現狀與未來的發展進行客觀深入的分析:

1、外界宏觀與微觀環境分析:行業發展現狀與發展、競爭對手現狀與動向預測、區域市場現狀與發展、渠道組織與關系現狀、消費者的滿意度和忠誠度總體評價。

2、內部環境分析。企業的戰略正確性和明晰性、企業在產品、價格、促銷、品牌等資源方面的匹配程度。

3、自身現狀分析。自身的目標與定位、工作思路和理念、個人素質方面的優勢與差距。通過對現狀與未來的客觀分析,能夠更加清楚所面臨的困難和機遇。從而對困難有清醒的認識和深刻的分析,找到解決困難的方法,對機遇有較強的洞察力,及早做好搶抓機遇的各項準備。

六、下一工作計劃與安排。總結上年工作當然是總結的重點,但更好的籌劃和安排下年工作才總結的目的,所以下一工作計劃和安排同等重要。

1、明確工作的主要思路。戰略決定命運,思路決定出路,良好的業績必須要有清楚正確的思路的支撐。否則人就變成了無頭蒼蠅,偏離了方向和軌道,就會越走越遠。

2、新一工作的具體目標:銷量目標、回款目標、利潤目標、渠道建設目標、區域市場發展目標、團隊建設目標、學習培訓目標。

3、完成計劃的具體方法:團隊整體素質與協作能力的提升、資源需要和保障措施、目標任務的分解、渠道的開發與管理、產品結構的調整與優化、市場秩序的規范管理、客戶關系管理與加強、品牌策略創新與高效傳播

年末歲尾,正是各單位、各部門總結工作的時候,要做好年終總結工作,余以為必須做到“五忌、五體現”:

一忌事無俱細,體現突出重點的原則。全年工作方方面面,大小事情很多,無需事無俱細地對所有工作進行總結,芝麻西瓜一起抓。重點應該是本單位、本部門承擔的任務指標完成情況,隊伍建設情況,以及為完成指標克服困難所采取的措施等。用事實和數字說話,做到有理有據。

二忌成績注水,體現實事求是的原則。總結成績必須是事實成果的匯總歸類和條理化,既不能人為拔高,注水膨脹,也不能把別人成果拿來共享,把年初工作計劃變換口氣當成績來總結,更不能筆下生花,無中生有,閉門造車。

三忌簡單羅列,體現依事說理的原則。工作總結不僅僅是工作量的羅列匯總,而是要通過總結上升到理性的高度來認識所做的工作。要通過對全年的工作總結得出一般性規律,形成有益的經驗,達成一致的認識,使其對今后工作具有指導作用,對他人具有借鑒作用,沒有經驗體會的總結是不全面的,不完整的,也是毫無意義的。

四忌回避問題,體現一分為二的原則。總結的目的全在于應用、發展和提高。“成績不講跑不掉,問題不講不得了”。在總結成績的同時,要客觀地查找工作中存在的不足和問題,正視缺點,以警示今后的工作,少走彎路,避免在將來的工作中犯同樣的錯誤,切忌“一路頌歌,滿地鮮花”。

五忌單一行為,體現全員參與的原則。有總結才會有提高,才會有進步。工作總結不能靠辦公室一個部門來做,也不能由秘書一個人來完成,而應該由各系統、各部門、各崗位共同來做,領導干部本人也不能例外。只有大家都來總結,才能做到人人長經驗,個個有提高,才能促進整體工作的協調健康發展。

下載高質量軟件模塊開發總結(最終5篇)word格式文檔
下載高質量軟件模塊開發總結(最終5篇).doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


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

相關范文推薦

    一份高質量年度總結如何寫(五篇)

    一份高質量年度總結如何寫?【導讀】:到了年尾,各公司開始忙著寫年終總結,班組年終總結,個人年終總結,銷售年終總結,財務年終總結??很多人為此頭疼不已,不知道年終總結該如何寫?下面......

    軟件開發年終個人自我總結

    20xx年是我進入公司的第一年,也是我的工作能力得到提高和快速發展的一年,在公司領導的指導和同事以及其它部門的支持配合下,最后在經過自己的努力,完成了自己所要完成的各項工作......

    最新軟件開發實習個人總結 (合集)

    軟件開發實習個人總結短短兩周的很快就過去了,在xx的實習馬上就要過去了,最新軟件開發實習個人總結。雖然只有短短的兩周,但我學會了很多知識,熟悉了軟件開發的流程,也很好的增強......

    aspnet軟件開發學習總結

    asp.net學習經驗總結通過幾個月的學習,我初步掌握ASP.NET開發平臺的基本知識,也通過老師的教學,完成了實際項目中的應用。由于大學學習中打下了較為扎實的C#基礎,所以在選擇開發......

    軟件開發心得總結(精選5篇)

    有感于網盤開發過程 有感于網盤開發過程 ............................ 1 一、軟件開發個人體會: ...................... 2 二、做軟件開發我覺得要明白: ........................

    輕負擔高質量總結

    學校的追求,家長的希望 ——“輕負擔、高質量”先進經驗總結 坊子區南流小學 2009年10月 學校的追求,家長的希望 —— “輕負擔、高質量”先進經驗總結 坊子區南流小學 坊......

    **區高質量發展總結

    **區高質量發展總結“101%”的服務,比100%多了1%。正是這多出的1%,讓**區憑借一流的營商環境在經濟基礎強大的江蘇省脫穎而出,變工業基礎薄弱的劣勢為后發優勢、生態優勢、區位......

    大學生軟件開發實習總結[推薦5篇]

    軟件開發實習已經結束,為此做一實習總結,下面是大學生三篇總結范文,歡迎大家閱讀學習。大學生軟件開發實習總結一:本人自_年9月份參加工作至今, 六個月的實習時間已經結束。在這......

主站蜘蛛池模板: 欧美性猛交xxxxx按摩欧美| 中文字幕乱码熟妇五十中出| 色狠狠色狠狠综合天天| 八区精品色欲人妻综合网| 伊人久久大香线蕉av一区二区| 大雞巴亂倫有声小说| 国产精品一区二区高清在线| 国产大爆乳大爆乳在线播放| 久久久久久成人综合网| 久久精品人人做人人综合试看| 午夜片无码区私人影院| 69国产成人精品午夜福中文| 国产精品点击进入在线影院高清| 久久精品一区二区三区av| 亚洲日韩欧美一区二区三区在线| 蜜桃视频在线观看免费视频网站www| 中文字幕日韩一区二区不卡| 亚洲国产精品久久亚洲精品| 欧洲精品无码一区二区三区在线播放| 熟妇高潮精品一区二区三区| 无遮挡高潮国产免费观看| 天天躁日日躁狠狠躁性色avq| av天堂久久精品影音先锋| 亚洲中文字幕乱码熟女在线| 日本少妇春药特殊按摩3| 朝鲜女人大白屁股ass孕交| 国产午夜精品一区二区三区软件| 亚洲综合无码一区二区痴汉| 亚洲国产精品一区二区第四页| 肉色超薄丝袜脚交一区二区| 又色又爽又高潮免费视频国产| 国产成人理论在线视频观看| 中文字幕无码乱人伦免费| 国外亚洲成av人片在线观看| 国产超碰人人爱被ios解锁| 观看国产色欲色欲色欲www| 法国少妇xxxx做受| 狠狠综合久久狠狠88亚洲| 玩弄少妇秘书人妻系列| 国产日产久久高清欧美一区| 国产精品视频在线观看|