【软工】第1次个人作业
一、不懂的问题
- 关于注释以及命名的问题,在4.2.9节中讲到“不要写多余的注释”以及“不要解释程序是怎么工作的”,我的问题是注释在项目中到底起到什么作用?如果我们在变量以及方法命名上下足功夫,那解释方法工作的注释是不是就可以省略?在编译课上老师提到了“零注释编程”这样的一个概念,意思就是在命名变量或者函数时,起的名字要带有功能或者意义。我回来查阅了一些文章,发现这方面的内容不多,但国内应该还是有的,比如这篇博文,当然博文的观点太过绝对我不完全赞同,但是我还是觉得如果变量以及函数有好的命名,是可以省略部分注释的,这样也可以避免注释更新滞后的问题。我在这次的项目中试验了一下,感觉还可以,也可能是因为项目太小没感觉出来问题。。。
- 在13.3中,讲到“测试人员早期就应该积极介入,并制定测试计划以及总纲”,我的问题是既然测试是基于代码方面的,那怎么在设计时就定好需要的测试计划?是要看开发人员的设计文档吗?开发人员在开发过程中有时候应该会因为某些问题而更改设计文档,这就可能导致一部分测试计划失效,应该选取怎样的时间进行测试设计使效率尽可能地高?我查阅到这篇文章,提到对测试产品分解成可独立测试的单元,看起来测试计划的制定是在开发初步结束后,那在开发人员开发的时候测试人员应该进行哪些工作呢?
- 在今天这个时代,很多代码都可以由机器生成,目前来看,软件从业人员对于机器的优势我认为在于人员之间的合作沟通,以及软件工程的工作流程,但是比如测试,我觉得应该也可以交给机器来实现,那测试人员与机器来讲优势在什么地方。
- 在第二章中讲到软件设计,我的问题是设计文档究竟要写到什么程度?设计文档一旦确定,开发人员还可不可以更改?在这次项目中我自己就遇到了这样的问题,因为某些知识自己理解的有偏差,所以导致设计文档无法实现,于是我修改了设计文档,变成一个我掌握的实现方式。这种情况是要去找资料去完成原有设计呢?还是求快求简单,改用自己熟悉的设计?
- 在3.1节“团队对个人的希望”中,第一条是“团队成员间要进行有效的交流”,我的问题是什么样的交流是有效的,人员间交流的无外乎就是代码,小强以及工作进度这些东西,这些就足够了吗?还是需要再交流其它的内容?
二、名词溯源
- 软件:存储在存储程序计算机的存储器中的共处理器执行的指令,1953年8月由Richard R. Carhart在一个工程文本中提出的。
- 软件工程:以系统化方法应用于软件开发工程。1968年在前联邦德国的北大西洋公约组织召开的软件工程会议上提出。
三、逸闻趣事
- Alain Colmerauer设计了逻辑编程语言Prolog。他的目标是创造一个具有两岁小孩智商的程序语言。为了证明他成功达到了这个目标,他展示了一个Prolog程序,它对于每条查询都会机智地给出相同的回答:“No”。
- 为了纪念伟大的先辈程序员Ada Lovelace那能够写出永远也无法被执行的代码的彪悍技能,Jean Ichbiah和美国国防部创造了Ada语言。尽管缺乏证据显示有任何重要的Ada程序曾经被完成过,历史学家仍然确信Ada是个成功的公益项目,它让数以千计的国防承包商免于沦落为与黑帮为伍。Ada曾经是美国国防部指定的嵌入式计算机系统唯一开发语言,在其研发上耗资巨大。(国防承包商们于是不用靠贩卖军火给黑帮来维持生计了)虽然有充分的证据显示Ada的整型范围溢出检查失败导致弄坏了欧空局的一枚Ariane 5运载火箭,不过美国国防部发言人对此表示:关我P事。
四、管理软件优劣
名称 | 优点 | 缺点 |
---|---|---|
Microsoft TFS | 需求、项目进度一览无余, 能与 VS 无缝接合 | 维护起来比较复杂, 浏览器访问相当慢 |
Git | 代码库占极少的空间。易于代码的分支化管理。 | 图形界面支持差,使用难度大。不易推广。 |
Mercurial | 命令行简单、容易上手 | 分支模型冗杂,多个版本库交流存在问题,用户少交流困难 |
github | 支持多人共同完成一个项目,代码不需要保存在本地或者服务器,能够跟踪错误,Bugs可以公开,不需要设置主机或者DNS。 | 上手不易,不是最好的设计跟踪工具,GUI 有点混乱。 |
bitbucket | 支持免费的私有项目,提交大文件速度快,不限容量 | 维护复杂,硬件要求高 |
Apple XCode | 编译速度极快,可编写iOS App | 只能在Mac环境中运行,体积臃肿 |
Trac | 有良好的扩充性;权限体系较完备;非常灵活,可以定制 | 不支持多项目,需求和缺陷没有分离,核心功能少。 |
Bugzilla | 免费,有中文版支持 | 快速搜索结果不准确。只能管理缺陷。 |