❶ 什麼是軟體開發
有人問我:「什麼是軟體開發?」。回答這個問題前,我們需要先理解什麼是軟體。
一、軟體定義
關於軟體,一些優秀的人已經給出了簡單易懂的定義,舉個例子:
軟體是計算機系統的一部分,它適配各種不同用途的機器。例如,通過同一台計算機但不同的軟體,我們可以玩游戲、計算繳稅、寫信或者寫書,以及獲得約會邀請的答復。
—— 傑拉爾德·溫伯格
這句話是作者解釋給他的朋友的,他的朋友是一名電腦小白。
有了上述定義,什麼是軟體開發也就顯而易見。
軟體開發研究如何讓運行在計算機里的不同系統解決人們在現實中遇到的問題。
我們經常見到這樣的句式,試圖一句話就把事情講得面面俱到。
不妨簡化一下。
軟體開發研究如何讓計算機解決問題。
目前看起來不錯。
倘若你聽過「一切問題都是人的問題」這句話,並且願意相信它,那我們就可以接著簡化。
軟體開發解決人的問題。
這個定義充滿了敷衍的味道。如果你敢向你的女友這么解釋,她大抵會提到「你是不不愛我了」。
回到正題,它好在足夠籠統,把所有的細節歸納為「人的問題」,一言以蔽之,至少不會有多大偏差。
關於什麼是「人的問題」,我們無法一一列舉。但通過下面的例子,也許可以窺探到一些奧秘:早在 1995 年,有人便覺得軟體開發要解決的問題陷入了困境。
我們遇到了前所未有的困難,不知道在做出電子表格(Excel)後,計算機還可以用來做什麼。
—— 查爾斯·西蒙尼
從今天來看,這個觀點頗失謙遜,軟體行業從來沒有止步於表格處理程序。當然,我們不是要批判什麼,它是用來引出以下軟體開發的三點特性。
「人的問題」不可預料。
世界在改變,人的需求也是一直變化的,我們不知道下一步會發生什麼。值得一提的是,有時我們甚至不知道過去發生了什麼。
「人的問題」具有延續性。
在 1977 年,人們開始用電子表格處理數據。在今天的辦公自動化領域,電子表格仍具有著不可替代的作用。這是值得慶幸的,總有些問題和解決方案會持續很長一段時間。
「人的問題」具有復雜性。
盡管軟體技術在當今的 IT 領域開花結果,人們探索出了各種各樣的成型解決方案,但開發者和開發團隊依舊面對著復雜的開發環境。
復雜性足夠我們花費一整節的內容來闡述它,歡迎閱讀下一節。
二、軟體復雜性
隨手翻開一本介紹軟體工程的書,你都會看到它會提及復雜性。軟體復雜性的本質是,現實世界是無比復雜的。至於現實為什麼是復雜的,不在本文討論的范疇。本文更關心的問題是:
是什麼讓軟體變復雜的?
我們在上文提到「軟體是運行在計算機里的系統」,這里直接給出系統的一般定義:
系統是對世界的一種觀點。
你可能一時無法接受這個它。
換種說法,系統是對世界的一種抽象。
抽象意味著要從繁復的具象世界裡剝絲抽繭,不同的抽象就會產生不同的系統。
觀點或者說抽象可以簡單也可以復雜。
一個軟體從無到有,越來越復雜,根本原因就在於特性不斷增加和改變,不同角度會產生不同的觀點。
舉個食品行業的例子。
一家公司以獨家配方生產一種食品,每個季度的銷售額上漲 10%。
管理層希望業績進一步提高,具體到研究部門,目標是調制出更好吃的配方。
研究團隊計劃每個月只改動一點點,一年過去了,不斷地有顧客投訴食品不再是原來的味道了。
公司董事決定開會。
「我們生產的食品更好吃了嗎?」
「當然,我們的銷售額增長達到了 30%。」
「但是我們的顧客不這樣說。」
「他們只是不願意改變!」
再舉個例子,打開你的手機,各類軟體源源不斷地彈出新聞資訊類消息。大部分軟體工具成熟以後,不再願意僅做好它的本職工作,當你使用一個小眾 APP 時,你可以親眼見證它從小而美到臃腫不堪的歷程。
這是復雜性的一面,面對它,我們唯一能夠做的就是「不要多餘的特性」,它有個經典表述:
不要過早的考慮優化。
回到上面的故事,也許那家公司什麼也不做,銷售額同樣會上漲。
你可能會質疑「說的輕巧,我們總不能什麼都不做?」
回答它,涉及到我們做出決定時繞不開的一個問題。
你願意付出什麼樣的代價?
付出什麼,就要准備好得到什麼。你願意付出多少薪資僱傭員工,你願意增加多少特性,你願意採用什麼樣的解決方案,你願意為這個 Bug 留出多少工作量。
拿出什麼樣的籌碼,是真實擺在我們眼前的問題。
四、什麼是軟體開發
現在,我們可以正式回答這個問題了。
首先,「預料」對方真正的目的是什麼?
1. 對方只是隨口一問。
2. 對方想打探你的薪資,然後向你介紹相親對象。
3. 對方對軟體行業這個話題感興趣,並想深入了解更多。
4. 其他可能性。
對於醉翁之意不在酒,你翻開朋友圈,閱讀一番《不得不看,職場新老手都有用的一百條話術!》,基本可以見招拆招了。
至於第三種情況,先給他來個含辭模糊的定義,比如
軟體開發通過設計、編碼、測試以及持續地維護解決人的需求。
一般地,對方發現自己聽得雲里霧里後,就會識趣的停止這個話題。但也有可能,尤其是碰到其他領域的工程師時,會引出更為具體的問題。
不幸的是,有時候問題根本就不存在,正如下面的寥寥數語,它會讓你所有準備好的說辭付之流水。
「工作忙嗎?」
「還行。」
「每天都幹啥?」
「主要是寫代碼。」
「不懂,聽說挺累的。」
「有時候是累,工作不都這樣么。」
「嘿,說的也是。」
希望對您有所幫助!~
❷ 電腦上的軟體是怎麼做出來的
軟體開發流程
先上一個軟體開發的整體流程圖,這就是大名鼎鼎的「瀑布模型(Waterfall Model)」。據說由溫斯頓·羅伊斯(Winston Royce)在1970年提出。
1、環境部署
准備伺服器,部署操作系統、軟體環境、安全軟體、FTP伺服器等。資料庫和應用可分開布置在多個伺服器,也可布置在同一伺服器。
准備網路,分為內網和外網。外網需要購買公網IP和域名。
負責人:網路管理員
2、軟體開發
包括開發語言選擇、架構設計、資料庫設計等工作,並進行編碼、編譯、測試、打包。
負責人:程序員
3、軟體部署
將程序文件上傳到伺服器,進行部署、配置,成功後即可通過客戶端訪問項目。
負責人:軟體實施
軟體開發階段
下面以java語言開發為例,簡單講講程序員是如何進行軟體開發的。
(本部分參考了「軟帝在線」公眾號、博客園「架構與我」的文章)。
1、新建java文件(或工程)
java源代碼本質上就是普通的文本文件,可以用txt等工具編輯java代碼(程序員一般採用源代碼編輯工具,如:Notepad++;或集成開發工具IDE,如:Eclipse)。txt編寫後需將文件擴展名改成java。
2、編寫代碼
以「Hello World」舉例編寫代碼:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
該程序表示的意思是輸出Hello World這樣一段話。
3、編譯程序
Java程序之所以能做到跨平台運行,是因為Java程序運行在JVM中的,然而JVM只能夠識別位元組碼文件,而不能直接識別Java文件。所以需要先將Java文件編譯成位元組碼文件,即class文件,然後位元組碼文件才能夠在JVM中運行。
編譯文件,可以通過手動執行Dos命令javac,或直接用編譯器如Eclipse完成。
4、運行程序
可在Dos命令窗口中輸入java命令,按回車,輸出Hello World;
或在編譯器的控制台中看到輸出結果。
5、單元測試
單元測試(模塊測試)是開發者對編寫的一小段代碼,檢驗一個很小的、很明確的功能是否正確。
通常採用JUnit框架(多數java開發環境已集成)進行測試,即所謂白盒測試,叫「白盒」是因為程序員知道被測試的軟體如何(How)完成功能和完成什麼樣(What)的功能。
測試通過後,就完成了軟體開發階段,可以打包部署了。(IT售前圈)
❸ 軟體開發對電腦配置要求高嗎
Win、Mac、Linux是常用的三大操作系統,因為不同的崗位需求對不同的電腦性能要求也不一樣。比如像前端開發、後端開發、運維、演算法、嵌入式等這些崗位的要求都還不太一樣。
1.前端開發
不管是用「三件套」的原生技術棧時代,也就是所謂的html、css、javascript。還是後來的「封裝庫」時代,也就是有了jQury和ajax的時代。亦或是現在如今比較火的「組件式」開發時代,有angular、react、Vue這些組件化框架開發時代。我們以最新的為例來說:首先,你一般會需要一個命令行終端,然後前端開發也需要一個比較大的IDE環境,現在我看好像用webstorm比較多,前端開發再厲害點的就還需要一個vscode或者是atom也就是文本編譯器,最後就還需要一個瀏覽器。所以前端開發常見也就使用這個四五個開發軟體,所以說前端開發對於電腦性能沒什麼要求,因為它不怎麼吃電腦性能沒有什麼特殊要求,正常配置就可以了。當然唯一的要求可能就是屏幕解析度和屏幕色准,不管怎麼說都是跟圖形化的東西打交道。所以從這些角度上來講,我是推薦還是用一台Mac來做前端開發比較好,因為它屏幕還是挺不錯的。關於顯卡的話,顯卡不是必須的,但是具備最好,因為前段也有可能會接觸到一些UI設計方面的應用軟體。綜上所說,前段其實不耗電腦性能:8G內存,一個固態SSD基本上就夠了。
2.後端開發
以java後端開發為例,需要一個大的IDE,一般是eclipse或者是intellij IDEA(後者現在更多)、瀏覽器(Google)、而資料庫可視化可能需要類似於Navicat這種軟體、前後端調試介面需要Postman、編輯器vscode或者是atom、後端開發也需要命令行終端、遠程連接伺服器就需要一個SSH終端。當時我在自己2016款中配MacBook pro上做過實驗,把java開發的所需要的軟體全部打開會耗費多少性能。實驗證明我自己的這台16款中配8G內存的MacBook pro是非常能勝任的,運行非常流暢。後端開發的話我建議內存盡量8G及以上、系統盤是SSD(256G)基本夠了、顯卡就看自己的喜好就行,如果你要搞大數據、虛擬化、編程環境復雜一些的技術,需要虛擬機支持的話就需要你的電腦CPU、內存、硬碟都得要再上一個台階了。
1.AI(人工智慧)
如果你是做AI、機器學習、圖形圖像處理演算法,除了在CPU、硬碟、內存(16G+)要求比較高之外還需要GPU的加持。因為我們以前在實驗室做圖形圖像處理和一些模式處理的演算法的時候就會用到並行計算,這個時候就需要GPU的加速了。
4.運維
其實我覺得運維崗對客戶端機要求是最低的,因為運維絕大部分時間都是在一個遠程終端連接到一個遠程伺服器上去進行操作。所以你本地客戶機基本上一個SSH終端就能搞定一切,厲害些的可能就還需要一些文件對比工具和編譯器等,很小的一些小工具就可以了。
5.嵌入式開發
如果你是做嵌入式開發或者跟硬體打交道的話,那盡量還是在Windows或則是Linux下做比較好,Mac不是一個好的選擇,因為Mac上很多嵌入式開發的軟體確實是沒有。
所以說在大部分情況下我還是覺得一台中配的MacBook pro就可以搞定一切,最好是15寸的(效率相對而言高一些),具體哪一款的話,我自己用過:14、15、16、17、18款都用過,在我感覺16款的體驗稍微的好一點點,但是差別也沒那麼大,因人而議。如果說你MacBook pro不想買新的話,買一個二手的也是不錯的選擇,像14款的中配MacBook pro就是13寸的8G內存156G基本上也就是4000多塊錢。而15款二手的MF840差不多也就賣5000塊錢。我自己的現在是16款的帶Touch Bar的這個MacBook pro 8G內存、256SSD、i5處理器的話頂天也就只能賣一個7000塊錢。所以說二手的性價比是最高的。除了MacBook pro之外的話還有ThinkPad T系列也還不錯。
❹ 做PC的客戶端軟體開發框架選擇,sciter vs QT,用哪個好點
Qt是一個類庫,VS是一個集成開發環境,兩者沒有可比性QT:跨平台,語法結構簡單清晰。面向對象的特性體現的比MFC明顯。代碼寫起來比較優雅,也就是說上手會快一點。
❺ 軟體開發需要會什麼
軟體開發需要會什麼,這個問題比較廣泛,首先是要會2-3門左右的編程語言,起碼要精通1-2門。
然後需要精通資料庫,精通sql語言,熟悉存儲,了解緩存機制。
然後需要熟悉網路通信,socket、tcp/ip、http等等。以及在這之上的web服務等等。
需要熟悉常見的文件操作,特別是xml的的語法與操作。
還需要了解伺服器的知識,單元測試,前端的知識,項目管理的知識,業務域的知識等等。
這里還有框架類庫的知識,這個也是非常重要的。總之軟體開發要學的東西非常之多。而且這個職業知識更新非常快,需要終身持續學習。
❻ 什麼是計算機軟軟體 軟體開發編程
就是通過一些開發環境,編寫一套計算機能看得懂的指令,然後讓計算機自己去運算。
計算機軟體:安裝部署在計算機,或者通過計算機可以訪問使用的一些工具,比如QQ、瀏覽器、殺毒軟體、購票系統、酒店管理系統、銀行系統等等,現在生活都離不開了。。。
軟體開發:就是用編程的方式去實現以上這些軟體,一般從環境分為服務端和客戶端,從架構上分為C/S、B/S,從運營模式上分為B2C、C2C、B2B,從部署模式上分為客戶端部署、SaaS等等等等。我說的也片面,不是一句兩句就能解釋清楚的,你大體有個印象就行了吧。
❼ 學軟體開發對電腦有要求沒
Win、Mac、Linux是常用的三大操作系統,因為不同的崗位需求對不同的電腦性能要求也不一樣。比如像前端開發、後端開發、運維、演算法、嵌入式等這些崗位的要求都還不太一樣。
1.前端開發
不管是用「三件套」的原生技術棧時代,也就是所謂的html、css、javascript。還是後來的「封裝庫」時代,也就是有了jQury和ajax的時代。亦或是現在如今比較火的「組件式」開發時代,有angular、react、Vue這些組件化框架開發時代。我們以最新的為例來說:首先,你一般會需要一個命令行終端,然後前端開發也需要一個比較大的IDE環境,現在我看好像用webstorm比較多,前端開發再厲害點的就還需要一個vscode或者是atom也就是文本編譯器,最後就還需要一個瀏覽器。所以前端開發常見也就使用這個四五個開發軟體,所以說前端開發對於電腦性能沒什麼要求,因為它不怎麼吃電腦性能沒有什麼特殊要求,正常配置就可以了。當然唯一的要求可能就是屏幕解析度和屏幕色准,不管怎麼說都是跟圖形化的東西打交道。所以從這些角度上來講,我是推薦還是用一台Mac來做前端開發比較好,因為它屏幕還是挺不錯的。關於顯卡的話,顯卡不是必須的,但是具備最好,因為前段也有可能會接觸到一些UI設計方面的應用軟體。綜上所說,前段其實不耗電腦性能:8G內存,一個固態SSD基本上就夠了。
2.後端開發
以java後端開發為例,需要一個大的IDE,一般是eclipse或者是intellij IDEA(後者現在更多)、瀏覽器(Google)、而資料庫可視化可能需要類似於Navicat這種軟體、前後端調試介面需要Postman、編輯器vscode或者是atom、後端開發也需要命令行終端、遠程連接伺服器就需要一個SSH終端。當時我在自己2016款中配MacBook pro上做過實驗,把java開發的所需要的軟體全部打開會耗費多少性能。實驗證明我自己的這台16款中配8G內存的MacBook pro是非常能勝任的,運行非常流暢。後端開發的話我建議內存盡量8G及以上、系統盤是SSD(256G)基本夠了、顯卡就看自己的喜好就行,如果你要搞大數據、虛擬化、編程環境復雜一些的技術,需要虛擬機支持的話就需要你的電腦CPU、內存、硬碟都得要再上一個台階了。
1.AI(人工智慧)
如果你是做AI、機器學習、圖形圖像處理演算法,除了在CPU、硬碟、內存(16G+)要求比較高之外還需要GPU的加持。因為我們以前在實驗室做圖形圖像處理和一些模式處理的演算法的時候就會用到並行計算,這個時候就需要GPU的加速了。
4.運維
其實我覺得運維崗對客戶端機要求是最低的,因為運維絕大部分時間都是在一個遠程終端連接到一個遠程伺服器上去進行操作。所以你本地客戶機基本上一個SSH終端就能搞定一切,厲害些的可能就還需要一些文件對比工具和編譯器等,很小的一些小工具就可以了。
5.嵌入式開發
如果你是做嵌入式開發或者跟硬體打交道的話,那盡量還是在Windows或則是Linux下做比較好,Mac不是一個好的選擇,因為Mac上很多嵌入式開發的軟體確實是沒有。
所以說在大部分情況下我還是覺得一台中配的MacBook pro就可以搞定一切,最好是15寸的(效率相對而言高一些),具體哪一款的話,我自己用過:14、15、16、17、18款都用過,在我感覺16款的體驗稍微的好一點點,但是差別也沒那麼大,因人而議。如果說你MacBook pro不想買新的話,買一個二手的也是不錯的選擇,像14款的中配MacBook pro就是13寸的8G內存156G基本上也就是4000多塊錢。而15款二手的MF840差不多也就賣5000塊錢。我自己的現在是16款的帶Touch Bar的這個MacBook pro 8G內存、256SSD、i5處理器的話頂天也就只能賣一個7000塊錢。所以說二手的性價比是最高的。除了MacBook pro之外的話還有ThinkPad T系列也還不錯。
❽ 電腦客戶端的軟體 是用什麼開發的 無需安裝.net jre
你可以試試sharpDevelop,輕量級的c#開發工具,比vs體積小太多了。功能暫時沒發現有什麼缺點,就是縮進和補全差了點。
❾ 軟體開發有什麼定義
軟體開發就是根據用戶要求建造出軟體系統或者系統中的軟體部分的過程。
一般是用某種程序設計語言來實現的軟體開發的,像Java、Python、2C和C++等都是軟體開發的需要的編程語言。
看到那麼多編程語言,同學又就開始犯嘀咕,這么多,到底學什麼?
今天聽人說Java不錯,想學;
明天聽人說Python前景廣,想學;
為什麼會迷茫,還不是因為你不夠了解他們。
所以,今天信盈達小編先來給大家普及一下Java、C/C++、PHP、Python到底分別是用來開發什麼的?
用任何編程語言來開發程序,都是為了讓計算機幹活,比如編寫一篇文章,下載一首MP3等,而計算機幹活的CPU只認識機器的指令。
所以,盡管不同的編程語言差異極大,最後都得「翻譯」成CPU可以執行的機器指令。理論上任何語言干任何事情幾乎都可以, 但是主要干什麼那就不一樣了。
Java
java常常跟」企業」聯系在一起,因為具備一些很好的語言特性, 以及豐富的框架,在企業應用中最被青睞,你總可以聽到關於J2EE, JSP, Hibernate之類的東西的討論。
同時, java在手機領域也有一席之地,在普遍智能化之前,很多手機就是以支持java應用作為賣點的,而智能手機爆發之後,java手機主場變成了android, 作為安卓的標准編程語言而存。
總結:Java主要應用在網頁, 企業級開發,普通應用軟,游戲後台。
C/C++
C/C++理論上說可以做任何開發,只要有合適的硬體驅動和API,特點是效率高,基本上是編譯語言裡面效率最高的。除非你的系統中連C/C++編譯器都不具備。某些系統當中C++編譯器是不具備的,但是C一般都具備。
目前而言,C語言主要用來開發底層模塊(比如驅動,解碼器,演算法實現),服務應用(比如web伺服器)和嵌入式應用(比如微波爐里的程序。C++也可以做這些,不過由於C++的復雜性和標准問題,人們還是更願意使用C來做。C++更適合比較復雜但又特別需要高效率的設施,比如大型游戲,一些基礎庫, 大型桌面應用。
總結:C 主要應用在系統底層,驅動,嵌入式開發。C++主要應用在游戲開發,大規模,高性能,分布式要求的程序開發。
Python
Python由於具有豐富和強大的庫,它又叫做作膠水語言,能夠把用其他語言製作的各種模塊(尤其是C/C++)很輕松地聯結在一起。
常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),然後對其中有特別要求的部分,用更合適的語言改寫,比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而後封裝為Python可以調用的擴展類庫。
Python是做伺服器開發與物聯網開發。信息安全,大數據處理,數據可視化機器學習,物聯網開發,各大軟體的api,桌面應用,都需要python。
總結:Python主要應用在動態解釋型,開發效率高,開源,靈活,入門門檻低。