个人作业-Week1
一、快速看完整部教材,列出你不懂的5-10个问题,发布在你的个人博客上。
(1) 前言中说“尽管本书介绍了不少业界正在使用的理论和技术,不过,本书的目标并不是介绍所有的新思想和新技术”,有这个问题:技术一直在发展,每天都会涌现出许多软件工程方面的新知识,全部掌握难度太大,几乎不可能。如何让自己能够跟上软件工程发展,做一个永不落伍的开发者呢?网上有这些说法:软件开发者要想不落伍就得不断学习新的技术,也有人说软件开发者要花更多时间去掌握已经相当成熟的技术。但是我还是不太懂,我的困惑是如何抉择自己所需学习的知识呢?
(2) 1.1节说“一个软件或者服务要有人买,就得找到顾客,顾客有各种需求,有的靠谱,有的不靠谱;有些容易做到,有些难以做到”,有这个问题:用户总会对软件提出各种各样的需求,有的实现简单,有的难以实现或实现起来需要花费很长一段时间。如何正确地取舍用户提出的需求呢?网上有这些说法:许多用户一开始不能准确了解自己的真实需要。根据我的实践,有这一点体会:用户拜托你写一个软件,要真正满足用户的需求需要不断获得用户使用软件后的反馈。 但是我还是不太懂,我的困惑是用户提的需求难度太高,成本太大,自己并不想实现的话该怎么办呢?
(3) 1.1节说“软件在运行过程中还会出这样那样的问题,也许我们要时不时给软件打一个补丁,或者维护众多的服务器、团队的新老成员要一起工作,修复各种各样的问题”,有这个问题:软件开发通常需要一个团队共同编程,然而每个人的编程习惯不同。如何才能让团队成员的代码结合得更顺呢?网上说要统一编程的IDE,这样有利于加强团队凝聚力。但是我还是不太懂,我的困惑是统一IDE的话有可能会造成团队成员需要抛弃原来的习惯并花长时间来适应新的变成环境是不是会增加创建软件的负担呢?
(4) 1.2.3节说“计算机人工智能研究的一个重大里程碑,就是计算机程序能否在国际象棋这个游戏中打败人类”,有这个问题:人工智能飞速发展,到了以后会研发出智商远超人类的机器人,从而危及人类的生存,我们应该如何正确地对待人工智能呢?网上有这些说法:霍金语出惊人,预言人工智能科技如果不加控制地发展,将超越人类智能,并控制或灭绝人类。根据我的实践,发现电影中智能机器人追杀人类的画面数不胜数。 但是我还是不太懂,我的困惑是通过什么手段能让人类掌控人工智能的发展从而不被人工智能灭绝呢?
(5) 1.2.5节说 “有实际用处的同时又是完美的软件,在世界上是不存在的”,有这个问题:世上没有完美的软件,为了获得更多的效益,开发者可以通过花时间来完善一个软件,也可以选择开发一个新的软件。每个软件要开发到什么程度才能使自己单位时间内获益最大呢?网上有这些说法:开发一个软件就要开发到极致,这样才更有竞争力。但是我还是不太懂,我的困惑是一个软件的竞争力随时代的改变也是会改变的,多做几个软件,也许会有更多的出路不是吗?
(6) 3.2节说“21世纪以来,中国大陆每年招收六百万大学生,其中的百分之十是在学习各种IT相关的专业”,有这个问题:想从事软件开发的大学生是去企业实习成长更快还是在学校实验室实习成长更快呢?网上说企业实习有助于更快进入社会,而学校实习可以获得更多的知识。但是我还是不太懂,我的困惑是如何将自己学到的理论知识与实践结合得更好呢?
(7) 17.3节说“在软件工程这门课中,几个学生组成一个小组,干活多的人和干活少的人都得到一样的‘团队成绩’,这似乎不利于调动积极性”,有这个问题:项目经理如何调动团队的开发积极性,增强团队凝聚力,使团队创作出更好的软件呢?网上说项目经理要在团队里树立自己的权威,对团队成员要求严格。但是我还是不太懂,我的困惑是如果项目经理过于强调自己的权威会不会产生与团队成员的隔阂从而降低团队的开发积极性呢?
二、请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人?
“软件”是1953年8月Richard R. Carhart在一个工程文本中提出的。
“软件工程”在1968年首次提出,是阿波罗计划期间Margaret Hamilton在实验室发明创造出来的。
三、【附加题】:大家知道了软件和软件工程的起源,请问软件工程发展的过程中有什么你觉得有趣的冷知识和故事?
(摘自知乎) 曾经接了个项目,一个富二代要创业做个app,签完合同去他那之后,一屋MAC机成天拉着我们打LOL,LOL技术不好的干活,技术好的成天陪他玩,带他上分;后来项目流产了(因为实在不知道要做啥),他不仅全额打款,而且还多打了很多钱,并且临走还请我们喝了一顿,感慨创业艰难,回忆一起创业(打游戏)的时光,说着说着,喝大了还自己哭上了。最后我们看着这小子摇摇晃晃唱着刘欢大哥的从头再来一脑袋扎进路边的绿化带里面了。
四、上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点? (提示:搜索一下Microsoft TFS、Git、Mercurial、GitHub、Bitbucket、Trac、Bugzilla、Rationale,Apple XCode)?
名称 | 优点 | 缺点 |
---|---|---|
Microsoft TFS | 清楚显示项目进度、与VS无缝接合 | 用浏览器访问慢,XP系统无法访问 |
Git | 代码库占空间少,分支化管理 | 不支持中文,图形界面支持差 |
Mercurial | 扩展性强、支持revset | 分支管理不灵活 |
GitHub | 简洁实用、上手快、资源多 | 私有项目要收费 |
Bitbucket | 上传文件速度快、私人项目免费 | 不是开源的 |
Trac | 轻量级、扩展性强 | 不支持多项目、本地化差 |
Bugzilla | 定制功能强、安装简单 | 界面不佳 |
Rationale | 简洁、实用 | 知名度不高 |
Apple XCode | 协调性好、空间大 | 适用性小 |