Monday, April 30, 2007

SCRUM, XP and TDD - Agile Software Development

Scrum is the most important and widely used agile method as XP. Whatever the scrum or other agiles, two core factors:

1) Coordination
C: The work item belongs to all members, but not only one. Every one should be enthusiastic on working out all work items in a sprint however some of them are not assigned to him at beginning. They have only one final goal, delivering the project on time efficiently and high quality.

2) Positivity
C: That's why in MS, PMs, developers and testers are in the same level. All members should participate the project actively. The team should be responsible for the project but not the PM only. One failed all failed!

In China, there are already some teams using Agile even XP now. Surely, scrum also seems strange to them. Have you agreed that in China, from developing technologies (application level) speaking, we're not weeker than US/UK guys. But projecting is normally 5~10 years behindhand. Most developers, PMs, and even company owners pay less attention on PROJECTING.

The developers mostly care on how to make the code beautifully and clearly. The PMs mostly care on delivering project on time. The CEOs mostly care on getting the money from customers faster. They're not wrong, but they're short eyes. They're producing software, it bases on human but not machine. It doesn't base on only one guy, but a group. So the first thing is HOW TO BUILD THE TEAM! WHAT'S THE PROCESS FOR TEAM RUNNING.

The BUILDING AND PROCESS is not the silver bullet for a employee of a company. But it should be caused by the high level managers. Frankly, most chairmen in China is not expert on software, but have a perfect relationship to sell them whatever they are!

Wednesday, April 18, 2007

NDoc 1.3, NDoc 2005 and Sandcastle

Code documentation tools for .Net.
NDoc 1.3 stop development at 2005 and is only working for .Net framework 1.0 and 1.1, can only import solution from VS 2003.

By adding a config file and recompile in VS 2005 it will work with .Net 2.0, but the generic class name will show improperly. This can be fixed by add FullName test function.

NDoc 2005 seems to take this projects and develop on .Net 2.0.

Microsoft has their own documentation tool Sandcastle.

One more thing, today I found a very good HTTP debugging tool: Fiddler. It logs all HTTP traffic between your computer and the Internet.

Monday, April 16, 2007

Custom List Class in c#

/// <summary>
/// Collection of users.
/// </summary>
[Serializable()]
public class Users : ArrayList
{

#region Public Properties

/// <summary>
/// Returns a specific user.
/// </summary>
public new User this[int index]
{
get
{
return ((User)base[index]);
}
}

#endregion

#region Public Methods


/// <summary>
/// Add a user to the collection
/// </summary>
/// <param name="user">The user to be added.</param>
/// <returns>Index of the added user.</returns>
public int Add(User user)
{
return base.Add(user);
}

/// <summary>
/// Object version of the typed 'Add' method.
/// Do not use.
/// </summary>
/// <param name="value">Ignored.</param>
/// <returns>Always throws an exception</returns>
public override int Add(object value)
{
throw new Exception("Please call the typed overload");
}

/// <summary>
/// Insert the user at a given index.
/// </summary>
/// <param name="index">Index location to insert the user.</param>
/// <param name="user">The user to be added.</param>
public void Insert(int index, User user)
{
base.Insert(index, user);
}

/// <summary>
/// Object version (weak typed) of the 'Insert' method.
/// Do not use.
/// Exception will be thrown always.
/// </summary>
/// <param name="index">Ignored</param>
/// <param name="value">Ignored</param>
public override void Insert(int index, object value)
{
throw new Exception("Please call the typed overload (Insert(int, User))");
}

/// <summary>
/// Remove a user from the documemt.
/// </summary>
/// <param name="user">Reference of the user to remove.</param>
public void Remove(User user)
{
base.Remove(user);
}

/// <summary>
/// Check if the collection contains the user specified.
/// </summary>
/// <param name="user">The user to look for in the collection.</param>
/// <returns>True/False if the user exists in the list.</returns>
public bool Contains(User user)
{
return base.Contains(user);
}

#endregion

}

Wednesday, April 11, 2007

VS 2003 can't load Web projects and AssemblyKeyFile setting

Recently I install VS 2005 on my computer and found out some existing VS 2003 project could not find AssemblyKeyFile and the web projects could not be load.

After I delete VS 2003 web cache file from the following folder, the web projects get loaded.
C:\Documents and Settings\cguo\VSWebCache

Some other dll projecys has compile error:
error CS1548: Cryptographic failure while signing assembly '...' -- 'Error reading key file '...' -- The system cannot find the file specified.

The setting in AssemblyInfo.cs has one KeyFile setting, the file is using related path to solution, after I change to related path to project file, the error gone.