BUAA_2020_软件工程_个人博客作业

项目 内容
这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健)
这个作业的要求在哪里 个人博客作业
我在这个课程的目标是 了解软件工程的技术,掌握工程化开发的能力
这个作业在哪个具体方面帮助我实现目标 阅读教材,进一步了解软件工程

快速看完整部教材(教材还没买到的同学,可以先看邹欣老师的博客园讲义),列出你仍然不懂的5到10个问题。

问题1 GOTO的使用,似乎并不是一个特别值得推荐的方式,那么什么方法处理错误更好呢?

4.3.2 goto

函数最好有单一的出口,为了达到这一目的,可以使用goto。只要有助于程序逻辑的清晰体现,什么方法都可以使用,包括goto,如代码清单4-2所示。

HRESULT  HrDoSomething(int parameter)
{
    //parameter check and initialization
    //processing part1
    If (SomeCode() != ok)
    {
        //set HR value
        Goto Error; 
    }
    //processing part1
    If (SomeCode() != ok)
    {
        //set HR value
        Goto Error; 
    }
Error:
    //clean up
    return hr; 
}

对于只做一件事的函数来说,单纯的if else已经相当清楚了,复杂的用try catch来分别针对不同的情况应该更清楚吧。

问题2 关于结对编程的角色

  1. 驾驶员(Driver):控制键盘输入。
  2. 领航员(Navigator):起到领航、提醒的作用。

我觉得也不一定就是谁指导谁,谁监督谁,一定程度上可以独立地完成一些内容,当然互相复审还是应该不间断的。

问题3 关于敏捷开发

现有的做法 敏捷的做法
流程和工具 个人和交流
完备的文档 可用的软件
为合同谈判 与客户合作
执行原定计划 响应变化

6.1.1 敏捷开发原则

  1. 经常发布可用的软件,发布间隔可以从几周到几个月,能短则短

有很多敏捷应该对大多数用户屏蔽把,不应该是能短则短,教材的后面也举了例子微软的Insider版Windows也是层层推进,是滞后于Canary版本(开发者版本)数层版本的用户更多的版本,而更多人用的则是按季度发行的版本,敏捷也是具有不同的层面把。

问题4 关于大家都喜欢创新

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

谁不喜欢创新呢?然而细细想来,创新就是做和以前不一样的事,并不是所有的人都喜欢“不一样”。

不但大众不喜欢创新,甚至连创新者自己都不例外,有些创新者甚至恨创新。

现在在很多领域这种态度已经有所改变了,现在大众的科学素养也在提高,很多创新也不一定是挤占了既有的某项事物所满足的需求,也许还创造了新的需求,现在的新能源汽车,普通民众想必都是期待着环保的新能源汽车的发展的,这方面的创新大家都是很期待的,反应在很多方面,比如股市和国家政策,都说明大众寄希望于这方面的创新。

问题5 关于技术的创新

16.1.6 迷思之六:技术的创新是关键

我们在这里看到,除了技术的创新,还有很多方面的创新:

  • 商业模式的创新
  • 在网上交易图书和其他商品
  • 网络竞拍
  • 网络小额交易和支付
  • 用户体验的创新
  • www.hao123.com有什么技术上的创新么?
  • iPod在用户界面上的创新
  • 生态系统的创新
  • Apple的App Store实现了“便捷安全地从网上购买/安装/评价软件和服务”,这是一个很大的创新。
  • iPhone/iPod/iTunes客户端软件/iTunes网站在音乐购买/同步/播放整个流程中整合的创新。如果单独将Apple的产品与同类产品比较,各有千秋,但是把各个环节整合得如此流畅,打造成一个盈利的生态系统,Apple公司远远领先其他竞争者。

确实非技术的,商业的创新方式数不胜数,但是技术的创新是不可取代的,因为商业的创新可以轻易的被另一种商业的创新所取代,而技术往往具备长青的性质,这也说明了技术的创新确实是关键,上面一切商业的创新,都是建立在计算机、互联网这些技术创新的基础之上的,这何尝不能说明技术创新是关键。

问题6 关于软件工程师的职业道德

17.6 软件工程师的职业道德

原则3 产品

软件工程师应当确保自己的产品以及相关的修改满足最高的专业标准。

很多产品,往往它满足的不是专业标准,软件行业也没有相应的的专业标准,更多的情况软件的修改是面向需求,而不是专业标准。

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

  1. 软件

    维基百科上的解释:The first theory about software—prior to creation of computers as we know them today—was proposed by Alan Turing in his 1935 essay Computable numbers with an application to the Entscheidungsproblem (decision problem). 第一次关于“软件”的理论是在我们知道的计算机产生之前的,是在1935年图灵的一篇题目为“omputable numbers with an application to the Entscheidungsproblem (decision problem)”的论文中提出的。

    参考链接:https://en.wikipedia.org/wiki/Software#History

  2. 软件工程

    Margaret Hamilton在开发Apollo登月软件过程中提出的软件工程这一词汇。

    参考链接:http://linux.cn/article-4778-weibo.html

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

I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones...

——Linus Torvalds

参考链接:https://blog.adafruit.com/2019/08/25/im-doing-a-free-operating-system-just-a-hobby-happy-28th-birthday-linux-linux/

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

排名来自Wikipedia(按Alexa rank排名):

Name Users Projects Alexa rank (lower = more popular)
GitHub 31,000,000[52] 100,000,000[52] 65 as of 9 September 2019[53]
SourceForge 3,700,000[69] 500,000[69] 407 as of 9 September 2019[70]
Bitbucket 5,000,000[47] Unknown 989 as of 9 September 2019[48]
GitLab 100,000[54] 546,000[55][k] 2,146 as of 9 September 2019[56]
OSDN 54,826[62] 6,294[62] 8,529 as of 9 September 2019[63]
Launchpad 3,965,288[59] 40,881[60] 12,344 as of 9 September 2019[61]
Assembla Unknown 526,581+[45] 23,052 as of 9 September 2019[46]
Rosetta code Unknown Unknown 62,045 as of 9 September 2019[67]
Buddy Unknown Unknown 73,518 as of 9 September 2019[49]
GNU Savannah 93,346[57] 3,848[57] 100,244 as of 9 September 2019[58]
Gitea Unknown Unknown 209,697 as of 9 September 2019[51]
CloudForge Unknown Unknown 339,271 as of 9 September 2019[50]
OW2 Consortium Unknown Unknown 610,052 as of 9 September 2019[66]
Ourproject.org 6,353[64] 1,846[64] 1,191,954 as of 9 September 2019[65]
SEUL Unknown Unknown 1,268,571 as of 9 September 2019[68]

参考资料:

Comparison of version-control software

Comparison of source-code-hosting facilities

优缺点说明如下:

  • MicrosoftTFS

    • 优点:需求进度一览无余,集成项目管理、版本控制、bug跟踪,有效实现SCRUM,与VS无缝结合
    • 缺点:搭建、维护较为复杂,硬件要求也比较高。
  • GitHub:

    • 优点:GitHub提供Git存储库服务,基于web,允许你使用Git的源代码管理功能,或者其特性。GitHub提供Git存储库服务,基于web,允许你使用Git的源代码管理功能,或者其特性。
    • 缺点:可能不是捕捉创意过程和记录创意点子的最佳工具。对于这种特殊功能模拟可以选择LayerVault 或其他相似工具。之前,我们已经强调过Github非常适用代码跟踪,但是却不是最好的设计跟踪工具。将图片内容转化为代码,或者将设计用于产品设置,看起来依旧不是那样顺利。
  • Bugzilla:

    • 优点:免费,中文支持
    • 缺点:快速搜索结果不准确。只能管理缺陷。
  • Apple XCode:

    • 优点:自动创建分类图表;自动提供撤消、重做和保存功能,无需编写任何编码。
    • 缺点:更新版本后,某个插件可能会失效。
  • Trac:

    • 优点:可扩充性,权限体系完备,可以随心所欲控制可以和SVN集成.

    • 缺点:不支持多项目;未分离需求与缺陷;核心功能相当少。

  • Bitbucket:

    • 优点:对于小团队使用可以使用无限量的免费存储库,不限容量,但是限制 5 名成员。集成 Jira 工具,通过集成的错误跟踪组件,Jira 自动更新有关检测到的问题的信息。提交大文件速度很快。拥有灵活的权限管控,可自定义域名,支持 wiki 等。

    • 缺点:使用群体和代码量可能不如 GitHub,国内使用私有仓库的托管平台可能不及 GitLab。系统不够稳定。

  • Coding

    • 优点:保护分支,分屏对比,按行评论等高级功能。并且整合了 CodeInsight,质量管理,演示平台等等开发工具,提升研发效率。
    • 缺点:暂不支持导入外站的私有项目。

参考链接:

管理软件的优缺点

目前流行的源程序版本管理软件和项目管理软件都有哪些?各有什么优缺点?

版本管理软件实践

Git

Git 添加和删除分支

SVN

目录名math_expression.git是由于从github上clone下来的。

svn 创建分支

svn 删除分支

svn 删除分支结果

posted @ 2020-03-05 23:51  Mind_Edge  阅读(277)  评论(3编辑  收藏  举报