軟件開(kāi)發(fā)是什麼(me)(軟件開(kāi)發(fā)是什麼(me)專業)
本篇文章給大家談談軟件開(kāi)發(fā)是什麼(me),以及軟件開(kāi)發(fā)是什麼(me)專業對(duì)應的知識點,希望對(duì)各位有所幫助,不要忘了收藏本站喔。
本文目錄一覽:
- 1、什麼(me)是軟件開(kāi)發(fā)
- 2、軟件開(kāi)發(fā)是什麼(me)?
- 3、什麼(me)是軟件開(kāi)發(fā)?
- 4、請問什麼(me)是軟件開(kāi)發(fā)?
- 5、軟件開(kāi)發(fā)工作具體幹什麼(me)?
什麼(me)是軟件開(kāi)發(fā)
有人問我:“什麼(me)是軟件開(kāi)發(fā)?”。回答這(zhè)個問題前,我們需要先理解什麼(me)是軟件。
一、軟件定義
關于軟件,一些優秀的人已經(jīng)給出了簡單易懂的定義,舉個例子:
軟件是計算機系統的一部分,它适配各種(zhǒng)不同用途的機器。例如,通過(guò)同一台計算機但不同的軟件,我們可以玩遊戲、計算繳稅、寫信或者寫書,以及獲得約會(huì)邀請的答複。
—— 傑拉爾德·溫伯格
這(zhè)句話是作者解釋給他的朋友的,他的朋友是一名電腦小白。
有了上述定義,什麼(me)是軟件開(kāi)發(fā)也就顯而易見。
軟件開(kāi)發(fā)研究如何讓運行在計算機裡(lǐ)的不同系統解決人們在現實中遇到的問題。
我們經(jīng)常見到這(zhè)樣(yàng)的句式,試圖一句話就把事(shì)情講得面(miàn)面(miàn)俱到。
不妨簡化一下。
軟件開(kāi)發(fā)研究如何讓計算機解決問題。
目前看起(qǐ)來不錯。
倘若你聽過(guò)“一切問題都(dōu)是人的問題”這(zhè)句話,并且願意相信它,那我們就可以接著(zhe)簡化。
軟件開(kāi)發(fā)解決人的問題。
這(zhè)個定義充滿了敷衍的味道(dào)。如果你敢向(xiàng)你的女友這(zhè)麼(me)解釋,她大抵會(huì)提到“你是不不愛我了”。
回到正題,它好(hǎo)在足夠籠統,把所有的細節歸納爲“人的問題”,一言以蔽之,至少不會(huì)有多大偏差。
關于什麼(me)是“人的問題”,我們無法一一列舉。但通過(guò)下面(miàn)的例子,也許可以窺探到一些奧秘:早在 1995 年,有人便覺得軟件開(kāi)發(fā)要解決的問題陷入了困境。
我們遇到了前所未有的困難,不知道(dào)在做出電子表格(Excel)後(hòu),計算機還(hái)可以用來做什麼(me)。
—— 查爾斯·西蒙尼
從今天來看,這(zhè)個觀點頗失謙遜,軟件行業從來沒(méi)有止步于表格處理程序。當然,我們不是要批判什麼(me),它是用來引出以下軟件開(kāi)發(fā)的三點特性。
“人的問題”不可預料。
世界在改變,人的需求也是一直變化的,我們不知道(dào)下一步會(huì)發(fā)生什麼(me)。值得一提的是,有時我們甚至不知道(dào)過(guò)去發(fā)生了什麼(me)。
“人的問題”具有延續性。
在 1977 年,人們開(kāi)始用電子表格處理數據。在今天的辦公自動化領域,電子表格仍具有著(zhe)不可替代的作用。這(zhè)是值得慶幸的,總有些問題和解決方案會(huì)持續很長(cháng)一段時間。
“人的問題”具有複雜性。
盡管軟件技術在當今的 IT 領域開(kāi)花結果,人們探索出了各種(zhǒng)各樣(yàng)的成(chéng)型解決方案,但開(kāi)發(fā)者和開(kāi)發(fā)團隊依舊面(miàn)對(duì)著(zhe)複雜的開(kāi)發(fā)環境。
複雜性足夠我們花費一整節的内容來闡述它,歡迎閱讀下一節。
二、軟件複雜性
随手翻開(kāi)一本介紹軟件工程的書,你都(dōu)會(huì)看到它會(huì)提及複雜性。軟件複雜性的本質是,現實世界是無比複雜的。至于現實爲什麼(me)是複雜的,不在本文讨論的範疇。本文更關心的問題是:
是什麼(me)讓軟件變複雜的?
我們在上文提到“軟件是運行在計算機裡(lǐ)的系統”,這(zhè)裡(lǐ)直接給出系統的一般定義:
系統是對(duì)世界的一種(zhǒng)觀點。
你可能(néng)一時無法接受這(zhè)個它。
換種(zhǒng)說法,系統是對(duì)世界的一種(zhǒng)抽象。
抽象意味著(zhe)要從繁複的具象世界裡(lǐ)剝絲抽繭,不同的抽象就會(huì)産生不同的系統。
觀點或者說抽象可以簡單也可以複雜。
一個軟件從無到有,越來越複雜,根本原因就在于特性不斷增加和改變,不同角度會(huì)産生不同的觀點。
舉個食品行業的例子。
一家公司以獨家配方生産一種(zhǒng)食品,每個季度的銷售額上漲 10%。
管理層希望業績進(jìn)一步提高,具體到研究部門,目标是調制出更好(hǎo)吃的配方。
研究團隊計劃每個月隻改動一點點,一年過(guò)去了,不斷地有顧客投訴食品不再是原來的味道(dào)了。
公司董事(shì)決定開(kāi)會(huì)。
“我們生産的食品更好(hǎo)吃了嗎?”
“當然,我們的銷售額增長(cháng)達到了 30%。”
“但是我們的顧客不這(zhè)樣(yàng)說。”
“他們隻是不願意改變!”
再舉個例子,打開(kāi)你的手機,各類軟件源源不斷地彈出新聞資訊類消息。大部分軟件工具成(chéng)熟以後(hòu),不再願意僅做好(hǎo)它的本職工作,當你使用一個小衆 APP 時,你可以親眼見證它從小而美到臃腫不堪的曆程。
這(zhè)是複雜性的一面(miàn),面(miàn)對(duì)它,我們唯一能(néng)夠做的就是“不要多餘的特性”,它有個經(jīng)典表述:
不要過(guò)早的考慮優化。
回到上面(miàn)的故事(shì),也許那家公司什麼(me)也不做,銷售額同樣(yàng)會(huì)上漲。
你可能(néng)會(huì)質疑“說的輕巧,我們總不能(néng)什麼(me)都(dōu)不做?”
回答它,涉及到我們做出決定時繞不開(kāi)的一個問題。
你願意付出什麼(me)樣(yàng)的代價?
付出什麼(me),就要準備好(hǎo)得到什麼(me)。你願意付出多少薪資雇傭員工,你願意增加多少特性,你願意采用什麼(me)樣(yàng)的解決方案,你願意爲這(zhè)個 Bug 留出多少工作量。
拿出什麼(me)樣(yàng)的籌碼,是真實擺在我們眼前的問題。
四、什麼(me)是軟件開(kāi)發(fā)
現在,我們可以正式回答這(zhè)個問題了。
首先,“預料”對(duì)方真正的目的是什麼(me)?
1. 對(duì)方隻是随口一問。
2. 對(duì)方想打探你的薪資,然後(hòu)向(xiàng)你介紹相親對(duì)象。
3. 對(duì)方對(duì)軟件行業這(zhè)個話題感興趣,并想深入了解更多。
4. 其他可能(néng)性。
對(duì)于醉翁之意不在酒,你翻開(kāi)朋友圈,閱讀一番《不得不看,職場新老手都(dōu)有用的一百條話術!》,基本可以見招拆招了。
至于第三種(zhǒng)情況,先給他來個含辭模糊的定義,比如
軟件開(kāi)發(fā)通過(guò)設計、編碼、測試以及持續地維護解決人的需求。
一般地,對(duì)方發(fā)現自己聽得雲裡(lǐ)霧裡(lǐ)後(hòu),就會(huì)識趣的停止這(zhè)個話題。但也有可能(néng),尤其是碰到其他領域的工程師時,會(huì)引出更爲具體的問題。
不幸的是,有時候問題根本就不存在,正如下面(miàn)的寥寥數語,它會(huì)讓你所有準備好(hǎo)的說辭付之流水。
“工作忙嗎?”
“還(hái)行。”
“每天都(dōu)幹啥?”
“主要是寫代碼。”
“不懂,聽說挺累的。”
“有時候是累,工作不都(dōu)這(zhè)樣(yàng)麼(me)。”
“嘿,說的也是。”
希望對(duì)您有所幫助!~
軟件開(kāi)發(fā)是什麼(me)?
“軟件開(kāi)發(fā)是根據用戶要求建造出軟件系統或者系統中的軟件部分的過(guò)程。軟件開(kāi)發(fā)是一項包括需求捕捉、需求分析、設計、實現和測試的系統工程。軟件一般是用某種(zhǒng)程序設計語言來實現的。通常采用軟件開(kāi)發(fā)工具可以進(jìn)行開(kāi)發(fā)。軟件分爲系統軟件和應用軟件,并不隻是包括可以在計算機上運行的程序,與這(zhè)些程序相關的文件一般也被(bèi)認爲是軟件的一部分。軟件設計思路和方法的一般過(guò)程,包括設計軟件的功能(néng)和實現的算法和方法、軟件的總體結構設計和模塊設計、編程和調試、程序聯調和測試以及編寫、提交程序。”
軟件開(kāi)發(fā)是根據用戶要求建造出軟件系統或者系統中的軟件部分的過(guò)程。軟件開(kāi)發(fā)是一項包括需求捕捉、需求分析、設計、實現和測試的系統工程。軟件一般是用某種(zhǒng)程序設計語言來實現的。通常采用軟件開(kāi)發(fā)工具可以進(jìn)行開(kāi)發(fā)。軟件分爲系統軟件和應用軟件,并不隻是包括可以在計算機上運行的程序,與這(zhè)些程序相關的文件一般也被(bèi)認爲是軟件的一部分。軟件設計思路和方法的一般過(guò)程,包括設計軟件的功能(néng)和實現的算法和方法、軟件的總體結構設計和模塊設計、編程和調試、程序聯調和測試以及編寫、提交程序。
軟件開(kāi)發(fā)的内容是:需求、設計、編程和測試!
需求:不僅僅是用戶需求,應該是開(kāi)發(fā)中遇到的所有的需求。比如,你首先要知道(dào)做這(zhè)個項目是爲了解決什麼(me)問題;測試案例中應該輸入什麼(me)數據......爲了清楚地知道(dào)這(zhè)些需求,你經(jīng)常要和客戶、項目經(jīng)理等交流。
設計:編碼前,肯定有個計劃告訴你要做什麼(me),結構是怎樣(yàng)等等。你一定要按照這(zhè)個來做,否則可能(néng)會(huì)一團糟。
編程:如果在項目截止日,你的程序不能(néng)跑起(qǐ)來或達不到客戶的要求,你就拿不到錢。
測試:目的是讓你知道(dào),什麼(me)時候算是完成(chéng)了。如果你聰明,你就應該先寫測試,這(zhè)樣(yàng)可以及時知道(dào)你是否真地完成(chéng)了。否則,你經(jīng)常會(huì)不知道(dào),到底有哪些功能(néng)是真正完成(chéng)了,離預期目标還(hái)差多遠。
軟件開(kāi)發(fā)中,客戶和開(kāi)發(fā)人員都(dōu)有自己的基本權利和義務。
客戶:
定義每個用戶需求的商業優先級;
制訂總體計劃,包括用多少投資、經(jīng)過(guò)多長(cháng)時間、達到什麼(me)目的;
在項目開(kāi)發(fā)過(guò)程中的每個工作周,都(dōu)能(néng)讓投資獲得最大的收益;
通過(guò)重複運行你所指定的功能(néng)測試,準确地掌握項目進(jìn)展情況;
能(néng)随時改變需求、功能(néng)或優先級,同時避免昂貴的再投資;能(néng)夠根據各種(zhǒng)變化及時調整項目計劃;
能(néng)夠随時取消項目;項目取消時,以前的開(kāi)發(fā)工作不是一堆垃圾,已開(kāi)發(fā)完的功能(néng)是合乎要求的,正在進(jìn)行或未完成(chéng)的的工作則應該是不難接手的。
開(kāi)發(fā)人員:
知道(dào)要做什麼(me),以及要優先做什麼(me);
工作有效率;
有問題或困難時,能(néng)得到客戶、同事(shì)、上級的回答或幫助;
對(duì)工作做評估,并根據周圍情況的變化及時重新評估;
積極承擔工作,而不是消極接受分配;
一周40小時工作制,不加班。
軟件開(kāi)發(fā)過(guò)程可以包括以下6個階段:
計劃
對(duì)所要解決的問題進(jìn)行總體定義,包括了解用戶的要求及現實環境,從技術、經(jīng)濟和社會(huì)因素等3個方面(miàn)研究并論證本軟件項目的可行性,編寫可行性研究報告,探讨解決問題的方案,并對(duì)可供使用的資源(如計算機硬件、系統軟件、人力等)成(chéng)本,可取得的效益和開(kāi)發(fā)進(jìn)度作出估計。制訂完成(chéng)開(kāi)發(fā)任務的實施計劃。
分析
軟件需求分析就是回答做什麼(me)的問題。它是一個對(duì)用戶的需求進(jìn)行去粗取精、去僞存真、正确理解,然後(hòu)把它用軟件工程開(kāi)發(fā)語言(形式功能(néng)規約,即需求規格說明書)表達出來的過(guò)程。本階段的基本任務是和用戶一起(qǐ)确定要解決的問題,建立軟件的邏輯模型,編寫需求規格說明書文檔并最終得到用戶的認可。需求分析的主要方法有結構化分析方法、數據流程圖和數據字典等方法。本階段的工作是根據需求說明書的要求,設計建立相應的軟件系統的體系結構,并將(jiāng)整個系統分解成(chéng)若幹個子系統或模塊,定義子系統或模塊間的接口關系,對(duì)各子系統進(jìn)行具體設計定義,編寫軟件概要設計和詳細設計說明書,數據庫或數據結構設計說明書,組裝測試計劃。
設計
軟件設計可以分爲概要設計和詳細設計兩(liǎng)個階段。實際上軟件設計的主要任務就是將(jiāng)軟件分解成(chéng)模塊是指能(néng)實現某個功能(néng)的數據和程序說明、可執行程序的程序單元。可以是一個函數、過(guò)程、子程序、一段帶有程序說明的獨立的程序和數據,也可以是可組合、可分解和可更換的功能(néng)單元。模塊,然後(hòu)進(jìn)行模塊設計。概要設計就是結構設計,其主要目标就是給出軟件的模塊結構,用軟件結構圖表示。詳細設計的首要任務就是設計模塊的程序流程、算法和數據結構,次要任務就是設計數據庫,常用方法還(hái)是。
編碼
軟件編碼是指把軟件設計轉換成(chéng)計算機可以接受的程序,即寫成(chéng)以某一表示的\"源程序清單\"。充分了解軟件開(kāi)發(fā)語言、工具的特性和編程風格,有助于開(kāi)發(fā)工具的選擇以及保證軟件産品的開(kāi)發(fā)質量。
當前軟件開(kāi)發(fā)中除在專用場合,已經(jīng)很少使用二十世紀80年代的高級語言了,取而代之的是的開(kāi)發(fā)語言。而且的開(kāi)發(fā)語言和開(kāi)發(fā)環境大都(dōu)合爲一體,大大提高了開(kāi)發(fā)的速度。
測試
軟件測試的目的是以較小的代價發(fā)現盡可能(néng)多的錯誤。要實現這(zhè)個目标的關鍵在于設計一套出色的測試用例(測試數據和預期的輸出結果組成(chéng)了測試用例)。如何才能(néng)設計出一套出色的測試用例,關鍵在于理解測試方法。不同的測試方法有不同的測試用例設計方法。兩(liǎng)種(zhǒng)常用的測試方法是白盒法測試對(duì)象是源程序,依據的是程序内部的的邏輯結構來發(fā)現軟件的編程錯誤、結構錯誤和數據錯誤。結構錯誤包括邏輯、數據流、初始化等錯誤。用例設計的關鍵是以較少的用例覆蓋盡可能(néng)多的内部程序邏輯結果。白盒法和黑盒法依據的是軟件的功能(néng)或軟件行爲描述,發(fā)現軟件的接口、功能(néng)和結構錯誤。其中接口錯誤包括内部/外部接口、資源管理、集成(chéng)化以及系統錯誤。黑盒法用例設計的關鍵同樣(yàng)也是以較少的用例覆蓋模塊輸出和輸入接口。黑盒法。
維護
維護是旨在已完成(chéng)對(duì)軟件的研制(分析、設計、編碼和測試)工作并交付使用以後(hòu),對(duì)軟件産品所進(jìn)行的一些軟件工程的活動。即根據軟件運行的情況,對(duì)軟件進(jìn)行适當修改,以适應新的要求,以及糾正運行中發(fā)現的錯誤。編寫軟件問題報告、軟件修改報告。
一個中等規模的軟件,如果研制階段需要一年至二年的時間,在它投入使用以後(hòu),其運行或工作時間可能(néng)持續五年至十年。那麼(me)它的維護階段也是運行的這(zhè)五年至十年期間。在這(zhè)段時間,人們幾乎需要著(zhe)手解決研制階段所遇到的各種(zhǒng)問題,同時還(hái)要解決某些維護工作本身特有的問題。做好(hǎo)軟件維護工作,不僅能(néng)排除障礙,使軟件能(néng)正常工作,而且還(hái)可以使它擴展功能(néng),提高性能(néng),爲用戶帶來明顯的經(jīng)濟效益。然而遺憾的是,對(duì)軟件維護工作的重視往往遠不如對(duì)軟件研制工作的重視。而事(shì)實上,和軟件研制工作相比,軟件維護的工作量和成(chéng)本都(dōu)要大得多。
在實際開(kāi)發(fā)過(guò)程中,軟件開(kāi)發(fā)并不是從第一步進(jìn)行到最後(hòu)一步,而是在任何階段,在進(jìn)入下一階段前一般都(dōu)有一步或幾步的回溯。在測試過(guò)程中的問題可能(néng)要求修改設計,用戶可能(néng)會(huì)提出一些需要來修改需求說明書等。
什麼(me)是軟件開(kāi)發(fā)?
軟件開(kāi)發(fā)其實就是編程,編程主要學(xué)習的内容是計算機語言,通常采用軟件開(kāi)房工具進(jìn)行開(kāi)發(fā)。軟件設計思路和方法的一般過(guò)程,包括設計軟件的功能(néng)和實現的算法的方法,軟件的總體結構設計和模塊設計,編程與調試,程序聯調和測試,然後(hòu)進(jìn)行編寫,再提交程序
請問什麼(me)是軟件開(kāi)發(fā)?
軟件就是我們生活中常使用的app安裝軟件、超市的收銀系統、電腦系統中安裝的執行文件等,軟件開(kāi)發(fā)就是開(kāi)發(fā)這(zhè)些軟件的一個技術,用不同的開(kāi)發(fā)語言呈現出來。
1.編程接口就是對(duì)于某種(zhǒng)邏輯寫的一定規範的數據格式,
就是宿主程序跟 Lu通訊用的一組 C 函數。 所有的 API 函數按相關的類型以及常量都(dōu)聲明在頭文件 lua.h 中。
2.雖然我們說的是“函數”, 但一部分簡單的 API 是以宏的形式提供的。
除非另有說明, 所有的這(zhè)些宏都(dōu)隻使用它們的參數一次 (除了第一個參數,那一定是 Lu狀态), 因此你不需擔心這(zhè)些宏的展開(kāi)會(huì)引起(qǐ)一些副作用。
3.C 庫中所有的 Lua API 函數都(dōu)不去檢查參數是否相容及有效。
然而,你可以在編譯 Lu 時加上打開(kāi)一個宏開(kāi)關 LUA_USE_APICHECK 來改變這(zhè)個行爲。
Lu使用一個 虛拟棧 來和 C 互傳值。 棧上的的每個元素都(dōu)是一個 Lu 值 (nil,數字,字符串,等等)。
4.無論何時 Lua 調用 C,被(bèi)調用的函數都(dōu)得到一個新的棧,
這(zhè)個棧獨立于 C 函數本身的棧,也獨立于之前的 Lu棧。 它裡(lǐ)面(miàn)包含了 Lu傳遞給 C 函數的所有參數, 而 C 函數則把要返回的結果放入這(zhè)個棧以返回給調用者。
5.方便起(qǐ)見, 所有針對(duì)棧的 API 查詢操作都(dōu)不嚴格遵循棧的操作規則。
而是可以用一個 索引 來指向(xiàng)棧上的任何元素: 正的索引指的是棧上的絕對(duì)位置(從1開(kāi)始); 負的索引則指從棧頂開(kāi)始的偏移量。 展開(kāi)來說,如果堆棧有 n 個元素, 那麼(me)索引 1 表示第一個元素 (也就是最先被(bèi)壓棧的元素) 而索引 n 則指最後(hòu)一個元素; 索引 -1 也是指最後(hòu)一個元素 (即棧頂的元素), 索引 -n 是指第一個元素。
4.2 – 棧大小
5.當你使用 Lu API 時, 就有責任保證做恰當的調用。 特别需要注意的是, 你有責任控制不要堆棧溢
軟件開(kāi)發(fā)工作具體幹什麼(me)?
軟件開(kāi)發(fā)是一項包括需求獲取、開(kāi)發(fā)規劃、需求分析和設計、編程實現、軟件測試、版本控制的系統工程。
關于軟件開(kāi)發(fā)是什麼(me)和軟件開(kāi)發(fā)是什麼(me)專業的介紹到此就結束了,不知道(dào)你從中找到你需要的信息了嗎 ?如果你還(hái)想了解更多這(zhè)方面(miàn)的信息,記得收藏關注本站。