軟件設計是什麼意思?

General 更新 2024-12-25

什麼是軟件設計

?就筆者的觀點來看:軟件設計是採用編程或腳本語言優雅地表達並解決現實需求的一門科學和藝術。優雅地表達想傳遞的意思是,所設計出來的軟件應當能容易被人理解、方便擴展和維護。從這一定義可以看出軟件設計首先是一門科學,是一門解決用戶需求的軟件科學。既然是科學,不可避免的要掌握相關的科學知識,比如數據結構、計算機組成原理、編程語言等等,而這些內容也正是大學計算機相關專業所傳授的知識。科學知識或許更加容易被量化,拿數據結構為例,一種算法比另一種算法是否更優可以從算法的時間冗餘度和空間冗餘度進行衡量。

除了科學的部分,軟件設計還涉及藝術的範疇。既然是一門藝術,那就一定存在欣賞的問題,也就意味並不是每個從業人員都能欣賞這種藝術,而只有達到了一定的層次且形成了自己的思想後才能欣賞它。由於設計中藝術的非直觀性,造成其在現實中不容易被量化,因此難以形成相應的評估準則,進而造成在軟件行業容易被忽視。試想想,大學課程有多少內容是在教我們將軟件設計當作藝術進行欣賞並追求?

好的軟件設計能相對方便(甚至是很方便)地實現新的需求問題。需求分析是告訴我們做什麼,其顯然非常的重要,而設計更多地涉及怎麼做更好。既然對於設計的好壞不能完全通過量化的方式進行衡量,那如何去評價一個軟件設計的好壞呢?或者在進行軟件設計時,如何去思考以做出一個好的設計呢?這可以通過對一些軟件設計原則的把握來做到。設計原則可能有很多,但並不是每一個項目都要同時滿足所有的設計原則,另外,不同的項目其特性有可能使得有些設計原則並不適用。另外,設計原則也不是一成不變的,可能因項目的特點又可以抽取出另外的設計原則。筆者將在後續的文章中闡述日常工作中所遵守的軟件設計原則。

軟件設計是一個不斷提煉和抽象的過程。說它是一個提煉的過程,是因為在設計之初會想到很多需要考慮的因素,這些因素在設計工作沒有深入之前,並不能發現它們有些是重疊的,或者有些根本就不需要考慮。隨著設計的深入,會從眾多的因素中得到其中的關鍵因素並將這些因素付之於實踐。設計也是一個抽象過程,需要從眾多的表象中找到它們的共性,通過表達共性從而最終描述每個個性,而不應當侷限於直接去描述每一個個性。設計的深入過程並不只是一味地思考,除非設計者以前有過類似的設計經驗,否則設計過程通常需要進行一定的代碼編寫工作,以輔助思考,這一點對於開發軟件架構師(系統架構師不包括在內)也應當是一樣的。

軟件設計是一個創造模型的過程。通過對需求的理解和抽象,好的設計將最終構造出一個模型,而且這個模型與現實世界的某樣東西可能是相類似的。這個模型除了實現了用戶的需求,還向他人展示了她自己是什麼模樣以及可能會如何行事。打個比方,如果有人發明了一種新的交通工具,他如何最為有效地表達這一新的交通工具到底是什麼樣的呢?是直接拿一張圖紙給他人並說你看看圖紙就知道了好呢?還是打一個大家都耳熟能詳的比方好呢?顯然,後者更好。如果他說這個新的交通工具與現在的轎車很像,只不過,如此一來,聽眾馬上就會想,這個新的交通工具有四個輪子、也有方向盤等等。顯然,後者能很快地讓聽眾利用其生活經驗快速的接收信息,而好的軟件設計也應當做到這一點。軟件設計時的模型創造過程,其實就是賦予軟件代碼生命的過程,由此看來一個好的設計應當是 有生命的。

軟件設計是一個做選擇的過程。人有時沒有選擇反而輕鬆。一個剛畢業的大學生如果只拿到了一個offer,他可能沒有選擇單位的煩惱,不論單位好壞都去報道就是了。但是,如果他拿了兩個offer,選擇的煩惱也就有了 是去A單位好呢?還是B單位好?不幸的是,軟件的設計過程往往存在......

軟件設計是什麼意思

軟件設計是從軟件需求規格說明書出發,根據需求分析階段確定的功能設計軟件系統的整體結構、劃分功能模塊、確定每個模塊的實現算法以及編寫具體的代碼,形成軟件的具體設計方案。

軟件設計是把許多事物和問題抽象起來,並且抽象它們不同的層次和角度。將問題或事物分解並模塊化使得解決問題變得容易,分解的越細模塊數量也就越多,它的副作用就是使得設計者考慮更多的模塊之間耦合度的情況。

軟件設計還有一層意思是指界面設計UI設計,那個是平面美工的範疇

軟件開發是什麼意思?

C++ C# JAVA這是當今很流行的語言,還要有一些軟件工程、數據結構等方面的知識,也要掌握常用的關係型數據庫,瞭解建模語言(如:UML),還要精通比較流行的新技術(如:XML),流行的開發模式(如:STRUCTS、Spring、Hibernate)……

1) 掌握數據表示、算術和邏輯運算;

(2) 掌握相關的應用數學、離散數學的基礎知識;

(3) 掌握計算機體系結構以及各主要部件的性能和基本工作原理;

(4) 掌握操作系統、程序設計語言的基礎知識,瞭解編譯程序的基本知識;

(5) 熟練掌握常用數據結構和常用算法;

(6) 熟悉數據庫、網絡和多媒體的基礎知識;

(7) 掌握C程序設計語言,以及C++、Java、Visual、Basic、Visual C++中的一種程序設計語言;

(8) 熟悉軟件工程、軟件過程改進和軟件開發項目管理的基礎知識;

(9) 熟悉掌握軟件設計的方法和技術;

(10) 掌握常用信息技術標準、安全性,以及有關法律、法規的基本知識;

(11) 瞭解信息化、計算機應用的基礎知識;

(12) 正確閱讀和理解計算機領域的英文資料。

沒有個1年2年是不可能成為一個優秀的軟件開發工程師的!!!!!!!!

軟件開發是什麼

軟件開發的內容是:需求、設計、編程和測試!

需求:不僅僅是用戶需求,應該是開發中遇到的所有的需求。比如,你首先要知道做這個項目是為了解決什麼問題;測試案例中應該輸入什麼數據......為了清楚地知道這些需求,你經常要和客戶、項目經理等交流。

設計:編碼前,肯定有個計劃告訴你要做什麼,結構是怎樣等等。你一定要按照這個來做,否則可能會一團糟。

編程:如果在項目截止日,你的程序不能跑起來或達不到客戶的要求,你就拿不到錢。

測試:目的是讓你知道,什麼時候算是完成了。如果你聰明,你就應該先寫測試,這樣可以及時知道你是否真地完成了。否則,你經常會不知道,到底有哪些功能是真正完成了,離預期目標還差多遠。

軟件開發中,客戶和開發人員都有自己的基本權利和義務。

客戶:

定義每個用戶需求的商業優先級;

制訂總體計劃,包括用多少投資、經過多長時間、達到什麼目的;

在項目開發過程中的每個工作周,都能讓投資獲得最大的收益;

通過重複運行你所指定的功能測試,準確地掌握項目進展情況;

能隨時改變需求、功能或優先級,同時避免昂貴的再投資;能夠根據各種變化及時調整項目計劃;

能夠隨時取消項目;項目取消時,以前的開發工作不是一堆垃圾,已開發完的功能是合乎要求的,正在進行或未完成的的工作則應該是不難接手的。

開發人員:

知道要做什麼,以及要優先做什麼;

工作有效率;

有問題或困難時,能得到客戶、同事、上級的回答或幫助;

對工作做評估,並根據周圍情況的變化及時重新評估;

積極承擔工作,而不是消極接受分配;

一週40小時工作制,不加班。

軟件開發過程可以包括以下6個階段:

計劃

對所要解決的問題進行總體定義,包括瞭解用戶的要求及現實環境,從技術、經濟和社會因素等3個方面研究並論證本軟件項目的可行性,編寫可行性研究報告,探討解決問題的方案,並對可供使用的資源(如計算機硬件、系統軟件、人力等)成本,可取得的效益和開發進度作出估計。制訂完成開發任務的實施計劃。

分析

軟件需求分析就是回答做什麼的問題。它是一個對用戶的需求進行去粗取精、去偽存真、正確理解,然後把它用軟件工程開發語言(形式功能規約,即需求規格說明書)表達出來的過程。本階段的基本任務是和用戶一起確定要解決的問題,建立軟件的邏輯模型,編寫需求規格說明書文檔並最終得到用戶的認可。需求分析的主要方法有結構化分析方法、數據流程圖和數據字典等方法。本階段的工作是根據需求說明書的要求,設計建立相應的軟件系統的體系結構,並將整個系觸分解成若干個子系統或模塊,定義子系統或模塊間的接口關係,對各子系統進行具體設計定義,編寫軟件概要設計和詳細設計說明書,數據庫或數據結構設計說明書,組裝測試計劃。

設計

軟件設計可以分為概要設計和詳細設計兩個階段。實際上軟件設計的主要任務就是將軟件分解成模塊是指能實現某個功能的數據和程序說明、可執行程序的程序單元。可以是一個函數、過程、子程序、一段帶有程序說明的獨立的程序和數據,也可以是可組合、可分解和可更換的功能單元。模塊,然後進行模塊設計。概要設計就是結構設計,其主要目標就是給出軟件的模塊結構,用軟件結構圖表示。詳細設計的首要任務就是設計模塊的程序流程、算法和數據結構,次要任務就是設計數據庫,常用方法還是結構化程序設計方法。

編碼

軟件編碼是指把軟件設計轉換成計算機可以接受的程序,即寫成以某一程序設計語言表示的"源程序清單"。充分了解軟件開發語言、工具的特性和編程風格,有助於開發工具的選擇以及保證軟件產品的開......

JAVA軟件開發是什麼意思啊?

ava軟件開發主要分三個方向:JAVASE、JAVAME、JAVAEE。開發的一般是:java Swing桌面應用程序,javaME(做嵌入式)不是很常用,JAVAEE(開發B/S系統)是主流。一般說的JAVA軟件開發主要就是用JAVA開發一系列的B/S系統,包括各種辦公系統,各種網站,電力的監控系統,報表系統等等。學java的話,一般都是要先學JAVASE(一切的基礎),因為不管是要從事哪個方向開發,都必須先把基礎掌握好。然後,就是一系列的東西需要學習,首先,必須瞭解servlet,JSP,然後就是要學習各種的框架,struts,struts2,hibernate,Spring,應為SSH2框架是現在的主流,所以,這個必須學。然後是數據庫也要懂一點。總之,java需要學的東西特別多。不過,如果java基礎特別特別好的話,那麼公司也不會太在意其他的,因為,技術是學不完的,如果基礎特別好,其他的也容易培養上手。測試,一個項目會很大,會出現各種問題,所以,必須每次完成一個功能,最好自己寫測試的代碼,測試一下。

軟件開發是個什麼概念?

我覺得說白了,軟件開發就是用一些專業的技術,比如編程語言 數據庫 這樣的技術來做出一個企業需求的管理等方面的軟件,就像財務暢統的軟件,企業管理的軟件等等,要是想學,還得專門的學一下,我是從重慶那個威迅畢業的,學的就是這個專業,感覺這個學校不錯,要是有興趣,你也可以多去了解下。

程序設計中%d什麼意思

是在C中麼?printf("%d",n),這樣的形式麼?這裡%d表示對應後面的參數列表中一個參數,並且%d表示用十進制整數方式打印該參數

程序是什麼意思

程序(program)是為實現特定目標或解決特伐問題而用計算機語言編寫的命令序列的集合。為實現預期目的而進行操作的一系列語句和指令。一般分為系統程序和應用程序兩大類。 計算機中的程序在港澳臺地區稱為程式。程序就是為使電子計算機執行一個或多個操作,或執行某一任務,按序設計的計算機指令的集合

智能軟件開發是什麼意思

就是開發一個智能軟件的過程。

什麼是程序設計?

什麼是程序設計

話就從一個著名的公式說起:程序設計=數據結構+算法

每當我寫下這個公式的時候,心中總有一種新的感悟,可是就這個程序界盡人皆知的公式卻難倒了一大批想和Bill·Gates一爭高下的朋友,下面我為大家解剖這個公式:

“程序設計”說白了就是大家所謂編程,先不管這個詞中有什麼深刻的內涵,先看看等式右面的這兩個名詞。

按照官方的定義:數據結構即非數值計算的程序設計問題中的計算機的操作對象以及它們之間的關係和操作;算法是對特定問題求解步驟的一種描述,是對指令的有序序列。官方的解釋就是經典,可是我們看了卻更糊塗了。別急,聽我給大家解釋。

程序設計就像蓋房子,數據結構就像磚、瓦,而算法就是設計圖紙。你若想蓋房子首先必須有原料(數據結構),但是這些原料不能自動地蓋起了你想要的房子;你必須按照設計圖紙(算法)上的說明一磚一瓦地去砌。這樣你才能擁有你想要的房子。程序設計也一樣,你使用的編譯工具(如Jave /C/Basic/Pascal等)中有各種功能語句或基本結構(如Read/Write/Real/Boolean等),它們不會自動排列成你要的程序代碼。你得按照程序規定的功能去編寫,而程序的功能是實現就是算法的具體體現。所以通俗地說:你必須按照特定的規則,把特定的功能語句和琺本結構按照特定的順序排列起來,形成一個有特定功能的程序,這就是:程序設計=數據結構+算法。 數據結構是程序設計這座大廈的基礎,沒有基礎,無論設計有多麼高明,這座大廈不可能建造起來的。算法則是程序設計的思想,它的靈魂!沒有靈魂的程序不能叫程序,只是一堆雜亂無章的符號而已。在程序設計中,數據結構就像物質,算法就是意識。這就像哲學上說的:意識是依賴與物質而存在的,物質是由於意識而發展。雙方是相互依存、缺一不可的!

數據結構內容不多僅僅有幾個系統自帶的基本結構(像順序結構、分支結構、循環結構、函數過程)數據類型(整型、實型、布爾、字符等)和用戶定義的高級點的數據結構(數組、集合、文件、指針(隊列、棧、樹、圖等)······)就這麼多。可是算法卻不同了,它是多中多樣的!它可以讓你讓數據以你想要的方式排列(當然要符合語法和功能要求^_^)。再打個比方,數據結構是人體的各種組織、器官,算法則是人的思想。你可以用你的思想去支配你身體的各個可以運動的器官隨意運動。如果,你想去取一個蘋果,你可以走過去,也可以跑過去,只要你想,你甚至可以爬過去。但是無論如何,你你的器官還你的器官(沒有變),目的還是同一個目的(取蘋果),而方式卻是隨心所欲!這就是算法的靈活性,不固定性。因此可以這樣說:數據結構是死的,而算法是活的!現在明白許多了吧!

1、簡而言之,程序設計就是把一堆指令放在一塊實現某種功能。

2、計算機只能識別一種語言,就是機器語言,是由0和1組成的指令

由其它語言寫的程序最終要變成二進制的機器語言計算機才能執行,這是通過編譯器或解釋器做的

相關問題答案
軟件設計是什麼意思?
軟件配置是什麼意思?
室分設計是什麼意思?
代碼設計是什麼意思?
先鋒設計是什麼意思?
工程設計是什麼意思?
軟件版本是什麼意思?
排版設計是什麼意思?
共生設計是什麼意思?
景觀設計是什麼意思?