附录A 资 源
A.1 Web资源
敏捷开发人员
http://www.agiledeveloper.com/download.aspx
Agile Developer下载页面,从中可以找到Venkat Subramaniam的文章和演示。
Andy的博客
Andy Hunt的博客,覆盖了很多话题,甚至还有一点关于软件开发的内容。
Anthill
http://www.urbancode.com/projects/anthill/default.jsp
控制构建过程、达到持续集成效果的工具,可以提升组织内部的知识共享程度。
Unix编程艺术
http://www.faqs.org/docs/artu/ch04s02.html
Eric Steven Raymond的《Unix编程艺术》一书节选。
持续集成
http://www.martinfowler.com/articles/continuousIntegration.html
告诉你持续集成好处所在的文章。
CruiseControl
http://cruisecontrol.soureforge.net
主要供开发Java应用使用的持续集成工具。供.NET平台使用的C#版本名为CruiseControl.NET,可从http://sourceforge.net/projects/ccnet下载。
Damage Control
http://dev.buildpatterns.com/trac/wiki/DamageControl
用Ruby on Rails编写的持续集成工具。
Draco.NET
http://draconet.sourceforge.net
供.NET平台使用的持续集成工具,通过Windows服务的方式运行。
依赖倒置(Dependency Inversion)原则
http://c2.com/cgi/wiki?DependencyInversionPrinciple
介绍依赖倒置原则的短文。
FIT集成测试框架
可以自动对比客户期望结果与应用实际运行结果的协作工具。
Google Groups
访问用户组讨论的站点。
信息辐射器
http://c2.com/cgi-bin/wiki?InformationRadiator
对Alistair Cockburn信息辐射器概念的讨论。
设计已死?
http://www.martinfowler.com/articles/designDead.html
Martin Fowler所写,关于设计在敏捷开发中的重要意义和角色的文章。
JUnit
供使用JUnit或其他语言测试工具XUnit系列测试框架的软件开发人员使用的站点。
JUnitPerf
http://www.clarkware.com/software/JUnitPerf.html
一系列JUnit测试用的decorator模式代码,用来测算现有JUnit测试用例中功能的性能和可伸缩性。
NUnit
http://sourceforge.net/projects/nunit
专供使用NUnit的软件开发人员使用的站点。
面向对象设计原则
http://c2.com/cgi/wiki?PrinciplesOfObjectOrientedDesign
集合了多个极佳的面向对象程序设计原则的网页。
对象—关系映射
http://www.neward.net/ted/weblog/index.jsp?date=20041003#1096871640048
Ted Neward对框架的讨论,包括他著名的引语“对象关系映射就是计算机科学中的越南战场”。
开放—封闭原则
http://www.objectmentor.com/resources/articles/ocp.pdf
介绍了开放—封闭原则的实例和限制。
开放—封闭原则简要介绍
http://c2.com/cgi/wiki?OpenClosedPrinciple
关于开放—封闭原则优劣的讨论。
注重实效的编程
http://www.pragmaticprogrammer.com
Pragmatic Programmer公司的主页,可以从中找到Programtic Bookshelf书籍(包括本书)的链接,包括供开发人员和管理层使用的信息。
单一职责原则
http://c2.com/cgi-bin/wiki?SingleResponsibilityPrinciple
描述了单一职责原则,并提供了相关文章和讨论的链接。
软件项目管理实践:失败与成功
http://www.stsc.hill.af.mil/crosstalk/2004/10/0410Jones.html
Capers Jones对250个软件项目成败的分析。
测试驱动开发
http://c2.com/cgi/wiki?TestDrivenDevelopment
对测试驱动开发的介绍。
软件工程的末日和经济合作博弈的黎明
http://alistair.cockburn.us/crystal/articles/eoseatsoecg/theendofsoftwareengineering
Alistair Cockburn对为什么软件开放应被划归工程学领域的质疑,以及对新模型的引入。
所门战役的悲剧:第二个巴拉克拉瓦战役
http://www.worldwar1.com/sfsomme.htm
本站点讨论了第一次世界大战中所门战役的结果。
为什么你的代码很烂
http://www.artima.com/weblogs/viewpost.jsp?thread=71730
Dave Astels讨论代码质量的一篇博客文章。
XProgramming.com
http://www.xprogramming.com/software.htm
包括测试工具在内的资源集合。
你不会需要它
http://c2.com/cgi/wiki?YouArentGonnaNeedIt
对于“你不会需要它”原则优劣的讨论。
A.2 参考书目
[Bec00] Kent Beck.Extreme Programming Explained: Embrace Change.Addison-Wesley, Reading, MA, 2000.
[Cla04] Mike Clark.Pragmatic Project Automation: How to Build, Deploy, andMonitor Java Applications.The Pragmatic Pro- grammers, LLC, Raleigh, NC,and Dallas, TX, 2004.
[FBB+99] Martin Fowler, Kent Beck, John Brant, William Opdyke, and Don Roberts.Refactoring: Improving the Design of Existing Code. Addison Wesley Longman, Reading, MA, 1999.
[Fow05] Chad Fowler.MyJobWent to India: 52 Ways to Save Your Job. The Pragmatic Programmers, LLC, Raleigh, NC, and Dallas, TX, 2005.
[GHJV95] Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides.DesignPatterns: Elements of Reusable Object-Oriented Software. Addison-Wesley,Reading, MA, 1995.
[HT00] Andrew Hunt and David Thomas.The Pragmatic Programmer: FromJourneyman to Master.Addison-Wesley, Reading, MA, 2000.
[HT03] Andrew Hunt and David Thomas.Pragmatic Unit Testing in Java with JUnit.The Pragmatic Programmers, LLC, Raleigh, NC, and Dallas, TX, 2003.
[HT04] Andrew Hunt and David Thomas.Pragmatic Unit Testing in C# with NUnit.The Pragmatic Programmers, LLC, Raleigh, NC, and Dallas, TX, 2004.
[Jon98] Capers Jones.Estimating Software Costs.McGraw Hill, 1998.
[Knu92] Donald Ervin Knuth.Literate Programming.Center for the Study of Language and Information, Stanford, CA, 1992.
[Lar04] Craig Larman.Agile and Iterative Development: A Manager’s Guide.Addison-Wesley, Reading, MA, 2004.
[LC01] Bo Leuf and Ward Cunningham.The Wiki Way: Collaboration and Sharing onthe Internet.Addison-Wesley, Reading, MA, 2001.
[Lis88] Barbara Liskov. Data abstraction and hierarchy.SIGPLAN Notices, 23(5), May 1988.
[Mar02] Robert C. Martin.Agile Software Development, Principles, Patterns, andPractices. Prentice Hall, Englewood Cliffs, NJ, 2002.
[Mas05] Mike Mason.Pragmatic Version Control Using Subversion. The Pragmatic Programmers, LLC, Raleigh, NC, and Dallas, TX, 2005.
[Mey97] Bertrand Meyer.Object-Oriented Software Construction. Prentice Hall,
Englewood Cliffs, NJ, second edition, 1997.
[MR84] William A. Madden and Kyle Y. Rone. Design, development, integration: space shuttle primary flight software system.Communications of the ACM,27(9):914-925, 1984.
[Rai04] J. B. Rainsberger.JUnit Recipes: Practical Methods for Programmer Testing.Manning Publications Co., Greenwich, CT, 2004.
[RD05] Johanna Rothman and Esther Derby.Behind Closed Doors: Secrets of Great Management. The Pragmatic Programmers, LLC, Raleigh, NC, and Dallas, TX,2005.
[RG05] Jared Richardson and Will Gwaltney.Ship It! A Practical Guide to SuccessfulSoftware Projects. The Pragmatic Programmers, LLC, Raleigh, NC, and Dallas,TX, 2005.
[Roy70] Winston W. Royce. Managing the development of large software systems.Proceedings, IEEE WECON, pages 1-9, August 1970.
[Sch04] Ken Schwaber.Agile Project Management with Scrum.Microsoft Press,Redmond, WA, 2004.
[Sen90] Peter Senge.The Fifth Discipline: The Art and Practice of the LearningOrganization.Currency/Doubleday, New York, NY, 1990.
[Sha97] Alec Sharp.Smalltalk by Example: The Developer’s Guide.McGraw-Hill, New York, NY, 1997.
[Sub05] Venkat Subramaniam..NET Gotchas.O’Reilly & Associates, Inc., Sebastopol,CA, 2005.
[TH01] David Thomas and Andrew Hunt.Programming Ruby: The PragmaticProgrammer’s Guide.Addison-Wesley, Reading, MA, 2001.
[TH03] David Thomas and Andrew Hunt.Pragmatic Version Control Using CVS.The Pragmatic Programmers, LLC, Raleigh, NC, and Dallas, TX, 2003.
[TH05] David Thomas and David Heinemeier Hansson.Agile Web Development withRails.The Pragmatic Programmers, LLC, Raleigh, NC, and Dallas, TX, 2005.
[You99] Edward Yourdon.Death March: The Complete Software Developer’s Guide toSurviving “Mission Impossible” Projects.Prentice Hall, Englewood Cliffs, NJ,1999.