[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春季计算机学院软件工程(罗杰 任建) 这个作业的要求在哪里 第一次作 ...
随机推荐
- 20145226夏艺华 《Java程序设计》 课堂实践
手速慢了一秒,泪流成河...打水印的时间用太多了 /** * Created by XiaYihua on 2017/5/31. */ import java.io.*; public class F ...
- c++ 二叉树的遍历
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> ...
- 【转载】COM 组件设计与应用(十一)—— IDispatch 及双接口的调用
原文:http://vckbase.com/index.php/wv/1236.html 一.前言 前段时间,由于工作比较忙,没有能及时地写作.其间收到了很多网友的来信询问和鼓励,在此一并表示感谢.咳 ...
- Openstack入门篇(十六)之Cinder服务的部署与测试
1.理解块存储服务 操作系统获得存储空间的方式一般有两种: 通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区.格式化.创建文件系统:或者直接使用裸硬盘存储数据(数据库) 通 ...
- 第一章:什么是Linux
Linux可以分为四部分: Linux 内核:系统内存管理,软件程序管理,硬件设备管理和文件系统管理 GNU 工具:除了内核控制硬件系统,操作系统还需要一些工具执行标准功能,比如控制文件和程序.包括核 ...
- 洛咕 P2468 [SDOI2010]粟粟的书架
强行二合一啊... 前面直接二分最小值,二维前缀和.后面用主席树查最小值.注意要写\(nlogn\). // luogu-judger-enable-o2 #include<bits/stdc+ ...
- 【操作系统】C语言编写的FAT16文件系统
[操作系统]C语言编写的FAT16文件系统 这是操作系统的期末课程设计作业之一,主要功能是在物理内存中虚拟出一个1M大小的FAT16的文件系统,然后把它读入内存中,进行具体的文件操作,具体的实用性不大 ...
- Flutter - 创建侧滑菜单
侧滑菜单在安卓App里面非常常见,比如Gmail,Google Play,Twitter等.看下图 网上也有很多创建侧滑菜单的教程,我也来记录一下,自己学习创建Drawer的过程. 1. 创建一个空的 ...
- .NET:关于数据模型、领域模型和视图模型的一些思考
背景 数据模型.领域模型和视图模型是“模型”的三种角色,一些架构用一种类型表示这三种角色,如:传统三层架构.也有一些架构用两种类型表示这三种角色,如:结合ORM的领域驱动架构.非常少见的场景是用三种类 ...
- android 判断应用是否在前台显示
在一些场景下我们需要知道应用是否在前台显示,当不在前台显示的时候,一些后台进程可以暂时停止,比如一些查询任务.不必要的线程.不需要的渲染等,以减少对设备资源的占用.判断应用是否在前台通常可以使用一下方 ...