軟件工程第一次作業
.設計一個支持自動生成四則運算的程序,并且包含實現真分數四則運算,我采用的程序設計語言是c++,以下是我的程序鏈接:
https://git.coding.net/mmxf/12345.git
選取三個軟件并分析各自特點:
一、游戲
游戲的開發初衷可能是為了單純的消遣娛樂,后來演變成今日這種與商業化緊緊連接的產物,它變得更像是一種“商品”,隨著人們對設備需求的不斷更新,到如今游戲中的主軍力量變成了移動游戲。下面這一組數據可以顯示當今游戲市場中移動游戲的重要地位。移動游戲,也就是手機游戲,典型如手機版本的夢幻西游、奇跡等。市場研究公司 App Annie 發布的一份最新數據報告顯示,2015年,移動游戲收入占移動應用市場總收入的 85%,達到 348 億美元。數據報告還顯示,2016年,移動游戲的收入將達到 415 億美元,2020年 將增至 746 億美元。
所以就游戲來說,通過熱度的帶動來促使我們在移動端上下載是我們獲取這類軟件的主要途徑。
從游戲的內部特性來說:
1.游戲是程序語言與動畫效果相結合的產品。在網絡上我們看到的一些大型游戲都是通過3DMAX、MAYA、FLASH等動畫軟件與JAVA、C++、VB、等程序語言相結合而開發出來的。
2.與用戶最直接相關的虛擬數值應該是游戲內部設計中最應該注重的部分。從用戶的體驗和需求出發,用戶當然希望在游戲中角色獲得的虛擬裝備或者增長值等的用戶精神利益不出意外,所以在游戲軟件設計過程中對于這些數值的處理就顯得的尤為重要。可能一點小小的數值累加差錯就會使用戶得到不完美的體驗。
3.需要詳盡的性能測試。
從游戲的外部特性來說:
1.首先,游戲軟件的擁有潛在的龐大用戶群。這一點主要是針對移動端游戲軟件來說的,移動設備的普及以及迅速發展,再加上人類對于娛樂的必要追求,游戲軟件擁有一個龐大的需求市場。
2.其次,針對移動端游戲軟件來說,它又具有便捷性和移動性。數據調查顯示,29.8%的用戶在用手機玩游戲以后,電腦玩游戲的時間減少,22.4%的用戶手機游戲時間越來越長,僅有10%的用戶時間變短,由此可見,移動端游戲已經成為一種普遍的娛樂方式。
3.支持網絡。現今的游戲大多支持網絡實現,又由于網絡為信息的載體,游戲也可以實現網絡在線的多用戶互動。
二、手機應用
當移動行業還未興起,APP的種類也并不是很多,最初的APP主要是和移動通訊相關聯,用途的方向也比較單一,獲取的主要方式也是手機自帶,人們獲取APP滿足自己的各種需求的意識也比較薄弱。隨著移動互聯網的迅速發展,APP的開發越來越多,也越來越寬泛。這種“寄居”在智能手機系統上的軟件,目的是為了完善手機系統中功能的不足。目前的手機系統以Google公司的Android系統和Apple公司的ios系統為主流。
手機APP不是制定好計劃,去編程就可以完美實現的,它的開發需要考慮多個方面。其中最重要的一點就是APP要適應手機系統。比如Apple公司的產品中,無論是iphone還是ipad,這些移動設備中的APP獲取都來自自家的Apple Store,而Apple Store中的APP絕大數都是不支持Android系統用戶的下載獲取的,只支持ios系統,而且各個APP支持的ios系統代級還不近相同,所以從這里可以看出APP的開發一定是基于一個特定的系統的。
我們可以在自己的移動設備上觀察到APP都有各自的大小。這些大小絕不會比移動設備的內存大,反而是遠遠小于移動設備的內存,這就決定了APP可以在移動設備上流暢運行。所以這樣就丟給開發者一個縮小程序大小的問題。
對于手機應用的測試,它的側重點可能與一般電腦軟件的測試不同。它主要考慮的是交互性方面的bug。比如一個手機通信APP,它一定是基于網絡應用的,那么當突然出現斷網的情況,那么我APP中通信的信息怎么辦?該存儲在哪里以便下次打開是還能返回上次用戶狀態?這些關于交互的問題,如果考慮不周,都會造成APP程序開發的bug。
三、操作系統
操作系統是管理和控制計算機硬件與軟件資源的計算機程序,是直接運行在“裸機”上的最基本的系統軟件,任何其他軟件都必須在操作系統的支持下才能運行。操作系統的種類相當多,各種設備安裝的操作系統可從簡單到復雜,可分為智能卡操作系統、實時操作系統、傳感器節點操作系統、嵌入式操作系統、個人計算機操作系統、多處理器操作系統、網絡操作系統和大型機操作系統。在服務器方面Linux、UNIX和WindowsServer占據了市場的大部分份額。在超級計算機方面,Linux取代Unix成為了第一大操作系統。在智能手機市場,以Android和ios為主。
其實在用過多年的計算機后我們就可以發現計算機的操作系統有如下特點:
1.并行。計算機可以同時處理兩個或多個作業,就像你在聽歌的同時瀏覽購物網頁一樣。這種在同一環境下,多道程序同時運行,這也是操作系統的一大特點。
2.共享。系統中的資源可供內存中多個并發執行的進程共同使用。由于資源的屬性不同,故多個進程對資源的共享方式也不同。
3.異步。在多道程序設計環境下,允許多個進程并發執行,由于資源等因素的限制,通常,進程的執行并非“一氣呵成”,而是以“走走停停”的方式運行。
對于《構建之法》一書提出的一些問題:
1.書上的86頁第四章提到了結對復審和團隊復審各自存在的問題,結對復審確實是會在軟件開發的過程中出現一些編程者的一方對另一方程序代碼的理解不能夠深入的問題,而團隊復審又會有時間、環境、心理等方面的各種沖突,那么我想知道的是,如果在實際軟件開發過程中,我們應該選擇哪一種復審方式才能使復審效率最大化?或者說采取什么樣的方式才能使復審效率最大化?在復審中其實影響效率的最大原因應該是復查者對編碼者代碼的理解不深入,但是復查者與編碼者又有必要剝離(為了避免書中提到過的編碼者對自己的代碼過于自信的問題),那么這種影響效率的原因是無法避免的嗎?
2.本書第七章的一整章都在主要論述微軟公司的軟件開發的思想和宣言,這一章中提到了MSF的思想基本框架還有過程模型、團隊模型等,實際上我們知道這些框架的誕生都是類似微軟這樣的極具社會實踐經驗的業界大牛公司的經驗得來的,那么對于剛剛接觸開發軟件的業界小白來說,這樣團隊的開發思想核心或者一些原則的制定是完全從新開始還是搜羅模板仿照?哪一種方式更有利于團隊的未來發展,更能為團隊開發鋪墊一條好路?
3.書上167頁第八章中介紹了9種用戶調研的方法。在最后提到了如果用戶調研“做過頭了會怎樣?”這一問題,作者給出了很好的事例和解釋,但是沒有提到一個恰到好處的用戶調研是怎樣的,所以針對軟件開發中的需求分析這一環節中恰當的用戶調研是如果進行的?并且我們獲得這些重要的信息后,應該如果去應用才可以起到最正確的輔助開發的作用,而不至于變成作者提到的“互聯網給我們帶來了用戶和數據,我們有這么多各式各樣的工具,這是好事,但也會有副作用。”?
4.書中第12章敘述的是用戶體驗方面。在實際生活中,我們手中拿到的軟件除了它的用途適合我們的需求外,對于軟件功能符號、界面等視覺上的合理舒適設計也有很大一部分影響。那么設計這些東西的設計者一定是開發人員嗎?如果不是的話,那么在開發過程中肯定會遇到一些帶功能圖標的加入,才能使程序完整實現的情況,那這種時候是程序開發者與設計圖標者一起進行軟件的開發嗎?那么兩者之間對這些功能圖標的設想是否一致呢?如果基本不會出差錯,那么這種圖標的設計能夠達到客戶的需求嗎?他們在這種問題上是如果處理和溝通的呢?
5.書中的第16章開頭部分講解了創行,還有“靈光閃現”,書中講的靈感都是從設計之初的大方向上來說的,如果將“靈光閃現”放到程序開發中,比如我在做一個字符串比較的程序,一開始用的是數組對比的方式,后來中途想到了是不是可以用棧來實現,于是我又重新開始實現我的“靈光閃現”,那如果在程序開發中出現這樣的情況了,我應該采取什么樣的做法才是正確的?推翻重來的代價實在是太大,如果在軟件開發中我原定的設計思路被新的靈感沖擊,而我的設計完成了將近一半,這樣的情況又該如何選擇和應對呢?
浙公網安備 33010602011771號