軟件開發是什么(軟件開發怎么樣)
本篇文章給大家談談軟件開發是什么,以及軟件開發怎么樣對應的知識點,希望對各位有所幫助,不要忘了收藏本站喔。
本文目錄一覽:
- 1、什么是軟件開發
- 2、軟件開發是什么?
- 3、軟件開發的定義是什么?
- 4、軟件開發工作具體干什么?
- 5、什么是軟件開發?
什么是軟件開發
有人問我:“什么是軟件開發?”?;卮疬@個問題前,我們需要先理解什么是軟件。
一、軟件定義
關于軟件,一些優秀的人已經給出了簡單易懂的定義,舉個例子:
軟件是計算機系統的一部分,它適配各種不同用途的機器。例如,通過同一臺計算機但不同的軟件,我們可以玩游戲、計算繳稅、寫信或者寫書,以及獲得約會邀請的答復。
—— 杰拉爾德·溫伯格
這句話是作者解釋給他的朋友的,他的朋友是一名電腦小白。
有了上述定義,什么是軟件開發也就顯而易見。
軟件開發研究如何讓運行在計算機里的不同系統解決人們在現實中遇到的問題。
我們經常見到這樣的句式,試圖一句話就把事情講得面面俱到。
不妨簡化一下。
軟件開發研究如何讓計算機解決問題。
目前看起來不錯。
倘若你聽過“一切問題都是人的問題”這句話,并且愿意相信它,那我們就可以接著簡化。
軟件開發解決人的問題。
這個定義充滿了敷衍的味道。如果你敢向你的女友這么解釋,她大抵會提到“你是不不愛我了”。
回到正題,它好在足夠籠統,把所有的細節歸納為“人的問題”,一言以蔽之,至少不會有多大偏差。
關于什么是“人的問題”,我們無法一一列舉。但通過下面的例子,也許可以窺探到一些奧秘:早在 1995 年,有人便覺得軟件開發要解決的問題陷入了困境。
我們遇到了前所未有的困難,不知道在做出電子表格(Excel)后,計算機還可以用來做什么。
—— 查爾斯·西蒙尼
從今天來看,這個觀點頗失謙遜,軟件行業從來沒有止步于表格處理程序。當然,我們不是要批判什么,它是用來引出以下軟件開發的三點特性。
“人的問題”不可預料。
世界在改變,人的需求也是一直變化的,我們不知道下一步會發生什么。值得一提的是,有時我們甚至不知道過去發生了什么。
“人的問題”具有延續性。
在 1977 年,人們開始用電子表格處理數據。在今天的辦公自動化領域,電子表格仍具有著不可替代的作用。這是值得慶幸的,總有些問題和解決方案會持續很長一段時間。
“人的問題”具有復雜性。
盡管軟件技術在當今的 IT 領域開花結果,人們探索出了各種各樣的成型解決方案,但開發者和開發團隊依舊面對著復雜的開發環境。
復雜性足夠我們花費一整節的內容來闡述它,歡迎閱讀下一節。
二、軟件復雜性
隨手翻開一本介紹軟件工程的書,你都會看到它會提及復雜性。軟件復雜性的本質是,現實世界是無比復雜的。至于現實為什么是復雜的,不在本文討論的范疇。本文更關心的問題是:
是什么讓軟件變復雜的?
我們在上文提到“軟件是運行在計算機里的系統”,這里直接給出系統的一般定義:
系統是對世界的一種觀點。
你可能一時無法接受這個它。
換種說法,系統是對世界的一種抽象。
抽象意味著要從繁復的具象世界里剝絲抽繭,不同的抽象就會產生不同的系統。
觀點或者說抽象可以簡單也可以復雜。
一個軟件從無到有,越來越復雜,根本原因就在于特性不斷增加和改變,不同角度會產生不同的觀點。
舉個食品行業的例子。
一家公司以獨家配方生產一種食品,每個季度的銷售額上漲 10%。
管理層希望業績進一步提高,具體到研究部門,目標是調制出更好吃的配方。
研究團隊計劃每個月只改動一點點,一年過去了,不斷地有顧客投訴食品不再是原來的味道了。
公司董事決定開會。
“我們生產的食品更好吃了嗎?”
“當然,我們的銷售額增長達到了 30%?!?/p>
“但是我們的顧客不這樣說?!?/p>
“他們只是不愿意改變!”
再舉個例子,打開你的手機,各類軟件源源不斷地彈出新聞資訊類消息。大部分軟件工具成熟以后,不再愿意僅做好它的本職工作,當你使用一個小眾 APP 時,你可以親眼見證它從小而美到臃腫不堪的歷程。
這是復雜性的一面,面對它,我們唯一能夠做的就是“不要多余的特性”,它有個經典表述:
不要過早的考慮優化。
回到上面的故事,也許那家公司什么也不做,銷售額同樣會上漲。
你可能會質疑“說的輕巧,我們總不能什么都不做?”
回答它,涉及到我們做出決定時繞不開的一個問題。
你愿意付出什么樣的代價?
付出什么,就要準備好得到什么。你愿意付出多少薪資雇傭員工,你愿意增加多少特性,你愿意采用什么樣的解決方案,你愿意為這個 Bug 留出多少工作量。
拿出什么樣的籌碼,是真實擺在我們眼前的問題。
四、什么是軟件開發
現在,我們可以正式回答這個問題了。
首先,“預料”對方真正的目的是什么?
1. 對方只是隨口一問。
2. 對方想打探你的薪資,然后向你介紹相親對象。
3. 對方對軟件行業這個話題感興趣,并想深入了解更多。
4. 其他可能性。
對于醉翁之意不在酒,你翻開朋友圈,閱讀一番《不得不看,職場新老手都有用的一百條話術!》,基本可以見招拆招了。
至于第三種情況,先給他來個含辭模糊的定義,比如
軟件開發通過設計、編碼、測試以及持續地維護解決人的需求。
一般地,對方發現自己聽得云里霧里后,就會識趣的停止這個話題。但也有可能,尤其是碰到其他領域的工程師時,會引出更為具體的問題。
不幸的是,有時候問題根本就不存在,正如下面的寥寥數語,它會讓你所有準備好的說辭付之流水。
“工作忙嗎?”
“還行?!?/p>
“每天都干啥?”
“主要是寫代碼?!?/p>
“不懂,聽說挺累的?!?/p>
“有時候是累,工作不都這樣么?!?/p>
“嘿,說的也是?!?/p>
希望對您有所幫助!~
軟件開發是什么?
軟件開發(Software development)是根據用戶要求建造出軟件系統或者系統中的軟件部分的過程。它是一項包括需求獲取、開發規劃、需求分析和設計、編程實現、軟件測試、版本控制的系統工程。 軟件開發包括研究、修改、復用、重新設計(再工程)、維護等活動,通常采用軟件開發工具進行開發。
階段劃分
計劃
軟件開發
對所要解決的問題進行總體定義,包括了解用戶的要求及現實環境,從技術、經濟和社會因素等3個方面研究并論證本軟件項目的可行性,編寫可行性研究報告,探討解決問題的方案,并對可供使用的資源(如計算機硬件、系統軟件、人力等)成本,可取得的效益和開發進度作出估計,制訂完成開發任務的實施計劃。
分析
軟件需求分析就是對開發什么樣的軟件的一個系統的分析與設想。它是一個對用戶的需求進行去粗取精、去偽存真、正確理解,然后把它用軟件工程開發語言(形式功能規約,即需求規格說明書)表達出來的過程。本階段的基本任務是和用戶一起確定要解決的問題,建立軟件的邏輯模型,編寫需求規格說明書文檔并最終得到用戶的認可。需求分析的主要方法有結構化分析方法、數據流程圖和數據字典等方法。本階段的工作是根據需求說明書的要求,設計建立相應的軟件系統的體系結構,并將整個系統分解成若干個子系統或模塊,定義子系統或模塊間的接口關系,對各子系統進行具體設計定義,編寫軟件概要設計和詳細設計說明書,數據庫或數據結構設計說明書,組裝測試計劃。在任何軟件或系統開發的初始階段必須先完全掌握用戶需求,以期能將緊隨的系統開發過程中哪些功能應該落實、采取何種規格以及設定哪些限制優先加以定位。系統工程師最終將據此完成設計方案,在此基礎上對隨后的程序開發、系統功能和性能的描述及限制作出定義。
設計
軟件設計可以分為概要設計和詳細設計兩個階段。實際上軟件設計的主要任務就是將軟件分解成模塊是指能實現某個功能的數據和程序說明、可執行程序的程序單元??梢允且粋€函數、過程、子程序、一段帶有程序說明的獨立的程序和數據,也可以是可組合、可分解和可更換的功能單元。模塊,然后進行模塊設計。概要設計就是結構設計,其主要目標就是給出軟件的模塊結構,用軟件結構圖表示。詳細設計的首要任務就是設計模塊的程序流程、算法和數據結構,次要任務就是設計數據庫,常用方法還是結構化程序設計方法。
編碼
軟件編碼是指把軟件設計轉換成計算機可以接受的程序,即寫成以某一程序設計語言表示的“源程序清單”。充分了解軟件開發語言、工具的特性和編程風格,有助于開發工具的選擇以及保證軟件產品的開發質量。
當前軟件開發中除在專用場合,已經很少使用二十世紀80年代的高級語言了,取而代之的是面向對象的開發語言。而且面向對象的開發語言和開發環境大都合為一體,大大提高了開發的速度。
測試
軟件測試的目的是以較小的代價發現盡可能多的錯誤。要實現這個目標的關鍵在于設計一套出色的測試用例(測試數據與功能和預期的輸出結果組成了測試用例)。如何才能設計出一套出色的測試用例,關鍵在于理解測試方法。不同的測試方法有不同的測試用例設計方法。兩種常用的測試方法是白盒法測試對象是源程序,依據的是程序內部的的邏輯結構來發現軟件的編程錯誤、結構錯誤和數據錯誤。結構錯誤包括邏輯、數據流、初始化等錯誤。用例設計的關鍵是以較少的用例覆蓋盡可能多的內部程序邏輯結果。白盒法和黑盒法依據的是軟件的功能或軟件行為描述,發現軟件的接口、功能和結構錯誤。其中接口錯誤包括內部/外部接口、資源管理、集成化以及系統錯誤。黑盒法用例設計的關鍵同樣也是以較少的用例覆蓋模塊輸出和輸入接口。
維護
維護是指在已完成對軟件的研制(分析、設計、編碼和測試)工作并交付使用以后,對軟件產品所進行的一些軟件工程的活動。即根據軟件運行的情況,對軟件進行適當修改,以適應新的要求,以及糾正運行中發現的錯誤。編寫軟件問題報告、軟件修改報告。
一個中等規模的軟件,如果研制階段需要一年至二年的時間,在它投入使用以后,其運行或工作時間可能持續五年至十年。那么它的維護階段也是運行的這五年至十年期間。在這段時間,人們幾乎需要著手解決研制階段所遇到的各種問題,同時還要解決某些維護工作本身特有的問題。做好軟件維護工作,不僅能排除障礙,使軟件能正常工作,而且還可以使它擴展功能,提高性能,為用戶帶來明顯的經濟效益。然而遺憾的是,對軟件維護工作的重視往往遠不如對軟件研制工作的重視。而事實上,和軟件研制工作相比,軟件維護的工作量和成本都要大得多。
在實際開發過程中,軟件開發并不是從第一步進行到最后一步,而是在任何階段,在進入下一階段前一般都有一步或幾步的回溯。在測試過程中的問題可能要求修改設計,用戶可能會提出一些需要來修改需求說明書等。
軟件開發的定義是什么?
軟件開發是根據用戶要求建造出軟件系統或者系統中的軟件部分的過程。它是一項包括需求獲取、開發規劃、需求分析和設計、編程實現、軟件測試、版本控制的系統工程。 軟件開發包括研究、修改、復用、重新設計(再工程)、維護等活動,通常采用軟件開發工具進行開發。
軟件開發就業方向,具體可分為以下方面:
1可視化編程掌握程序設計方法及可視化技術,精通一種可視化平臺及其軟件開發技術。獲取Delphi程序員系列、Java初級或VB開發能手認證。 就業方向:企業、政府、社區、各類學校等可視化編程程序員。
2 WEB應用程序設計 具有美工基礎和網頁動畫設計能力,掌握交互式網頁程序的設計技術,能進行網站建設和維護。獲取Macromedia多媒體互動設計師或Delphi初級程序員或Delphi快速網絡開發工程師認證。 就業方向:企業、政府、社區、各類學校等WEB應用程序員。
3軟件測試掌握軟件測試的基本原理、方法和組織管理,精通軟件測試工具。獲取ATA軟件測試工程師或Delphi初級程序員或Java初級程序員認證。 就業方向:企業、政府、社區、各類學校等軟件測試員。
4數據庫管理能應用關系范式進行數據庫設計,精通SQL語言,勝任數據庫服務器管理與應用工作。獲取Oracle數據庫管理或SQL Server數據庫應用或Windows XP應用認證。 就業方向:企業、政府、社區、各類學校等部門的中、大型數據庫管理員。
5 圖形圖像制作 精通國際上流行的圖形/圖像制作工具(如CorelDraw、Photoshop、Pagemaker等)。獲取平面設計師相關的認證。 就業方向:廣告制作公司、建筑設計公司、包裝裝璜設計公司、居室裝修公司、出版印刷公司。
6 網絡構建技術 熟悉網絡結構和組網方式,掌握建網方法,能利用工具分析和排除常見網絡故障。獲取Cisco路由配置或華為網絡工程或AMP應用工程師認證。 就業方向:企業、政府、社區、各類學校等網絡構建工程師。
7網絡系統管理掌握網絡系統管理的基本知識與應用技能,能進行網絡系統的安全設置。獲取Window2000 Server或TurboLinuxTLCE或Cisco路由配置專家認證。 就業方向:企業、政府、社區、各類學校等網絡系統管理員。
8多媒體制作具有多媒體程序設計與多媒體制作策劃的能力?;菊莆彰嫦驅ο蟪绦蛟O計與建模、造型設計、場景設計、分鏡頭原理等技能。獲取多媒體設計師相關的認證。 就業方向:多媒體設計與制作公司、動畫美術制作出版公司、廣告制作公司。
9 計算機辦公應用 精通辦公自動化應用與管理,熟悉服務器的安裝、管理和維護,基于應用服務器的相關服務和軟件系統,具備對服務器的網絡安全設置、郵件、網頁發布、FTP、OA、BBS等系統的應用和維護能力。 就業方向:企業、政府、社區、各類學校等系統管理
軟件開發工作具體干什么?
軟件開發是一項包括需求獲取、開發規劃、需求分析和設計、編程實現、軟件測試、版本控制的系統工程。
什么是軟件開發?
軟件開發就是根據用戶的要求,建造出有特定功能的軟件系統,或者系統中的軟件部分的過程。軟件開發是辦好了需求獲取,需求分析,設計,技術實現,測試,上線,這一整套流程的一項工程。
軟件開發需要學習的課程
1.數據結構與算法,只要你做開發,這一點就必須好好的學習,把它學透了,對編程的優化幫助很大。
2.計算機組成原理,一門特別難學的課程,學透了,是大牛級別的。
3. 數據庫,作為一名軟件開發人員,數據庫肯定是要會的,必備的知識,目前來說,MySQL 數據庫用的比較多,可以多研究研究。
4.網絡編程,軟件終歸都是通過網絡來交互的,所以網絡編程同樣蠻重要的,TCP,UDP協議等。
互聯網行業目前還是最熱門的行業之一,學習IT技能之后足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。
想要系統學習,你可以考察對比一下開設有相關專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,建議實地考察對比一下。
關于軟件開發是什么和軟件開發怎么樣的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。