zoukankan      html  css  js  c++  java
  • 软件工程第1次个人作业

    项目 内容
    本次作业所属课程 2019BUAA软件工程
    本次作业要求 第1次个人作业
    我在本课程的目标 熟悉和实践软件工程流程,适应团队开发
    本次作业的帮助 帮助理解《构建之法》

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

    • 4.2.6 “命名”中提到了一些命名规则,对此我有一些疑问:

      “在变量名中不要提到类型或其他语法方面的描述,如arraylistOfHolidays写成holidays。”

      相信没有人会给一个类型完全没有歧义的变量起名为“int_index”,当我们试图在变量名中加入类型时,往往是有一定目的的。我在实现部分机器学习算法时,用到了很多诸如dataFrame、array、list、mat格式的变量,而当程序思路正确却无法运行时,最多的错误就是维度问题和类型问题,很多error发生在*和np.dot混淆、array和list混淆的情况下。印象中我在某个课上见过刘禹老师示范的C#代码,似乎也在容易混淆类型的变量名中加入了类型。因此我觉得,如果在变量名中加入类型对程序有帮助,也是值得推荐的代码风格。

    • 4.3.2 “goto”提到了:

      "只要有助于程序逻辑的清晰体现,什么方法都可以使用,包括goto。"

      我们在初学代码时,就被告知“避免一切goto”,其原因应该是防止初学者乱用goto降低了代码的可读性,也难以debug。事实上,goto在异常处理时很好用(如goto fail;),而且如果goto是前进式的结构,代码可读性也很强,这恐怕就是作者说的“有助于程序逻辑的清晰体现”了。但实际上,我认为在除此之外,能避免使用goto的地方,都应当用其他结构代替。我看到了这篇关于苹果公司漏洞的讨论,似乎性能上的优点也不能作为使用goto的借口。相反,过多的goto使用,让代码更加不易读懂,这样写出来的代码,就和IOCCC没什么区别了。’

    • 16.1.4 “迷信之四:创新者都是一马当先”中,举了iPod、Gmail的例子,来说明创新者不一定是第一个提出创新想法的人。然而,这些后来跟进的人能够打败其他人,想必也是有了一些其他竞品没有的体验或功能。是不是也可以说,这些帮助他们打败对手的特点,也是创新呢?所以创新者应当是在关键功能上第一个提出并实现创新想法的人,他们同样是一马当先,但不一定是开创了一个行业,或许只是开创了行业里最优质的服务和最吸引人的关键特点。

    • 17.1 “领导力”中,强调了团队领导的重要性。联想到即将开始的团队编程,领导该如何确定?很可能出现两种情况:一种是团队里有个大牛,由于他的技术最好,大家都听他的。另一种是大家互相讨论,少数服从多数,实际上没有一个真正的领导。实际上,由于大家都是技术人员,对项目方向上的把控水平可能都差不多,所以我认为没有领导的小团队,应该也是可以的吧?

    • 9.3 “PM做开发和测试之外的所有事情”,提到了PM需要的能力和职责。现实中,PM具体如何保证项目进度?如果遇到技术人员普遍落后进度,PM会怎么做?

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

    “软件”:1953年,Richard R.Carhart在兰德公司的备忘录中首次使用这个词。也有人认为,是John Tukey在一篇1958年的论文"The Teaching of Concrete Mathematics"中首次使用。

    “软件工程”Margaret H.Hamilton声称自己在阿波罗计划期间发明了软件工程一词。实际上,这个概念是在1968年由NATO(北约)科技委员会在前联邦德国的会议中提出,当时定义为“研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科”。

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

    git名字由来:git由linux的发明者Linus发明,这个词本身的意思是饭桶、烂人。在github上我们可以找到git的来源

    The name "git" was given by Linus Torvalds when he wrote the very first version. He described the tool as "the stupid content tracker" and the name as (depending on your mood):

    random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronunciation of "get" may or may not be relevant.

    stupid. contemptible and despicable. simple. Take your pick from the dictionary of slang.

    "global information tracker": you're in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room.

    "goddamn idiotic truckload of sh*t": when it breaks

    总而言之,没什么优美的解释。

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

    我并没有找到各个版本管理软件的具体使用人数,但根据这份2015年stack overflow的调查结果和近几年的趋势来看,榜单中github的使用率应当会更高。

    source control

    git

    • 可以服务器上克隆完整的Git仓库到本地。因为分支在本地,分支切换更快。

    • 各版本commit在本地,可以随时提交。易于代码的分支化管理。

    • 有优秀的开源社区github。

    • 分布式提交,可能出现冲突,需要先解决冲突再提交。

    • 使用难度大。

    SVN

    • 对中文支持好,操作简单。

    • 较好的权限管理功能,可以精确控制每个目录的权限。

    • 集中式,如果中心服务器出现问题,所有人都不能正常工作。

    • commit必须要求联网。

    TFS

    • 不仅支持集中式代码库,还支持分布式的源代码库。

    • 高度集成主流的开发工具和常见的办公工具。

    • 搭建、维护比较复杂,硬件要求较高。

    Mercurial

    • 采用了分布式系统,管理更加轻松。

    • 不需要定期维护资料库。

    • 在合并时只允许两层父阶层版本异动。

  • 相关阅读:
    数据库备份与还原
    启明星产品与微软Active Directory活动目录集成说明
    启明星请假系统里,计算工作日的实现
    启明星会议室预定系统Outlook版开始支持Exchange2013与Office365版
    Jquery Mobile实例--利用优酷JSON接口读取视频数据
    高性能且线程安全的两种格式化日期方式
    将数列唯一值化后再求中值的效率比较 第一方案胜出,加索引后在近两百万数据中查出中值耗时0.176秒
    Oracle WITH 语句 语法
    新三种求数列中值SQL之效率再比拼
    rank,dense_rank和row_number函数区别
  • 原文地址:https://www.cnblogs.com/bvb1909/p/10457115.html
Copyright © 2011-2022 走看看