项目 内容
这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健)
这个作业的要求在哪里 个人博客作业
我在这个课程的目标是 进一步提高自己的编码能力,工程能力
这个作业在哪个具体方面帮助我实现目标 反思过去,展望未来
其他参考文献 《构建之法——现代软件工程》第二版

一、速读《构建之法》后的几个小问题

1.关于技能的反面

书中3.3节,作者提出了一个考察一个人是否精通魔方的方法:

a. 给面试者一个各面打乱颜色的魔方;

b. 要求他把六面还原;

c. 如果还原了,要求他把魔方恢复成我最初给他那个混乱的局面,必须一模一样。

我感觉对于还原成原混乱的局面的这个要求,如果不提前告诉被考察者这个要求,那么应该不会有人去留意这个问题,也就不会记得自己复原的具体过程。如果提前告诉被考察者这个要求,那么应该只要记忆好就可以做到。所以我觉得这个问题不应该作为考察一个人是否精通魔方的问题。那么作者用这个对这个例子的理解是什么呢?

2.关于创新

在16.1.2节中,作者给出了“创新者甚至恨创新”的支持例子,就是假设发明电报的人被发明电话的人上门推销,发明电报的人会感到不安,因为电话这个创新将会颠覆目前的电报产业,导致辛辛苦苦建立起来的电报公司失去市场。而在我看来恰恰相反,一个颠覆性的产品必将会带来很大的商业价值,只要抓住机会加以利用,就会取得成功。比如这个电报和电话的问题,发明电报的人看到商机后,完全可以投资帮助这个发明电话的人建立市场,电话市场发展起来后,也许电报会失去市场,但是他们两个人都会获得更大的收益,实现双赢。请问作者是否考虑到了这种情况呢?

3.关于用户需求

在8.3节中,作者提到了自己的体会:

微软公司有专门的部门,经常招募目标用户来做试验。这项活动有专门的研究人员和PM负责,作为开发人员,我也曾实地参观过用户使用新版本的Outlook (我们隐蔽在单向玻璃窗后面)。研究人员通常让被试者完成一-些任务, 例如,

在Excel中,你想互换一个表格中的行和列,你怎么做到的呢?

你想给不少客户都发送内容相似的贺年邮件,但是客户的名称和地址都各不相同,你怎么用Word/Outlook完成这个任务?

在Excel中,你在看一些大的表格的时候,要来回移动,但是这样表格的标题栏就看不到了,怎样锁定标题栏呢?

众所周知人们在刚接触一款强大的软件的时候,不免都会受到认知阻力的影响,而据我调查很多高级软件的设计厂商都没有配套的详细的教程,或者教程太过专业很难入手,用户在使用的时候只能自己去搜索相应的资料。众所周知产品是以用户为中心的,所以软件厂商是否应该把重心向编写教程方面侧重一下呢?

4.关于代码规范

作者在4.3节中提到:

函数最好有单一的出口,为了达到这一目的,可以使用goto。

但是现在网上普遍的一种理论是goto有害论。goto虽然用起来很自由,但是它会使程序逻辑非常复杂,不易阅读。而且使用goto使得分析和验证程序(尤其是涉及循环的程序)的正确性的任务非常困难。我也有相同的理解,所以我觉得我们在团队项目中,应该尽量少用goto语句,不知道作者对此看法如何?

5.关于用户体验

在第12章用户体验中,作者提到一个产品设计的细节——静音按钮要同时关闭闹钟铃声么?

  • 如果关掉了,那么就会造成习惯静音的用户接收不到闹铃的问题,遭到用户的抱怨;
  • 如果不关掉,就会出现书中说的纽约交响乐团的管弦乐演出被iPhone闹钟铃声打断的问题,后果也很严重。

事实上,在现在的大部分软件的功能中都会存在矛盾性的问题,一个功能既有好的方面也有不好的方面。那么,我们在设计产品时,面对复杂的用户需求,怎么做合理的取舍才能让软件被大多数人所接受呢?

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

软件:图基在1958年发表的论文《具体数学的教学》包含了在搜索中发现的最早的“ 软件 ” 一词的用法。在工程环境中,最早的“软件”一词的发表是在1953年8月,Richard R. Carhart在RAND Corporation的研究备忘录中发表的。

软件工程:1969年(阿波罗11号期间),由MIT Draper 实验室的数学与电脑科学先锋— Margaret Hamilton女士提出。下面是她的原话:

我一直以来坚信这项发明流着艺术与科学的血液,虽然当时很少人是这么想。因此,我致力于为软件以及那些发明者争取应有的正统性与尊重,所以我开始使用“软件工程”这样的字眼来将之与硬件还有其他工程学类做出区别。

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

林纳斯·本纳第克特·托瓦兹,生于芬兰赫尔辛基市,拥有美国国籍。他是Linux内核的最早作者,随后发起了这个开源项目,担任Linux内核的首要架构师与项目协调者,是当今世界最著名的电脑程序员、黑客之一。他还发起了Git这个开源项目,并为主要的开发者。

林纳斯在网上邮件列表中也以火暴的脾气著称。例如,有一次与人争论Git为何不使用C++开发时与对方用“放屁”(原文为“bullshit”)互骂。2012年6月14日,托瓦兹在出席芬兰的阿尔托大学所主办的一次活动时称Nvidia是他所接触过的“最烂的公司”( the worst company)和 “最麻烦的公司”(the worst trouble spot),因为Nvidia一直没有针对Linux平台发布任何官方的Optimus支持,随后托瓦兹当众对着镜头竖起了中指。

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

用户数量排名:参考wiki百科

1.Microsoft TFS的优缺点:

优点:是对敏捷,msf,cmmi等项目、过程管理、过程改善的支持。任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用。

缺点:能应用起来的团队、公司的数量极少,多数真正用起来,也就是源代码管理这部分,这也仅仅是占TFS极小部分功能。

2.GitHub的优缺点:

优点:GitHub提供Git存储库服务,基于web,允许你使用Git的源代码管理功能,或者其特性。GitHub提供Git存储库服务,基于web,允许你使用Git的源代码管理功能,或者其特性。

缺点:可能不是捕捉创意过程和记录创意点子的最佳工具。对于这种特殊功能模拟可以选择LayerVault 或其他相似工具。之前,我们已经强调过Github非常适用代码跟踪,但是却不是最好的设计跟踪工具。将图片内容转化为代码,或者将设计用于产品设置,看起来依旧不是那样顺利。

3.Trac的优缺点:

优点:非常灵活,可以随心所欲控制可以和SVN集成

缺点:功能不是很强大

4.Bugzilla的优缺点:

优点:免费,有中文版支持

缺点:快速搜索结果不准确。只能管理缺陷。

5.Apple XCode的优缺点:

优点:编译速度极快,每次操作都很快速和轻松。自动提供撤消、重做和保存功能,无需编写任何编码。

缺点:更新版本后,某个插件可能会失效。

五、调查完目前流行的源程序版本管理软件和项目管理软件后,请你选择其中至少2个软件来进行动手实践

1.Git

使用git进行版本管理可以说是十分方便的了,由于git没有GUI,所以如图配合iterm2进行使用,效果极佳。

2.Github

平时使用Github都是进行代码备份用的,以防电脑突然坏掉了,写了一半的代码就白写了。但同时Github也是一种记录,记录了一个程序员的成长,同时在Github中我们还可以阅读到很多高质量的开源代码,方便学习。

BUAA2020软工作业(二)——对软件工程的初步理解的更多相关文章

  1. BUAA2020软工作业——提问回顾与个人总结

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 提问回顾与个人总结 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方 ...

  2. BUAA2020软工作业(五)——软件案例分析

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 软件案例分析作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方面 ...

  3. BUAA2020软工作业(四)——结对项目

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 结对项目作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力,团队协作能力 这个作业在哪 ...

  4. BUAA2020软工作业(三)——个人项目

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人项目作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方面帮助 ...

  5. BUAA2020软工作业(一)——谈谈我和计算机的缘分

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 第一次作业-热身! 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方 ...

  6. BUAA2020软工团队beta得分总表

    BUAA2020软工团队beta得分总表 [TOC] 零.团队博客目录及beta阶段各部分博客地址 团队博客 计划与设计博客 测试报告博客 发布声明博客 事后分析博客 敏 杰 开 发♂ https:/ ...

  7. [软工作业]-软件案例分析-CSDN

    [软工作业]-软件案例分析-CSDN(app) 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业-软件案例分析 我在这个课程的目标是 ...

  8. 软工作业-----Alpha版本第一周小结

            软工作业-----Alpha版本第一周小结   Part1.第一周周计划记录 姓名 学号 周前计划安排 每周工作记录 自我打分 yrz(队长) 1417 1.进行任务分析 2.任务分配 ...

  9. 【软工作业&思考】关于软工的一些概念性理解暨第一次阅读作业

    概述 项目 内容 本次作业所属课程 2019BUAA软件工程 周二班 本次作业要求 第1次个人作业当然,比这个更重要百倍的还是实实在在的思考,这也是标题如此命名的原因 我在本课程的目标 在原有实践经验 ...

随机推荐

  1. 一篇文章搞懂Nginx

    Nginx 的产生 Nginx 同 Apache 一样都是一种 Web 服务器.基于 REST 架构风格,以统一资源描述符(Uniform Resources Identifier)URI 或者统一资 ...

  2. Vue状态管理Vuex简单使用

    状态管理保存在store\index.js中,简单说明如下 import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export def ...

  3. 硕盟SM-T54(TYPE C转HDMI+VGA+USB3.0+PD3.0)

    硕盟SM-T54是一款TYPE C转HDMI+VGA+USB3.0+PD3.0四口扩展坞,您可以将含有USB 3.1协议的电脑主机,通过此产品连接到具有HDMI或VGA的显示器.电视机或其他显示设备. ...

  4. 常见shell脚本测试题 if/case语句

    1.检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限2.提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果输入其它字符则提 ...

  5. jupyter notebook在代码块中多行注释方法

    Ctrl+\是pycharm等IDE内的使用方法,而不是jupyter中的,正确的方法如下: 按住alt后光标变为十字形,沿着行标向下拖,光标变得很长,这时 shift+3 即可注释多行 想要取消注释 ...

  6. 学习Tomcat(三)之容器连接器

    Tomcat最底层使用的是Java标准的SocketServer和Socket接受和处理请求,但是Socket接受到的数据是网络运输层的TCP或UDP协议的数据,需要转为Http或者其它应用层协议的数 ...

  7. CodeForce-807C Success Rate(二分数学)

    Success Rate CodeForces - 807C 给你4个数字 x y p q ,要求让你求最小的非负整数b,使得 (x+a)/(y+b)==p/q,同时a为一个整数且0<=a< ...

  8. 5.21学习总结——android开发实现用户头像的上传

    最近在做个人头像的上传,具体是能调用摄像头和从相册进行选择.本篇文章参考的我的同学的博客,大家有兴趣可以去原作者那里去看看: Hi(.・∀・)ノ (cnblogs.com) 1.使用glide进行图片 ...

  9. PHP的加密伪随机数生成器的使用

    今天我们来介绍的是 PHP 中的加密伪随机数生成器(CSPRNG 扩展).随机数的生成其实非常简单,使用 rand() 或者 mt_rand() 函数就可以了,但是我们今天说的这个则是使用了更复杂算法 ...

  10. python FastAPI 初接触

    先吹一波: 原来写接口可以这么简单!!! 简单到没朋友 . 中文官网:https://fastapi.tiangolo.com/zh/tutorial/header-params/ 且天然支持异步处理 ...