【BUAA软件工程】第一次阅读做业

BUAA软件工程 第一次阅读做业

项目 内容
这个做业属于哪一个课程? 北航软工
这个做业的要求在哪里? 第一次我的做业
我在这个课程的目标是? 学习高效严谨的软件工程开发过程,创建团队意识
这个做业在哪一个具体方面帮助我实现目标 熟悉并了解软件工程的基本知识,创建兴趣

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

1.软件开发中的风险控制?

现代软件开发中不免要用到一些第三方开发的开源库,好比python,js等语言,这些库为咱们的开发带来便利的同时,也为咱们带来了安全隐患,由于这些库的质量是咱们没法保证的。好比18年圣诞节发生的阿里的开源UI框架Ant Design中的彩蛋事件。那么,在成熟的商业公司的开发中,是怎样看待和使用这些第三方库的?python

2.单元测试的随机性,复杂性,如何创建合适的断言

测试已是软件开发中必不可少的一个步骤,咱们确实是有必要对程序进行全面严谨的单元测试。可是以咱们本次的结对开发任务为例,咱们提供一个找到最长单词链的接口。测试的时候,难道咱们就只测试返回的长度而不去考虑整个链的组成么?尤为是咱们将测试集的单词量级定为10000时,如何构造一个合适的数据集?人工构造耗时耗力。git

3.代码的命名规范

书中好像对代码的简洁性要求比较高,例如它给出这样的例子,”表示整年假日的列表“不用写arraylistOfHolidays,能够直接写做holidays,我感受这个与个人开发经验是不符的,按照个人写法,应该会被命名为holidaysList,这样能够看出变量的数据类型。数据库

4.代码的验收测试

越长的代码越不可能没有bug,咱们平时几百行的程序固然能够作到完成全部测试并改正找到的bug,像一些商业软件最后的验收会不会有妥协。是必定要作到测试中的零bug,仍是对bug分类,不影响核心功能的bug若是工期紧或者代价大就不改了?编程

5.需求引导与变动

我以前用的一款手机APP忽然从左右滑动翻页,换到了上下滑动自动加载。我不太习惯,用户社区里也有不少反对的声音。可是几个更新版本下来,APP并无回滚的意思。咱们在开发中遇到这种事应该怎么决定,好比处于技术或者美观的考虑须要改正用户的习惯操做时,咱们应该怎么抉择?安全

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

软件(英语:software):第一个关于软件的理论是艾伦图灵在1935年发表的论文《On Computable Numbers, with an Application to the Entscheidungsproblem》。可是软件software一词是在1953年,Richard R.Carhart在公司的备忘录中首次提出并使用这个词.服务器

软件工程是1968年,NATO(北约)的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。会议上提出了软件工程software engineer一词。根据后来的报导,应该是女科学家Margaret Hamilton在会议上提出了该词。网络

你们知道了软件和软件工程的起源,请问软件工程发展的过程当中有什么你以为有趣的冷知识和故事?

我在知乎上看到过这样一个笑话,算是跟软件有关吧框架

当年麻省理工的一名系统管理员,突然收到统计系主任打来的求助电话“我们的邮件发不了500英里之外的地方,其实,是520英里更准确点”。
系统管理员内心¥!&……*&。
不过在他开始用本身的邮件测试后,发现邮件的确只能发往520英里之内,其他的收件地点一概失败。分布式

因而在他一片纠结中他渐渐开始发现问题,邮件服务器被人更新过操做系统(当年仍是SunOS),可是因为操做系统的发行版每每配备了旧版软件,因而在更新操做系统的时候邮件软件反而被降级了(Sendmail 8 -> Sendmail 5)。
因而进一步调查发现,在更新操做系统时,管理员本身编写的Sendmail配置文件(sendmail.cf)被保留了下来。这样就出现了这种情况:Sendmail 5尝试解析Sendmail 8的配置文件。svn

可是为何会是500miles呢?为何是500miles咧?

缘由是这样的,Sendmail 5面对陌生的配置文件,凡是不理解的部分都会忽略,凡是没设置过的配置项自动设置成0。这样其中有一个被设置成0,这一项就是 (链接远端SMTP服务器的超时时间)timeout to connect to the remote SMTP server。后来通过实验,发现0秒的timeout会致使Sendmail在3毫秒后中断链接。

因此,为啥是500miles?
在当年,MIT的校园网是没有那么多router的,也就没那么多网络延迟,因此链接一个远端主机的时间大概就是光所需的时间。因而3毫秒, 就意味着:

0.003 * 3 * 10 ^ 8 * 0.001 * 0.621 = 558.9000000000001

558英里。也就是558英里之外的服务器,都没法链接到,而558英里之内的服务器,均可以正常通讯。

当当当,这就是500英里的bug啦。

来源:有哪些让你目瞪口呆的 bug?

上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?请按照最近一两年使用人数的多少, 从多到少排序并说明各自有多少用户(估计),工具的优缺点(能够引用相关资料并注明来源)。

在stackoverflow18年作的一次开发者调查中,有必定用户数量的版本管理软件有Git,Subversion,Team Foundation Version Control,Mercurial等等(除了单纯的复制,备份),他们具体的排名是这样的:

在全体开发者的范围内排名:

在专业开发这的范围内排名:

其实这些软件中,我实际用过的也只有git,因此只好结合它们各自的百科和博客纸上谈兵一番。

git

  • 优势

    • 适合分布式开发,强调个体。

    • 公共服务器压力和数据量都不会太大。
    • 速度快、灵活。
    • 任意两个开发者之间能够很容易的解决冲突。
    • 离线工做。

  • 缺点
    • 学习周期相对而言比较长。
    • 不符合常规思惟。
    • 代码保密性差,一旦开发者把整个库克隆下来就能够彻底公开全部代码和版本信息。

Subversion(SVN)

  • 优势

    • 采用集中式,易于管理,保证安全性;

    • 管理方便,逻辑明确,理念符合常规思惟;
    • 代码的一致性高;
    • 适合人数很少的项目开发;
    • 容许一个文件有任意多的可命名属性,会关注全部的文件类型;
    • 支持二进制文件,更容易处理大文件;
    • 支持空目录。

  • 缺点
    • 服务器压力太大,数据库容量暴增;
    • 必须链接在服务器上,不然基本不能工做、提交、对比、还原等;
    • 不适合开源开发

Team Foundation Version Control

  • 优势
    • 可视化作的很好
  • 缺点
    • 中文资料太少
    • 须要借助微软的开发平台

Mercurial

  • 优势
    • 轻量,易用性强
  • 缺点
    • 中文博客和资料比较少
相关文章
相关标签/搜索