2015年軟件水平考試軟件設計師考前輔導完整手冊
來源:網絡  園友關注度 334   發布于:3/25/2015 12:24:27 AM


 軟件開發方法綜述

  1、結構化方法

  結構化開發方法是由E.Yourdon 和 L.L.Constantine 提出的,即所謂的SASD 方法, 也可稱為面向功能的軟件開發方法或面向數據流的軟件開發方法。Yourdon方法是80年代使用最廣泛的軟件開發方法。

  它首先用結構化分析(SA)對軟件進行需求分析,然后用結構化設計(SD)方法進行總體設計,最后是結構化編程(SP)。它給出了兩類典型的軟件結構(變換型和事務型)使軟件開發的成功率大大提高。

  2、面向數據結構的軟件開發方法

  Jackson方法是最典型的面向數據結構的軟件開發方法,Jackson方法把問題分解為可由三種基本結構形式表示的各部分的層次結構。三種基本的結構形式就是順序、選擇和重復。三種數據結構可以進行組合,形成復雜的結構體系。這一方法從目標系統的輸入、輸出數據結構入手,導出程序框架結構,再補充其它細節,就可得到完整的程序結構圖。這一方法對輸入、輸出數據結構明確的中小型系統非凡有效,如商業應用中的文件表格處理。該方法也可與其它方法結合,用于模塊的具體設計。

  3、 面向問題的分析法

  PAM(PRoblem Analysis Method)是80年代末由日立公司提出的一種軟件開發方法。它的基本思想是考慮到輸入、輸出數據結構,指導系統的分解,在系統分析指導下逐步綜合。這一方法的具體步驟是:從輸入、輸出數據結構導出基本處理框;分析這些處理框之間的先后關系;按先后關系逐步綜合處理框,直到畫出整個系統的PAD圖。這一方法本質上是綜合的自底向上的方法,但在逐步綜合之前已進行了有目的的分解,這個目的就是充分考慮系統的輸入、輸出數據結構。PAM方法的另一個優點是使用PAD圖。這是一種二維樹形結構圖,是到目前為止最好的具體設計表示方法之一。當然由于在輸入、輸出數據結構與整個系統之間同樣存在著鴻溝,這一方法仍只適用于中小型問題。

  4、原型化方法

  產生原型化方法的原因很多,主要隨著我們系統開發經驗的增多,我們也發現并非所有的需求都能夠預先定義而且反復修改是不可避免的。

  當然能夠采用原型化方法是因為開發工具的快速發展,比如用VB,Delphi等工? 們可以迅速的開發出一個可以讓用戶看的見、摸的著的系統框架,這樣,對于計算機不是很熟悉的用戶就可以根據這個樣板提出自己的需求。

  開發原型化系統一般由以下幾個階段:

  (1) 確定用戶需求

  (2) 開發原始模型

  (3) 征求用戶對初始原型的改進意見

  (4) 修改原型。

  原型化開發比較適合于用戶需求不清、業務理論不確定、需求經常變化的情況。當系統規模不是很大也不太復雜時采用該方法是比較好的。

  5、面向對象的軟件開發方法

  當前計算機業界最流行的幾個單詞就是分布式、并行和面向對象這幾個術語。由此可以看到面向對象這個概念在當前計算機業界的地位。比如當前流行的兩大面向對象技術DCOM和CORBA就是例子。當然我們實際用到的還是面向對象的編程語言,比如C++。不可否認,面向對象技術是軟件技術的一次革命,在軟件開發史上具有里程碑的意義。

  隨著OOP(面向對象編程)向OOD(面向對象設計)和OOA(面向對象分析)的發展,最終形成面向對象的軟件開發方法OMT (Object Modeling Technique)。這是一種自底向上和自頂向下相結合的方法,而且它以對象建模為基礎,從而不僅考慮了輸入、輸出數據結構,實際上也包含了所有對象的數據結構。所以OMT徹底實現了PAM沒有完全實現的目標。不僅如此,OO技術在需求分析、可維護性和可靠性這三個軟件開發的要害環節和質量指標上有了實質性的突破,基本地解決了在這些方面存在的嚴重問題。

  綜上所述,面向對象系統采用了自底向上的歸納、自頂向下的分解的方法,它通過對對象模型的建立,能夠真正建立基于用戶的需求,而且系統的可維護性大大改善。當前業界關于面向對象建模的標準是UML(Unified Modeling Language)。

  這里我們需要談一下微軟的MSF(Microsoft Solutions Framework)的框架,它簡單的把系統設計分成三個階段:概念設計、邏輯設計和物理設計。概念設計階段就是從用戶的角度出發可以得到多少個對象,并且以對象為主體,畫出業務框架。邏輯設計階段就是對概念設計階段的對象進行再分析、細分、整合、刪除。并建立各個對象的方法屬性以及對象之間的關系。而物理設計實際上就是要確定我們實際需要的組件、服務和采用的框架結構、具體的編程語言等。MCF整個結構比較清楚是基于對象開發的一個比較好的可操作的框架系統。

  6、可視化開發方法

  其實可視化開發并不能單獨的作為一種開發方法,更加貼切的說可以認為它是一種輔助工具,比如用過SYBASE的S-Design的人都知道,用這個工具可以進行顯示的圖形化的數據庫模式的建立,并可以導入到不同的數據庫中去。當然用過S-Design的人不一定很多,但用過VB,DELPHI,C++ Builder等開發工具的人一定不少,實際上你就是在使用可視化開發工具。

  當然,不可否認的是,你只是在編程這個環節上用了可視化,而不是在系統分析和系統設計這個高層次上用了可視化的方法。實際上,建立系統分析和系統設計的可視化工具是一個很好的賣點,國外有很多工具都致力于這方面產品的設計。比如Business Object就是一個非常好的數據庫可視化分析工具。

  可視化開發使我們把注重力集中在業務邏輯和業務流程上,用戶界面可以用可視化工具方便的構成。通過操作界面元素,諸如菜單、按鈕、對話框、編輯框、單選框、復選框、 列表框和滾動條等,由可視開發工具自動生成應用軟件。
 
 
 

  軟件工程之詳細設計

  詳細設計的基本任務:

  (1)為每個模塊進行詳細的算法設計。用某種圖形、表格、語言等工具將每個模塊處理過程 為每個模塊進行詳細的算法設計。 為每個模塊進行詳細的算法設計的詳細算法描述出來。

  (2)為模塊內的數據結構進行設計。對于需求分析、概要設計確定的概念性的數據類型進行 為模塊內的數據結構進行設計。 為模塊內的數據結構進行設計確切的定義。

  (3)對數據結構進行物理設計,即確定數據庫的物理結構。物理結構主要指數據庫的存儲記 對數據結構進行物理設計, 對數據結構進行物理設計即確定數據庫的物理結構。 錄格式、存儲記錄安排和存儲方法,這些都依賴于具體所使用的數據庫系統。

  (4)其他設計:根據軟件系統的類型,還可能要進行以下設計:

  ①代碼設計。為了提高數 其他設計: 其他設計 根據軟件系統的類型,還可能要進行以下設計: 代碼設計。 據的輸入、分類、存儲、檢索等操作,節約內存空間,對數據庫中的某些數據項的值要進行 代碼設計。

  ②輸入 輸出格式設計。 輸出格式設計。人機對話設計。 對于一個實時系統, 用戶與計算機頻繁對話, 因此要進行對話方式、 內容、

  ③人機對話設計。 格式的具體設計。

  (5)編寫詳細設計說明書。

  (6)評審。對處理過程的算法和數據庫的物理結構都要評審。

  結構化程序設計方法:

  詳細設計是軟件設計的第二階段,主要確定每個模塊具體執行過程,也稱“過程設計”,詳細設計的目標不僅是邏輯上正確地實現每個模塊的功能,并使設計出的處理過程清晰易讀。過程設計中采用的典型方法是結構化程序設計(簡稱 SP)方法, 最早是由 E.W.Dijkstra 在 60 年代中期提出的,它是實現詳細設計目標的關鍵技術之一。

  計算機軟考軟件設計師知識點:用Java實現的日志切割清理工具

  對于服務器的日常維護來說,日志清理是非常重要的事情,如果殘留日志過多則嚴重浪費磁盤空間同時影響服務的性能。如果用手工方式進行清理,會花費太多時間,并且很多時候難以滿足實際要求。例如:如何在每個星期六凌晨3點把超過2G大的日志文件進行切割,保留最新的100M日志記錄?

  網上沒有發覺能滿足本座要求的日志切割工具,因此花了一些閑暇時間自己寫了一個。由于要在多個平臺上使用,為了方便采用 Java 實現。本工具命名為 LogCutter,主要有以下特點:

  1、支持 Linux、Mac 和 Windows 等所有常見操作系統平臺

  2、支持命令行交互式運行

  3、支持后臺非交互式運行(Linux/MAC 下使用 daemon 進程實現,Windows 用系統 Service 實現)

  4、支持兩種日志清理方式(刪除日志文件或切割日志文件)

  5、支持對 GB18030、UTF-8、UTF-16LE、UTF-16BE 等常用日志文件類型進行切割(不會發生切掉半個字符的情況)

  6、高度可配置(程序執行周期、要刪除的日志文件過期時間、要切割的日志文件閥值和保留大小等均可配置

  使用方法:

  LogCutter - Bruce Liang, all rights reserved.

  一、啟動方式

  ) Windows A) 前臺運行: > ./run.bat B) 后臺運行: > ./LogCutter.exe { -install-demand (安裝手動啟動服務)

  -install-auto (安裝自動啟動服務)

  -start (啟動服務)

  -stop (停止服務)

  -status (查看服務狀態)

  } *** 注 *** @ LogCutter.exe 以 Windows 系統服務的方式運行,安裝好后也可以通過 Windows 服務管理器進行管理@ LogCutter.exe 依賴 JRE 1.6, 因此必須在注冊表或環境變量中設置 %JAVA_HOME%) Linux / Unix A) 前臺運行: $ ./run.sh B) 后臺運行: $ ./run.sh -d *** 注 *** @ 可以設置為開機時自動后臺運行,方法如下:$ vi /etc/rc.d/rc.local( 加入: ${YOUR_LOGCUTTER_PATH}/run.sh -d )

  二、配置文件

  ) 程序配置文件: ./conf/config.xml) 日志配置文件: ./conf/log4j.properties (默認)

  三、環境要求

  ) Java 版 本: JRE 1.6 以上) 依賴程序包: dom4j、log4j、juniversalchardet

  run.sh (Mac 平臺)

  #!/bin/bash JAVA_HOME=“/Library/Java/Home” CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar JAVA_BIN=$JAVA_HOME/bin JAVA=$JAVA_BIN/java APP_PATH=“/Users/Kingfisher/MyWork/Java/LogCutter” APP_CLASSPATH=$APP_PATH/classes APP_LIBPATH=$APP_PATH/lib APP_LIBS=$APP_LIBPATH/dom4j-1.6.1.jar:$APP_LIBPATH/log4j- 1.2.16.jar:$APP_LIBPATH/juniversalchardet-1.0.3.jar APP_CONFPATH=$APP_PATH/conf APP_CONFFILE=$APP_CONFPATH/config.xml APP_MAIN_CLASS=com.bruce.main.LogCutter DAEMON='-d' CMD=“$JAVA -cp $CLASSPATH:$APP_CLASSPATH:$APP_LIBS $APP_MAIN_CLASS -f $APP_CONFFILE” if [ $# -eq 0 ] then $CMD elif [ “$#” -eq 1 -a “$1” = “$DAEMON” ] then $CMD & else echo “Usage: $0 [ $DAEMON ]” exit 1 fi

  交互式運行操作演示:

  [[email protected] LogCutter] $ pwd /Users/Kingfisher/MyWork/Java/LogCutter [[email protected] LogCutter] $ ./run.sh command line usage

  HELP : Show help JOBS : Show jobs status CFG : Show configuration summary RUN : Schedule jobs manually!Q : Shutdown application? : About me

  > help

  command line usage

 
 
 
 

  C++強大的原因

  C++在幾乎所有的計算環境中都非常普及:個人電腦、Unix工作站和大型計算機。如果考察一下新編程語言的發展史,就可以看出C++的這種普及率是非常高的。用以前的語言編寫的程序量非常大,這無疑會降低對新語言的接受程度。除此以外,大多數專業軟件設計師總是愿意使用他們已熟知的、使用起來得心應手的語言,而不是轉而使用新的、不熟悉的語言,花大量的時間來研究其特性。當然,C++是建立在C的基礎之上(在C++出現之前,許多環境都使用C語言),這對于C++的普及有很大的幫助,但是C++的流行遠不只是這一個原因。C++有許多優點:

  C++適用的應用程序范圍極廣。C++可以用于幾乎所有的應用程序,從字處理應用程序到科學應用程序,從操作系統組件到計算機游戲等。

  C++從C中繼承了過程編程方式的高效性,并集成了面向對象編程方式的功能。

  C++在其標準庫中提供了大量的功能。

  有許多商業C++庫支持數量眾多的操作系統環境和專門的應用程序。

  因為幾乎所有的計算機都可以使用C++編程,所以C++語言普及到幾乎所有的計算機平臺上。也就是說,把用C++編寫的程序從一臺機器遷移到另一臺機器上不需要費什么力氣。當然,如果這個過程真的非常簡單,那么編寫在另一臺機器上運行的程序時就需要考慮使用C++語言了。

  C++的ANSI標準

  標準化是把所編寫的程序從一種類型的計算機遷移到另一種類型的計算機上的基礎。標準的建立使語言在各種機器上的實現保持一致。在所有相容編譯器上都可用的一組標準功能意味著,用戶總是能確定下一步會獲得什么結果。使用ANSI標準后,C++使應用程序可以輕松地在不同的機器之間遷移,緩解了在多個環境上運行的應用程序的維護問題。

  當然,還有其他問題需要考慮。如果程序是可以移植的,那么就不能把非標準庫中的特性引入代碼,還必須使程序對建立該程序所使用的開發機器的依賴性降到最低,否則遷移代碼就很困難。

  C++的ANSI標準還有另一個優點:它對用C++編程所需要學習的部分進行了標準化。這個標準將使后續的程序具有一致性,因為它只為C++編譯器和庫提供了一個定義參考。在編寫編譯器時,該標準的存在也使編寫人員不再需要許可。

  A類IP地址

  一個A類IP地址是指,在IP地址的四段號碼中,第一段號碼為網絡號碼,剩下的三段號碼為本地計算機的號碼。如果用二進制表示IP地址的話,A類IP地址就由1字節的網絡地址和3字節主機地址組成,網絡地址的最高位必須是“0”.A類IP地址中網絡的標識長度為7位,主機標識的長度為24位,A類網絡地址數量較少,可以用于主機數達1600多萬臺的大型網絡。

  B類IP地址

  一個B類IP地址是指,在IP地址的四段號碼中,前兩段號碼為網絡號碼,剩下的兩段號碼為本地計算機的號碼。如果用二進制表示IP地址的話,B類IP地址就由2字節的網絡地址和2字節主機地址組成,網絡地址的最高位必須是“10”.B類IP地址中網絡的標識長度為14位,主機標識的長度為16位,B類網絡地址適用于中等規模規模的網絡,每個網絡所能容納的計算機數為6萬多臺。

  C類IP地址

  一個C類IP地址是指,在IP地址的四段號碼中,前三段號碼為網絡號碼,剩下的一段號碼為本地計算機的號碼。如果用二進制表示IP地址的話,C類IP地址就由3字節的網絡地址和1字節主機地址組成,網絡地址的最高位必須是“110”.C類IP地址中網絡的標識長度為21位,主機標識的長度為8位,C類網絡地址數量較多,適用于小規模的局域網絡,每個網絡最多只能包含254臺計算機。

  除了上面三種類型的IP地址外,還有幾種特殊類型的IP地址,TCP/IP協議規定,凡IP地址中的第一個字節以“lll0”開始的地址都叫多點廣播地址。因此,任何第一個字節大于223小于240的IP地址是多點廣播地址;IP地址中的每一個字節都為0的地址(“0.0.0.0”)對應于當前主機;IP地址中的每一個字節都為1的IP地址(“255.255.255.255”)是當前子網的廣播地址;IP地址中凡是以“llll0”的地址都留著將來作為特殊用途使用;IP地址中不能以十進制“127”作為開頭,27.1.1.1用于回路測試,同時網絡ID的第一個6位組也不能全置為“0”,全 “0”表示本地網絡。

  IP的尋址規則

  1.網絡尋址規則

  A、 網絡地址必須唯一。

  B、 網絡標識不能以數字127開頭。在A類地址中,數字127保留給內部回送函數。

  C、 網絡標識的第一個字節不能為255.數字255作為廣播地址。

  D、 網絡標識的第一個字節不能為“0”,“0”表示該地址是本地主機,不能傳送。

  2.主機尋址規則

  A、主機標識在同一網絡內必須是唯一的。

  B、主機標識的各個位不能都為“1”,如果所有位都為“1”,則該機地址是廣播地址,而非主機的地址。

  C、主機標識的各個位不能都為“0”,如果各個位都為“0”,則表示“只有這個網絡”,而這個網絡上沒有任何主機。

  IP地址的分類

  我們說過因特網是把全世界的無數個網絡連接起來的一個龐大的網間網,每個網絡中的計算機通過其自身的IP地址而被唯一標識的,據此我們也可以設想,在 INTERNET上這個龐大的網間網中,每個網絡也有自己的標識符。這與我們日常生活中的電話號碼很相像,例如有一個電話號碼為0515163,這個號碼中的前四位表示該電話是屬于哪個地區的,后面的數字表示該地區的某個電話號碼。與上面的例子類似,我們把計算機的IP地址也分成兩部分,分別為網絡標識和主機標識。同一個物理網絡上的所有主機都用同一個網絡標識,網絡上的一個主機(包括網絡上工作站、服務器和路由器等)都有一個主機標識與其對應?IP地址的4個字節劃分為2個部分,一部分用以標明具體的網絡段,即網絡標識;另一部分用以標明具體的節點,即主機標識,也就是說某個網絡中的特定的計算機號碼。例如,鹽城市信息網絡中心的服務器的IP地址為210.73.140.2,對于該IP地址,我們可以把它分成網絡標識和主機標識兩部分,這樣上述的IP地址就可以寫成:

  網絡標識:210.73.140.0

  主機標識: 2

  合起來寫:210.73.140.2

  由于網絡中包含的計算機有可能不一樣多,有的網絡可能含有較多的計算機,也有的網絡包含較少的計算機,于是人們按照網絡規模的大小,把32位地址信息設成三種定位的劃分方式,這三種劃分方法分別對應于A類、B類、C類IP地址。

  我們說過因特網是把全世界的無數個網絡連接起來的一個龐大的網間網,每個網絡中的計算機通過其自身的IP地址而被唯一標識的,據此我們也可以設想,在 INTERNET上這個龐大的網間網中,每個網絡也有自己的標識符。這與我們日常生活中的電話號碼很相像,例如有一個電話號碼為0515163,這個號碼中的前四位表示該電話是屬于哪個地區的,后面的數字表示該地區的某個電話號碼。與上面的例子類似,我們把計算機的IP地址也分成兩部分,分別為網絡標識和主機標識。同一個物理網絡上的所有主機都用同一個網絡標識,網絡上的一個主機(包括網絡上工作站、服務器和路由器等)都有一個主機標識與其對應?IP地址的4個字節劃分為2個部分,一部分用以標明具體的網絡段,即網絡標識;另一部分用以標明具體的節點,即主機標識,也就是說某個網絡中的特定的計算機號碼。例如,鹽城市信息網絡中心的服務器的IP地址為210.73.140.2,對于該IP地址,我們可以把它分成網絡標識和主機標識兩部分,這樣上述的IP地址就可以寫成:

  網絡標識:210.73.140.0

  主機標識: 2

  合起來寫:210.73.140.2

  由于網絡中包含的計算機有可能不一樣多,有的網絡可能含有較多的計算機,也有的網絡包含較少的計算機,于是人們按照網絡規模的大小,把32位地址信息設成三種定位的劃分方式,這三種劃分方法分別對應于A類、B類、C類IP地址。

 
 
真題園 (http://www.fbivbq.live) 最全的真題題庫下載網站。

     分享到:
X
網站首頁
投稿反饋
真題園網二維碼
快乐10分8个号中了多钱