快速看完整部教材,列出你仍然不懂的5到10个问题,发布在你的个人博客上

1.软件工程的目标是创造足够好的软件,书上提及软件的几个重要指标是用户满意度,可靠性,软件流程的质量,可维护性。我的问题是如何能够更加具体地衡量一个软件是否适用,也就是软件开发所追求的一个核心要求(或者通过对各类要求的权重分配)是什么?

2.教材上非常强调测试的重要性。那么我们测试除了软件功能的正确性之外,对于可靠性,可维护性以及运算性能等方面的测试应该用什么类型的数据集进行测试呢(尤其是可靠性,不知道应该怎么测试)。

3.这门课非常注重合作,囧才上也提到了应该结对编程对于程序开发又很多好处,那么如何分配工作,以及建立怎样的合作气氛在实际上更有利于提高软件开发的效率呢(这一点在实际不同情况中尤其难以抉择)?

4.开发软件是为了用户使用,所以首先了解用户需求。但很多情况下,我们没办法让用户确切表达出自己的核心需求,这种情况应该怎么做才能提高用户满意度呢(所有的功能?运行的速度?还是好的UI?)?

5.教材上所说PM的一个重要职责是协调团队,而如果团队内部有两种向左的开发意见,两者各有优劣,而且支持的人数相当,那么PM在决策的时候应该通过什么指标来决定最终的选择呢?

6.在教材上提及软件开发大致可以分为需求分析,功能设计,编程与开发,软件测试,长期维护等流程,我想知道如果现有的时间不足以将每个步骤进行到完美的地步,那么对这些步骤应该怎么侧重呢?

请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人?

在2000年,耶鲁法学院的图书馆员Fred Shapiro发表一封信,显示Tukey的1958年“混凝土数学教学”文章包含了最早知道使用“ JSTOR ” 搜索中找到的“software”的电子档案,早于OED的引文两年。这导致许多人认为Tukey强调了这一术语,特别是在同一年出版的ob告上,尽管Tukey从来没有为任何这样的发明赢得信誉。在1995年,保罗·尼奎特(Paul Niquette)声称他最初是在1953年10月创造的,尽管他找不到任何支持他的要求的文件。兰德公司研究备忘录中Richard R.Carhart于1953年8月出版了最早出版的“software”一词。

软件工程一词是Margaret Hamilton在为阿波罗11号开发软件的期间发明了软件工程一词。

【附加题】:大家知道了软件和软件工程的起源,请问软件工程发展的过程中有什么你觉得有趣的冷知识和故事?

全世界广泛使用的linux系统是Linus Benedict Torvalds和他的伙伴一起开发,所以以他的名字命名(自己命名的),而且linux发明的初衷是为了玩一款在unix上运行不够流畅的游戏。。。

上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点? (提示:搜索一下Microsoft TFS、Git、Mercurial、GitHub、Bitbucket、Trac、Bugzilla、Rational,Apple XCode)?

Microsoft TFS(Team Foundation Server):

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

缺点:搭建、维护tfs比较复杂,硬件要求也比较高。

Mercurial:

优点: 是一种轻量级分布式版本控制系统,采用 Python 语言实现,易于学习和使用,扩展性强。

缺点:

Git:

优点:
适合分布式开发,强调个体。公共服务器压力和数据量都不会太大。速度快、灵活。任意两个开发者之间可以很容易的解决冲突。离线工作。
缺点:资料少(起码中文资料很少)。学习周期相对而言比较长。不符合常规思维。代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

GitHub:

优点:GitHub是一个非常万能的工具。对于任何大小的项目,他都是理想的工具;他也是伟大的web工作流工具。首 先,他可以作为一个版本控制系统和协作工具,用它来发布工作。利用GitHub,你可以将项目存档,与其他人分享交流,并让其他开发者帮助你一起完成这个项目。优点在于 ,他支持多人共同完成一个项目,因此你们可以在同一页面对话交流。创建自己的项目,并备份,代码不需要保存在本地或者服务器,GitHub做得非常理想。

缺点:

如果:是Github使用新手需要不断实践和时间。他可能不是捕捉创意过程和记录创意点子的最佳工具。对于这种特殊功能模拟可以选择LayerVault 或其他相似工具。之前,我们已经强调过Github非常适用代码跟踪,但是却不是最好的设计跟踪工具。将图片内容转 化为代码,或者将设计用于产品设置,看起来依旧不是那样顺利。

Trac:

优点:

Trac做一个SCM配置管理平台,意味着它有良好的扩充性;Trac的权限体系是比较完备的设计;非常灵活,可以随心所欲的定制,可以和TortoiseSVN集成。

缺点:

1.不支持多项目 2.需求和缺陷没有分离 3.用 wiki 来替代 Word 等工具编写文档对于产品策划来说门槛太高了 4.中文化不完整,美术人员接触起来困难重重 5.不显示中文名,本地化做得很差 6.核心功能很少,不安装插件基本上没法用。

BUGZILLA:

优点:

1、BUGZILLA不收费,2、BUGZILLA现在有中文版支持

缺点:

1、BUGZILLA只能管理缺陷

Rational:

优点:采用迭代式开发模式,以降低项目风险;
·专注于构架,开发出更有弹性的系统,以迅速适应不断变化的业务需求。

缺点:对于个人用户的功能开发远不如github方便

Apple XCode:

优点:

1.可以自动创建分类图表。2.自动提供撤消、重做和保存功能,无需编写任何编码。

缺点:

1、 更新版本后,某个插件可能会失效。