一、像阿超那樣,花二十分鐘寫一個能自動生成小學四則運算題目的「軟件」,和同窗們比較一下各自程序的功能、實現方法的異同等等。(蘇志華)php
詳見http://www.cnblogs.com/bywb/p/5859547.htmlhtml
二、選擇mobile app手機應用(唐家煒)python
(1)此類軟件是何時開始出現的, 這些軟件是怎麼說服你(陌生人)成爲他們的用戶的? 他們的目標都是盈利麼? 他們的目標都是賺取用戶的現金麼?仍是別的?linux
嚴格意義上我接觸的手機移動應用開始於塞班,興起於ios,成熟於安卓和ios。蘋果手機引領了潮流,你們就都紛紛開始用手機應用了。本質上他們都是盈利的,有直接從用戶手中賺錢的,也有經過廣告實現收益的。最高明的是經過用戶向第三方付款,經過資金沉澱實現盈利。ios
(2)你我的第一次用此類軟件是何時,你當時多大,具體在什麼學校讀幾年級,是什麼狀態,對軟件有什麼指望 軟件是如何到你手裏的,例如:郵購,下載,互相拷貝,從應用商店購買,等等。 (這個必須詳細寫,否則這道題目得0分,我要看看全世界的學生怎麼抄襲這一段的)。git
本人2012年參加高考。第一次用app是玩塞班自帶的爸媽手機上的遊戲,初中左右。到了高中有了一臺nokia手機,開始安裝一些基本應用,如上網瀏覽器,這是我真正使用手機應用。到了大學,我有了一臺iphone,纔開始普遍使用手機應用。一開始是玩遊戲,後來主要是用微信交流,用日曆去安排日程,用課程格子安排課程,用大衆點評去吃飯結帳。程序員
(3)咱們知道有些軟件是收費的,有些是「免費」 的, 那麼,寫這個軟件的工程師們,他們的工資大約是多少,請給出儘可能詳細的分析,精確到年收入多少萬元人民幣。 github
我歷來沒有到專業相關企業去過實習,我只能從本科畢業時工做的同窗瞭解一些狀況,在天津8k起步,在北京10k起步。我實在不瞭解企業的盈利狀況,沒法給出詳盡的分析。我曾經去聽過一些國內僅次於BAT的二線互聯網企業,他們也認可他們在燒錢,但他們堅信爲社會提供服務遲早會掙到錢。算法
(4)你是如何學會用這軟件的?它給你什麼好處,壞處? 這些軟件是如何處理 bug 的? 如何更新新版本的? 你估計軟件團隊更新一個主要版本花了多少 人月? 請寫上人月的定義. 數據庫
如今手機應用之間的人機交互相似,極易操做。好處是生活方便,壞處是我常常看到別人盯着手機,忽略了現實生活,成了「低頭族」。做爲用戶,我在手機上沒法debug,若是老是閃退出問題,也只好找替代軟件。如今的手機應用版本更新很快,一到兩個月必然更新,以一個團隊1k個成員,得1k我的月。人月是工做量的計量單位,是項目全部參與者工做時長的累計,是最爲方便計算成本的數據。是項目管理中經常使用的概念。
(5)同一類型的軟件之間是如何競爭的?你如今還用它麼,或者是同類軟件的不一樣品牌,爲什麼?
手機應用的競爭很激烈,但又很奇怪,如今陷入了合併風暴,大衆點評美團,優酷土豆,滴滴優步。競爭主要是經過燒錢打價格戰。在價格戰結束以後,我依然會使用使用,叫外賣確實比堂食更加方便,電子商務確實比溜商場更加快捷。
(6)5年後, 這種軟件運行的硬件會有什麼變化, 軟件再過 5 年還會存在麼,爲何?
喬布斯玩的是「道」,庫克勉強算是「術」,只能從配置上不斷提升,缺少創新。在可預見的未來,手機依舊會存在,手機應用做爲手機的強大支撐依舊會存在,五年是確定的。
(7)列舉你在使用上述軟件的時候觀察到的 「特殊」現象,它們和硬件有什麼不一樣? 這些能說明軟件的某些本質特性麼?
人表面上在觸摸手機,處理器是手機的大腦,而指導人腦工做的和指導處理器工做的原則就是軟件,總之是看不到的,但一定存在的。
三、上網調查一下目前流行的源程序版本管理軟件和項目管理軟件都有哪些, 各有什麼優缺點? (提示:搜索一下Microsoft TFS、GitHub、Trac、Bugzilla、Rationale,Apple XCode),請用一個實際的源代碼管理工具來創建源代碼倉庫,並簽入/簽出代碼。(唐家煒)
Microsoft TFS:
優勢:
1.任務版上能將需求、項目進度盡收眼底,對於小團隊而言,比甘特圖更有用
2.集成了項目管理、版本控制、BUG 跟蹤,能有效實現 SCRUM
3.能與 VS 無縫接合
缺點:
1.整個系統是用 asp 實現的,用瀏覽器訪問至關慢
2.從 IE 上訪問、填寫各類開發、測試記錄,也是很慢,感受不如 mantis BT 這樣基於 php 的那麼方便、迅速
3.XP系統沒法訪問,還要求64位的操做系統
github與SVN的優劣
1)適用對象不一樣。Git適用於參與開源項目的開發者。他們因爲水平高,更在意的是效率而不是易用性。Svn則不一樣,它適合普通的公司開發團隊。使用起來更加容易。
2)使用的場合不一樣。Git適用於經過Internet,有多個開發角色的單個項目開發, Svn 適合企業內部由項目經理統一協調的多個並行項目的開發。
3)權限管理策略不一樣。Git沒有嚴格的權限管理控制,只要有賬號,就能夠導出、導入代碼,甚至執行回退操做。Svn則有嚴格的權限管理,能夠按組、按我的進行鍼對某個子目錄的權限控制。區分讀、寫權限。更嚴格的,不支持回退操做。保證代碼永遠能夠追蹤。
4)分支(branch)的使用範圍不同。Git中,你只能針對整個倉庫做 branch, 並且一旦刪除,便沒法恢復。而svn中,branch能夠針對任何子目錄,它本質上是一個拷貝操做。因此,能夠創建很是多、層次性的 branch,而且,在不須要時將其刪除,而之後須要時只要checkout老的svn版本就能夠了。
5)基於第三點,Git適用於單純的軟件項目,典型的就是一些開源項目,好比Linux內核、busybox等。相反,Svn擅長多項目管理。好比,你能夠在一個svn倉庫中存放一個手機項目的bsp/設計文檔/文件系統/應用程序/自動化編譯腳本,或者在一個svn中存放5款手機項目的文件系統。git中必須創建n (項目數)* m(組件數)個倉庫。Svn中只須要最多n或者m個就能夠了。
參考:http://www.cnblogs.com/AyaBrea/p/5285574.html
四、「寫程序」 這個活動大多數狀況下是我的行爲。 咱們據說的優秀程序員彷佛都是單打獨鬥地完成任務。同窗們在大學裏也認識一些參加ACM 比賽的編程牛人, 他們寫的ACM 比賽的程序是軟件麼? 「寫程序」 和 」作軟件「 有區別麼? 請採訪這些學生。 (梁紹楠)
唐家煒同窗說:程序固然不是軟件,寫程序僅是軟件開發的一部分,作軟件涵蓋的東西要更 多,例如作軟件須要進行用戶的前期調研、需求分析、軟件開發、後期測試、上線運營等等 好多環節。
朱翔宇同窗說:我以爲「寫程序」和作軟件不是一回事,程序只是爲了實現軟件的功能和性 能要求而編寫的指令序列。而軟件是一個或多個程序編譯出來的成品,是程序、數據及其相關文檔的一個大的完整集合。
軟件工程是否是教那些不怎麼會寫程序的人開發軟件? 你怎麼看?
軟件工程是一門龐大的、覆蓋面廣的學科,涉及程序設計語言、數據庫、軟件開發工具、系統平臺、標準、設計模式等方面。包含軟件開發原理、過程、方法、管理,會寫程序僅是其中的一部分,而且在當下軟件應用與發展的背景下軟件工程的管理、行業運做規範等愈來愈重要。
5、你所在的學校有計算機科學專業和軟件工程專業麼?相關專業的教學計劃和畢業出路有什麼不一樣?閱讀有關軟件工程和計算機科學的區別的文章,談談你的見解。文章:http://www.drdobbs.com/architectureand-design/software-engineering-computer-science/217701907 (唐家煒)
天津大學有計算機科學與技術學院和軟件學院,二者關係很是密切,在學生看來,沒有什麼本質性的區別,由於學生關注於就業。在老師給的參考資料裏面,有一張圖片,區別了兩個專業。軟件工程強調軟件可用性、穩定性、可維護性、軟件成本等,軟件工程實際上是研究如何更好地完成工程的學科,還達不到科學的程度,由於它的研究對象就是工程。而計算機是不針對工程,更準確地說,不研究人,研究機器,研究計算的屬性,研究算法的複雜度。
簡而言之,軟件工程管理人的行爲,使項目可控,使成果按時在預算內達到要求,而計算機科學則是在算法上對項目實施改進。軟件工程更偏向於管理學,而計算機科學更依賴於數學。而在中國的實際來看,是相似的,由於畢業都會去到互聯網公司。
六、有學生提到,在大學選課的時候,能夠寫一個「刷課機」的程序,利用學校選課系統的弱點或漏洞,幫助某些人選到某些課程。或者幫助用戶刷購票網站,先買到火車票。這些軟件合法麼?符合道德規範麼?是在「軟件工程」的研究範圍麼? 請你們討論。 參考信息: 一般人們都在路邊招手叫出租車,只有不多的人打電話約車, 從2014年起,在不少叫車軟件出現後, 在路邊招手每每看到不少出租車不停車,它們已經被叫車軟件訂了。這個例子和上面的有不一樣麼?(劉祉成)
通過小組的討論,咱們一致認爲這類軟件雖然沒有違反法律,可是不符合道德規範。根據《構建之法》中第17章第6節軟件工程師的職業道德中所提到的《職業道德規範和實踐標準》的原則一:軟件工程師的行爲應與公衆利益一致。這些軟件的製做人違反了該原則,由於這些軟件因流通渠道不公開的緣由,必然沒法讓全部用戶得知並使用,所以製造了用戶之間的不公平,其行爲幫助了一部分用戶獲得了利益確實令一部分用戶的利益遭受損失,與公衆利益相左。
叫車軟件軟件的出現雖然使一些在路邊招手叫出租車的人叫不到車,可是這種軟件既是合法的,同時也符合道德規範。由於叫車軟件並無與公衆利益相左。軟件是在積極推廣的,用戶只要有手機,在有網絡的環境下就可使用。對用戶來講並沒用產生不公平。
七、有人認爲,"中文編程", 是解決中國程序員編程效率一個祕密武器,請問它是一個 "銀彈" 麼? (蘇志華)
中文編程並不單指程序是由漢字組成,更要在於其編譯技術得自身掌握,於是編程和編譯互爲統一發展、缺一不可。但漢語的博大精深,常常會出現歧義和地域性差別,致使漢語編程的統一風格很難實現。例如從 http://weibo.com/2210132365/BiYTws20這一連接的內容來看,雖然簡單實現了中文編程,可仍然是中英混雜在一塊兒,代碼的可讀性不強,而且在編寫的過程不停切換中英文則大大下降了效率和用戶體驗。http://www.chinesepython.org/ 該連接裏提出"中蟒"這一基於Python的中文編程語言,利用了Python編程格式的優勢,但並無實現其餘語言的漢化,於是表示不出C、Java、C#等編程語言的優點,另外其平臺的擴展性也不是很好,只在部分linux和windows上測試過,同時繁體字也未達到簡潔明瞭的初衷。正如http://baike.baidu.com/subview/545069/545069.htm所言,漢語編程須要具備易用性、安全性、本地化、國際化、跨平臺、融合性、先進性、天然醒、無代碼編程等特色,但就目前的編程環境來講,單單文件的中文名就可能會致使整個程序的崩潰,更別提龐大的漢語編程,而徹底利用中文編程來開發軟件、國際化和跨平臺的實現尤其困難。綜上所述,我的認爲"中文編程"還算不上是"銀彈",其應用場景的不普遍性和較差的用戶體驗、開發的難度等缺點,仍不足以在IT界颳起革命的風潮。
八、建立我的技術博客(建議是 cnblogs.com),列出問題並在每一個問題後面,請列出①哪一章節的什麼內容引發了你的提問, ② 你對此進行了什麼思考 (每一個問題至少寫100 字)?(梁紹楠)
詳見http://www.cnblogs.com/liangshaonan/p/5861571.html
九、快速看完整部教材,列出你不懂的 5 - 10 個問題,發佈在你的我的博客上。(蘇志華)
詳見http://www.cnblogs.com/xlwm/p/5850260.html
- 當時的項目有多少用戶,給用戶多少價值? 如今還有人用嗎?
- 這個項目可否給咱們團隊繼續開發,源代碼/文檔還有麼?
- 項目開發有什麼經驗和教訓
十一、請問 「軟件」 , 「軟件工程」,瀑布模型,Code Complete,Agile Methodology 這些詞彙是如何出現的 - 什麼時候、何地、何人提出。(劉祉成)
軟件:軟件(software)這一術語最先由理查德·卡哈特(ichard R. Carhart)在1953年8月的蘭德公司的研究備忘錄提出。
軟件工程:軟件工程(software engineering)這一術語是由瑪格麗特·漢密爾頓在阿波羅11號登月計劃時期在麻省理工儀器實驗室創造的。
瀑布模型:瀑布模型(Waterfall Model)這一術語是由溫斯頓·羅伊斯(Winston Royce)在1970年提出的。
《代碼大全》:《代碼大全》(Code Complete)是由Construx Software公司的首席軟件工程師Steve McConnell在1993年11月出版的。
敏捷方法:敏捷方法(Agile Methodology)是2001年2月由17位志願者在美國尤迪洲雪鳥度假勝地提出的。
十二、咱們不是在真空裏談軟件工程, 軟件要運行在硬件芯片上面, 淺談計算機芯片的發展歷史。(蘇志華)
正如軟件要運行在硬件芯片上面,一個好的軟件的必備性即是硬件的可兼容性。電腦芯片的誕生於發展則被譽爲20世紀最偉大的發明之一。而芯片技術決定了計算機升級換代的發展速度,每一代的芯片技術,都致使一代新型計算機的誕生。半導體技術自己就表明了科學的重大突破,世界上第一臺現代電子計算機ENIAC的"大腦"即是第一款電腦芯片。隨着時間的推移,微處理芯片推動着時代發展,Intel公司推出的400四、8080等芯片完全引起了電腦界的革命,電腦不再是當時人們所認知的"龐然大物",它們爲其走進千家萬戶創造了必要條件。而在1981年,IBM的我的電腦使用英特爾的8088微處理器,更是將兩家公司拔高到如日中天的地位。1993年,Intel Pentium處理器的問世,宣告我的電腦開始進入多媒體時代,進而推進了世界的互聯網發展和全球化趨勢。針對中國來講,我國雖然是世界第一製造業大國,世界第一貿易大國等,全球手機和電腦大多爲中國製造,但是每一年卻要進口超過2000億美圓的芯片,整個集成電路產業受制於歐美,中國芯片發展仍然有着不小的挑戰。但我國以自力更生,艱苦奮鬥的精神大力研發自主技術一直從事於芯片研究,2016年6月20日,新一期全球超級計算機500強榜單公佈,使用中國自主芯片製造的「神威·太湖之光」取代「天河二號」登上榜首,這無疑說明我國的芯片技術逐漸發展了起來。可身爲當代大學生,尤爲是軟件工程專業的學生,仍是要客觀全面認清我國與世界強國的硬件、軟件差距,不斷探究,才能爲將來作更好的規劃。
1三、咱們說「軟件企業 = 軟件 + 商業模式」。下面提到的一個遊戲團隊,有很好的軟件,可是商業模式和其餘軟件以外的因素呢?有沒有考慮到?http://news.cnblogs.com/n/528911/(劉祉成)
博客中提到的獨立遊戲團隊所創做的遊戲《Airscape - The Fall of Gravity》有着獨特的玩法,較高的媒體評分及玩家評價,其推廣過程也很用心,可是銷量卻很慘淡。「軟件企業 = 軟件 + 商業模式」貌似在這個案例上並不起做用,那麼是否是在這兩點之外還有其餘的因素呢?文中的做者給出了他的答案:「咱們作了一個沒有人願意買的遊戲。」並且在以後的文章中,他又強調了一點:「在我看來,想要成功就必須有如下三樣:一個優秀的遊戲、很是精彩的市場營銷策略,再加上很是不錯的運氣。」做者在軟件的質量、良好的營銷策略之上又提出了一個要素:運氣。在他看來,一個成功的遊戲須要一些運氣。而他的運氣差,因此他的遊戲即便質量優秀,推廣積極,但銷量仍是慘淡。我並不認同他的觀點,縱然運氣或多或少的影響成功的機率,但並非主要因素。通讀全文,做者在沒有進行需求分析的狀況下用了三年半製做了這款遊戲,他和他的團隊忽視了軟件工程中最開始的環節。我認爲這是他的遊戲銷量慘淡的緣由。
做者沒有事先進行市場調研,不知道用戶(玩家)喜歡什麼,對什麼類型的遊戲感興趣。所以遊戲發售後玩家不買帳也是理所固然的。這裏就不得不提到一位與本文做者徹底不一樣的製做人,三上真司。他是卡普空公司知名遊戲系列《生化危機》一到四部的製做人,他在製做《生化危機2》時將完成度很高的做品推到重來,製做《生化危機4》時更是屢次的推到重來,最終成品甚至開創了新的遊戲類型——越肩視角射擊遊戲。在其訪談中,被問及爲什麼推到重來時,他的回答是:這個遊戲根本很差玩,玩家不會買帳的。他清楚的知道他作出的產品沒有知足玩家的需求,所以他勇於推到重來,直到知足玩家們的需求。因此《生化危機2》和《生化危機4》會成爲叫好又叫座的遊戲。
遊戲是第九藝術,獨立遊戲更像是一個個匠人們創造的藝術品,可是當獨立製做人想經過遊戲牟利時,藝術品就變成了商品,創做過程也隨之變成了產品開發過程,那麼原來不拘一格的開發過程也要符合軟件工程。縱使一小部分幸運的團隊所開發的遊戲由於剛好知足了玩家的需求而大賣,但大多數獨立團隊的遊戲依然處於一種叫好不叫座的狀態。好的軟件和良好的推廣當然重要,但正確的分析用戶的需求才是最重要的。
請找一個同窗結對 (參看本書結對編程的內容),兩人共同工做 (不能分開幹活),從上面的列表中選取兩個平臺,在每一個平臺上,寫一個最簡單的 "Hello World" 類型的程序,把寫程序的經歷寫成博客發佈出來,內容包括:
- 什麼平臺, 用什麼編程語言,什麼軟件構建環境 (IDE),什麼軟件工程的工具,開發的流程大概是什麼,最後程序的源碼,和用戶界面是什麼?(能夠從網上查找相關資料,甚至源程序均可以參考其餘人的, 可是要本身把程序編譯,運行)(王喆)
詳見http://www.cnblogs.com/summer23/p/5861652.html
1五、這麼多做業,彷佛壓力很大啊! 請看TED 的演講, 談談你對壓力的見解,以及怎麼和別人合做, 幫助別人,把壓力轉化爲動力,在互相幫助的環境中成長。(梁紹楠)
TED的演講告訴咱們如何看待壓力相當重要,認得壓力每每來源於本身對壓力的見解,咱們應該嘗試將壓力轉化爲動力。正如演講中所說,大多數人不是由於壓力生病,而是由於壓力能讓人生病這個觀念而生病,可見,決定一我的成敗與否的因素,關鍵不在於壓力,而在於這我的對待壓力的態度。
在面對不一樣的工做任務時要選擇不一樣的方法,享受團隊合做時的和氣,幫助團隊成員在工做中釋放更多動力。例如在團隊任務中得到更多額外利益,會更加享受任務過程,同時變得更加專一,從而有更好的表現。人們在一個團隊中作事,會更加有動力,沒有同行競爭的壓力。