結構化程序設計的思路是:自頂向下、逐步求精;其程序結構是按功能劃分為若干個基本模塊;各模塊之間的關系盡可能簡單,在功能上相對獨立;每一模塊內(nèi)部均是由順序、選擇和循環(huán)三種基本結構組成;其模塊化實現(xiàn)的具體方法是使用子程序。
結構化程序設計由于采用了模塊分解與功能抽象,自頂向下、分而治之的方法,從而有效地將一個較復雜的程序系統(tǒng)設計任務分解成許多易于控制和處理的子任務,便于開發(fā)和維護。 雖然結構化程序設計方法具有很多的優(yōu)點,但它仍是一種面向過程的程序設計方法,它把數(shù)據(jù)和處理數(shù)據(jù)的過程分離為相互獨立的實體。
當數(shù)據(jù)結構改變時,所有相關的處理過程都要進行相應的修改,每一種相對于老問題的新方法都要帶來額外的開銷,程序的可重用性差。由于圖形用戶界面的應用,程序運行由順序運行演變?yōu)槭录?qū)動,使得軟件使用起來越來越方便,但開發(fā)起來卻越來越困難,對這種軟件的功能很難用過程來描述和實現(xiàn),使用面向過程的方法來開發(fā)和維護都將非常困難。
系統(tǒng)架構屬于系統(tǒng)設計階段,系統(tǒng)架構圖只是這個階段一個產(chǎn)物,要正確的、合理的畫系統(tǒng)架構圖需要全面的理解用戶需求以及業(yè)務流程,當理解了這些東西后,剩下的就是如何進行表達了,一般而言,可以參照RUP的用例驅(qū)動來進行邏輯架構,開發(fā)架構等設計工作,你的系統(tǒng)架構圖可以反應在各個視圖里面,我估計你所說的系統(tǒng)架構圖是屬于邏輯架構里面,比如分多少層,每層分多少模塊等。
至于,繪制的工具,有很多很多。可以選擇微軟的visio,或者EA,rose,power designer等UML建模工具,當然,你甚至可以用PPT,Word來繪制。
當然,系統(tǒng)架構不是一日之功,需長期努力,跟經(jīng)驗和技術都有很大關系。
今天興致來了,回復了這么多,不知滿意不。
系統(tǒng)架構屬于系統(tǒng)設計階段,系統(tǒng)架構圖只是這個階段一個產(chǎn)物,要正確的、合理的畫系統(tǒng)架構圖需要全面的理解用戶需求以及業(yè)務流程,當理解了這些東西后,剩下的就是如何進行表達了,一般而言,可以參照RUP的用例驅(qū)動來進行邏輯架構,開發(fā)架構等設計工作,你的系統(tǒng)架構圖可以反應在各個視圖里面,我估計你所說的系統(tǒng)架構圖是屬于邏輯架構里面,比如分多少層,每層分多少模塊等。
至于,繪制的工具,有很多很多??梢赃x擇微軟的visio,或者EA,rose,power designer等UML建模工具,當然,你甚至可以用PPT,Word來繪制。
當然,系統(tǒng)架構不是一日之功,需長期努力,跟經(jīng)驗和技術都有很大關系。 今天興致來了,回復了這么多,不知滿意不。
面向?qū)ο蟪绦蛟O計中的概念主要包括:對象、類、數(shù)據(jù)抽象、繼承、動態(tài)綁定、數(shù)據(jù)封裝、多態(tài)性、消息傳遞。通過這些概念面向?qū)ο蟮乃枷氲玫搅司唧w的體現(xiàn)。
1)對象(Object) 可以對其做事情的一些東西。一個對象有狀態(tài)、行為和標識三種屬性。
2)類(class) 一個共享相同結構和行為的對象的集合。
類(Class)定義了一件事物的抽象特點。通常來說,類定義了事物的屬性和它可以做到的(它的行為)。舉例來說,“狗”這個類會包含狗的一切基礎特征,例如它的孕育、毛皮顏色和吠叫的能力。類可以為程序提供模版和結構。一個類的方法和屬性被稱為“成員”。
軟件架構設計的目的 對于外包業(yè)務類型的項目,軟件架構設計的目的與產(chǎn)品類型的項目有所不同,在這里主要討論外包類型項目的軟件架構設計目的。
1、為大規(guī)模開發(fā)提供基礎和規(guī)范,并提供可重用的資產(chǎn),軟件系統(tǒng)的大規(guī)模開發(fā),必須要有一定的基礎和遵循一定的規(guī)范,這既是軟件工程本身的要求,也是客戶的要求。架構設計的過程中可以將一些公共部分抽象提取出來,形成公共類和工具類,以達到重用的目的。
2、一定程度上縮短項目的周期,利用軟件架構提供的框架或重用組件,縮短項目開發(fā)的周期。 3、降低開發(fā)和維護的成本,大量的重用和抽象,可以提取出一些開發(fā)人員不用關心的公共部分,這樣便可以使開發(fā)人員僅僅關注于業(yè)務邏輯的實現(xiàn),從而減少了很多工作量,提高了開發(fā)效率。
4、提高產(chǎn)品的質(zhì)量,好的軟件架構設計是產(chǎn)品質(zhì)量的保證,特別是對于客戶常常提出的非功能性需求的滿足。 軟件架構設計的原則 軟件架構設計必須遵循以下原則: 1、滿足功能性需求和非功能需求。
這是一個軟件系統(tǒng)最基本的要求,也是架構設計時應該遵循的最基本的原則。 2、實用性原則,就像每一個軟件系統(tǒng)交付給用戶使用時必須實用,能解決用戶的問題一樣,架構設計也必須實用,否則就會“高來高去”或“過度設計”。
3、滿足復用的要求,最大程度的提高開發(fā)人員的工作效率。 軟件架構設計的幾種視圖 我們常常在討論架構設計該做些什么的時候,或是在架構設計評審的會議上,會提出各種各樣的問題,例如開發(fā)人員該如何記錄Log,事務如何控制?怎樣才能提高我們的開發(fā)人員的工作效率,即在單位時間內(nèi)更有品質(zhì)的完成更多的功能?怎樣滿足客戶的非功能性需求?怎樣讓生產(chǎn)環(huán)境的平臺管理人員更好的維護系統(tǒng)? 上面這些問題,實際上是軟件系統(tǒng)的不同的干系人站在不同的角度上提出的問題,要回答上面這些問題,我們就得從不同的視角來看待軟件架構設計這項工作。
1、邏輯架構視角,從系統(tǒng)用戶的角度考慮問題,設計出來的軟件架構能夠滿足業(yè)務邏輯的需求,能夠處理現(xiàn)在越來越復雜的業(yè)務邏輯需求。 2、開發(fā)架構視角,從系統(tǒng)開發(fā)人員的角度來考慮問題,設計的架構要易于理解,易于開發(fā),易于單元測試,最好做到讓開發(fā)人員可以用最少的代碼行數(shù)完成功能的開發(fā)。
3、運行架構視角,從系統(tǒng)運行時的質(zhì)量需求考慮問題,特別關注于系統(tǒng)的非功能需求,客戶常常都會要求我們系統(tǒng)的功能畫面的最長響應時間不超過4秒,能滿足2000個用戶同時在線使用,基于角色的系統(tǒng)資源的安全控制等。 4、物理架構視角,關注系統(tǒng)安裝和部署在什么樣的環(huán)境上,例如現(xiàn)在最流行的企業(yè)應用服務解決方案IBM Http Server + WebSphere Application Server + DB2,WebLogic + Oracle等。
5、數(shù)據(jù)架構視角,如今我們開發(fā)的各類系統(tǒng),如MIS,ERP,SAP,基本上都是對各類數(shù)據(jù)的操作,把一堆不太好懂的數(shù)據(jù)展現(xiàn)成用戶容易看懂的數(shù)據(jù),自動處理各類數(shù)據(jù)的運算等,所以數(shù)據(jù)的持久化是十分重要的一件事情。1、分析需求和理解業(yè)務模型(或領域建模),并選定關鍵Use case。
軟件的需求,可以分為從用戶視角和開發(fā)人員視角來看,從用戶的角度看,又可以分為功能性和非功能性需求,我們必須從不同的視角和級別去全面的認識需求并分析需求,理解業(yè)務模型。實踐表明,常常被我們忽視的非功能性需求常常會導致整個項目失敗。
理解業(yè)務需求最好的方式莫過于進行領域建模,領域建模與需求分析往往是交替穿叉進行的,領域建模主要有以下三個方面的作用: ◆探索復雜問題,弄清領域知識。Martin Fowler曾經(jīng)說過,他采用面向?qū)ο蠓椒ㄗ畲蟮暮锰幘褪撬兄诮鉀Q更為復雜的問題。
領域建模本身作為輔助思維的工具,幫助我們將注意力始終保持在最為重要的業(yè)務概念及其關系上,使我們能夠不斷深入地,系統(tǒng)的對需求進行分析和認識。領域建模往往是一個從模糊到清晰,從零散到系統(tǒng)的過程。
◆決定功能范圍,影響可擴展性。任何模型都是對現(xiàn)實世界某種程序的抽象,這種抽象就會忽略某一些東西,例如忽略對象的屬性和對象間的關系,而這些忽略往往都是帶有一定的目的性的,這種忽略就決定了功能的范圍。
模型揭示了各種功能背后的結構,如果說定義功能相當于“拍照片”的話,那么領域建模就相當于“做透視”,更加關注問題領域的內(nèi)在結構,相當于對問題領域進行了一定的抽象,良好的領域模型不僅能很好的支持現(xiàn)有的功能,而且還可以在一定程度上支持未來可能出現(xiàn)的新需求,體現(xiàn)良好的可擴展性。 ◆提供交流基礎,促進有效溝通。
領域建模通常會使用UML圖作為呈現(xiàn)的方式,這樣為我們的溝通提供了方便。當然,有時候文字在描述某些特定領域的問題時可能更適合,可以靈活運用。
在我們公司的實際軟件開發(fā)流程中,往往領域建模缺少這一環(huán)節(jié),這可能是在以后的工作中需要進一步提高之處。 雖然我們總是期望架構設計師能全面掌握需求,但由于時間和精力的限制,擺在我們面前的現(xiàn)實就是架構設計師沒有時間對所有需求進行深入分析,所以我們的策略就是“把好鋼用在刀刃上”,即把大部分時間和精力花在對決定架構最重要的關鍵需求。
系統(tǒng)架構設計是人們對一個結構內(nèi)的元素及元素間關系的一種主觀映射的產(chǎn)物。系統(tǒng)架構設計是一系列相關的抽象模式,用于指導大型軟件系統(tǒng)各個方面的設計。
擴展資料:
系統(tǒng)架構設計師是一個最終確認和評估系統(tǒng)需求,給出開發(fā)規(guī)范,搭建系統(tǒng)實現(xiàn)的核心構架,并澄清技術細節(jié)、掃清主要難點的技術人員。
系統(tǒng)架構設計師考試合格人員能夠根據(jù)系統(tǒng)需求規(guī)格說明書,結合應用領域和技術發(fā)展的實際情況,考慮有關約束條件,設計正確、合理的軟件架構,確保系統(tǒng)架構具有良好的特性;能夠與系統(tǒng)分析師、項目管理師相互協(xié)作、配合工作;具有高級工程師的實際工作能力和業(yè)務水平。
架構師是由國外引進的一個概念,國外軟件開發(fā)的幾個職位是技術官、架構師、設計師、開發(fā)、測試,對應我們的公司應該是技術總監(jiān)、架構師、系統(tǒng)分析員、程序員、測試人員。
參考資料:搜狗百科-系統(tǒng)架構設計
參考資料:搜狗百科-系統(tǒng)架構設計師
組織結構設計的六項主要內(nèi)容:
(1)職能設計
職能設計是指企業(yè)的經(jīng)營職能和管理職能的設計。企業(yè)作為一個經(jīng)營單位,要根據(jù)其戰(zhàn)略任務設計經(jīng)營、管理職能。如果企業(yè)的有些職能不合理,那就需要進行調(diào)整,對其弱化或取消。
(2)框架設計
框架設計是企業(yè)組織設計的主要部分,運用較多。其內(nèi)容簡單來說就是縱向的分層次、橫向的分部門。其縱向和橫向的一般模式可表示如下:
(3)協(xié)調(diào)設計
協(xié)調(diào)設計是指協(xié)調(diào)方式的設計??蚣茉O計主要研究分工,有分工就必須要有協(xié)作。協(xié)調(diào)方式的設計就是研究分工的各個層次、各個部門之間如何進行合理的協(xié)調(diào)、聯(lián)系、配合,以保證其高效率的配合,發(fā)揮管理系統(tǒng)的整體效應。
(4)規(guī)范設計
規(guī)范設計就是管理規(guī)范的設計。管理規(guī)范就是企業(yè)的規(guī)章制度,它是管理的規(guī)范和準則。結構本身設計最后要落實、體現(xiàn)為規(guī)章制度。管理規(guī)范保證了各個層次、部門和崗位,按照統(tǒng)一的要求和標準進行配合和行動。
(5)人員設計
人員設計就是管理人員的設計。企業(yè)結構本身設計和規(guī)范設計,都要以管理者為依托,并由管理者來執(zhí)行。因此,按照組織設計的要求,必須進行人員設計,配備相應數(shù)量和質(zhì)量的人員。
(6)激勵設計
激勵設計就是設計激勵制度,對管理人員進行激勵,其中包括正激勵和負激勵。正激勵包括工資、福利等,負激勵包括各種約束機制,也就是所謂的獎懲制度。激勵制度既有利于調(diào)動管理人員的積極性,也有利于防止一些不正當和不規(guī)范的行為。
詳細介紹您可以參考這里:
/view/543252.htm#6
在需求明確、準備開始編碼之前,要做概要設計,而詳細設計可能大部分公司沒有做,有做的也大部分是和編碼同步進行,或者在編碼之后。
因此,對大部分的公司來說,概要設計文檔是唯一的設計文檔,對后面的開發(fā)、測試、實施、維護工作起到關鍵性的影響。一、問題的提出 概要設計寫什么?概要設計怎么做?如何判斷設計的模塊是完整的?為什么說設計階段過于重視業(yè)務流程是個誤區(qū)?以需求分析文檔還是以概要設計文檔來評估開發(fā)工作量、指導開發(fā)計劃準確?結構化好還是面向?qū)ο蠛茫恳陨蠁栴}的答案請在文章中找。
二、概要設計的目的 將軟件系統(tǒng)需求轉(zhuǎn)換為未來系統(tǒng)的設計;逐步開發(fā)強壯的系統(tǒng)構架;使設計適合于實施環(huán)境,為提高性能而進行設計;結構應該被分解為模塊和庫。三、概要設計的任務 制定規(guī)范:代碼體系、接口規(guī)約、命名規(guī)則。
這是項目小組今后共同作戰(zhàn)的基礎,有了開發(fā)規(guī)范和程序模塊之間和項目成員彼此之間的接口規(guī)則、方式方法,大家就有了共同的工作語言、共同的工作平臺,使整個軟件開發(fā)工作可以協(xié)調(diào)有序地進行??傮w結構設計:功能(加工)->模塊:每個功能用那些模塊實現(xiàn),保證每個功能都有相應的模塊來實現(xiàn);模塊層次結構:某個角度的軟件框架視圖;模塊間的調(diào)用關系:模塊間的接口的總體描述;模塊間的接口:傳遞的信息及其結構;處理方式設計:滿足功能和性能的算法 用戶界面設計;數(shù)據(jù)結構設計:詳細的數(shù)據(jù)結構:表、索引、文件;算法相關邏輯數(shù)據(jù)結構及其操作;上述操作的程序模塊說明(在前臺?在后臺?用視圖?用過程?······) 接口控制表的數(shù)據(jù)結構和使用規(guī)則 其他性能設計。
四、概要設計寫什么 結構化軟件設計說明書結構(因篇幅有限和過時嫌疑,在此不作過多解釋) 任務:目標、環(huán)境、需求、局限;總體設計:處理流程、總體結構與模塊、功能與模塊的關系;接口設計:總體說明外部用戶、軟、硬件接口;內(nèi)部模塊間接口(注:接口≈系統(tǒng)界面) 數(shù)據(jù)結構:邏輯結構、物理結構,與程序結構的關系;模塊設計:每個模塊“做什么”、簡要說明“怎么做”(輸入、輸出、處理邏輯、與其它模塊的接口,與其它系統(tǒng)或硬件的接口),處在什么邏輯位置、物理位置;運行設計:運行模塊組合、控制、時間;出錯設計:出錯信息、處錯處理;其他設計:保密、維護;OO軟件設計說明書結構1 概述 系統(tǒng)簡述、軟件設計目標、參考資料、修訂版本記錄 這部分論述整個系統(tǒng)的設計目標,明確地說明哪些功能是系統(tǒng)決定實現(xiàn)而哪些時不準備實現(xiàn)的。同時,對于非功能性的需求例如性能、可用性等,亦需提及。
需求規(guī)格說明書對于這部分的內(nèi)容來說是很重要的參考,看看其中明確了的功能性以及非功能性的需求。這部分必須說清楚設計的全貌如何,務必使讀者看后知道將實現(xiàn)的系統(tǒng)有什么特點和功能。
在隨后的文檔部分,將解釋設計是怎么來實現(xiàn)這些的。2 術語表 對本文檔中所使用的各種術語進行說明。
如果一些術語在需求規(guī)格說明書中已經(jīng)說明過了,此處不用再重復,可以指引讀者參考需求說明。3 用例 此處要求系統(tǒng)用用例圖表述(UML),對每個用例(正常處理的情況)要有中文敘述。
4 設計概述4.1 簡述 這部分要求突出整個設計所采用的方法(是面向?qū)ο笤O計還是結構化設計)、系統(tǒng)的體系結構(例如客戶/服務器結構)以及使用到的相應技術和工具(例如OMT、Rose)4.2 系統(tǒng)結構設計 這部分要求提供高層系統(tǒng)結構(頂層系統(tǒng)結構、各子系統(tǒng)結構)的描述,使用方框圖來顯示主要的組件及組件間的交互。最好是把邏輯結構同物理結構分離,對前者進行描述。
別忘了說明圖中用到的俗語和符號。4.3 系統(tǒng)界面 各種提供給用戶的界面以及外部系統(tǒng)在此處要予以說明。
如果在需求規(guī)格說明書中已經(jīng)對用戶界面有了敘述,此處不用再重復,可以指引讀者參考需求說明。如果系統(tǒng)提供了對其它系統(tǒng)的接口,比如說從其它軟件系統(tǒng)導入/導出數(shù)據(jù),必須在此說明。
4.4 約束和假定 描述系統(tǒng)設計中最主要的約束,這些是由客戶強制要求并在需求說明書寫明的。說明系統(tǒng)是如何來適應這些約束的。
另外如果本系統(tǒng)跟其它外部系統(tǒng)交互或者依賴其它外部系統(tǒng)提供一些功能輔助,那么系統(tǒng)可能還受到其它的約束。這種情況下,要求清楚地描述與本系統(tǒng)有交互的軟件類型以及這樣導致的約束。
實現(xiàn)的語言和平臺也會對系統(tǒng)有約束,同樣在此予以說明。對于因選擇具體的設計實現(xiàn)而導致對系統(tǒng)的約束,簡要地描述你的想法思路,經(jīng)過怎么樣的權衡,為什么要采取這樣的設計等等。
5 對象模型 提供整個系統(tǒng)的對象模型,如果模型過大,按照可行的標準把它劃分成小塊,例如可以把客戶端和服務器端的對象模型分開成兩個圖表述。在其中應該包含所有的系統(tǒng)對象。
這些對象都是從理解需求后得到的。要明確哪些應該、哪些不應該被放進圖中。
所有對象之間的關聯(lián)必須被確定并且必須指明聯(lián)系的基數(shù)。聚合和繼承關系必須清楚地確定下來。
每個圖必須附有簡單的說明。6 對象描述 在這個部分敘述每個對象的細節(jié),它的屬性、它的方法。
在這之前必須從邏輯上對對象進行組織。你可能需要用結構圖把對象按子系統(tǒng)劃分好。

聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據(jù)《信息網(wǎng)絡傳播權保護條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權利,請在一個月內(nèi)通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學習鳥. 頁面生成時間:2.641秒