| Onega's profileOnegaBlogListsNetwork | Help |
|
|
July 15 Dinner with Ivar yesterdayI was attending an offsite training, so I missed the presentation Ivar Jacobson given to our company, but had the pleasure to had dinner with him. Here was what I caught (might have misunderstanding): You can do MDD, but forget MDA. MDA is not mature and only PHD student can understand and use it. Use case vs User Story: Use case can be used to derive test cases, but user story can't. Standard persistent format for UML It is in the first version of UML, but every tool created its own format. UML library: Rational has created some common asset management pieces, but not very useful. UML 2.0 is too heavy. I was thinking of using essential UML (20% features) in development. Craig LarmanToday I had a chance to ask questions to Craig Larman and here was what I got. Q: Do I need to create WBS before Iteration 1? A: You spend 2~4 days in creating a backlog (feature list) before iteration 1, and spend 5% time of each iteration to do plan for current iteration, and team members create their own WBS in each iteration. Q: Do I estimate size of project according to backlog? A: Yes.
Some notes I caught (might be wrong): Don't do resource pool, a stable team is better. Microsoft did daily build 20 years ago, if you don't do, you are 20 years out of date. It is a bad idea to "code a little, test a little". It is a good idea to "test a little, code a little". User story can be documented as: "I want <a feature> because it has <this benefit>". Abandon MS word document as requirement Spec, use wiki instead. April 30 "Do not program prematurely" is not "Do not program"There are a lot of books proclaim that "Do not program prematurely". Many readers understand it as "Do not program" before you have a mature model. This is misleading because for Non-functional requirements, it is difficult to model without investigation. You should start investigating every new technology that are going to be used in your design, otherwise they won't work as your expected. New technology will always surprises you if you are not familiar to it. As an example, people prematurely think Multi-CPU will run faster than single CPU, but it is not always true; for some programs that do not take advantage of extra CPU resources, it can be SLOWER due to extra synchronization cost between CPUs. Windows service is part of our new system, then I spent a few days to familiar to service project in VC++ 9.0(which is a lot different from VC++ 6.0 version). Tcp will play an important role in the new system, then I spent efforts in playing with boost.asio. Don't postpone investigation to construction phase, otherwise you can't get right estimation for corresponding task, and also at the risk of blocking others from system integration. March 05 Who is willing to take challenge?TSP stated that "New and inexperienced developers are often reluctant to take on unfamiliar challenges. More experienced developers are eager to learn new methods and techniques." March 04 Argue with TSP on applying Maslow's Hierachy of Needs in team motivationThe famous Maslow's Hierachy of Needs is cited in TSP. TSP claimed that self-actualization level is required for development work, which is not bulletproof in my opinion.There are several facts beyond Maslow's theory: People may sacrifice their life for religion or belief, like Galileo. Another fact is that "Self-actualization" may not be aligned with business goal, mostly likely be a personal hobby like sightseeing, etc. If there is possibility, many people will retire early, thus get work done is not self-actualization, I would emphasize on cultivating motivation in belonging and recognition level. When working as a team, we have the feeling of belonging and recognition in common, while self actualization is diverse. February 24 Understand what the team expectsCreative people needs for job security. January 22 Complementary techniques to Test-Driven DevelopmentI realized that TDD is not enough for quality ensurance one year ago -- unit test code was written but a use case still failed, since TDD does not focus at use case level, so I think an independent test team is important for high level validation&verification. Scott W. Ambler published a lengthy article on Feb 2008 issue of Dr. Dobb's, he also considered Agile Modeling in addition to test team. December 17 EstimationApplied Software Project Management challenges the rule of "testing should always take exactly one-third (or some other fixed ration) of the programming time", which is promoted by The Art of Project Management. I'd support the latter since we are making guess and it is simpler to guess one factor instead of two. Wideband Delphi Estimation process: Choosing a qualified team September 18 The secret of planning and estimation.In order to be successful, good estimation must contain enough buffer
for the team, as expressed by many well known experts. I always add 30% to my original estimate for anticipated problems then another 20% to cover things I hadn't thought of. Ian Sommerville, Page 100 of Software Engineering 8ed. Add time to each iteration for changes that are identified during an iteration review... set aside one or more "empty" iterations at the end of the project... features assigned to the last iteration or two should be those that can be dropped if necessary. Jim Highsmith, page 155 of Agile Project Management. Applying the rule of thirds (Plan and Design, Programming, and Testing). Scott Berkun, Page 26 of The Art of Project Management. September 13 C++ VS JavaC++ is less strict than Java: undefined length of bool may be a problem for the same C++ code compiled by different compiler.Exception and RTTI are implementation dependent. C++ does not have good support for various apsects: CORBA, Web Service, XML, thread, encryption, network, GUI, security, and Database etc. There are open source projects for C++, but they are native supported in Java. It is difficult to put C++ libraries to work together. User has to configure various options before using a C++ library: debug/release; single thread/multi-thread; multi-byte/unicode; dynamic/static; with/without RTTI; with/without exception; wchar_t as native type, OS version, with/without STL etc. On windows, there are so many types for string: char* wchar_t* TCHAR* OLESTR BSTR _bstr_t CComBSTR std::string CString, and some open source libraries also define its own string types. My conclusion: C++ is more difficult and less productive than Java. The price for using Java (my experience): Have to tell memory usage to JVM at program start; Performance penalty; Eat a lot of resource; Java implementation bugs usually will affect software development(http://bugs.sun.com/bugdatabase/). As an End user, I would prefer to C++ program which is faster. To a manager/architect, it is a difficult decision most of the time. August 16 War on naming conventionThere are several widely used naming conventions and each has a lot of fans. naming convention: lower camel Java, Apache XercesC Hungarian MFC, Microsoft Platform SDK underscore boost, ACE, STL I personally favor to boost style, which only use lower case for class and member names. |
|
|