⑴ 一個完整的App開發需要哪些技術
一個完整的App開發需要哪些技術?在回答這個問題之前,我們首先要了解App都有哪些類型,不同的類型適用於哪些需求,用戶可以根據自己的需求選擇不同的App開發。
一、 App有哪些形式
WebApp:簡單來說,Web App就是針對iOS/Android優化後的web站點,用戶不需要下載安裝即可訪問。一般的web站點測重使用網頁技術在移動端做展示,包括文字,視頻,圖片等,而Web App更側重「功能」,是基於網頁技術開發實現特定功能的應用,必須依賴手機瀏覽器運行。Web App開發成本低,維護更新簡單,支持雲修復,用戶不用下載更新,但是App的用戶體驗不足,頁面跳轉遲鈍甚至卡殼,頁面交互動態效果不靈活,而且可能上不了AppStore,如果企業的核心功能不多,App需求側重於信息查詢,瀏覽等基礎功能,可以選擇Web App。
Native App(原生App):Native App是基於智能手機操作系統(現在主流的是ios和Android)用原生程序編寫運營的App。Native App運行時是基於本地操作系統的,所以它的兼容能力和訪問能力更好,擁有最佳的用戶體驗、最好的交互界面,但也是開發難度最大,開發成本和維護成本最高的App。
Hybrid App(混合App):是指半原生半web的混合類App,同時採用網頁語言和程序語言進行開發,通過不同的應用商店進行打包分發,用戶需要下載安裝使用。Hybrid App兼具Native App良好的用戶交互體驗和web App跨平台開發的優勢,因在開發過程中使用網頁語言,所以開發成本和難度大大降低。Native App是現在的主流應用,大型的App如淘寶/掌上網路/微信都是走的Hybrid App路線。
二、開發不同類型的App需要用到哪些技術?
Web App:iOS/Android的內置瀏覽器是基於webkit內核的,所以在開發webApp時,多數使用html或html5、CSS3、javaScript技術做UI布局,使其在網站頁面上實現傳統的C/S架構軟體功能,服務端技術用java、php、ASP。現在也有很多一鍵生成webApp的平台,如網路siteApp/移動開發平台APICloud,APICloud平台提供基於騰訊x5瀏覽器引擎生成webApp,因為移動端的超級流量入口微信/手機qq等用的也是騰訊x5內置瀏覽器,所以用騰訊x5瀏覽器生成的App在移動頁面展示時適配於微信的瀏覽體驗,這樣可以幫助webApp引流。
Native App:
開發Native App需要根據運行的手機系統採用不同的開發語言,開發Android App需要的開發語言是java,還需要熟悉Android環境和機制。主要知識點如下:
1. 開發環境,Android Studio、eclipse.如何搭建Android開發環境可以去網路。
2. 數據結構,App的某些功能涉及到做演算法,所以要有一定的數學基礎
3. Android SDK,會API介面開發,包括自行開發API的能力和調用第三發API的經驗。
4. 熟悉tcp、IP,socket等網路協議
5. 如果涉及到伺服器,你還需要了解webservice相關知識和相應的開發語言,常用有PHP、JSP、ASP.Net.
6. 除了這些功能基礎,App開發還涉及到UI設計、框架、性能優化、調試適配等。
Objective-C是開發iOS系統App的主流編程語言,開發者一般用蘋果公司的iOS SDK搭建開發環境,iOS SDK是開發iOS應用程序中不可少的軟體開發包,提供了從創建程序,到編譯、調試、運行、測試等多種開發過程中需要等工具。學習iOS開發可以去看蘋果官方文檔,這是最權威的ios教程。
Hybrid App:混合開發中主流的是以web為主體型的開發,即以網頁語言編寫,穿插Native功能的hybrid App開發類型,網頁語言主要有html5、CSS3、JavaScript。Web主體型的App用戶體驗好壞,取決於底層中間件的交互與跨平台的能力。國內外有很多優秀的開發工具,如國外的AppmAkr、Appmobi,國內的APICloud,APICloud的底層引擎用Deep Engine,使用半翻譯式原理,將運行中的web翻譯成Native API,並且支持擴展API,開發時可調用用原生語言開發的功能模塊,以此達到媲美原生App的用戶體驗,同時節省開發時間。
對企業來說,可以根據自己的需求選擇不同的開發類型和開發工具,目前來看,Hybrid App已經成為移動開發趨勢,一方面Hybrid App開發時不採用或者大部分不採用原生語言,卻能擁有原生應用的特性,一方面隨著web技術的發展,Hybrid App技術已經成熟,很多大型App淘寶、微信、攜程都屬於這種開發模式,Hybrid App給企業移動應用的開發、維護、更新都帶來了極高的便捷性,從成本投入用戶體驗考慮,Hybrid App都是首選。
⑵ 軟體開發與軟體工程的區別
一、指代不同
1、軟體工程:是一門研究用工程化方法構建和維護有效的、實用的和高質量的軟體的學科。
2、軟體開發:是根據用戶要求建造出軟體系統或者系統中的軟體部分的過程。
二、內容不同
1、軟體工程:涉及程序設計語言、資料庫、軟體開發工具、系統平台、標准、設計模式等方面。
2、軟體開發:能熟練掌握常用的計算機軟體的使用、維護與技巧;在硬體方面學生應了解計算機硬體的發展,熟練掌握計算機組裝的方法,能熟練運用應用軟體檢測計算機性能、故障的范圍所在,掌握硬體故障的一般處理方法。
三、特點不同
1、軟體工程:在給定成本、進度的前提下,開發出具有適用性、有效性、可修改性、可靠性、可理解性、可維護性、可重用性、可移植性、可追蹤性、可互操作性和滿足用戶需求的軟體產品。追求這些目標有助於提高軟體產品的質量和開發效率,減少維護的困難。
2、軟體開發:適合於熟練地按照工程化的思路進行軟體編制、軟體測試的工作崗位,能擔任各種企事業單位和各級工程建設部門、管理部門的計算機軟體和硬體維護、網路的組建、維護等工作,也可從事計算機研究與應用、軟體開發等方面的工作。
⑶ 如何學習hybris
之前在豆瓣看到過一個不錯的學習貼,分享如下。
hybris內容知識包括:Cockpit(ZK)/CockpitNG/CMS/Solr/Promotion/Mobile/OMS/Catalog design/PCM/OMS/Datahub/Accelerator
Wiki
Hybris 所有的資料都在hybris的wiki上,所以從high level上來說,比較好的一個途徑是看wiki,做trail。hybris的trail 其實應該做幾遍,知道每一步的流程具體是做什麼的。
Project Implementation
做hybris項目,會非常辛苦,我見過partner從早上8點多做到晚上12點。這對於某一個領域的能力會增加很快,不過對於hybris知識的廣度可能未必。
Source Code
我們都知道hybris的source code是可以被反編譯的,可以大概看看其中的代碼結構。wiki上很多資料寫的其實並不全,並且由於資料多,很容易看過前面就忘了後面。具體實現細節還需要看源代碼來了解,例如hybirs core和core plus 的底層細節(如類型系統type system的啟動和初始化),以及spring context scope等,這些細節都是需要看源代碼來了解的。還包括一些正在發展的component, 如datahub的實現細節,在wiki上基本沒有,必須看源代碼才能知道其內部邏輯。
註:反編譯的源代碼不一定保證能和源source code一一對應,我就見過exception stack trace 和反編譯出來的代碼對應不上,到時候可能會一頭霧水。
閱讀源代碼的時候還可以用關系圖來理解各個package之間的聯系,從而將自己的知識網格化,這樣不同的知識點能夠互相連接起來。
例如這是我自己畫的OMS:
Training
Training可以讓你對於hybris有一個high level的了解,目前的training包括 core, commerce, OMS 和datahub。做training的老師對於hybris有很深入的理解,基本上你遇到的問題老師都能解答。
Hybris expert Q/A系統
hybris expert是一個hybris的Q and A系統,不過可能不對外開放了。回答問題的expert有不少就是某一個component開發人員,所以對於那些非常困難的問題,可以在上面找到答案。
Hybris Consultant
可以向有經驗的hybris技術咨詢師咨詢問題
總之,hybris大而且全,所以一頭扎進去可能會一頭霧水,最好是對於你負責的其中的某一個component做仔細研究,做做項目,這樣上手會比較快。現在hybris如火如荼,各個項目都急缺人手,所以多參加項目挺重要。
hybris官網:hybris.com/zh/?source=PR
⑷ 軟體開發都有哪些
軟體開發是一項包括計劃、分析、設計、編碼和測試、維護系統工程。
一、計劃
對所要解決的問題進行總體定義,包括了解用戶的要求及現實環境,從技術、經濟和社會因素等3個方面研究並論證本軟體項目的可行性,編寫可行性研究報告,探討解決問題的方案,並對可供使用的資源(如計算機硬體、系統軟體、人力等)成本,可取得的效益和開發進度作出估計,制訂完成開發任務的實施計劃。
二、分析
軟體需求分析就是對開發什麼樣的軟體的一個系統的分析與設想。它是一個對用戶的需求進行去粗取精、去偽存真、正確理解,然後把它用軟體工程開發語言(形式功能規約,即需求規格說明書)表達出來的過程。
三、設計
軟體設計可以分為概要設計和詳細設計兩個階段。實際上軟體設計的主要任務就是將軟體分解成模塊是指能實現某個功能的數據和程序說明、可執行程序的程序單元。可以是一個函數、過程、子程序、一段帶有程序說明的獨立的程序和數據,也可以是可組合、可分解和可更換的功能單元。
四、編碼
軟體編碼是指把軟體設計轉換成計算機可以接受的程序,即寫成以某一程序設計語言表示的「源程序清單」。充分了解軟體開發語言、工具的特性和編程風格,有助於開發工具的選擇以及保證軟體產品的開發質量。
五、測試
軟體測試的目的是以較小的代價發現盡可能多的錯誤。要實現這個目標的關鍵在於設計一套出色的測試用例(測試數據與功能和預期的輸出結果組成了測試用例)。
六、維護
維護是指在已完成對軟體的研製(分析、設計、編碼和測試)工作並交付使用以後,對軟體產品所進行的一些軟體工程的活動。即根據軟體運行的情況,對軟體進行適當修改,以適應新的要求,以及糾正運行中發現的錯誤。編寫軟體問題報告、軟體修改報告。
軟體開發是根據用戶要求建造出軟體系統或者系統中的軟體部分的過程。軟體開發是一項包括需求捕捉、需求分析、設計、實現和測試的系統工程。軟體一般是用某種程序設計語言來實現的。通常採用軟體開發工具可以進行開發。
軟體分為系統軟體和應用軟體,並不只是包括可以在計算機上運行的程序,與這些程序相關的文件一般也被認為是軟體的一部分。