软件工程第一次阅读作业
软件工程 第一次阅读作业
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 软件工程 |
这个作业的要求在哪里 | 第一次阅读作业 |
我在这个课程的目标是 | 了解软件开发全过程,提高专业知识 |
这个作业在哪个具体方面帮助我实现了目标 | 对软件和软件工程的历史以及当下有了一些了解,粗略阅读教材 |
阅读构建之法
1.第三章:软件工程师的成长 * 技能的反面
年轻学生都志向远大,上了一些课,就很想解决高层次的问题。一些学生非常想做高层次的"科研",觉得"工程"是>基础,没意思。而且他们认为"我已经知道怎么做了"。从科研或者理论的高度上来说,所有的"技能"都能总结成简>单的"已经知道怎么做了"。例如......
书中说的"志向远大,觉得'工程'没意思",这句话让我想起了高中数学老师常常批评我们的话,"你们有些人啊,就是眼高手低,简单的题目都没得满分,天天盯着最难的题,结果难的题又不会"。现在想来,连简单的题都没得满分就相当于是基础都没完全掌握,认为自己"我已经知道怎么做了",却是半吊子的水平,然而却天天想着去啃高层次问题,又怎么可能把难题解决? 刚开始学习编程的时候,我也觉得"我已经知道怎么做了",然而事实却是并没有完全掌握。
2.第四章:两人合作 * 结对编程
在结对编程模式下,一对程序员肩并肩,平等地,互补地进行开发工作。他们并排坐在一台电脑前,面对同一显示器,》使用同一个键盘,同一个鼠标一起工作。他们一起分析,一起设计,一起写测试代码,一起编码,一起做单元测试,一起做集成测试,一起写文档,等等。
我觉得结对编程虽然注重的是两人之间协调,合作。但在构思以及写代码的时候应该保留各自的差异想法,到最后整合工作的时候再来磨合差异性,两人达成共识可能更好一点。因为如果按照书上的方式,每一行代码都要通过两个人同意,那么效率会比较低,而且两个人的想法无法做到完全一致,写代码的时候必定会由一个人主导,另一个人没法充分表达自己的想法。这样的结果不应该是结对编程模式希望达到的。
3.第十六章:IT行业的创新 * 迷思四 创新者都是一马当先
大部分成功的创新者都不是先行者,例如搜索引擎,Google是很晚才进入这个领域的。
或许有的领域,先行者创新出了一条路,但是先行者没有好好地走好这条路。原因可能是先行者缺乏长远计划,眼光不够。但也有不少先行者一马当先的,比如中国的即时通信行业的腾讯,作为中国的即时通信先行者,没有也不可能被中国后来的即时通信互联网公司取代。
4.第七章:实战中的软件工具 各司其职,对项目共同负责
团队中的每个角色都有自己的职责,如果出了问题,这个角色就要负责任
我觉得IT行业的职责有时很难明确,如果是某一模块内除了问题还好,直接找该模块的负责人。但也有时候是模块整合弄出的bug,这个时候很难说是谁的错,因为单独的模块是没有问题的。曾经看过一个视频,某一系统的漏洞就是由于各个单一模块整合弄出的。
5.第三章:软件工程师的发展
在中国,软件工程师的职业资格考试有: 计算机等级考试和全国计算机技术与软件专业技术资格考试
身边同学好像不太在意这两个执业资格考试,倒是ccf考试比较上心
"软件"和"软件工程"概念的提出
1."softwar”:1953年Richard R.Carhart在备忘录中使用software一词
2.软件工程 1968 年北大西洋公约组织在前联邦德国开会提出的 1968年秋季,NATO(北约)的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。在那次会议上第一次提出了软件工程(software engineering)这个概念。
软件工程发展的过程中有什么你觉得有趣的冷知识和故事
20150527ksh的作者有次参加USENIX Windows NT大会,微软在展示他们为NT系统准备的指令,其中一个微软的员工说微软将会发布一个NT的UNIX集成包,里面会包含Korn Shell(ksh)。但是,微软发布的并不是ksh,而是MKS,这是一个不兼容ksh88的shell,所以算不上真正的Korn Shell。所以ksh作者就用麦克风说微软发布的并不是ksh,但是微软的那名员工仍然坚持说自己公司发布的是“真正”的ksh。这样争执了几回,ksh的作者也就不说什么了。最后观众有人站起来告诉微软的员工,刚才和他们争论的人正是“Korn shell”的作者...ksh作者对这段经历的评价是:“I think that this is symbolic about the way the company works.”(我想这就是典型的微软吧)。
(作者:doacker 链接:https://www.zhihu.com/question/20034686/answer/14717434 来源:知乎)
目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?
1.软件使用量
1、github:31,000,000用户
2、SourceForge:3,700,000用户
3、Bitbucket:5,000,000用户
4、GitLab:100,000用户
2.各软件的优缺点
Ⅰ.git:
优点:1、适合分布式开发,强调个体;
2、公共的服务器压力和数量都不会太大;
3、速度快, 成熟的架构,开发灵活;
4、任意两个开发者之间可以很容易的解决冲突;
5、离线工作,管理代码成本低,不需要依赖服务器;
6、部署方便。基本上下个命令就可以用;
7、良好的分支机制,可以让主干代码保持干净。
缺点:1、资料少,学习成本比较大,学习周期比较长,要求人员素质比较高;
2、不符合常规思维;
3、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
Ⅱ.Microsoft TFS:
优点:
任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用,集成了项目管理、版本控制、BUG 跟踪,能有效实现 SCRUM,能与 VS 无缝接合。
缺点:搭建、维护tfs比较复杂,硬件要求也比较高。
Ⅲ.Trac:
优点:Trac做一个SCM配置管理平台,意味着它有良好的扩充性Trac的权限体系是比较完备的设计非常灵活,可以随心所欲的定制,可以和TortoiseSVN集成。
缺点:不支持多项目,需求和缺陷没有分离,用 wiki 来替代 Word 等工具编写文档对于产品策划来说门槛太高了,中文化不完整,美术人员接触起来困难重重,不显示中文名,本地化做得很差,核心功能很少,不安装插件基本上没法用。
Ⅳ.BUGZILLA:
优点:不收费,有中文版支持
缺点:只能管理缺陷