【软件工程】第1次个人作业

项目 内容
作业属于哪个课程 北航软件工程
作业要求 作业要求
课程目标 熟悉软件编写过程,锻炼编程能力
这个作业如何帮我实现目标 阅读基本构建的理念,加深理解

一、快速看完整部教材,列出你仍然不懂的5到10个问题。

1. 第三章 软件工程师的成长-软件工程师的职业发展

工程师应该在实际工作中不断学习和不断成长,根据自己的情况选择在哪个方面追求“专和精”,在哪几个方面达到“知道就好”的水平。

· 不断学习和不断成长显然是必要的,但是真的只需要根据自己的情况来决定吗?个人认为需要结合多方面来进行决定哪个方面需要追求到专和精,例如当今社会的热点,以及目前的发展情况等等。

2. 第三章 软件工程师的成长-软件工程师的职业发展

最好的编程语言是什么,这是一个意见,并不是事实,不要混淆。

· 最好的编程语言真的存在吗?作者在书中提到Google公司认为PHP不是最好的语言,因此有计算机的语言专家为此发明了新的语言Go语言。但是另一些专家觉得Go语言缺少一些必不可少的元素,达不到登堂入室的要求,所以对于软件工程来说,是否只存在最合适的语言,而不是最好的语言?

3. 第四章 两人合作-不间断的复审

结对编程中驾驶员和领航员的角色要经常互换,避免长时间紧张工作导致观察力和判断力下降。

· 这是最让我感到疑惑的问题,对于已分配好的工作,比如驾驶员和领航员,两人对于自己的分工已经有了独到的见解和进步,形成了属于自己的思维模式和解决问题的方式,那么互换角色真的能够做好对方的工作吗?在计算机领域难道不应该更难以互换?如何理解对方的代码和思路,这需要花大量的时间进行沟通交流,互换角色是否真的有必要?

4. 第四章 两人合作-代码设计规范

函数最好有单一的出口,为了达到这一目的,可以使用goto。

· 目前在学习历程中,所有编写的程序中,goto函数应该是没有使用过的,但是并没有影响程序的运行或者是效率降低的表现。goto函数和单一出口是否是必要的?有何突出的优点?

5. 第十一章 软件设计与实现-图形建模和分析方法

能够对一个问题建立模型的确非常好,但是我们不要忘记软件开发的目的是要通过写代码解决用户的问题。

· 作者在书中举例,说有公司对客户的问题建好了模型,但是不知道如何去实现。因此我们如何将一个优秀的模型,通过写代码的方式表现出来,解决用户的需求和问题。在我看来建模的难度和代码实现的难度都是很大的,如何将这两个工作很好地衔接起来呢?书中没有提到具体做法。

6. 第十六章 IT行业的创新

· 作者在书中提到了很多创新的例子。在现实生活中也有,例如风靡一时的诺基亚手机,就是因为没有创新的科技来吸引顾客,最后落到被收购的下场。但是对于目前我们所学的知识来说,几乎都是一些旧的基本知识,确实基本知识是十分重要的,基础能力也是逐渐培养的,但是并没有接触到一些前沿的创新理念,这是为什么?

二、“软件”和“软件工程”这些词汇是如何出现的?

· 软件一词最早出现在1953年Richard R.Carhart的研究备忘录中,也有人说是同年图灵提出的。但第一次作为术语出现在论文中是在1958年,John W. Tukey撰写科学文章时使用。
· 在1968年的德国的NATO会议上,提出了软件工程的概念。

三、大家知道了软件和软件工程的起源,请问软件工程发展的过程中有什么你觉得有趣的冷知识和故事?

大师级人物Martin Fowler在他谈论微服务的个人主页上提到,微服务并没有一个非常明确的定义。事实上有很多种分布式系统的实现都可以被看成(或者说勉强看成)是面向微服务架构的。

--来自于百度百科

由于此次bug太过严重,导致影响了用户的实际体验,我们在此次更新前已杀了一个程序员祭天。

--某app的更新日志

四、当前主要使用的源程序版本管理软件和项目管理软件的优缺点

git
优点:1. 开源、处理速度快、灵活性高
2. 离线工作,完成后将代码push到网页上
缺点:必须和特定的编译器相结合使用,例如dev 和code blocks好像就不能push到git上。
用户量:网上统计的数据预计在3000万左右,是最多的。
Mercurial
优点:兼容性好,扩展性强,有便捷的快速指令
缺点:功能单一,效率低
用户量:预计在50万以内
Trac
优点:系统完善性高,扩展性强
缺点:基本功能少,需要插件
用户量:预计在200万左右
Bugzilla
优点:具有强大的搜索功能
缺点:国内速度慢,上传文件步骤繁杂

posted @ 2019-03-05 00:27  aicoy  阅读(331)  评论(4编辑  收藏  举报