人妻无码αv中文字幕久久琪琪布|99999国产精品欧美久久久久|国产精品久久久久久久久久久搜索|精品国产香蕉伊思人在线又爽又黄|国语av狠狠色丁香婷婷综合激情|精品老妇人一区二区三区在线视频|99精品国产高清一区二区三区香蕉

軟件開發(fā)是什么(學(xué)軟件開發(fā))

軟件開發(fā) 3443
今天給各位分享軟件開發(fā)是什么的知識,其中也會對學(xué)軟件開發(fā)進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、軟件開發(fā)的定義是什么?

今天給各位分享軟件開發(fā)是什么的知識,其中也會對學(xué)軟件開發(fā)進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!

本文目錄一覽:

軟件開發(fā)的定義是什么?

軟件開發(fā)是根據(jù)用戶要求建造出軟件系統(tǒng)或者系統(tǒng)中的軟件部分的過程。它是一項(xiàng)包括需求獲取、開發(fā)規(guī)劃、需求分析和設(shè)計(jì)、編程實(shí)現(xiàn)、軟件測試、版本控制的系統(tǒng)工程。 軟件開發(fā)包括研究、修改、復(fù)用、重新設(shè)計(jì)(再工程)、維護(hù)等活動(dòng),通常采用軟件開發(fā)工具進(jìn)行開發(fā)。

軟件開發(fā)就業(yè)方向,具體可分為以下方面:

1可視化編程掌握程序設(shè)計(jì)方法及可視化技術(shù),精通一種可視化平臺及其軟件開發(fā)技術(shù)。獲取Delphi程序員系列、Java初級或VB開發(fā)能手認(rèn)證。 就業(yè)方向:企業(yè)、政府、社區(qū)、各類學(xué)校等可視化編程程序員。

2 WEB應(yīng)用程序設(shè)計(jì) 具有美工基礎(chǔ)和網(wǎng)頁動(dòng)畫設(shè)計(jì)能力,掌握交互式網(wǎng)頁程序的設(shè)計(jì)技術(shù),能進(jìn)行網(wǎng)站建設(shè)和維護(hù)。獲取Macromedia多媒體互動(dòng)設(shè)計(jì)師或Delphi初級程序員或Delphi快速網(wǎng)絡(luò)開發(fā)工程師認(rèn)證。 就業(yè)方向:企業(yè)、政府、社區(qū)、各類學(xué)校等WEB應(yīng)用程序員。

3軟件測試掌握軟件測試的基本原理、方法和組織管理,精通軟件測試工具。獲取ATA軟件測試工程師或Delphi初級程序員或Java初級程序員認(rèn)證。 就業(yè)方向:企業(yè)、政府、社區(qū)、各類學(xué)校等軟件測試員。

4數(shù)據(jù)庫管理能應(yīng)用關(guān)系范式進(jìn)行數(shù)據(jù)庫設(shè)計(jì),精通SQL語言,勝任數(shù)據(jù)庫服務(wù)器管理與應(yīng)用工作。獲取Oracle數(shù)據(jù)庫管理或SQL Server數(shù)據(jù)庫應(yīng)用或Windows XP應(yīng)用認(rèn)證。 就業(yè)方向:企業(yè)、政府、社區(qū)、各類學(xué)校等部門的中、大型數(shù)據(jù)庫管理員。

5 圖形圖像制作 精通國際上流行的圖形/圖像制作工具(如CorelDraw、Photoshop、Pagemaker等)。獲取平面設(shè)計(jì)師相關(guān)的認(rèn)證。 就業(yè)方向:廣告制作公司、建筑設(shè)計(jì)公司、包裝裝璜設(shè)計(jì)公司、居室裝修公司、出版印刷公司。

6 網(wǎng)絡(luò)構(gòu)建技術(shù) 熟悉網(wǎng)絡(luò)結(jié)構(gòu)和組網(wǎng)方式,掌握建網(wǎng)方法,能利用工具分析和排除常見網(wǎng)絡(luò)故障。獲取Cisco路由配置或華為網(wǎng)絡(luò)工程或AMP應(yīng)用工程師認(rèn)證。 就業(yè)方向:企業(yè)、政府、社區(qū)、各類學(xué)校等網(wǎng)絡(luò)構(gòu)建工程師。

7網(wǎng)絡(luò)系統(tǒng)管理掌握網(wǎng)絡(luò)系統(tǒng)管理的基本知識與應(yīng)用技能,能進(jìn)行網(wǎng)絡(luò)系統(tǒng)的安全設(shè)置。獲取Window2000 Server或TurboLinuxTLCE或Cisco路由配置專家認(rèn)證。 就業(yè)方向:企業(yè)、政府、社區(qū)、各類學(xué)校等網(wǎng)絡(luò)系統(tǒng)管理員。

8多媒體制作具有多媒體程序設(shè)計(jì)與多媒體制作策劃的能力。基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)與建模、造型設(shè)計(jì)、場景設(shè)計(jì)、分鏡頭原理等技能。獲取多媒體設(shè)計(jì)師相關(guān)的認(rèn)證。 就業(yè)方向:多媒體設(shè)計(jì)與制作公司、動(dòng)畫美術(shù)制作出版公司、廣告制作公司。

9 計(jì)算機(jī)辦公應(yīng)用 精通辦公自動(dòng)化應(yīng)用與管理,熟悉服務(wù)器的安裝、管理和維護(hù),基于應(yīng)用服務(wù)器的相關(guān)服務(wù)和軟件系統(tǒng),具備對服務(wù)器的網(wǎng)絡(luò)安全設(shè)置、郵件、網(wǎng)頁發(fā)布、FTP、OA、BBS等系統(tǒng)的應(yīng)用和維護(hù)能力。 就業(yè)方向:企業(yè)、政府、社區(qū)、各類學(xué)校等系統(tǒng)管理

軟件開發(fā)是什么?

軟件開發(fā)(Software development)是根據(jù)用戶要求建造出軟件系統(tǒng)或者系統(tǒng)中的軟件部分的過程。它是一項(xiàng)包括需求獲取、開發(fā)規(guī)劃、需求分析和設(shè)計(jì)、編程實(shí)現(xiàn)、軟件測試、版本控制的系統(tǒng)工程。 軟件開發(fā)包括研究、修改、復(fù)用、重新設(shè)計(jì)(再工程)、維護(hù)等活動(dòng),通常采用軟件開發(fā)工具進(jìn)行開發(fā)。

階段劃分

計(jì)劃

軟件開發(fā)

對所要解決的問題進(jìn)行總體定義,包括了解用戶的要求及現(xiàn)實(shí)環(huán)境,從技術(shù)、經(jīng)濟(jì)和社會因素等3個(gè)方面研究并論證本軟件項(xiàng)目的可行性,編寫可行性研究報(bào)告,探討解決問題的方案,并對可供使用的資源(如計(jì)算機(jī)硬件、系統(tǒng)軟件、人力等)成本,可取得的效益和開發(fā)進(jìn)度作出估計(jì),制訂完成開發(fā)任務(wù)的實(shí)施計(jì)劃。

分析

軟件需求分析就是對開發(fā)什么樣的軟件的一個(gè)系統(tǒng)的分析與設(shè)想。它是一個(gè)對用戶的需求進(jìn)行去粗取精、去偽存真、正確理解,然后把它用軟件工程開發(fā)語言(形式功能規(guī)約,即需求規(guī)格說明書)表達(dá)出來的過程。本階段的基本任務(wù)是和用戶一起確定要解決的問題,建立軟件的邏輯模型,編寫需求規(guī)格說明書文檔并最終得到用戶的認(rèn)可。需求分析的主要方法有結(jié)構(gòu)化分析方法、數(shù)據(jù)流程圖和數(shù)據(jù)字典等方法。本階段的工作是根據(jù)需求說明書的要求,設(shè)計(jì)建立相應(yīng)的軟件系統(tǒng)的體系結(jié)構(gòu),并將整個(gè)系統(tǒng)分解成若干個(gè)子系統(tǒng)或模塊,定義子系統(tǒng)或模塊間的接口關(guān)系,對各子系統(tǒng)進(jìn)行具體設(shè)計(jì)定義,編寫軟件概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)說明書,數(shù)據(jù)庫或數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)說明書,組裝測試計(jì)劃。在任何軟件或系統(tǒng)開發(fā)的初始階段必須先完全掌握用戶需求,以期能將緊隨的系統(tǒng)開發(fā)過程中哪些功能應(yīng)該落實(shí)、采取何種規(guī)格以及設(shè)定哪些限制優(yōu)先加以定位。系統(tǒng)工程師最終將據(jù)此完成設(shè)計(jì)方案,在此基礎(chǔ)上對隨后的程序開發(fā)、系統(tǒng)功能和性能的描述及限制作出定義。

設(shè)計(jì)

軟件設(shè)計(jì)可以分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個(gè)階段。實(shí)際上軟件設(shè)計(jì)的主要任務(wù)就是將軟件分解成模塊是指能實(shí)現(xiàn)某個(gè)功能的數(shù)據(jù)和程序說明、可執(zhí)行程序的程序單元??梢允且粋€(gè)函數(shù)、過程、子程序、一段帶有程序說明的獨(dú)立的程序和數(shù)據(jù),也可以是可組合、可分解和可更換的功能單元。模塊,然后進(jìn)行模塊設(shè)計(jì)。概要設(shè)計(jì)就是結(jié)構(gòu)設(shè)計(jì),其主要目標(biāo)就是給出軟件的模塊結(jié)構(gòu),用軟件結(jié)構(gòu)圖表示。詳細(xì)設(shè)計(jì)的首要任務(wù)就是設(shè)計(jì)模塊的程序流程、算法和數(shù)據(jù)結(jié)構(gòu),次要任務(wù)就是設(shè)計(jì)數(shù)據(jù)庫,常用方法還是結(jié)構(gòu)化程序設(shè)計(jì)方法。

編碼

軟件編碼是指把軟件設(shè)計(jì)轉(zhuǎn)換成計(jì)算機(jī)可以接受的程序,即寫成以某一程序設(shè)計(jì)語言表示的“源程序清單”。充分了解軟件開發(fā)語言、工具的特性和編程風(fēng)格,有助于開發(fā)工具的選擇以及保證軟件產(chǎn)品的開發(fā)質(zhì)量。

當(dāng)前軟件開發(fā)中除在專用場合,已經(jīng)很少使用二十世紀(jì)80年代的高級語言了,取而代之的是面向?qū)ο蟮拈_發(fā)語言。而且面向?qū)ο蟮拈_發(fā)語言和開發(fā)環(huán)境大都合為一體,大大提高了開發(fā)的速度。

測試

軟件測試的目的是以較小的代價(jià)發(fā)現(xiàn)盡可能多的錯(cuò)誤。要實(shí)現(xiàn)這個(gè)目標(biāo)的關(guān)鍵在于設(shè)計(jì)一套出色的測試用例(測試數(shù)據(jù)與功能和預(yù)期的輸出結(jié)果組成了測試用例)。如何才能設(shè)計(jì)出一套出色的測試用例,關(guān)鍵在于理解測試方法。不同的測試方法有不同的測試用例設(shè)計(jì)方法。兩種常用的測試方法是白盒法測試對象是源程序,依據(jù)的是程序內(nèi)部的的邏輯結(jié)構(gòu)來發(fā)現(xiàn)軟件的編程錯(cuò)誤、結(jié)構(gòu)錯(cuò)誤和數(shù)據(jù)錯(cuò)誤。結(jié)構(gòu)錯(cuò)誤包括邏輯、數(shù)據(jù)流、初始化等錯(cuò)誤。用例設(shè)計(jì)的關(guān)鍵是以較少的用例覆蓋盡可能多的內(nèi)部程序邏輯結(jié)果。白盒法和黑盒法依據(jù)的是軟件的功能或軟件行為描述,發(fā)現(xiàn)軟件的接口、功能和結(jié)構(gòu)錯(cuò)誤。其中接口錯(cuò)誤包括內(nèi)部/外部接口、資源管理、集成化以及系統(tǒng)錯(cuò)誤。黑盒法用例設(shè)計(jì)的關(guān)鍵同樣也是以較少的用例覆蓋模塊輸出和輸入接口。

維護(hù)

維護(hù)是指在已完成對軟件的研制(分析、設(shè)計(jì)、編碼和測試)工作并交付使用以后,對軟件產(chǎn)品所進(jìn)行的一些軟件工程的活動(dòng)。即根據(jù)軟件運(yùn)行的情況,對軟件進(jìn)行適當(dāng)修改,以適應(yīng)新的要求,以及糾正運(yùn)行中發(fā)現(xiàn)的錯(cuò)誤。編寫軟件問題報(bào)告、軟件修改報(bào)告。

一個(gè)中等規(guī)模的軟件,如果研制階段需要一年至二年的時(shí)間,在它投入使用以后,其運(yùn)行或工作時(shí)間可能持續(xù)五年至十年。那么它的維護(hù)階段也是運(yùn)行的這五年至十年期間。在這段時(shí)間,人們幾乎需要著手解決研制階段所遇到的各種問題,同時(shí)還要解決某些維護(hù)工作本身特有的問題。做好軟件維護(hù)工作,不僅能排除障礙,使軟件能正常工作,而且還可以使它擴(kuò)展功能,提高性能,為用戶帶來明顯的經(jīng)濟(jì)效益。然而遺憾的是,對軟件維護(hù)工作的重視往往遠(yuǎn)不如對軟件研制工作的重視。而事實(shí)上,和軟件研制工作相比,軟件維護(hù)的工作量和成本都要大得多。

在實(shí)際開發(fā)過程中,軟件開發(fā)并不是從第一步進(jìn)行到最后一步,而是在任何階段,在進(jìn)入下一階段前一般都有一步或幾步的回溯。在測試過程中的問題可能要求修改設(shè)計(jì),用戶可能會提出一些需要來修改需求說明書等。

軟件開發(fā)工作具體干什么?

軟件開發(fā)是一項(xiàng)包括需求獲取、開發(fā)規(guī)劃、需求分析和設(shè)計(jì)、編程實(shí)現(xiàn)、軟件測試、版本控制的系統(tǒng)工程。

軟件開發(fā)是什么呀?

軟件開發(fā)(Software development)是根據(jù)用戶要求建造出軟件系統(tǒng)或者系統(tǒng)中的軟件部分的過程。它是一項(xiàng)包括需求獲取、開發(fā)規(guī)劃、需求分析和設(shè)計(jì)、編程實(shí)現(xiàn)、軟件測試、版本控制的系統(tǒng)工程。軟件開發(fā)包括研究、修改、復(fù)用、重新設(shè)計(jì)(再工程)、維護(hù)等活動(dòng),通常采用軟件開發(fā)工具進(jìn)行開發(fā)。

什么是軟件開發(fā)?

[編輯本段]軟件開發(fā)的內(nèi)容是:需求、設(shè)計(jì)、編程和測試

需求

不僅僅是用戶需求,應(yīng)該是開發(fā)中遇到的所有的需求。比如,你首先要知道做這個(gè)項(xiàng)目是為了解決什么問題;測試案例中應(yīng)該輸入什么數(shù)據(jù)......為了清楚地知道這些需求,你經(jīng)常要和客戶、項(xiàng)目經(jīng)理以及項(xiàng)目伙伴交流。

設(shè)計(jì)

編碼前,肯定有個(gè)計(jì)劃告訴你要做什么,結(jié)構(gòu)是怎樣等等。你一定要按照這個(gè)來做,否則可能會一團(tuán)糟。

編程

如果在項(xiàng)目截止日,你的程序不能跑起來或達(dá)不到客戶的要求,你就拿不到錢。

測試

目的是讓你知道,什么時(shí)候算是完成了。如果你聰明,你就應(yīng)該先寫測試,這樣可以及時(shí)知道你是否真地完成了。否則,你經(jīng)常會不知道,到底有哪些功能是真正完成了,離預(yù)期目標(biāo)還差多遠(yuǎn)。 軟件開發(fā)中,客戶和開發(fā)人員都有自己的基本權(quán)利和義務(wù)。

客戶

定義每個(gè)用戶需求的商業(yè)優(yōu)先級; 制訂總體計(jì)劃,包括用多少投資、經(jīng)過多長時(shí)間、達(dá)到什么目的; 在項(xiàng)目開發(fā)過程中的每個(gè)工作周,都能讓投資獲得最大的收益; 通過重復(fù)運(yùn)行你所指定的功能測試,準(zhǔn)確地掌握項(xiàng)目進(jìn)展情況; 能隨時(shí)改變需求、功能或優(yōu)先級,同時(shí)避免昂貴的再投資;能夠根據(jù)各種變化及時(shí)調(diào)整項(xiàng)目計(jì)劃; 能夠隨時(shí)取消項(xiàng)目;項(xiàng)目取消時(shí),以前的開發(fā)工作不是一堆垃圾,已開發(fā)完的功能是合乎要求的,正在進(jìn)行或未完成的的工作則應(yīng)該是不難接手的。

開發(fā)人員

知道要做什么,以及要優(yōu)先做什么; 工作有效率; 有問題或困難時(shí),能得到客戶、同事、上級的回答或幫助; 對工作做評估,并根據(jù)周圍情況的變化及時(shí)重新評估; 積極承擔(dān)工作,而不是消極接受分配; 一周40小時(shí)工作制,不加班。

[編輯本段]軟件開發(fā)過程可以包括以下5個(gè)階段

分析

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

設(shè)計(jì)

軟件設(shè)計(jì)可以分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個(gè)階段。實(shí)際上軟件設(shè)計(jì)的主要任務(wù)就是將軟件分解成模塊是指能實(shí)現(xiàn)某個(gè)功能的數(shù)據(jù)和程序說明、可執(zhí)行程序的程序單元??梢允且粋€(gè)函數(shù)、過程、子程序、一段帶有程序說明的獨(dú)立的程序和數(shù)據(jù),也可以是可組合、可分解和可更換的功能單元。模塊,然后進(jìn)行模塊設(shè)計(jì)。概要設(shè)計(jì)就是結(jié)構(gòu)設(shè)計(jì),其主要目標(biāo)就是給出軟件的模塊結(jié)構(gòu),用軟件結(jié)構(gòu)圖表示。詳細(xì)設(shè)計(jì)的首要任務(wù)就是設(shè)計(jì)模塊的程序流程、算法和數(shù)據(jù)結(jié)構(gòu),次要任務(wù)就是設(shè)計(jì)數(shù)據(jù)庫,常用方法還是結(jié)構(gòu)化程序設(shè)計(jì)方法。

編碼

軟件編碼是指把軟件設(shè)計(jì)轉(zhuǎn)換成計(jì)算機(jī)可以接受的程序,即寫成以某一程序設(shè)計(jì)語言表示的"源程序清單"。充分了解軟件開發(fā)語言、工具的特性和編程風(fēng)格,有助于開發(fā)工具的選擇以及保證軟件產(chǎn)品的開發(fā)質(zhì)量。 當(dāng)前軟件開發(fā)中除在專用場合,已經(jīng)很少使用二十世紀(jì)80年代的高級語言了,取而代之的是面向?qū)ο蟮拈_發(fā)語言。而且面向?qū)ο蟮拈_發(fā)語言和開發(fā)環(huán)境大都合為一體,大大提高了開發(fā)的速度。

測試

軟件測試的目的是以較小的代價(jià)發(fā)現(xiàn)盡可能多的錯(cuò)誤。要實(shí)現(xiàn)這個(gè)目標(biāo)的關(guān)鍵在于設(shè)計(jì)一套出色的測試用例(測試數(shù)據(jù)和預(yù)期的輸出結(jié)果組成了測試用例)。如何才能設(shè)計(jì)出一套出色的測試用例,關(guān)鍵在于理解測試方法。不同的測試方法有不同的測試用例設(shè)計(jì)方法。兩種常用的測試方法是白盒法測試對象是源程序,依據(jù)的是程序內(nèi)部的的邏輯結(jié)構(gòu)來發(fā)現(xiàn)軟件的編程錯(cuò)誤、結(jié)構(gòu)錯(cuò)誤和數(shù)據(jù)錯(cuò)誤。結(jié)構(gòu)錯(cuò)誤包括邏輯、數(shù)據(jù)流、初始化等錯(cuò)誤。用例設(shè)計(jì)的關(guān)鍵是以較少的用例覆蓋盡可能多的內(nèi)部程序邏輯結(jié)果。白盒法和黑盒法依據(jù)的是軟件的功能或軟件行為描述,發(fā)現(xiàn)軟件的接口、功能和結(jié)構(gòu)錯(cuò)誤。其中接口錯(cuò)誤包括內(nèi)部/外部接口、資源管理、集成化以及系統(tǒng)錯(cuò)誤。黑盒法用例設(shè)計(jì)的關(guān)鍵同樣也是以較少的用例覆蓋模塊輸出和輸入接口。黑盒法。

維護(hù)

維護(hù)是指在已完成對軟件的研制(分析、設(shè)計(jì)、編碼和測試)工作并交付使用以后,對軟件產(chǎn)品所進(jìn)行的一些軟件工程的活動(dòng)。即根據(jù)軟件運(yùn)行的情況,對軟件進(jìn)行適當(dāng)修改,以適應(yīng)新的要求,以及糾正運(yùn)行中發(fā)現(xiàn)的錯(cuò)誤。編寫軟件問題報(bào)告、軟件修改報(bào)告。 一個(gè)中等規(guī)模的軟件,如果研制階段需要一年至二年的時(shí)間,在它投入使用以后,其運(yùn)行或工作時(shí)間可能持續(xù)五年至十年。那么它的維護(hù)階段也是運(yùn)行的這五年至十年期間。在這段時(shí)間,人們幾乎需要著手解決研制階段所遇到的各種問題,同時(shí)還要解決某些維護(hù)工作本身特有的問題。做好軟件維護(hù)工作,不僅能排除障礙,使軟件能正常工作,而且還可以使它擴(kuò)展功能,提高性能,為用戶帶來明顯的經(jīng)濟(jì)效益。然而遺憾的是,對軟件維護(hù)工作的重視往往遠(yuǎn)不如對軟件研制工作的重視。而事實(shí)上,和軟件研制工作相比,軟件維護(hù)的工作量和成本都要大得多。 在實(shí)際開發(fā)過程中,軟件開發(fā)并不是從第一步進(jìn)行到最后一步,而是在任何階段,在進(jìn)入下一階段前一般都有一步或幾步的回溯。在測試過程中的問題可能要求修改設(shè)計(jì),用戶可能會提出一些需要來修改需求說明書等。

什么是軟件開發(fā)

 有人問我:“什么是軟件開發(fā)?”?;卮疬@個(gè)問題前,我們需要先理解什么是軟件。

一、軟件定義

關(guān)于軟件,一些優(yōu)秀的人已經(jīng)給出了簡單易懂的定義,舉個(gè)例子:

軟件是計(jì)算機(jī)系統(tǒng)的一部分,它適配各種不同用途的機(jī)器。例如,通過同一臺計(jì)算機(jī)但不同的軟件,我們可以玩游戲、計(jì)算繳稅、寫信或者寫書,以及獲得約會邀請的答復(fù)。

—— 杰拉爾德·溫伯格

這句話是作者解釋給他的朋友的,他的朋友是一名電腦小白。

有了上述定義,什么是軟件開發(fā)也就顯而易見。

軟件開發(fā)研究如何讓運(yùn)行在計(jì)算機(jī)里的不同系統(tǒng)解決人們在現(xiàn)實(shí)中遇到的問題。

我們經(jīng)常見到這樣的句式,試圖一句話就把事情講得面面俱到。

不妨簡化一下。

軟件開發(fā)研究如何讓計(jì)算機(jī)解決問題。

目前看起來不錯(cuò)。

倘若你聽過“一切問題都是人的問題”這句話,并且愿意相信它,那我們就可以接著簡化。

軟件開發(fā)解決人的問題。

這個(gè)定義充滿了敷衍的味道。如果你敢向你的女友這么解釋,她大抵會提到“你是不不愛我了”。

回到正題,它好在足夠籠統(tǒng),把所有的細(xì)節(jié)歸納為“人的問題”,一言以蔽之,至少不會有多大偏差。

關(guān)于什么是“人的問題”,我們無法一一列舉。但通過下面的例子,也許可以窺探到一些奧秘:早在 1995 年,有人便覺得軟件開發(fā)要解決的問題陷入了困境。

我們遇到了前所未有的困難,不知道在做出電子表格(Excel)后,計(jì)算機(jī)還可以用來做什么。

—— 查爾斯·西蒙尼

從今天來看,這個(gè)觀點(diǎn)頗失謙遜,軟件行業(yè)從來沒有止步于表格處理程序。當(dāng)然,我們不是要批判什么,它是用來引出以下軟件開發(fā)的三點(diǎn)特性。

“人的問題”不可預(yù)料。

世界在改變,人的需求也是一直變化的,我們不知道下一步會發(fā)生什么。值得一提的是,有時(shí)我們甚至不知道過去發(fā)生了什么。

“人的問題”具有延續(xù)性。

在 1977 年,人們開始用電子表格處理數(shù)據(jù)。在今天的辦公自動(dòng)化領(lǐng)域,電子表格仍具有著不可替代的作用。這是值得慶幸的,總有些問題和解決方案會持續(xù)很長一段時(shí)間。

“人的問題”具有復(fù)雜性。

盡管軟件技術(shù)在當(dāng)今的 IT 領(lǐng)域開花結(jié)果,人們探索出了各種各樣的成型解決方案,但開發(fā)者和開發(fā)團(tuán)隊(duì)依舊面對著復(fù)雜的開發(fā)環(huán)境。

復(fù)雜性足夠我們花費(fèi)一整節(jié)的內(nèi)容來闡述它,歡迎閱讀下一節(jié)。

二、軟件復(fù)雜性

隨手翻開一本介紹軟件工程的書,你都會看到它會提及復(fù)雜性。軟件復(fù)雜性的本質(zhì)是,現(xiàn)實(shí)世界是無比復(fù)雜的。至于現(xiàn)實(shí)為什么是復(fù)雜的,不在本文討論的范疇。本文更關(guān)心的問題是:

是什么讓軟件變復(fù)雜的?

我們在上文提到“軟件是運(yùn)行在計(jì)算機(jī)里的系統(tǒng)”,這里直接給出系統(tǒng)的一般定義:

系統(tǒng)是對世界的一種觀點(diǎn)。

你可能一時(shí)無法接受這個(gè)它。

換種說法,系統(tǒng)是對世界的一種抽象。

抽象意味著要從繁復(fù)的具象世界里剝絲抽繭,不同的抽象就會產(chǎn)生不同的系統(tǒng)。

觀點(diǎn)或者說抽象可以簡單也可以復(fù)雜。

一個(gè)軟件從無到有,越來越復(fù)雜,根本原因就在于特性不斷增加和改變,不同角度會產(chǎn)生不同的觀點(diǎn)。

舉個(gè)食品行業(yè)的例子。

一家公司以獨(dú)家配方生產(chǎn)一種食品,每個(gè)季度的銷售額上漲 10%。

管理層希望業(yè)績進(jìn)一步提高,具體到研究部門,目標(biāo)是調(diào)制出更好吃的配方。

研究團(tuán)隊(duì)計(jì)劃每個(gè)月只改動(dòng)一點(diǎn)點(diǎn),一年過去了,不斷地有顧客投訴食品不再是原來的味道了。

公司董事決定開會。

“我們生產(chǎn)的食品更好吃了嗎?”

“當(dāng)然,我們的銷售額增長達(dá)到了 30%?!?/p>

“但是我們的顧客不這樣說?!?/p>

“他們只是不愿意改變!”

再舉個(gè)例子,打開你的手機(jī),各類軟件源源不斷地彈出新聞資訊類消息。大部分軟件工具成熟以后,不再愿意僅做好它的本職工作,當(dāng)你使用一個(gè)小眾 APP 時(shí),你可以親眼見證它從小而美到臃腫不堪的歷程。

這是復(fù)雜性的一面,面對它,我們唯一能夠做的就是“不要多余的特性”,它有個(gè)經(jīng)典表述:

不要過早的考慮優(yōu)化。

回到上面的故事,也許那家公司什么也不做,銷售額同樣會上漲。

你可能會質(zhì)疑“說的輕巧,我們總不能什么都不做?”

回答它,涉及到我們做出決定時(shí)繞不開的一個(gè)問題。

你愿意付出什么樣的代價(jià)?

付出什么,就要準(zhǔn)備好得到什么。你愿意付出多少薪資雇傭員工,你愿意增加多少特性,你愿意采用什么樣的解決方案,你愿意為這個(gè) Bug 留出多少工作量。

拿出什么樣的籌碼,是真實(shí)擺在我們眼前的問題。

四、什么是軟件開發(fā)

現(xiàn)在,我們可以正式回答這個(gè)問題了。

首先,“預(yù)料”對方真正的目的是什么?

1. 對方只是隨口一問。

2. 對方想打探你的薪資,然后向你介紹相親對象。

3. 對方對軟件行業(yè)這個(gè)話題感興趣,并想深入了解更多。

4. 其他可能性。

對于醉翁之意不在酒,你翻開朋友圈,閱讀一番《不得不看,職場新老手都有用的一百條話術(shù)!》,基本可以見招拆招了。

至于第三種情況,先給他來個(gè)含辭模糊的定義,比如

軟件開發(fā)通過設(shè)計(jì)、編碼、測試以及持續(xù)地維護(hù)解決人的需求。

一般地,對方發(fā)現(xiàn)自己聽得云里霧里后,就會識趣的停止這個(gè)話題。但也有可能,尤其是碰到其他領(lǐng)域的工程師時(shí),會引出更為具體的問題。

不幸的是,有時(shí)候問題根本就不存在,正如下面的寥寥數(shù)語,它會讓你所有準(zhǔn)備好的說辭付之流水。

“工作忙嗎?”

“還行。”

“每天都干啥?”

“主要是寫代碼?!?/p>

“不懂,聽說挺累的?!?/p>

“有時(shí)候是累,工作不都這樣么。”

“嘿,說的也是?!?/p>

希望對您有所幫助!~

關(guān)于軟件開發(fā)是什么和學(xué)軟件開發(fā)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

掃碼二維碼