个人作业—Week1

针对教材内容的问题

阅读教材《软件工程——实践者的研究方法》Roger S.Pressman

在笼统地阅读了教材,大致理清教材知识结构后,提出以下问题作为今后学习地重点:

1)     什么是敏捷软件开发?与传统的过程模型有什么区别?

2)     如何评审软件质量,如何有效地进行质量评审?

3)     采用什么技术来评估影响项目成功的风险?

对于敏捷开发一章做了较为深入的阅读后,提出以下具体问题:

4)     敏捷开发强调软件开发的速度,轻视设计,是否违背软件工程的原则,使得程序的开发过程更难控制?

5)     极限开发(XP)中的关键概念结对编程,两个人面对一台计算机开发代码固然比一个人开发的质量和效率要高,然而与两个人分别进行开发相比何者更优?以及为什么是两个人结对编程,而不是三个人共同开发,两人的效率优势在哪里?

“软件”一词的提出

  ‘Software’一词最早出现在工程出版物的时间为1953年,在Carhart, Richard的A survey of the current status of the electronic reliability problem中被提出。2000年,耶鲁法学院的图书管理员Fred Shapiro发表了一封信揭露了美国数学家Tukey于1958年发表的论文"The Teaching of Concrete Mathematics"中运用了‘Software’一词,为JSTOR电子档案中该词的最早记载。1995,Paul Niquette声称他在1953年十月最初创造了这个词,虽然他没能找到任何资料支持他的说法。

“软件工程”一词的提出

  ‘Software Engineering’一词最早由计算机科学家,MIT 软件工程测试实验室主任Margaret Hamilton 为阿波罗空间计划开发登录舱软件时提出。在一次采访中,她说:“我致力于为软件以及那些发明者争取应有的正统性与尊重,所以我开始使用“软件工程”这样的字眼来将之与硬件还有其他工程学类做出区别。”

目前流行的源程序版本管理软件和项目管理软件的特点

1)     Microsoft TFS

优点:任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用;集成了项目管理、版本控制、BUG 跟踪,能有效实现 SCRUM;能与 VS 无缝接合

缺点:从 IE 上访问、填写各种开发、测试记录;从 IE 上访问、填写各种开发、测试记录慢;团队的邮件细节配置比较复杂

2)     Git

优点:比svn更快速的分支切换;各版本快照(commit)都在本地;有一个全世界最大的开源社区——github

缺点:Git无法简单地实现局部还原

3)     Mercurial

优点:跨平台(基于Python);封装好

缺点:分支管理不灵活;支持社区略差

1)     GitHub

优点:设计简洁,操作方便;已有很多相当质量的各类项目和优秀开发者在上面

缺点:免费套餐不支持私有项目,团队私有项目价格太高;wiki功能太弱,直接导致文档(对于开源项目很重要)经常被分离到一个独立站点

2)     Bitbucket

优点:支持Hg,最易学易用(但不是最强大的)的分布式版本管理工具,同时也支持Git;免费的私有项目,支持5人以内的合作开发;支持中文;官方的git工具SourceTree比GitHub for windows好用。相较github,更适合私有项目管理。

缺点:也许社区活跃程度不如Github?

参考资料:

^ http://en.wikipedia.org/wiki/John_Tukey

^ http://linux.cn/article-4778-weibo.html

^ http://en.wikipedia.org/wiki/Margaret_Hamilton_%28scientist%29

^如何评价微软的TFS(Team Foundation Server),类似的更好替代产品有哪些?

^Git的优缺点

^Git,SVN的优缺点及适合的范围,开源项目?公司项目? - 陶伟基

^ Mercurial 有哪些优点?适合怎样的开发者或团队使用?

^Github 有什么优缺点?把项目直接搭建在 Github 上合适吗?

^GitHub、Bitbucket、Google Code 各有哪些优缺点?

时间: 2024-12-28 20:59:17

个人作业—Week1的相关文章

PYTHON实战开发作业 -WEEK1

1_1 初始网页的构成 1.1.1学习笔记: 初步认识网页组成: HTML标签 <head>头部定义标题,包括浏览器小窗口标题显示的那些 </head> <body>主要展示的文本/图像/各种资源内容</body> <foot>我是最下方那些小小的不起眼的文字 </foot> 照着视频的讲解,建立了第一个我的网页文件. 乱码了,百度一下我就知道: 添加<meta charset = 'UTF-8'>,倒是没乱码了,然而离老

个人作业-Week1

<构建之法>阅读疑惑 在超大的软件工程中如何在测试和成本中找到平衡点? 软件工程师在入职后大概拥有多少的学习时间进行自我提升? 如何克服代码复审.文档撰写这类工作的枯燥? 项目经理与程序员之间的矛盾如何处理,该如何看待这种关系? 团队中技术差距与思路不同如何进行磨合? 词汇理解 软件(Software):最早出现在出版物中是由Richard R. Carhart 于1953年8月出版的书籍.2000年,耶鲁法学院的图书管理员Fred Shapiro发表了一封信,这封信揭露了其在对JSTOR的电

个人博客作业Week1

问题1:多人合作一个大项目的时候怎么保证任务的分配是合理的?很有可能你分配给一个人看似简单的任务会出现比较复杂的情况. 问题2:像qq微信这种软件现在是投入在开发新功能新模块方面的人力多还是维护稳定性上多? 问题3:当确实出现怎么调也调不好的bug的时候怎么办?相信总有调好的一天吗?还是重头来过? 问题4:诚然,先驱者们一旦成功就可以在人类史上名流千古,但是他们失败的风险以及几率也是很大的,对我们来说是要做个先驱者还是安安心心求个稳定的生活? 问题5:实际软件开发过程中是如何衡量一个产品的用户体

团队博客作业week1——成员介绍

我们小组的成员由六人组成,其中包括一名七班的韩国同学. 1.玉钟焕同学 玉钟焕是七班的同学.由于老师为了让我们尽早体验与不熟悉的同学共同工作的环境而提出团队需要跨行政班.于是我们便邀请钟焕同学加入我们的开发团队.钟焕同学性格随和极易相处,工作态度严谨认真.秉着认真合作, 认真负责,  紧抓时间的工作原则,相信这股新鲜血液一定能丰富我们的开发团队. 2.符美潇同学(也就是我= =) 我此次担任这个开发团队组长,责任重大,以积极的态度面对.在学习工作中我严谨认真,理性看待可能产生的突发情况.生活中我

软件工程个人作业-Week1

1.读了邹欣老师的构建之法,我有以下几个问题:(1)小型项目是否需要考虑复杂的软件工程知识?对于一个小型的项目来说,可能几个人在几天内就开发完毕,但是加入详细.文档化的需求分析及单元测试等内容后很可能将开发周期拖到数周,这种情况下是否还需要按照软件工程的方法去实行?(2)如何平衡开发效率和运行效率?为了达到最高的效率有时相似的问题可能需要不同的代码,而用同一种代码去解决的话可能会导致运行效率有所下降.这时如何平衡开发效率和运行效率?(3)关于教材中给授课老师和助教的建议第四条.关于第四条:如何对

个人作业——week1

1.问题 (1)与软件学院相比,计算机科学更偏向理论研究,本系开设软件工程课程的意图是否是为了平衡理论与应用的比重? (2)Bug的定义根据开发者与使用者的分析角度不同,有着很大的区别,如何使开发者能够有效的感受使用者的角度,使软件更具人性化? (3)Coder和Hacker之间原则性的区别是什么? (4)面对代码量比较大的工程,如何做到有效的管理和控制? (5)在开发流程中,如何从“写了再改的模式”的模式中脱离出来? (6)P171页的算数题,团队用一半的速度完成了一般的总工作量,已经没有额外

#个人博客作业Week1——浏览教材后提出的六个问题及软件与软件工程的提出。

1.通常,我们阅读软件比编写软件花费的时间更多.正因为编写软件比阅读软件要容易,因此代码的可读性显得尤为重要.那么我们在写程序时应该如何避免多余的,带有误导性的注释,写出一个利于帮助别人读懂程序的注释? 2.当今时代人们的需求各式各样,一个有着敏锐嗅觉的软件团队能够准确而全面地捕捉人们的需求,从而能设计出满足人们需求的软件.像我们这样刚刚诞生的缺乏经验的软件团队应该如何获知市场客户的需求? 3.一个软件团队里的成员之间相互分工协作,在书上有特别介绍了项目经理——PM这一团队角色,并提出了PM的工

个人作业Week1

一.<构建之法>提问 1.需求是什么?需求的规范需要明确吗? 2.一个人开发效率非常高,多人开发,个人效率随团队人数上升而直线下降,我们一般需要将大项目拆为小项目,使协作耦合产生的效率负影响减少.但是,谁来做项目拆解工作呢? 3.PM应该是技术大牛,还是其他哪种人? 4.敏捷开发会导致代码重构次数很多,或者文档不全导致代码可读性差吗? 5.团队中,代码风格规范与设计CSS风格规范应该怎样制定?会发生变化吗? 6.测试驱动开发的开发方式中,测试用例无法考虑代码中的bug.逻辑不严密的地方,应该怎

#个人博客作业Week1——流行的源程序版本管理软件和项目管理软件

1.TFS(Team Foundation Server)(1)定义:TFS是一个高可扩展.高可用.高性能.面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,          它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问.(2)优点:它采用了HA架构和平滑扩容,保证了整个文件系统的可用性和扩展性.同时扁平化的数据组织结构,          可将文件名映射到文件的物理地址,简化了文件的访问流程,一定程度上为TFS提供了良好的读写性能. 2.Git/GitH