李昂 软件工程第一次作业

第1次个人作业

2.分析软件

第一部分 结缘计算机

1.计算机是你喜欢的领域吗?是你擅长的领域吗?

这两个问题,不得不说我的答案都是否。我很难喜欢计算机编程,更遑论软件硬件原理等等,感觉有些晦涩了,无法让我很有兴趣。如果不是现实的要求,不会计算机技术的工科生可能寸步难行,我可能不会主动接触计算机编程等等。博客I中提到从中学就开始喜欢计算机,我表示我就默默仰望一下吧。当然,没有兴趣,之前也没有花很多时间学,仅仅学了最基本的,当然不是擅长的了

2.你对计算机的热爱是怎样的?仅仅是口头的吗?

可能我在用Python做了一些基础的物理计算,发现比c语言好用时,确实感受到计算机编程语言的强大和有用。这就是发自内心的了,或者说不是热爱而是佩服。

 

第二部分 学习生活

1.你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?

博客M中又是一个怒秀操作的大佬,从中学喜欢编程,大学做了一大堆项目,成为技术牛,最后去了微软。我的本科学校很让人留恋,并不想吐槽它,跟本科学校相比,海工有缺点,例如各种杂事将人的时间占的满满当当。我理想的大学教育是能够让学生足够的自由,有自己的时间安排去完成自己需要学习的东西并用以科研或其他。

2.迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。

只在大学一年级c语言课上学过。总共代码数大概300行。最长的代码80行左右?一个涉及二维数组的题目。

3.速成的培训班和打基础的大学教育还有mooc之间有区别吗?

速成培训班,就是纯粹教技术。打基础的大学教育有利于给予一个好的思维导图和知识框架。博文C的作者不喜欢本专业但是在大一大二认真练习了很多计算机语言,虽然不是解释的系统教育,但是也因大学的时长较长而有了一个用长时间打磨基础,锻炼思维导图,知识框架的过程。mooc则相对自由,可以由本人根据自己的时间安排。如果能够长时间,高效地利用,也能够起到打好基础的效果。如果时间不够或效率低,可能就像速成培训班一样甚至还有所不如。

4.学线性代数和概率论的时候,你是否有过这样的疑问“我们为什么要学这么多数学,这和我们的专业有关系吗”,你现在是否还有这样的疑问?对这个问题,你有自己的解答了吗?那么其他学科呢?

有过。线性代数是我大一的课程,当时那个教授讲得非常偏向物理,在矩阵的概念还没有讲清楚时就开始讲量子力学中要用到的厄米矩阵和酉矩阵等。当时学得并不扎实,后来又自己看书予以补充学好。当时觉得用处不大,但作为一个物理系本科,工科研究生,我渐渐意识到线性代数初次接触时会觉得较抽象而不实用,但在较深层次的科学上,线性代数是非常方便的工具。而且细细体会,里面的内涵非常奇妙。数学的确很有用。我本科学的物理同理,在有了数学基础的前提下,物理能够学好,并且作为绝大多数工学的基础根基。

 第三部分 未来规划

1.你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?

我的梦想,不切实际一点的,就是每天没有什么事情做,可以自己呆在屋里看看自己喜欢的书,非常自由。切实一点的或者说为了生活不得不规划的,就是留在海工做一个老师,我更喜欢的是教学而不是科研——如果非要对比的话。

我的规划就是现阶段努力学习,搞好科研工作,考上并读完博士并争取留校。博客k中说职业规划就像软件工程,需要考虑很多,很系统,我完全赞成。然而规划得再好计划也赶不上变化,现阶段我想多了没用,做好自己的事情就行了。

2.你对于实现自己的梦想已经做了或者计划做什么样的准备?

在努力学习中。例如软件工程这门我完全不喜欢的课我也要尽量学一下,一是必须通过这门课,二是学习代码和软件,核科学里面也需要用到。

第四部分:课程期望

1.你对这门课的期望是什么?你打算平均每周拿出多少个小时用在这门课上?你愿意为了一个你感兴趣的项目、或得到实战锻炼而付出更多时间和精力(包括熬夜)吗?

这门课我只希望通过,然后学到东西——由于非计算机科班,我觉得达到通过这门课的程度,就肯定已经学会很多很多东西了。平均每周拿出多少个小时我说了不算,因为这门课的高要求已经决定了大概是10小时以上。我也没有办法,但我会尽力坦然接受。同样地,在这个完成课程要求的过程中我会学到一些东西,所以不希望再过多地付出额外时间。熬夜更是我希望尽力避免的,我重视早睡对身体健康的重要性。

 

3、分析软件

软件有很多种: ShrinkWrap(在包装盒子里面的软件)、Web APP ( 基于网页的软件)、Internal Software (企业或学校或某组织内部的软件)、Games(游戏)、Mobile Apps(手机应用)、Operating Systems(操作系统)、Tools(工具软件),选取三种软件,请分析它们各自的特点。

首先我选择游戏,手机应用,操作系统。

1.这些软件的开发者是怎么说服你(陌生人)成为他们的用户的?他们的目标都是盈利么?他们的目标都是赚取用户的现金么?还是别的?

游戏:以其可玩性吸引玩家。我的朋友们对此的好评也有吸引效果。目标盈利。最终赚取的应是现金。

手机应用:更多地是在社交软件上的推广。(包括社交软件本身)目标是盈利,最终也应该赚取现金。

操作系统:感觉这是一种非常垄断的系统,因为操作系统开发难度过高,能经得起考验的操作系统不过微软,苹果,linux寥寥几家。通常似乎都是直接绑定在售卖的电脑上的。目标是盈利,最终也应该赚取现金(我不明白是否还有不以盈利,赚取现金为最终目的的情况,吸引用户,提高人气,等等最终还不是归结于赚钱吗?)

2.你个人第一次用此类软件是什么时候,你当时多大,具体在什么学校读几年级,老师是谁,同桌叫啥?软件是如何到你手里的?例如:邮购,下载,互相拷贝,从应用商店购买,…….

游戏:2003年,家里刚买了电脑,邹城市兖矿第二小学读二年级。班主任是王志明老师,具体的同桌已没有印象。游戏通过爸爸(可能是网上下载后)教给我玩

手机应用:2014年,高考后(是的我高考后才拥有第一部智能机,之前我连非智能机都没有),邹城市第一中学高三毕业,班主任王鹏老师,同桌是孙志文。以手机QQ为例,从app store下载。

操作系统:2003年,前几项均同于“游戏”一栏,Windows系统在电脑上自带(当时应该是xp版本?印象不深了)

3.我们知道有些软件是收费的,有些是“免费” 的, 那么,软件公司为何会给你免费使用这个软件呢? 写这个软件的工程师们,他们的工资如果不从你(用户)这里来, 从哪里来呢? 目前你们当地的软件工程师的工资大约是多少,请给出尽量详细的分析,精确到年收入多少万元人民币。

操作系统,游戏,手机应用这些绝大多数免费。我一直的认知里只知道是它们可以放广告,广告费很高,尤其是用户量大的,流量就是钱。(这是一直想读广告研究生的女友——虽然现在是前女友了——告诉我的,否则我还傻乎乎的没有深刻的认识)然后为了完成这个作业,我又去百度了一下,发现有一些我不知道的:有增值服务(如微信公众号的审核需要钱);广告不是一定要在软件里直接让用户看到的,可以挂在不会直接看到的站点上;还有捆绑插件等等。

如前所述,软件工程师的工资就是这么来的,实际上应该是买断了软件的公司先以甲方身份付给他们开发费,之后如前所述地盈利。

我咨询了北京一位本科毕业工作,做前端开发的同学(计算机科班生),他给我的数据是他这个档次的新人25万人民币左右。更强的公司和更强的人,达到50万以上不是问题,如果出现大项目,获利当然更多(想起了王者荣耀开发团队年分红千万的事情)。

4.你是如何学会用这软件的?它给你什么好处,坏处? 这些软件是如何处理 bug 的?  如何更新新版本的?  你估计软件团队更新一个主要版本花了多少 人月? 请写上人月的定义. 如果你们宿舍(或者你和另外三四个同学)要做同样水平的软件,请估计你们需要多少时间?

游戏:自己试着摸索,不会了就百度教程;好处是给以我放松,给我与人交谈的话题;坏处是浪费时间,但我还不到上瘾的程度。处理bug和更新的过程不清楚。这肯定都是通过更改代码实现的,我们用户看不到。更新主要版本,说的比较模糊,不知道到底工作量多大,只参考下面对手机应用的分析吧。

操作系统:自行摸索,很多小功能要百度。好处是电脑运行不能离开它,它本身的坏处应该说不明显。处理bug,更新,同上。

手机应用:基本上打开应用都有贴心的操作指南,不怎么需要学。用用就会了。好处是源于它本身的功能,比如微信读书给我提供电子阅读的好平台;坏处是有时浪费了时间,使我不能集中精力(比如QQ微信),不能说使我不能集中精力就没有这个软件的锅,我小学没有手机的时候静坐6小时一直看书没问题的,悲伤。处理bug就不讲了,更新我只能看到appstore经常出新版本,加点新功能之类的。对于QQ加入一个小功能,比如有一个涂鸦的新功能(6月份出的吧)应该量不是很大,一个团队10人,大概用两周?也就是约5人月,人月的定义应该是人数*平均每人花的月数。如果我们寝室,目前我和另一个室友只会基本的c,另一个完全不会编程,假定他现在开始学吧,此时计时开始,估计要半年。18人月。(怎么感觉估低了)

5.同一类型的软件之间是如何竞争的?你现在还用它么,你为何选择这个产品,而不是它的竞争对手?

游戏,手机应用,都是通过它们本身不同的功能,界面等等进行竞争。操作系统的竞争感觉就是电脑公司的竞争,哪个电脑卖得多。

游戏我基本上10年连续玩一个游戏,因为我懒得换新的游戏,除非它的竞争对手在某些方面有绝对优势。手机应用同理,当然手机应用刚用了也就四年,不好说以后怎么样;选择手机应用就看是不是对我合适,如果是社交类就看大家用什么,人不能是一座孤岛。操作系统一直用win系,不想换。

6.5年后, 这种软件运行的硬件会有什么变化, 软件再过 5 年还会存在么,为什么?

 软件运行的硬件,我理解就是比如游戏,操作系统所在的电脑,手机应用所在的手机。5年后电脑和手机当然处理器,内存,硬盘容量都会大大提高,其他的是否有颠覆性的改变我想象不到。从08年到18年,电脑好像并无本质性改变,手机倒是从非智能机变成了智能机,也想不到怎么改了(看来我就是不能做这类创造性的工作哈哈哈)。这三种软件,过5年都应该存在啊,现在人们都已经离不开这些了啊。

7.列举你在使用上述软件的时候观察到的 “特殊”现象,它们和硬件有什么不同?  这些能说明软件的某些本质特性么?

“特殊”现象,我还真不知道什么是特殊的,会卡之类的算吗?还有在电脑上玩小游戏“金庸群侠传3”的各个版本,经常出现bug比如郭襄加入队伍就会黑屏,等等这些。以bug为例论述,软件是用代码写成的,会出现很多不同的功能,也有人们不希望的功能,这就是出bug的通俗解释。硬件是物理元件,没有这个。说到硬件我突然想到本科《微机原理》的依那老师——一位接触不多而且还不是我们学院的但却让我非常尊敬和感恩的老师——所说的:“硬件调试看天意,有的时候咳嗽一声或者调试前沐浴焚香一下,它自己就好了。我不做硬件,因为我不想靠着天意吃饭啊。”(后一句的原话可能有点偏差意思没错,以及想起本科唯一一次穿着学士服跟两个好友走在校园里四处乱拍的时候还能在湖边偶遇散步的依老师,何况好友之一就是当时一起菜鸡互帮去选微机原理课共度难关的朋友,可以说是十分感慨了,还是以前的时候好啊)。扯远了,能够说明软件的本质特性的就是它是由代码写成的,可以灵活修改,不断调试吧。

猜你喜欢

转载自www.cnblogs.com/liangruanjian/p/10173053.html
今日推荐