BUAA2020软工作业(二)——对软件工程的初步理解
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | 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软工作业(二)——对软件工程的初步理解的更多相关文章
- BUAA2020软工作业——提问回顾与个人总结
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 提问回顾与个人总结 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方 ...
- BUAA2020软工作业(五)——软件案例分析
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 软件案例分析作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方面 ...
- BUAA2020软工作业(四)——结对项目
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 结对项目作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力,团队协作能力 这个作业在哪 ...
- BUAA2020软工作业(三)——个人项目
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人项目作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方面帮助 ...
- BUAA2020软工作业(一)——谈谈我和计算机的缘分
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 第一次作业-热身! 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方 ...
- BUAA2020软工团队beta得分总表
BUAA2020软工团队beta得分总表 [TOC] 零.团队博客目录及beta阶段各部分博客地址 团队博客 计划与设计博客 测试报告博客 发布声明博客 事后分析博客 敏 杰 开 发♂ https:/ ...
- [软工作业]-软件案例分析-CSDN
[软工作业]-软件案例分析-CSDN(app) 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业-软件案例分析 我在这个课程的目标是 ...
- 软工作业-----Alpha版本第一周小结
软工作业-----Alpha版本第一周小结 Part1.第一周周计划记录 姓名 学号 周前计划安排 每周工作记录 自我打分 yrz(队长) 1417 1.进行任务分析 2.任务分配 ...
- 【软工作业&思考】关于软工的一些概念性理解暨第一次阅读作业
概述 项目 内容 本次作业所属课程 2019BUAA软件工程 周二班 本次作业要求 第1次个人作业当然,比这个更重要百倍的还是实实在在的思考,这也是标题如此命名的原因 我在本课程的目标 在原有实践经验 ...
随机推荐
- Elasticsearch的基本使用
1. 概述 之前聊了一下 Elasticsearch 的安装,今天我们来说说 Elasticsearch 的基本使用. 2. Elasticsearch索引的使用 索引(index)相当于是mysql ...
- 每日学习——C++习题
1.题目要求:求圆的面积,数据成员为半径r,定义为私有成员,要求用成员函数实现在键盘上输入圆半径,计算圆面积.输出圆面积三个功能,要求三个成员函数在类内声明,在类外定义 //定义类 class Cir ...
- PHP的DBA扩展学习
今天我们讲的 DBA 并不是传统的数据库管理员那个 DBA ,而是一个 PHP 中的巴克利风格数据库的扩展.巴克利风格数据库其实就是我们常说的键值对形式的 K/V 数据库.就像我们平常用得非常多的 m ...
- switchery插件:多个按钮,用jquery进行切换
单个按钮可以参照这个链接https://blog.csdn.net/u012233776/article/details/53305846 多个按钮时, html中其中想操作这个按钮开启与关闭 < ...
- Jmeter系列(12)- 上传接口压测
step-1上传接口分析 上传接口源码分析:分析上传文件类型.有无大小限制.存放上传文件服务器 没有源码通过抓包工具,或者Chrome查看框架源代码 接口路径/uploadfile,接口请求POST, ...
- Jetpack Compose学习(5)——从登录页美化开始学习布局组件使用
原文:Jetpack Compose学习(5)--从登录页美化开始学习布局组件使用 | Stars-One的杂货小窝 本篇主要讲解常用的布局,会与原生Android的布局控件进行对比说明,请确保了解A ...
- javascript 中介者模式 mediator
* player.js /** * 中介者模式 * @param {*} name 角色名称 * @param {*} teamColor 队伍颜色 */ function Player(name, ...
- 朴素贝叶斯原理、实例与Python实现
初步理解一下:对于一组输入,根据这个输入,输出有多种可能性,需要计算每一种输出的可能性,以可能性最大的那个输出作为这个输入对应的输出. 那么,如何来解决这个问题呢? 贝叶斯给出了另一个思路.根据历史记 ...
- whistle浏览器抓包(以火狐浏览器为例)
环境:whistle:1.14.6 whistle浏览器抓包 以火狐浏览器为例 1.启动whistle 使用w2 start启动whistle. 退出cmd后,whistle自动关闭了,所以每次使用w ...
- 鸿蒙内核源码分析(进程管理篇) | 谁在管理内核资源 | 百篇博客分析OpenHarmonyOS | v2.07
百篇博客系列篇.本篇为: v02.xx 鸿蒙内核源码分析(进程管理篇) | 谁在管理内核资源 | 51.c.h .o 进程管理相关篇为: v02.xx 鸿蒙内核源码分析(进程管理篇) | 谁在管理内核 ...