项目 内容
这个作业属于哪个课程 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. iframe 内容适用高度

    HTML: <div class="content"> <iframe id="frameObj" src="链接" fr ...

  2. JVM-调优-命令

    目录 jps 命令格式 option参数 示例 jstat 命令格式 参数 option 参数总览 option 参数详解 -class -compiler -gc -gccapacity -gcut ...

  3. docker学习笔记(二)--配置镜像加速器

    前提:docker已经安装好 配置过程 进入至阿里云开发中心,https://dev.aliyun.com/,点击管理中心 管理中心中,点击左侧镜像加速器. 修改配置文件,使用加速器,根据我们目前Do ...

  4. Prometheus 2.21.0 新特性

    Prometheus 2.21.0 现在(2020.09.11)已经发布,在上个月的 2.20.0 之后又进行了很多的修复和改进. 这个版本使用了 Go 1.15 进行编译,不赞成在TLS证书验证中使 ...

  5. 【优化技术专题】「温故而知新」基于Quartz系列的任务调度框架的动态化任务实现分析

    不提XXLJOB或者其他的调度框架,就看我接触的第一个任务调度框架Quartz(温故而知新) Quartz的动态暂停 恢复 修改和删除任务 实现动态添加定时任务,先来看一下我们初步要实现的目标效果图, ...

  6. 微信小程序生成小程序某一个页面的小程序码

    1 登录微信小程序后台,mp.weixin.qq.com 2 点击右上角工具->生成小程序码 3 填写小程序名称或appid 4 关键一步,下面页面填写用户微信号后,打开小程序到某一个页面,点击 ...

  7. Jmeter系列(6)- 分析源码,创建登录、浏览商品接口请求

    前言简介 接口的压力测试有个二八原则:线上80%的用户量在一天24小时20%(即4.8个小时)的时间里可以平稳运行,这个接口就算是通过压力测试了 源码分析 登录 浏览商品 创建请求 登录 浏览菜单 C ...

  8. 博客主题——element v2

    主题预览 主题下载 gshang.element-v2.rar

  9. python学习笔记(七)-函数

    函数 方法 功能说白了,函数就是把一堆代码组合到一起,变成一个整体.函数不调用不会被执行.作用在于提高代码的复用性.定义函数 def greet_user(): """关 ...

  10. AT4518-[AGC032C]Three Circuits【欧拉回路】

    正题 题目链接:https://www.luogu.com.cn/problem/AT4518 题目大意 给出\(n\)个点\(m\)条边的一张简单无向联通图,求能否把它分成三个可重复点的环. \(1 ...