當前位置:首頁 » 軟體設計 » 開發設計原則

開發設計原則

發布時間: 2020-11-25 00:58:12

A. 軟體工程的開發原則

軟體工程的原則是指圍繞工程設計、工程支持以及工程管理在軟體開發過程中必須遵循的原則。
軟體工程的原則有以下四項基本原則:
選取適宜開發范型
該原則與系統設計有關。在系統設計中,軟體需求、硬體需求以及其他因素之間是相互制約、相互影響的,經常需要權衡。因此,必須認識需求定義的易變性,採用適宜的開發范型予以控制,以保證軟體產品滿足用戶的要求。
採用合適的設計方法
在軟體設計中,通常要考慮軟體的模塊化、抽象與信息隱蔽、局部化、一致性以及適應性等特徵。合適的設計方法有助於這些特徵的實現,以達到軟體工程的目標。
提供高質量的工程支持
「工欲善其事,必先利其器」。
在軟體工程中,軟體工具與環境對軟體過程的支持頗為重要。軟體工程項目的質量與開銷直接取決於對軟體工程所提供的支撐質量和效用。
重視開發過程的管理
軟體工程的管理,直接影響可用資源的有效利用,生產滿足目標的軟體產品,提高軟體組織的生產能力等問題。因此,僅當軟體過程得以有效管理時,才能實現有效的軟體工程。
這一軟體工程框架告訴我們,軟體工程的目標是可用性、正確性和合算性;實施一個軟體工程要選取適宜的開發范型,要採用合適的設計方法,要提供高質量的工程支撐,要實行開發過程的有效管理;軟體工程活動主要包括需求、設計、實現、確認和支持等活動,每一活動可根據特定的軟體工程,採用合適的開發范型、設計方法、支持過程以及過程管理。根據軟體工程這一框架,軟體工程學科的研究內容主要包括:軟體開發范型、軟體開發方法、軟體過程、軟體工具、軟體開發環境、計算機輔助軟體工程(CASE) 及軟體經濟學等。

B. 設計模式的設計原則

為什麼要提倡「Design Pattern呢?根本原因是為了代碼復用,增加可維護性。那麼怎麼才能實現代碼復用呢?面向對象有幾個原則:單一職責原則 (Single Responsiblity Principle SRP)開閉原則(Open Closed Principle,OCP)、里氏代換原則(Liskov Substitution Principle,LSP)、依賴倒轉原則(Dependency Inversion Principle,DIP)、介面隔離原則(Interface Segregation Principle,ISP)、合成/聚合復用原則(Composite/Aggregate Reuse Principle,CARP)、最小知識原則(Principle of Least Knowledge,PLK,也叫迪米特法則)。開閉原則具有理想主義的色彩,它是面向對象設計的終極目標。其他幾條,則可以看做是開閉原則的實現方法。
設計模式就是實現了這些原則,從而達到了代碼復用、增加可維護性的目的。 此原則是由Bertrand Meyer提出的。原文是:「Software entities should be open for extension,but closed for modification」。就是說模塊應對擴展開放,而對修改關閉。模塊應盡量在不修改原(是「原」,指原來的代碼)代碼的情況下進行擴展。那麼怎麼擴展呢?我們看工廠模式「factory pattern」:假設中關村有一個賣盜版盤和毛片的小子,我們給他設計一「光碟銷售管理軟體」。我們應該先設計一「光碟」介面。如圖:
[pre]
______________
|<>|
| 光碟 |
|_____________|
|+賣() |
| |
|_____________|
[/pre]
而盜版盤和毛片是其子類。小子通過「DiscFactory」來管理這些光碟。代碼為: publicclassDiscFactory{publicstatic光碟getDisc(Stringname){return(光碟)Class.forName(name).newInstance();}}有人要買盜版盤,怎麼實現呢? publicclass小子{publicstaticvoidmain(String[]args){光碟d=DiscFactory.getDisc(盜版盤);d.賣();}}如果有一天,這小子良心發現了,開始賣正版軟體。沒關系,我們只要再創建一個「光碟」的子類「正版軟體」就可以了,不需要修改原結構和代碼。怎麼樣?對擴展開放,對修改關閉——「開閉原則」。
工廠模式是對具體產品進行擴展,有的項目可能需要更多的擴展性,要對這個「工廠」也進行擴展,那就成了「抽象工廠模式」。 合成/聚合復用原則(Composite/Aggregate Reuse Principle,CARP)經常又叫做合成復用原則。合成/聚合復用原則就是在一個新的對象裡面使用一些已有的對象,使之成為新對象的一部分;新的對象通過向這些對象的委派達到復用已有功能的目的。它的設計原則是:要盡量使用合成/聚合,盡量不要使用繼承。
就是說要少用繼承,多用合成關系來實現。我曾經這樣寫過程序:有幾個類要與資料庫打交道,就寫了一個資料庫操作的類,然後別的跟資料庫打交道的類都繼承這個。結果後來,我修改了資料庫操作類的一個方法,各個類都需要改動。「牽一發而動全身」!面向對象是要把波動限制在盡量小的范圍。
在Java中,應盡量針對Interface編程,而非實現類。這樣,更換子類不會影響調用它方法的代碼。要讓各個類盡可能少的跟別人聯系,「不要與陌生人說話」。這樣,城門失火,才不至於殃及池魚。擴展性和維護性才能提高。 設計模式分為三種類型,共23種。 創建型模式:單例模式、抽象工廠模式、建造者模式、工廠模式、原型模式。 結構型模式:適配器模式、橋接模式、裝飾模式、組合模式、外觀模式、享元模式、代理模式。 行為型模式:模版方法模式、命令模式、迭代器模式、觀察者模式、中介者模式、備忘錄模式、解釋器模式(Interpreter模式)、狀態模式、策略模式、職責鏈模式(責任鏈模式)、訪問者模式。 按字典序排列簡介如下。
Abstract Factory(抽象工廠模式):提供一個創建一系列相關或相互依賴對象的介面,而無需指定它們具體的類。
Adapter(適配器模式):將一個類的介面轉換成客戶希望的另外一個介面。Adapter模式使得原本由於介面不兼容而不能一起工作的那些類可以一起工作。
Bridge(橋接模式):將抽象部分與它的實現部分分離,使它們都可以獨立地變化。
Builder(建造者模式):將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。
Chain of Responsibility(責任鏈模式):為解除請求的發送者和接收者之間耦合,而使多個對象都有機會處理這個請求。將這些對象連成一條鏈,並沿著這條鏈傳遞該請求,直到有一個對象處理它。
Command(命令模式):將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日誌,以及支持可取消的操作。
Composite(組合模式):將對象組合成樹形結構以表示「部分-整體」的層次結構。它使得客戶對單個對象和復合對象的使用具有一致性。
Decorator(裝飾模式):動態地給一個對象添加一些額外的職責。就擴展功能而言, 它比生成子類方式更為靈活。
Facade(外觀模式):為子系統中的一組介面提供一個一致的界面,Facade模式定義了一個高層介面,這個介面使得這一子系統更加容易使用。
Factory Method(工廠模式):定義一個用於創建對象的介面,讓子類決定將哪一個類實例化。Factory Method使一個類的實例化延遲到其子類。
Flyweight(享元模式):運用共享技術有效地支持大量細粒度的對象。
Interpreter(解析器模式):給定一個語言, 定義它的文法的一種表示,並定義一個解釋器, 該解釋器使用該表示來解釋語言中的句子。
Iterator(迭代器模式):提供一種方法順序訪問一個聚合對象中各個元素,而又不需暴露該對象的內部表示。
Mediator(中介模式):用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的交互。
Memento(備忘錄模式):在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象之外保存這個狀態。這樣以後就可將該對象恢復到保存的狀態。
Observer(觀察者模式):定義對象間的一種一對多的依賴關系,以便當一個對象的狀態發生改變時,所有依賴於它的對象都得到通知並自動刷新。
Prototype(原型模式):用原型實例指定創建對象的種類,並且通過拷貝這個原型來創建新的對象。
Proxy(代理模式):為其他對象提供一個代理以控制對這個對象的訪問。
Singleton(單例模式):保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。 單例模式是最簡單的設計模式之一,但是對於Java的開發者來說,它卻有很多缺陷。在九月的專欄中,David Geary探討了單例模式以及在面對多線程(multi-threading)、類裝載器(class loaders)和序列化(serialization)時如何處理這些缺陷。
State(狀態模式):允許一個對象在其內部狀態改變時改變它的行為。對象看起來似乎修改了它所屬的類。
Strategy(策略模式):定義一系列的演算法,把它們一個個封裝起來, 並且使它們可相互替換。本模式使得演算法的變化可獨立於使用它的客戶。
Template Method(模板方法模式):定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中。Template Method使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。
Visitor(訪問者模式):表示一個作用於某對象結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。
從下一節開始,詳細描述以下每一種設計模式。 意圖
定義一個用於創建對象的介面,讓子類決定實例化哪一個類。Factory Method 使一個類的實例化延遲到其子類。
適用性 當一個類不知道它所必須創建的對象的類的時候。 當一個類希望由它的子類來指定它所創建的對象的時候。 當類將創建對象的職責委託給多個幫助子類中的某一個,並且你希望將哪一個幫助子類是代理者這一信息局部化的時候。 意圖
提供一個創建一系列相關或相互依賴對象的介面,而無需指定它們具體的類。
適用性 一個系統要獨立於它的產品的創建、組合和表示時。 一個系統要由多個產品系列中的一個來配置時。 當你要強調一系列相關的產品對象的設計以便進行聯合使用時。 當你提供一個產品類庫,而只想顯示它們的介面而不是實現時。 意圖
將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。
適用性 當創建復雜對象的演算法應該獨立於該對象的組成部分以及它們的裝配方式時。 當構造過程必須允許被構造的對象有不同的表示時。 意圖
用原型實例指定創建對象的種類,並且通過拷貝這些原型創建新的對象。
適用性 當要實例化的類是在運行時刻指定時,例如,通過動態裝載;或者 為了避免創建一個與產品類層次平行的工廠類層次時;或者 當一個類的實例只能有幾個不同狀態組合中的一種時。建立相應數目的原型並克隆它們可能比每次用合適的狀態手工實例化該類更方便一些。 意圖
保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。
適用性 當類只能有一個實例而且客戶可以從一個眾所周知的訪問點訪問它時。 當這個唯一實例應該是通過子類化可擴展的,並且客戶應該無需更改代碼就能使用一個擴展的實例時。 意圖
將一個類的介面轉換成另外一個客戶希望的介面。Adapter 模式使得原本由於介面不兼容而不能一起工作的那些類可以一起工作。
適用性 你想使用一個已經存在的類,而它的介面不符合你的需求。 你想創建一個可以復用的類,該類可以與其他不相關的類或不可預見的類(即那些介面可能不一定兼容的類)協同工作。 (僅適用於對象Adapter)你想使用一些已經存在的子類,但是不可能對每一個都進行子類化以匹配它們的介面。對象適配器可以適配它的父類介面。 意圖
將抽象部分與它的實現部分分離,使它們都可以獨立地變化。
適用性 你不希望在抽象和它的實現部分之間有一個固定的綁定關系。例如這種情況可能是因為,在程序運行時刻實現部分應可以被選擇或者切換。 類的抽象以及它的實現都應該可以通過生成子類的方法加以擴充。這時B r i d g e 模式使你可以對不同的抽象介面和實現部分進行組合,並分別對它們進行擴充。 對一個抽象的實現部分的修改應對客戶不產生影響,即客戶的代碼不必重新編譯。 (C++)你想對客戶完全隱藏抽象的實現部分。在C++中,類的表示在類介面中是可見的。 有許多類要生成。這樣一種類層次結構說明你必須將一個對象分解成兩個部分。Rumbaugh稱這種類層次結構為「嵌套的普化」(nested generalizations )。 你想在多個對象間共享實現(可能使用引用計數),但同時要求客戶並不知道這一點。一個簡單的例子便是Coplien的String類,在這個類中多個對象可以共享同一個字元串表示(StringRep)。 意圖
將對象組合成樹形結構以表示「部分-整體」的層次結構。C o m p o s i t e 使得用戶對單個對象和組合對象的使用具有一致性。
適用性 你想表示對象的部分—整體層次結構。 你希望用戶忽略組合對象與單個對象的不同,用戶將統一地使用組合結構中的所有對象。 意圖
動態地給一個對象添加一些額外的職責。就增加功能來說,Decorator模式相比生成子類更為靈活。
適用性 在不影響其他對象的情況下,以動態、透明的方式給單個對象添加職責。 處理那些可以撤消的職責。 當不能採用生成子類的方法進行擴充時。一種情況是,可能有大量獨立的擴展,為支持每一種組合將產生大量的子類,使得子類數目呈爆炸性增長。另一種情況可能是因為類定義被隱藏,或類定義不能用於生成子類。 意圖
為子系統中的一組介面提供一個一致的界面,Facade模式定義了一個高層介面,這個介面使得這一子系統更加容易使用。
適用性 當你要為一個復雜子系統提供一個簡單介面時。子系統往往因為不斷演化而變得越來越復雜。大多數模式使用時都會產生更多更小的類。這使得子系統更具可重用性,也更容易對子系統進行定製,但這也給那些不需要定製子系統的用戶帶來一些使用上的困難。Facade可以提供一個簡單的預設視圖,這一視圖對大多數用戶來說已經足夠,而那些需要更多的可定製性的用戶可以越過Facade層。 客戶程序與抽象類的實現部分之間存在著很大的依賴性。引入Facade將這個子系統與客戶以及其他的子系統分離,可以提高子系統的獨立性和可移植性。 當你需要構建一個層次結構的子系統時,使用門面模式定義子系統中每層的入口點。如果子系統之間是相互依賴的,你可以讓它們僅通過Facade進行通訊,從而簡化了它們之間的依賴關系。 意圖
運用共享技術有效地支持大量細粒度的對象。
適用性 一個應用程序使用了大量的對象。 完全由於使用大量的對象,造成很大的存儲開銷。 對象的大多數狀態都可變為外部狀態。 如果刪除對象的外部狀態,那麼可以用相對較少的共享對象取代很多組對象。 應用程序不依賴於對象標識。由於Flyweight對象可以被共享,對於概念上明顯有別的對象,標識測試將返回真值。 意圖
為其他對象提供一種代理以控制對這個對象的訪問。
適用性
在需要用比較通用和復雜的對象指針代替簡單的指針的時候,使用Proxy模式。下面是一 些可以使用Proxy模式常見情況: 遠程代理(Remote Proxy)為一個對象在不同的地址空間提供局部代表。 虛代理(Virtual Proxy)根據需要創建開銷很大的對象。 保護代理(Protection Proxy)控制對原始對象的訪問。保護代理用於對象應該有不同 的訪問許可權的時候。 智能指引(Smart Reference)取代了簡單的指針,它在訪問對象時執行一些附加操作。 它的典型用途包括: 對指向實際對象的引用計數,這樣當該對象沒有引用時,可以自動釋放它(也稱為SmartPointers)。 當第一次引用一個持久對象時,將它裝入內存。 在訪問一個實際對象前,檢查是否已經鎖定了它,以確保其他對象不能改變它。 意圖
使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關系。將這些對象連成一條鏈,並沿著這條鏈傳遞該請求,直到有一個對象處理它為止。
適用性 有多個的對象可以處理一個請求,哪個對象處理該請求運行時刻自動確定。 你想在不明確指定接收者的情況下,向多個對象中的一個提交一個請求。 可處理一個請求的對象集合應被動態指定。 意圖
將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日誌,以及支持可取消的操作
適用性 像上面討論的MenuItem對象那樣,抽象出待執行的動作以參數化某對象。你可用過程語言中的回調(callback)函數表達這種參數化機制。所謂回調函數是指函數先在某處注冊,而它將在稍後某個需要的時候被調用。Command模式是回調機制的一個面向對象的替代品。 在不同的時刻指定、排列和執行請求。一個Command對象可以有一個與初始請求無關的生存期。如果一個請求的接收者可用一種與地址空間無關的方式表達,那麼就可將負責該請求的命令對象傳送給另一個不同的進程並在那兒實現該請求。 支持取消操作。Command的Execute操作可在實施操作前將狀態存儲起來,在取消操作時這個狀態用來消除該操作的影響。Command介面必須添加一個Execute操作,該操作取消上一次Execute調用的效果。執行的命令被存儲在一個歷史列表中。可通過向後和向前遍歷這一列表並分別調用Unexecute和Execute來實現重數不限的「取消」和「重做」。 支持修改日誌,這樣當系統崩潰時,這些修改可以被重做一遍。在Command介面中添加裝載操作和存儲操作,可以用來保持變動的一個一致的修改日誌。從崩潰中恢復的過程包括從磁碟中重新讀入記錄下來的命令並用Execute操作重新執行它們。 用構建在原語操作上的高層操作構造一個系統。這樣一種結構在支持事務(Transaction)的信息系統中很常見。一個事務封裝了對數據的一組變動。Command模式提供了對事務進行建模的方法。Command有一個公共的介面,使得你可以用同一種方式調用所有的事務。同時使用該模式也易於添加新事務以擴展系統。 意圖
給定一個語言,定義它的文法的一種表示,並定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。
適用性 當有一個語言需要解釋執行, 並且你可將該語言中的句子表示為一個抽象語法樹時,可使用解釋器模式。而當存在以下情況時該模式效果最好: 該文法簡單對於復雜的文法, 文法的類層次變得龐大而無法管理。此時語法分析程序生成器這樣的工具是更好的選擇。它們無需構建抽象語法樹即可解釋表達式, 這樣可以節省空間而且還可能節省時間。 效率不是一個關鍵問題最高效的解釋器通常不是通過直接解釋語法分析樹實現的, 而是首先將它們轉換成另一種形式。例如,正則表達式通常被轉換成狀態機。但即使在這種情況下, 轉換器仍可用解釋器模式實現, 該模式仍是有用的。 意圖
提供一種方法順序訪問一個聚合對象中各個元素, 而又不需暴露該對象的內部表示。
適用性 訪問一個聚合對象的內容而無需暴露它的內部表示。 支持對聚合對象的多種遍歷。 為遍歷不同的聚合結構提供一個統一的介面(即, 支持多態迭代)。 意圖
用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的交互。
適用性 一組對象以定義良好但是復雜的方式進行通信。產生的相互依賴關系結構混亂且難以理解。 一個對象引用其他很多對象並且直接與這些對象通信,導致難以復用該對象。 想定製一個分布在多個類中的行為,而又不想生成太多的子類。 意圖
在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象之外保存這個狀態。這樣以後就可將該對象恢復到保存的狀態。
適用性 必須保存一個對象在某一個時刻的(部分)狀態, 這樣以後需要時它才能恢復到先前的狀態。 如果一個用介面來讓其它對象直接得到這些狀態,將會暴露對象的實現細節並破壞對象的封裝性。 意圖
定義對象間的一種一對多的依賴關系,當一個對象的狀態發生改變時, 所有依賴於它的對象都得到通知並被自動更新。
適用性 當一個抽象模型有兩個方面, 其中一個方面依賴於另一方面。將這二者封裝在獨立的對象中以使它們可以各自獨立地改變和復用。 當對一個對象的改變需要同時改變其它對象, 而不知道具體有多少對象有待改變。 當一個對象必須通知其它對象,而它又不能假定其它對象是誰。換言之,你不希望這些對象是緊密耦合的。 意圖
允許一個對象在其內部狀態改變時改變它的行為。對象看起來似乎修改了它的類。
適用性 一個對象的行為取決於它的狀態, 並且它必須在運行時刻根據狀態改變它的行為。 一個操作中含有龐大的多分支的條件語句,且這些分支依賴於該對象的狀態。這個狀態通常用一個或多個枚舉常量表示。通常, 有多個操作包含這一相同的條件結構。State模式將每一個條件分支放入一個獨立的類中。這使得你可以根據對象自身的情況將對象的狀態作為一個對象,這一對象可以不依賴於其他對象而獨立變化。 意圖
定義一系列的演算法,把它們一個個封裝起來, 並且使它們可相互替換。本模式使得演算法可獨立於使用它的客戶而變化。
適用性 許多相關的類僅僅是行為有異。「策略」提供了一種用多個行為中的一個行為來配置一個類的方法。 需要使用一個演算法的不同變體。例如,你可能會定義一些反映不同的空間/時間權衡的演算法。當這些變體實現為一個演算法的類層次時,可以使用策略模式。 演算法使用客戶不應該知道的數據。可使用策略模式以避免暴露復雜的、與演算法相關的數據結構。 一個類定義了多種行為, 並且這些行為在這個類的操作中以多個條件語句的形式出現。將相關的條件分支移入它們各自的Strategy類中以代替這些條件語句。 意圖
定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中。Te m p l a t e M e t h o d 使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。
適用性 一次性實現一個演算法的不變的部分,並將可變的行為留給子類來實現。 各子類中公共的行為應被提取出來並集中到一個公共父類中以避免代碼重復。這是Opdyke和Johnson所描述過的「重分解以一般化」的一個很好的例子。首先識別現有代碼中的不同之處,並且將不同之處分離為新的操作。最後,用一個調用這些新的操作的模板方法來替換這些不同的代碼。 控制子類擴展。模板方法只在特定點調用「hook」操作,這樣就只允許在這些點進行擴展。 意圖
表示一個作用於某對象結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。
適用性 一個對象結構包含很多類對象,它們有不同的介面,而你想對這些對象實施一些依賴於其具體類的操作。 需要對一個對象結構中的對象進行很多不同的並且不相關的操作,而你想避免讓這些操作「污染」這些對象的類。Visitor使得你可以將相關的操作集中起來定義在一個類中。當該對象結構被很多應用共享時,用Visitor模式讓每個應用僅包含需要用到的操作。 定義對象結構的類很少改變,但經常需要在此結構上定義新的操作。改變對象結構類需要重定義對所有訪問者的介面,這可能需要很大的代價。如果對象結構類經常改變,那麼可能還是在這些類中定義這些操作較好。

C. 淺淡產品設計的基本原則有哪些

1、需求原則:從需求產品的功能要求。以滿足目標的產品,這是基本的起點也是所有的設計的需要。客觀不用考慮產品積壓,造成浪費。與客觀需求是不同的時間,地點和變化,這種變化的需求設計,提升產品的基礎。它看起來如設計上滿足不同層次用戶的需求需求。

2、信息原則:設計過程中的信息主要是市場信息,科學和技術信息,以及測試過程的信息。設計師應該對各種大師的設計和全面的,完整的,准確的,可靠的信息。利用這些信息來正確地指導產品規劃,方案設計和詳細設計,並提高持續改進的設計方案。

3、創新原則:大膽創新的設計,有利於打破傳統的各種概念和做法的束縛,創造一個獨特的各種發明原理,機械產品的新結構。例如,廣州億豪工業設計的開拓創新精神。

4、系統的原則:每個機械產品可以被看作是一個懸而未決的技術系統,產品設計是用系統理論的方法,以確定系統的功能結構,通過分析,綜合和決策評估,使產品達到了全面最佳的效果。

5、趨同原則:為了尋找新的產品方案設計功能原理,運用發散思維;為了得到一種新產品,它必須是全面的各種信息,收斂思維的實施。發散思維收斂思維,往往取得很好的成績的基礎上。

6、優化原則:它屬於廣義的優化,包括方案的優點,設計參數優化,整體方案的優化。也就是說高效,優質,經濟的設計任務。

7、繼承原則:前人的成就,有批判地吸收,創新,推廣,為我所用,這是繼承的原則。精明的設計師把握繼承的原則,可以更有效的創新設計,可以集中精力設計力能解決的主要問題。

8、效益原則:設計必須保證有效,有必要考慮的技術和經濟效益,還要考慮社會效益。

9、時效原則:加快設計和開發時間,以搶先佔領市場。同時,在設計過程中,來預測可能發生的同類產品的變化,在產品開發階段,確保了產品的設計到市場不會過時。

10、定量原則:評估程序選擇,建模技術美學,技術性能和經濟效益,並盡可能採用科學的定量方法。

D. 軟體設計的原則是什麼

軟體設計是一個創造性的過程,對一些設計者來說需要一定的資質,而最後設計通常都是由一些初步設計演變而來的。從書本上學不會設計,只能經過實踐,通過對實際系統的研究和實踐才能學會。對於高效的軟體工程,良好的設計是關鍵,一個設計得好的軟體系統應該是可直接實現和易於維護、易懂和可靠的。設計得不好的系統,盡管可以工作,但很可能維護起來費用昂貴、測試困難和不可靠,因此,設計階段是軟體開發過程中最重要的階段。

E. 淺談網站設計開發有哪些原則

1、明確建立網站的目標和用戶需求。

企業網站設計是展現企業形象、介紹產品和服務、體現企業發展戰略的重要途徑,要根據消費者的需求、市場的狀況、企業自身的情況等進行綜合分析,牢記以消費者為中心進行設計規劃。

2、總體設計方案主題鮮明。

企業網站設計是一種視覺語言,它的編排和布局需要深思熟慮。對網站的整體風格和特色作出定位,規劃網站的組織結構。網站應針對所服務對象的不同做出不同的形式。好的網站會把圖形表現手法和有效的組織與通信結合起來,做到主題鮮明突出,要點明確,以簡單明確的語言和畫面體現站點的主題。調動一切手段充分表現網站的個性,辦出網站的特點。

3、網頁形式與內容相統一。

企業網站設計要將多樣的形式組織成統一的頁面結構,體現內容的豐富含義。運用對比與調和、對稱與平衡、節奏與韻律以及留白等手段,通過空間、文字、圖形之間的相互關系建立整體的均衡狀態,產生和諧的美感。 點、線、面作為視覺語言中的基本元素,要使用點、線、面的互相穿插、互相襯托、互相補充構成最佳的頁面效果。

4、多媒體功能的利用。

要想吸引瀏覽者注意力,企業網站設計頁面時可以用HTML5、三維動畫、FLASH等來表現。但要注意,由於網路帶寬的限制,在使用多媒體的形式表現網頁的內容時應考慮客戶端的傳輸速度。

5、內容更新與溝通。

網站建成後要不斷更新內容。讓瀏覽者了解企業的發展動態等,同時也會幫助企業建立良好的形。最好在企業網站上認真回復用戶的電子郵件。收到電話垂詢和傳真時做到有問必答。並且將用戶的用意進行分類,由相關部門處理,使網站用戶對企業產生信任感。注意不要許諾你實現不了的東西,在你真正有能力處理回復之前,不要讓用戶輸入信息或羅列一大堆自己不能及時答復的電話號碼。如果要求訪問者自願提供其個人信息,應公布並認真履行個人隱私保承諾。


F. 用戶體驗與UI設計開發應堅持哪些原則

用戶界面設計包含為機器和軟體創建的所有界面設計,例如網站和移動應用程序的外觀,以及它們的方向和易用性。GUI設計在用戶與應用程序或網站的交互方式中起著至關重要的作用,這意味著唯一良好的UI設計是實現簡化和無縫體驗的設計。

用戶界面設計要遵循哪些原則?
1、明確。
對任何界面而言,「明確」是首要的也是最重要的一點。設計師們在設計的時候,要去關心人們為何會使用這個應用,去了解什麼樣的界面是能幫助他們與之互動的,去預測人們在使用時的行為並能夠成功地反饋給他們。

2、交互。
界面的存在是為了讓人和我們的世界產生互動。它的功用和效果是可以被測量的。但是它們不是功利性的。優秀的界面不但能夠讓我們做事有效率,還能夠激發、喚起和加強我們與這個世界的聯系。

3、直觀操作。
要抓住直觀操作這個最初的目標,界面設計要盡可能的簡潔,更多的可識別的慣用自然手勢。理想情況下,界面會變得非常細微,用戶在會有直觀操作的感覺。

4、讓用戶掌控一切。
人們會在自己能掌控的環境中感覺最舒心、最放鬆。通過定期的梳理系統狀態,描述因果關系,並且在每一步操作都給出提示,讓用戶感覺每一步操作都在他的掌控中。

5、遵循用戶行為。
人總是對符合期望的行為最感舒適。因此,設計出來的元素,看起來應該像它們本身特徵一樣。在具體操作中,這意味著用戶只要看到這個界面元素,就應該能猜測出這個元素是做什麼的。

6、前後一致。
為了保持一致性,新手設計師通常在會把相同的視覺處理(重用代碼)方式用在,應該用不同的視覺處理方式的元素上。

7、視覺層次。
強烈的視覺層次會讓畫面有清晰的瀏覽次序。如果要在畫面中添加一個視覺強烈的元素時,設計者應該要重新調整頁面上所有元素的重量分配,來達到強烈視覺層次的效果。
了解用戶界面設計原則是你做出優秀作品的必要條件,而掌握UI設計師必備的技能才是你決勝高薪的關鍵。

G. 代碼設計時應遵循哪些原則

1提高編碼質量,代碼可讀性和可維護性。

2代碼編寫規范

2.1 刪除所有無用代碼
2.2 必須給代碼添加註釋,一個類的注釋字數不得小於代碼的百分之20%
2.3 建議遵循30秒原則。如果另一個程序員無法在三十秒內無法知道你的函數在做什麼,如何做以及為什麼要這樣做,那麼說明你的代碼是難於維護的,需要得到提高。
2.4 一個函數的代碼長度不允許超過100行,超過一百行的函數建議在不破壞原子性的基礎上進行拆分。
2.5 變數都應在方法或者類的頭部集中定義
2.6 保證一行代碼只做一件事
2.7 使用括弧來控制操作符的運算順序,以免使用java默認的操作符優先順序順序。
2.8 代碼格式化:對代碼進行格式化,再進行提交。
2.9 介面不允許沒有方法或者變數的聲明

3. 命名規范
3.1 各種標識符的命名要使用有實際意義的英文單詞或者英文單詞縮寫,縮寫詞及英文單詞要收錄在項目的簡寫詞彙表中。切忌使用阿拉伯數字和拼音進行命名。
3.2 類名:首字母大寫,每個單詞首字母都需要大寫。
3.3 方法名:首字母小寫,其餘單詞首字母都需大寫。
3.4 全局變數,和常量名稱要求全部字母大寫。
3.5 參數名稱與局部變數基本相同,區別在於參數名稱需要加上冠詞a ,an 或者在單詞結尾以s結束。

4. 注釋規范
4.1 注釋需要注意的事項:
★注釋應該用中文清晰表達意思,應該是程序看起來更清晰,更容易理解
★注釋要盡量簡明,避免裝飾性的注釋。
★注釋不但要說明做什麼,還應當說明為什麼要這樣做。最好先寫注釋表明要做什麼,再進行編碼。

4.2 類的注釋
★類的用途,目的。包括其他人感興趣的介紹。
★已知bug,當然最好是修改好所有的錯誤,但有時可能暫時沒有辦法修改,或者沒有時間修改。
★開發和維護該類的歷史列表,記錄每一次修改的作者,日期,修改的內容。
★列舉類的各種穩定狀態,說明調用成員函數使類的狀態產生的變遷(可選)。
★同步問題(可選)
★對主要的演算法必須加以說明,主要流程必須給予引導性說明
標准格式:
如果對已經版本話的類進行了修改,需要按照如下格式為每一次修改附加修改歷史記錄:
// 修改人 + 修改日期
// 修改說明 範例:

// 李四 2010/07/02
// 添加錯誤數據修改後繼續批量保存的處理函數 saveBatch(
@Bind(key = "itemParams", defaultValue = "") String itemParams,
@Bind(key = "pid", defaultValue = "") String pid)。
// 王小二 2010/07/02

4.3 介面注釋:
★介面的注釋風格基本與類的注釋風格相同;
★在別人使用介面之前,必須了解介面所包含的概念。檢驗一個介面是否應該定義的簡單方法是:你是否能★夠容易的描述介面的用途;
★介面如何應當和不應當被使用。開發者需要知道該介面如何被使用,也希望知道該介面不能被怎樣使用。

4.4 函數的注釋
★函數頭注釋必須包括:函數執行了什麼功能,為什麼要這樣處理;函數處理過程中對對象的哪些屬性
★可能進行更改;函數執行前後,對象的狀態;
★比較、循環等控制結構加註釋(可選);
★在代碼的功能並非一目瞭然的情況下,應當說明為什麼要這樣做;
★局部變數必須加註釋;
★復雜難寫的代碼必須加註釋;

4.5類屬性的注釋:
★描述域的用途。使別人知道如何去使用它;
★對於有著復雜事物規則的域,可以加入範例來說明。有時候一個簡單的小例子,抵的上千言萬語;

H. 建築設計的原則是什麼

在當抄前欣欣向榮的城襲市規劃和建築設計熱潮中,無論是開發者還是設計者,對於建築實體的功能造型甚為關注,然而對這些建築賴以立足的場地設計卻常常忽略而過,因而類似「成功的單體建築,失敗的整體環境」這樣的狀況屢見不鮮。
整體觀念的忽略
在目前的設計中,只注重建築的外表而忽略場地形象。建築內部功能研究透徹但場地功能流線組織混亂、環境設計與建築缺乏聯系等不盡如人意的狀況較為普遍,這些都反映出一種整體性思維的缺失。
造成建築設計與場地設計整體性缺乏的部分原因在於分段式的工作模式。目前國內的城市設計和建築設計幾乎都是由規劃師和建築師先完成規劃范圍內的總體布局和建築單體的設計,然後由園林師完善環境小品、植物配置的工作。這種分段式的工作模式由於缺乏設計者對設計流程自始至終的參與,往往容易造成建築與場地環境的脫節。

I. 建築設計的原則是什麼

1、建築設計首先必須滿足使用要求:根據建築物的使用目的,按照相應專的設計規范進行設計。比如屬:空間要求、環保要求、採光要求、消防要求及結構的耐久要求、抗震要求等。
2、建築設計必須採用合理技術措施原則:正確選用建築材料、合理安排使用空間,合理設計結構和構造,考慮方便施工、縮短工期。實現經濟目的。
3、、建築設計考慮建築物的美觀性。對於居住、辦公類、及其他公用建築應當創造一個舒適、優美的環境。對於建築物外形構造、表面裝飾、顏色都要做合理的設計。

熱點內容
美發店認證 發布:2021-03-16 21:43:38 瀏覽:443
物業糾紛原因 發布:2021-03-16 21:42:46 瀏覽:474
全國著名不孕不育醫院 發布:2021-03-16 21:42:24 瀏覽:679
知名明星確診 發布:2021-03-16 21:42:04 瀏覽:14
ipad大專有用嗎 發布:2021-03-16 21:40:58 瀏覽:670
公務員協議班值得嗎 發布:2021-03-16 21:40:00 瀏覽:21
知名書店品牌 發布:2021-03-16 21:39:09 瀏覽:949
q雷授權碼在哪裡買 發布:2021-03-16 21:38:44 瀏覽:852
圖書天貓轉讓 發布:2021-03-16 21:38:26 瀏覽:707
寶寶水杯品牌 發布:2021-03-16 21:35:56 瀏覽:837