UMLChina于3月11日举办了第16期专家交流，这次交流的重点是对象技术、开发过程、敏捷（agile）方法。作为一个agile的初学者，我有幸也参与了这次令人愉快而难忘的讨论，非常高兴可和《Marstering Enterprise JavaBeans》一书的作者Scott W. Ambler先生同在一个聊天室中。以下是我所提的一些问题，以及Scott先生的精彩回答。希望大家可以从中得到一些有价值的东西。截选并整理自聊天记录，I代表我，S代表Mr. Scott，完整的聊天记录可以从这里找到http://www.umlchina.com/Chat/ambler.htm。看起来似乎有点象一篇interview:)
[I] With agile method, is there any successed applications in c++, except java?
[S] I don't do a lot of C++ work any more, so I don't know personally. However, I have heard about C++ projects on the XP mailing list on Yahoo Groups.
[I] Thank you, and I think, as a methodology, AM is language independent, do you think so?
[S] Yes, I think that AM is language independent. You can use it for Java projects, COBOL projects, or C# projects. It's also independent of modeling language, such as UML, as well. It's one of the few modeling methods that doesn't specify the exact artifacts, such as use cases or data models, that you are supposed to create. It's a lot like XP -- XP doesn't say that you have to use Java. AM strives to address the issues of how to be effective at modeling and documentation, problems that many developers struggle with. UML, on the other hand, strives to address the issue of what notation and semantics should be applied to model OO and component software. Each technique is trying to address different but complementary issues.
[I] It's said that refactoring is more efficient in java application, what do you think about it?
[S] Most refactorings are currently focused on OO code, such as Java and C++. however, the technique itself could be applied to non-OO languages. Some work is being done regarding data refactorings but it's pretty tough to do them.
[I] There are also a lot of work to do with refactoring, it's not very mature, is that right?
[S] A lot of people are using it very successfully. I think refactoring is a pretty solid technique.
[I] I'm very interested in refactoring, but there are few books addressing about it, how do I start to learn?
[S] There's Martin Fowler's book and his web site. The XP community also talks about it a fair bit. Refactoring will be a major topic, as far as I know, at the upcoming XP 2002 in Italy in May. I suspect it will also be a major topic at the XP/Agile Universe convention in Chicago in August. As paper get published from those efforts I suspect we'll see more and more information about refactoring. Just takes time. There are also some interesting refactoring browsers now too, such as IDEA for Java. Worth looking into.
[I] I think refactoring, as well as AM, is still not so well known in china. I have not yet seen the chinese edition of Mr. Fowler's book.
[S] I don't know if it's been translated yet. Sounds like an opportunity for someone if it hasn't.
[I] Is there any book which addressing agile, I guess not.
[S] There are several books addressing Agile development, look at www.agilemodeling.com/resources.htm for some of them. The AM book starts shipping in North America in 2 wks
[I] What program language is your favourite? What about c++, that's my favorite!
[S] I used to work in C++, it's pretty good, and C before that. I've even worked in COBOL and Fortran.
[I] I have read "Effective C++"(Scott Meyers). I think it's very intersting, and learn a lot from it!
[S] Effective C++ and the follow-up book were both amazing.
[I] I have learned something about design patterns, how do you think about it?
[S] Patterns are important. AM includes a practice called "Apply Patterns Gently". The basic idea is that you don't want to apply a pattern the instant you think you need it. Instead, wait until you are sure. For example, you might have a formula to implement. You could apply the strategy pattern right away, but the strategy pattern is applicable to several formulas. Instead, wait until you actually have a second formula to implement, and then consider refactoring your code to make it easy to implement Strategy if it makes sense later on. Then when the third formula needs to be implemented refactor your work some more, and when the fourth formala is required then you should seriously consider implementing Strategy because now that is the simplest way to do it. If you had implemented Strategy right away and then only needed to implement the one formula, you would have done a lot of extra work for nothing. The nature of AM? AM is a strange thing, it's a different way to look at modeling. I think it's nature is to keep things simple and to focus on what is actually required, to not get ahead of yourself.
[I] I think it's practical and reality-oriented, I mean AM, is that right?
[S] My hope is that people will find AM to be of value to their development efforts. I have found it to be very useful on the projects that I work on and my clients seem to be picking up on it too. Time will tell. I'm trying to keep it as practical as possible. Many of the academics seem threatened by it, so that might be a good sign that it's practical.
[I] And I think AM is more suitable for small developping team with frequent changes, is it right?
[S] AM works very well in high-communication environments, and that tends to be smaller teams. If your requirements don't change frequently, then AM's iterative and incremental nature likely isn't needed by your team.
[I] So, I think AM is very suitable in china, because there are a lot of small teams in china! I'm very interesting about AM and with its applying in real world!
[S] The best way to find about this is to try AM on your next project then.
[I] Thank you!
[S] My pleasure.