软工第1次个人作业

[2019BUAA软件工程]第1次个人作业

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

3.3.1职业发展:考级之路

在中国,软件工程师的考试有:计算机等级考试和全国计算机技术与软件专业技术资格考试
……
也有这样一些局限性:
以答题/评分为主要考试形式,没有面对面的考试

一个软件工程师,对于他的能力应该如何量化地评定?我认为这些所谓的考级并不能评定软件工程师的能力。现在网络上对于谭浩强的C语言教材可以说是颇多批判之声,更是有著名段子“i+++i+++++i”,来讽刺这一只弄书面知识不顾实际应用的编程考级。然而很多计算机二级的所谓培训却很推荐这一教材,说明了这些以答题为主的考试更偏向理论。那么在实际中,所谓考级是否是软件工程师的一条发展之路?考级好的人能否说明其工程能力强?如果不能,那么我们怎么说一个人是软件工程师中的“大牛”?

4.5.2为什么要结对编程

在结对编程模式下,一对程序员肩并肩、平等地、互补地进行开发工作。他们并排坐在一台电脑前,面对同一个显示器,使用同一个键盘,同一个鼠标一起工作。

这样的结对编程是否会有更优的编程形式?例如两个人先同时编写一个模块,然后相互复审、交流,然后进行下面模块的编写。这样可以提升编程的效率,同时结对编程交流、复审的优点并不会消失。
而以驾驶员/领航员形式的结对编程,固然能不断地处于“复审”的工程,但是是否存在驾驶员被领航员带偏了道路的可能?

6.敏捷流程

在现实生活中的软件开发过程,有哪些软件项目是根据敏捷流程开发的?具体说来,敏捷流程如今在软件工程开发中的地位是怎样的。
另外,传统的如计划驱动(plan-driven)的开发流程,形式化的开发方法(Formal Method)又有哪些软件项目?如果我们现在就业了,那么一般的开发流程会是敏捷流程吗?

9.6.2我是做PM的料么?在校学生如何为成为PM做准备?

你是否觉得你的长处并不在于写代码和debug,而是协调、沟通,让一个团队或组织有效运转起来……

就计算机系而言,目前的教育往往会专注于教你写代码和debug,那么有没有必要针对于一些表达能力强的人,教学如何协调、沟通,让一个团队或组织有效运转起来?就目前而言,这些能力又应该从哪里学到呢?

16.1.2 迷思之二:大家都喜欢创新

如果有人发明了一种在常温常压下能把石墨变成钻石的方法,可以廉价地生产大量的钻石,那么目前钻石产业链上的公司和从业人员,以及已经购买,储存了钻石的人们会有什么反应?他们会喜欢这个创新吗?

听说不久前真有关于制造钻石的研究成果出现。就我个人理解,如果这一方法真的发明,一定不会受到钻石产业链公司,钻石储存者的支持,因为这一创新阻挡了他们的利益来源。关于钻石早有阴谋论“钻石骗局”,论点是钻石储量其实很大,但是由钻石产业巨头隐藏下来,让钻石保持稀有才能让价值升值。这一阴谋论虽然不确定真伪,但是确实说明这些影响到部分人利益的创新可能会遭到阻挠。例如现如今的传统出租车司机很不欢迎共享单车、滴滴打车之类创新的出现。我的困惑是如果一个新的创新成果出现,却遭到了利益相关工作者的打压、阻挠,这种情况下创新能否成功,如果被阻挠了应该怎么办。

2.请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人?

John Tukey在1958年的论文"The Teaching of Concrete Mathematics"中,首次提到了software即“软件”一词。但在工程背景上,最早出现“软件”一词是在1953年8月由Richard R. Carhart在兰德公司提出。
维基百科——John Tukey
Margaret H. Hamilton在阿波罗计划期间,在麻省理工学院提出了Software engineering“软件工程”一词,以使软件具有硬件工程等其他领域的合法性。随着时间推移,软件工程一词才真正获得了与任何其他学科相同的尊重。
维基百科——Margaret Hamilton (scientist)

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

现如今软件工程已经是一个广受认可的领域,但是关于专业的软件工程师,全球各地的许可或者认证的法律要求并不相同。在英国使没有许可或法律要求承担或使用“软件工程师”职称。在加拿大的某些地区(如安大略省等)软件工程师可以拥有专业工程师(P.Eng)的指定。在欧洲,软件工程师可以获得“欧洲工程师”的职称。在美国的某些地方,如德克萨斯州,“工程师”一词的使用受法律管制,仅仅保留给拥有专业工程师执照(PE执照)的个人使用,不过这种强制许可的方式如今是饱受争议的。
有趣的是,自2013年以来,美国为软件工程提供了NCEES的专业工程师考试(PE考试),从而允许软件工程师获得许可和认可。但是自2013年最初提供考试以来, 进行了五次考试, 总人数为81名考生。而仅仅只有19名候选人登记参加2018年4月的考试。根据NCEES考试发展政策,考试政策和程序委员会(EPP)需要向NCEES董事会提出关于继续考试的可取性的建议。在2018年1月的会议上,EPP委员会审查了PE软件工程考试的历史。在考虑所有信息后,EPP委员会建议NCEES停止PE软件工程考试。在2018年2月的会议上,NCEES董事会接受了EPP委员会关于停止提供PE软件工程考试的建议。由于此考试每年仅提供一次,因此董事会指示NCEES在2019年4月考试后停止举办PE软件工程考试。也就是说在这篇博客发表的一个月后,NCEES将会举办最后一次PE软件工程考试。
维基百科——软件工程
NCEES discontinuing PE Software Engineering exam

4.上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?

请按照最近一两年使用人数的多少, 从多到少排序并说明各自有多少用户(估计),工具的优缺点(可以引用相关资料并注明来源)。

根据维基百科的数据,搜索到以下源代码托管程序的用户数:

维基百科——Comparison of source-code-hosting facilities

git:目前毫无疑问最受欢迎的源代码管理软件。
参考资料:维基百科——git 博客
优点: 适合分布式开发,强调个体
与现有系统和协议的兼容性强
能够高效处理大型项目
良好的分支机制,可以让主干代码保持干净
离线工作,管理代码成本低,不需要依赖服务器
缺点: 学习难度大
代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息

SVN:目标是成为广泛使用的并发版本系统(CVS)的最兼容的后继者
参考资料:维基百科——Apache Subversion 博客
优点: 代码的一致性高
采用集中式,易于管理,保证安全性
管理方便,逻辑明确,理念符合常规思维
适合人数不多的项目开发
缺点:必须连接在服务器上,否则基本不能工作、提交、对比、还原等
不适合开源开发

Microsoft TFS:应用软件生命周期管理(ALM)软件,涵盖整个应用程序生命周期
参考资料:维基百科——Team Foundation Server 张洪君的博客
优点:高度集成其他工具,主流的开发工具(如Visual Studio, Eclipse)和常见的办公工具(Excel,浏览器)
除了支持集中式代码库,还支持分布式代码库
缺点:搭建、维护比较复杂,硬件要求较高

Mercurial:轻量级分布式版本控制系统
优点: 高性能和可扩展性,分散化,完全分布式协作开发
对网络的依赖性更低,甚至可以离线进行管理,只需在有网络连接时同步

posted @ 2019-03-02 23:55  WA_ker  阅读(260)  评论(4编辑  收藏  举报