日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【软技能】代码先放一放,学习一下工程的概念

發(fā)布時(shí)間:2023/12/10 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【软技能】代码先放一放,学习一下工程的概念 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

本篇文章適合于以下同學(xué)閱讀

  • 接觸編程時(shí)間不長(zhǎng)的初學(xué)者;
  • 經(jīng)常需要編程,但是對(duì)工程的概念相對(duì)模糊的同學(xué)。

初步認(rèn)識(shí)工程

工程的概念大家或多或少都有接觸過(guò)。比如在開(kāi)發(fā)環(huán)境(如Qt Creator)里編寫(xiě)一個(gè)軟件,我們首先需要新建一個(gè)“Project”,中文翻譯通常叫做項(xiàng)目或者工程。一個(gè)項(xiàng)目中包含了以下內(nèi)容:

  • 項(xiàng)目配置:用于告訴開(kāi)發(fā)環(huán)境如何為你工作;
  • 項(xiàng)目代碼:項(xiàng)目代碼是開(kāi)發(fā)者編寫(xiě)的,用于實(shí)現(xiàn)你的編程目標(biāo),比如實(shí)現(xiàn)一個(gè)播放器、實(shí)現(xiàn)一個(gè)游戲等;
  • 項(xiàng)目其他資源:如圖片、文本等數(shù)據(jù)資源。

可以看到,**項(xiàng)目是實(shí)現(xiàn)一個(gè)目標(biāo),所需要的信息、資源、工具、步驟的集合。**換言之,把實(shí)現(xiàn)一個(gè)目標(biāo)所需要的資源,有機(jī)的結(jié)合起來(lái),就變成了項(xiàng)目。

在腦海中樹(shù)立項(xiàng)目的概念是很有用的。項(xiàng)目能夠讓你更加有條理地、高效地管理你正在做的事情,讓你能夠更加專(zhuān)注于和目標(biāo)相關(guān)的事物,而不是把精力放在無(wú)關(guān)緊要的東西上。

但是,上述的項(xiàng)目/工程僅僅是軟件開(kāi)發(fā)過(guò)程中的一個(gè)狹義的概念。在實(shí)際的軟件開(kāi)發(fā)行業(yè)中,也就是在公司、團(tuán)隊(duì)在做產(chǎn)品開(kāi)發(fā)的實(shí)際生產(chǎn)實(shí)踐中,需要將上述的“Project”(即項(xiàng)目/工程)的概念作推廣。

概念推廣

每個(gè)人都是初學(xué)者過(guò)來(lái)的,記得在筆者本人初學(xué)編程的幾年內(nèi),總以為軟件開(kāi)發(fā)就只是寫(xiě)代碼而已。隨著參與了一個(gè)又一個(gè)實(shí)際的軟件項(xiàng)目,筆者才明白,軟件開(kāi)發(fā)絕不僅僅是悶頭寫(xiě)代碼而已。

也許你覺(jué)得,編程做軟件不就是寫(xiě)代碼嗎?我一直都是這樣做的啊,代碼也能寫(xiě)出來(lái),也能運(yùn)行很好。之所以產(chǎn)生這樣的認(rèn)知,是因?yàn)槟銢](méi)有接觸到相關(guān)的實(shí)際問(wèn)題。

例如,一個(gè)總價(jià)50萬(wàn)的軟件,總代碼行數(shù)5萬(wàn)行,如果交給你做,項(xiàng)目交付時(shí)間為三個(gè)月,軟件的需求由客戶(hù)來(lái)提,需求有一定的變動(dòng),你有多少把握去接?判斷有多少把握,當(dāng)然不是直接把代碼寫(xiě)出來(lái)再評(píng)估,評(píng)估和分析的工作要在編碼之前做好。例如,至少需要評(píng)估以下方面:

  • 需求變化范圍:需求絕大多數(shù)情況下是會(huì)變的,就像是每個(gè)App每年都在更新。要和客戶(hù)確認(rèn)需求的變化范圍,保證需求可控,考慮不可控因素。在后續(xù)的開(kāi)發(fā)編碼中,要對(duì)不確定因素做好軟件架構(gòu)上的冗余設(shè)計(jì)。
  • 技術(shù)難度:項(xiàng)目涉及到哪些技術(shù),有哪些解決不了的問(wèn)題,哪些難點(diǎn)大概需要花多長(zhǎng)時(shí)間;
  • 技術(shù)選型:同一個(gè)業(yè)務(wù)可能有多個(gè)技術(shù)方案,選一個(gè)綜合考慮最優(yōu)的方案;
  • 軟件的結(jié)構(gòu)設(shè)計(jì):代碼在5萬(wàn)行的項(xiàng)目,對(duì)于一個(gè)人來(lái)說(shuō),是一個(gè)不小的項(xiàng)目了。可能你平時(shí)寫(xiě)萬(wàn)行以?xún)?nèi)的小工具、小demo不是很費(fèi)力,完全用不上精心考量設(shè)計(jì)模式和架構(gòu)。但是,隨著代碼行數(shù)的增多,代碼的維護(hù)越來(lái)越難。如果軟件沒(méi)有一個(gè)章法、結(jié)構(gòu)可尋,你的代碼將逐漸失控。最典型的例子是,在你寫(xiě)一個(gè)新的功能時(shí),需要在已有的代碼中添加、修改或刪除代碼。但是因?yàn)榇a量多,代碼耦合性強(qiáng),導(dǎo)致你每改一個(gè)地方,都有可能破壞已有功能,引入bug,導(dǎo)致軟件bug橫行,最終項(xiàng)目失敗!
  • 軟件測(cè)試如何做,以及需要多少工作量
  • 軟件部署、維護(hù)如何做,以及需要多少工作量

如上所述,軟件從開(kāi)始到結(jié)束,除了編寫(xiě)代碼,還有很多步驟需要完成,而且每個(gè)步驟都需要產(chǎn)出相關(guān)的文檔、資料,作為后續(xù)編碼人員進(jìn)行編碼的依據(jù)。現(xiàn)實(shí)中,軟件公司的軟件生產(chǎn)流程和上述過(guò)程類(lèi)似。之所以說(shuō)類(lèi)似,是因?yàn)閷?shí)際上并不是所有公司、團(tuán)隊(duì)都會(huì)嚴(yán)格遵循以上步驟。其中重要的原因是成本問(wèn)題,步驟增多,成本自然會(huì)上升。對(duì)于規(guī)模較小的公司、團(tuán)隊(duì),可能流程更加精簡(jiǎn);規(guī)模較大的公司,因?yàn)槌鲥e(cuò)成本高,會(huì)更加注重軟件工程的實(shí)施,提高軟件質(zhì)量。

我們一定要摒棄“做軟件只是寫(xiě)代碼”的陳舊觀念,寫(xiě)代碼是軟件過(guò)程中的重要部分,但并非全部。讀者可能會(huì)覺(jué)得上述內(nèi)容可能用不到,這是因?yàn)闀簳r(shí)你還沒(méi)有遇到實(shí)際的問(wèn)題。在日后的工作中,你將會(huì)逐漸地遇到這些問(wèn)題。在遇到這些問(wèn)題之前,最好先建立起相關(guān)概念,做好心理準(zhǔn)備,并隨著時(shí)間的推移,慢慢消化。

軟件行業(yè)發(fā)展已有將近一個(gè)世紀(jì),軟件開(kāi)發(fā)過(guò)程中,什么情況下會(huì)遇到什么問(wèn)題,以及這些問(wèn)題如何解決,相關(guān)的研究已經(jīng)比較成熟。這一套成熟的理論,叫做“軟件工程”。這個(gè)“工程”不再是“Project”,而是“Engineering”。

如果你想要進(jìn)一步了解的話(huà),可以查閱“軟件工程”相關(guān)的書(shū)籍。這里推薦一本:《軟件設(shè)計(jì)師教程(第五版)》。此書(shū)電子版百度云地址:鏈接: https://pan.baidu.com/s/1s9rQjIIAxFmccCf7fZUvOA,提取碼: htcq。也可以關(guān)注公眾號(hào)“Qt未來(lái)工程師”,后臺(tái)回復(fù)1,獲取下載地址。此書(shū)中有軟件工程的相關(guān)章節(jié)。大家下載下來(lái)以后,可以在閑暇之余閱讀。

Project和Enginnering的異同點(diǎn)

相同點(diǎn):

  • 都是為了實(shí)現(xiàn)某個(gè)目標(biāo),而創(chuàng)建的信息、資源、步驟的集合。

不同點(diǎn):

  • Project更傾向于代碼管理,而Engineering傾向于整個(gè)軟件從確定軟件需要實(shí)現(xiàn)什么功能開(kāi)始,到軟件投入使用結(jié)束,整個(gè)過(guò)程中所有需要做的事情。

了解工程的概念對(duì)個(gè)人的作用

本文讀者中可能有一些尚未參與到工作中的同學(xué),對(duì)軟件開(kāi)發(fā)的整體過(guò)程可能沒(méi)有完整的接觸。了解軟件工程,可以幫助你了解最真實(shí)的軟件開(kāi)發(fā)流程,為將來(lái)的工作作準(zhǔn)備。

同時(shí),軟件工程中包含的一系列設(shè)計(jì)步驟和方法,是提高軟件質(zhì)量的重要保證。對(duì)個(gè)人來(lái)說(shuō),學(xué)會(huì)參與到軟件工程為主導(dǎo)的開(kāi)發(fā)過(guò)程中,是提高自身軟實(shí)力的重要機(jī)會(huì),能讓自己的編程生涯更加順利,減少不必要的麻煩,避免因質(zhì)量、進(jìn)度問(wèn)題產(chǎn)生嚴(yán)重后果。

結(jié)語(yǔ)

筆者根據(jù)自己多年的編程和工作經(jīng)驗(yàn),簡(jiǎn)述了工程相關(guān)的概念,并沒(méi)有作深入介紹。希望能夠引起讀者對(duì)工程的注意,幫助讀者避開(kāi)自己曾經(jīng)走過(guò)的彎路,擴(kuò)充知識(shí)面,提高自身實(shí)力。

總結(jié)

以上是生活随笔為你收集整理的【软技能】代码先放一放,学习一下工程的概念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。