代码改变世界

软工第一次个人博客作业

2020-03-03 23:34  木杉月  阅读(249)  评论(6编辑  收藏  举报
Q A
这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健)
这个作业要求在哪里 第一次个人博客作业
我在这个课程的目标是 学习团队之间的合作,如何有条理的、高效的进行软件的开发
这个作业中在哪个具体方面帮我实现目标 加强我对软件工程的认识

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

  • 2.4.1下面练习可以用来锻炼学生的编程基本功

    ​ 1.全部用命令行工具和Notepad编辑器,不用Viusal Studio等集成编辑环境,每人手工创建并编译一个C的命令行程序:“Hello World”

    Q1:用一些集成编辑环境真的会基本功造成影响吗?

    现在,我周围的同学基本上都是用到Visual Studio或者是IDEA等软件来编写程序,而且这也的确是加快了我们编写程序代码的速度。而我们用这个对我们基本功造成了影响吗?我认为没有,而且如果要加强基本功,更应该是去动手做一些实际的项目,结合各种算法,知识来解决问题。就例如在大一的时候,我也是用的普通的DEVC++来编写程序。而当什么时候我才感觉自己代码能力有所提升呢,是我们课程大作业需要提交一个自己所写的程序,而我在成功写完那个高精度计算器时才发现自己和以往的我有很大不同,而这与我的编程环境关系却很小。

  • 4.5.4 如何结对编程

    3.驾驶员和领航员不断轮换角色,不要连续工作超过一小时,每工作一小时休息15分钟。领航员要控制时间。

    Q2:驾驶员和领航员要轮换吗?为什么不能连续工作一小时?

    就像现实生活中真正的情况下,赛车比赛的驾驶员和领航员都是各司其职,并没有不断轮换角色,因为如果固定的话,对于每个人来说这样就有更充足的时间进行学习自己职位上的东西。也能分工明确。而且相信每个计算机同学都感受到,当写程序进入状态,是真的不想停下来,所以我认为连续工作的时间应该是考虑自己自身情况具体进行确定。

  • 单元测试应该覆盖所有代码路径。

    做过实际项目的工程师都知道,程序里的很多语句是用来处理种种异常情况的,这些情况大多都不会发生。但是这些语句未被覆盖的话,这个模块的覆盖率就会下降,就达不到80%的目标,所以会花很多时间构造各种奇怪的测试数据。

    Q3:这是文中不同地方的观念,所以单元测试应该要覆盖所有代码路径吗?

    我认为不是的,就像上面第二段文字所说,很多语句是用来处理种种异常情况的,有些其实是并不用考虑的。我们更应该考虑对用户的影响如何,程序是否应该这样设计。而不是为了完成任务而完成任务。

  • 迷思之三:好的想法会赢

    Q4:难道好的想法不会赢吗?

    在文中,举出的例子是电脑键盘的布局,现在的QWERTY的键盘,只有10%的英语单词能在手指不离开键盘中列的情况下敲出来。但是如果使用Dvorak键盘布局,你可以在键盘中列打出60%的常用单词,这样会减轻手指和相关肌肉的负担,减少劳损,同时加快打字速度。这里就是好的想法没有赢的例子吗?我认为其实是这个想法并没有考虑周全罢了,因为他没有考虑现如今其实大部分人已经适应了QWERTY的键盘,如若更换,会有很多人不适应,甚至还是会选择之前的键盘。

  • 迷思之五:要成为领域的专家,才能创新

    Q5:只有对应该领域有着深入了解才能创新。

    尽管马云没有学计算机,但他创建的阿里巴巴却是B2B网站做的最好的,可是这是创新吗?真正的创新是马云手下那些技术人员,是计算机的真正人才。而马云是创建了一个公司,并给了这些人创新的条件。应该说不一定是要是这个领域的领军人物才能创新。当是一定要是专家,如果你不是专家,你对该领域甚至不够了解,那怎么能创新呢,更多的只是所谓的民科。

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

  • 软件:在工程环境中,最早已知的“软件”一词是1953年8月,Richard R.Carhart在RAND Corporation的研究备忘录中提出的。在2000年耶鲁大学法学院图书馆馆员弗雷德·夏皮罗发表了一封信,该信包含在搜索中发现的最早的“软件”一词。JSTOR的电子档案,比OED的引用早两年。所以大部分人相信是Tukey创造了这个词。
  • 软件工程:在早期的阿波罗任务中,汉密尔顿开始使用“软件工程”一词,在当时与其他工程相比,软件开发并未受到重视,也没有被视为科学。直到随着时间的流逝,“软件工程”一词获得了与其他任何技术学科相同的尊重。

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

应该是千年虫问题了吧。由于计算机程序设计的一些问题,使得计算机在处理2000年1月1日以后的日期和时间时,可能会出现不正确的操作,从而导致一些严重的后果。这是由于计算机程序中使用两个数字来表示年份,如1998年被表示为“98”,所以有些软件会把“00”误解为1900年。可能导致设备停止运转或者发生更加灾难性的后果。

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

  • Microsoft TFS:是微软开发的项目管理工具,是 Microsoft 应用程序生命周期管理 (ALM) 解决方案的核心协作平台。
    • 优点:任务版上将需求、项目进度一览无余,对于敏捷,msf等项目的支持。
    • 缺点:很少有团队能够完全利用所有功能,多数只用源代码管理这部分。
  • Git和GitHub: Git是一个源代码版本控制系统,一个可管理、追溯项目源码的工具。GitHub是一个提供Git 仓库托管服务的平台。
    • 优点:Git是分布式的,且分志是使用指针。复制分志较易。
    • 缺点:命令没有整体设计,重复功能过多,过多的功能集成到一个命令中。导致命令复杂。
  • Mercurial:跨平台的分布式版本控制法
    • 优点:简洁,高性能、可控制性、完全分布式合作开发
    • 缺点:分支管理不灵活。
  • Bitbucket:是Atlassian公司提供的一个基于web的版本库托管服务,支持Mercurial和Git版本控制系统。
    • 优点:提高免费账号且免费帐号可使用的私有版本库不限数量。
    • 缺点:口碑好但使用人数没有git高。
  • Trac:是Edgewall公司开发并维护的开放源码网页界面项目管理、缺陷追踪软件。
    • 优点:非常灵活,可以随心所欲控制并可以和SVN集成
    • 缺点:功能不是很强大
  • Bugzilla:是一款用于软件缺陷的追踪管理网络程序
    • 优点:免费,有中文版支持
    • 缺点:快速搜索结果不准确。只能管理缺陷。
  • Apple XCode:Xcode是苹果公司向开发人员提供的集成开发环境,用于开发macOS、iOS、WatchOS和tvOS的应用程序。
    • 优点:编译速度极快,每次操作都很快速和轻松。自动提供撤消、重做和保存功能,无需编写任何编码。
    • 缺点:更新版本后,某个插件可能会失效。

5.选择其中至少2个软件来进行动手实践

  • git:

    使用看法:用git的话,可以在网上找到许多开源项目,而且在和同学一起进行项目开发时可以一起进行版本管理,而且每次的提交记录都可以看到,但是其缺点在于,有些命令重复了,而且命令比较多,管理起来比较复杂,当然,若只是进行简单的版本管理,还是比较简单。

  • bitbucket:

    使用看法:这个软件也是今天刚刚下载进行使用,发现其和git很相似,但是却比git更简单的容易上手,许多命令都会给提示,对于一个新手来说,我目前认为这是一个很好的软件用来进行学习git。