[BUAA2017软工]个人作业week-1
一、快速看完整部教材,列出你仍然不懂的5到10个问题,发布在你的个人博客上。
1.在第二章个人技术和流程,邹欣老师提到了一张表格,主要解释了效能分析的一些名词,其中有这么几个概念:
调用者:函数Foo()中调用了Bar(),Foo()就是调用者
被调用函数: 见上,Bar()就是被调用函数
本函数时间: 所有在本函数花费的时间,不包括被调用者使用的时间
所有时间: 包括本函数和所有调用者使用的时间
“所有时间”这个概念里的“本函数”一词,指的是本函数时间呢还是就是指该函数所花费的时间?如果指本函数时间,那么“所有时间”里面就不会有被调用者的时间;如果指该函数所花费的时间,那么“所有时间”里面就会包括被调用者所花费的时间。
2.在第三章软件工程师的成长,有一个很重要的理念,“过早优化是一切罪恶的根源”。所有的提前(换成了“提前”一词,感觉“过早”本身含有贬义)优化都是不对的吗?优化不仅仅是对效率的提升,还有对于一个模块的简化。一段代码写得比较复杂,程序员将其进行了优化,优化后的代码变得更加简洁易懂;或者一段代码有一种情况没有考虑到,程序员进行了优化,代码的质量更高了。这样的优化为什么不值得提倡呢?
3.在第九章项目经理,我知道了一个优秀的项目经理需要许多“软实力”,比如沟通能力,对流程的把控,和不同角色的沟通与合作,但是这些能力是不会天生就具有的,需要后期不断的在实践中磨练。但是许多技术人员,比如开发人员、测试人员,他们每天与代码和程序打交道,很难获得锻炼这些能力的机会,那么是不是也就意味着技术人员想要成为一个优秀的项目经理相对团队的其他角色很难?如果很难,我们又希望项目经理也能够懂技术,那么这种人才是不是更加稀少?
4.在第九章项目经理,邹欣老师提到了“从乐观角度分析问题的时候需要创意,从悲观角度分析问题的时候更需要创意”。乐观角度按照我的理解时产品能够产生积极作用的一面,比如说产品怎样可以给用户带来更愉悦的体验,产品某个功能的效率怎样可以更快,或者产品的界面怎样设计更加美观。而悲观角度我理解的是消极的一面,比如产品会有怎样的bug,产品设计的哪一点会让用户感到不爽。那么,“从悲观角度分析问题更需要创意”是因为我们需要发挥更多的创意,尽量想到产品的缺陷以进一步提升软件的质量吗?去思考产品的缺陷比思考产品还能添加什么更好的功能更重要吗?如果是这样的话,我们不可能创造出一个完美无缺的软件,如果一味的去思考缺陷是不是违背了“足够好”的理念?
5.在第十一章软件设计与实现,邹欣老师提到了数据流示意图,以图的形式表示了一个软件系统中的数据流动。但其中并没有表示和时间相关的数据流,而这部分信息是很重要的(书中也有提到)。那么怎样表示时间的数据信息呢?还有就是在数据流示意图里,是不是还需要规定图中数据流的数据格式和其他一些数据本身信息?
6.(在和同学的讨论中产生了这样的问题)我是一个体育迷,在职业竞技体育里,比如篮球和足球,会有这样一种现象,就是两三个超级球星加入同一只球队时,大部分情况下,这支球队的战绩会很好。但也有不能忽视的一部分案例,会有球星1+1<2或者1+1+1<3的情况(比如2010年南非世界杯的阿根廷国家队和NBA2016-2017赛季的尼克斯)。那么在软件工程领域,在技术方面有人是技术大牛,有人只是初学者,对于一个团队来说,技术牛人越多,这个团队的工作就一定会越好吗?如果不是的话,那么一个团队除了要有技术牛人以外还要有什么类型的人呢?
二、请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人?
“软件”是1953年8月份Richard R. Carhart在一篇文档中提出的。
“软件工程”是1968年Margaret Hamilton在阿波罗计划期间提出的。
三、【附加题】:大家知道了软件和软件工程的起源,请问软件工程发展的过程中有什么你觉得有趣的冷知识和故事?
《构建之法》中有一个很有意思的故事,在论述建模和写代码解决实际问题二者的关系时,邹欣老师写到了软件工程方法论专家Hans-Peter Hoffmann的经历,“当时他接到了一个来自英国的求助电话。客户说,他们已经建好了模型,并且这个模型已经获得了整个流程中绝大部分人的共同认可,但他们费解的是,有了这个模型,他们下一步应该干些什么!”
还有一个故事是:1996年,三友开始与James Odell、Peter Coad、David Harel等来自其他公司的方法学家合作,吸纳了他们的成果精华。1997年9月,所有建议被合并成一套建议书提交给OMG。1997年11月,UML被 OMG全体成员一致通过,并采纳为标准。UML诞生时,Martin Fowler就作了如下预测:你应该使用UML吗?一个字:是!旧的面向对象符号正在快速地消逝。它们还会残留在UML稳固前出版的书上面,但新的书、文章等等将会全部以UML 作为符号。如果你正在使用旧的符号,你就应该在1998年间转换到UML。如果你正要开始使用建模符号,你就该直接学习UML。时间过去10年了,事实正是如此。以UML为契机,掀起了一股普及软件工程的热潮,比起UML出现之前,软件工程的书籍出现了爆炸性的增长。制定 UML标准的角色(OMG)、根据标准开发工具的角色(UML工具厂商)、使用UML工具开发软件的角色(开发人员)这三种角色的剥离,也导致建模工具数 量和种类出现了爆炸性的增长。
四、上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?
Microsoft TFS
优点:与visualStudio无缝对接;任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用;集成了项目管理、版本控制、BUG 跟踪,能有效实现 SCRUM
缺点:对硬件条件的要求很高
Git
优点:用户群广泛,普及度较高;免费,开源,分布式的版本管理系统;操作快速简便
缺点:缺少图形化界面,对初学者不够友好;各个版本之间的命令也有些许不兼容
Mercurial
优点:跨平台,可扩展性强;简洁优雅;服务器部署相对容易;命令行简单,容易上手
缺点:分支管理不灵活
GitHub
优点:开源项目有巨大优势;强调个人;每台同步的机器上都有所有的历史记录;功能设计简洁实用
缺点:不太适合一个团队的私有项目;国内访问速度慢;很难解决企业内部的需求;免费套餐不支持私有项目
Bitbucket
优点:支持私有免费项目,不限容量;提交大文件速度很快
缺点:域名长度较长,记忆起来略困难;界面语言只有英语
Trac
优点:有良好的扩充性;权限体系比较完备; 非常灵活,支持随心所欲的定制;可以和TortoiseSVN集成
缺点:不支持多项目;核心功能很少,不安装插件基本上没法用
Bugzilla
优点:免费;有中文支持
缺点:功能相对单一;
Apple XCode
优点:可以自动创建分类图表;自动提供撤消、重做和保存功能
缺点:更新版本可能会导致插件失效
参考资料:
http://blog.csdn.net/liuyi58/article/details/5389745
https://www.zhihu.com/question/21943395
http://blog.csdn.net/dengsilinming/article/details/7999188
https://www.zhihu.com/question/20401926
https://www.zhihu.com/question/21905835
https://www.zhihu.com/question/20053312
http://shawphy.com/2010/08/bitbucket-vs-github.html
http://www.cnblogs.com/yuyue1216/p/5281544.html
[BUAA2017软工]个人作业week-1的更多相关文章
- 软工团队作业--Scrum冲刺集合贴
软工团队作业--Scrum冲刺集合贴 团队 团队名称:广东靓仔六强选手 团队成员: 黄清山 黄梓浩 钟俊豪 周立 邓富荣 郑焕 博客链接 Scrum 冲刺 第一篇 Scrum 冲刺 第二篇 Scrum ...
- 2021软工-调研作业-Notion
2021软工-调研作业-Notion 项目 内容 这个作业属于哪个课程 2021春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 案例分析作业要求 我在这个课程的目标是 学习软件开发的工业化 ...
- 2020BUAA软工热身作业
2020BUAA软工热身作业 17373010 杜博玮 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 热身作业 我在这个课程的目标是 学习软件工 ...
- 软工个人作业4——Alpha阶段个人总结
一.个人总结 1.在alpha 结束之后, 每位同学写一篇个人博客, 总结自己的alpha 过程: 经过本次alpha阶段的冲刺,首先学到了很多,收获了很多,同时也蛮辛苦的.其实我觉得作为组员我有很认 ...
- [BUAA2017软工]第1次个人项目 数独
[BUAA软工]第1次作业 个人项目 数独 一.项目地址 github地址:https://github.com/BuaaAlen/sudoku 二.PSP表格 三.解题思路描述 在拿到这个题目时,我 ...
- 2020BUAA 软工-结对作业
结对作业 项目 内容 北航2020软工 班级博客 作业要求 具体要求 1.在文章开头给出教学班级和可克隆的 GitHub 项目地址(例子如下).(1') 教学班级 005 项目地址 GitHub 2. ...
- Fzu软工第一次作业-准备篇
(0)一些想说的话 我叫陈浩,是16级计算机一个很普通的学生.我是补选选软工实践这门课的.选软工实践这门课我想了很久.因为学长学姐告诉我这是一门很锻炼人又很辛苦的课程,需要大量的时间和精力.然而如今的 ...
- BUAA软工第一次作业-热身
第一次作业-热身 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) (北京航空航天大学 - 计算机学院) 这个作业的要求在哪里 第一次作业-热身作业(阅读) 我在这个课程 ...
- 停下来,回头看 ——记2020BUAA软工第一次作业-热身!
description: 'Mar 1st, 2020 - Mar 3rd, 2020' 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任建) 这个作业的要求在哪里 第一次作 ...
随机推荐
- python基础学习1-三元表达式和lambda表达式
#!/usr/bin/env python # -*- coding:utf-8 -*- 三元运算 if else 的简写 name ="alex" if 1==1 else &q ...
- Gitlab+Jenkins学习之路(四)之gitlab备份和恢复
gitlab的备份和恢复 (1)创建备份目录,并授权 [root@linux-node1 ~]# mkdir /data/backups/gitlab -p [root@linux-node1 ~]# ...
- [Luogu4182][USACO18JAN]Lifeguards P[单调队列]
题意 给定 \(n\) 个区间,必须去掉其中的 \(K\) 个,询问能够保留的区间并的最大值. \(n \leq 10^5\ ,K \leq 100\) . 分析 定义状态 \(f_{i,j}\) 表 ...
- Distributed2:SQL Server 创建分布式数据库
分布式数据库的优势是将IO分散在不同的Physical Disk上,每次查询都由多台Server的CPU,I/O共同负载,通过各节点并行处理数据来提高性能,劣势是消耗大量的网络带宽资源,管理难度大.在 ...
- mongodb原生node驱动
写在前面 最近读<node.js学习指南>,对于mongodb没有介绍太多的工作原理,但是对于一个前端开发者,即使你还没有用过这种数据库也可以让你很好的理解和使用 一本非常好的 ...
- 【译】2017年要学习的三个CSS新特性
这是翻译的一篇文章,原文是:3 New CSS Features to Learn in 2017,翻译的不是很好,如有疑问欢迎指出. 新的一年,我们有一系列新的东西要学习.尽管CSS有很多新的特性, ...
- 【转】Linux系统下的ssh使用
Linux系统下的ssh使用(依据个人经验总结) 对于linux运维工作者而言,使用ssh远程远程服务器是再熟悉不过的了!对于ssh的一些严格设置也关系到服务器的安全维护,今天在此,就本人工作中使 ...
- LintCode——颜色分类
颜色分类:给定一个包含红,白,蓝且长度为 n 的数组,将数组元素进行分类使相同颜色的元素相邻,并按照红.白.蓝的顺序进行排序. 我们可以使用整数 0,1 和 2 分别代表红,白,蓝. 注意事项: 不能 ...
- React Native移动开发实战-3-实现页面间的数据传递
React Native使用props来实现页面间数据传递和通信.在React Native中,有两种方式可以存储和传递数据:props(属性)以及state(状态),其中: props通常是在父组件 ...
- zookeeper_节点数据版本号问题
转自:Simba_cheng 更新节点数据的方法: 同步方法:Stat setData(final String path, byte data[], int version) 异步方法:void s ...