Thursday, June 30, 2005

 

N-Tier PDM/PLM and user defined behaviour

A crunched but rich session at customer's site. We are designing the next generation of a successfull PDM/PLM product. Current version is client-server, next generation will be N-tier, web-services based. A good chance to review everything from database to business objects up to the client, capitalizing on several years of market experience and on new technologies.
Particularly interesting was the problem of user-defined behaviour on the distributed system. I wasn't happy with the solutions we came up with. Some triggered my sixth sense, "this ain't gonna work". Some lacked the striking elegance of simplicity.
I finally got what I think is a good idea, about one hour after the meeting. Peace of mind is often my trigger for zen enlightnment :-), where everything falls into place and I can find a simple solution to a wicked problem.

Wednesday, June 29, 2005

 

Traveling - Project Management Tools

I've spent a good part of the day traveling, and that means reading and... thinking. I re-read, after a few years, two chapters of a nice book from Gerald Weinberg, one of my favorite authors. He has a unique perspective on software projects management, and looking at his concept of Standard Task Unit got me thinking about using Activity Diagrams (and colors) as a project management tool. It would need some scripting to generate a Gantt, but besides that, STU maps perfectly into activities, including the entry/exit criteria.
More on PM tools, including Slip/Lead charts, project history, real support for [probabilistic] estimates, and maybe just a little Monte Carlo simulations... later :-).
Well, it's late, no time to talk about Edward de Bono and, on a completely unrelated topic, on the Big Question of the day...

Tuesday, June 28, 2005

 

Taking care of the business :-)

Quite a day, almost entirely devoted to the business side of my consulting practice. Planning a few months in advance for august and september, anticipating customers needs and looking for new ways to translate good research into... better practice. Main concerns of the day were quality metrics (monitoring the quality of a large COBOL product for the insurance business) and cost estimation for the integration of COTS (Commercial Off-The-Shelf) components.
In top of that, I somehow managed to jot down a few paragraphs for my free book (in Italian) UML 2 Manuale di Stile. A new chapter on Protocol State Machines is starting to take shape, so a new release should be just around the corner...

Monday, June 27, 2005

 

Estimation models

Today I've been playing again with custom estimation models for software development. Custom models are derived from historical customer's data, and can accurately reflect the peculiarites of the customer's environment.
The model I'm working with it's tailored to estimate debugging time given the coding time and 5 boolean properties of the project (e.g. new developments Vs. maintenance). The properties have been selected for their statistical significance for a specific customer.
Reflecting my approach to estimates and risk management (I'll write more on that) the model provides a "most likely" figure, but also a probability distribution, so that you can ask questions like "what is the maximum debug time, with 90% confidence?".
Of course, given an early estimate of coding time, we can apply the model and get back a rough estimate of debugging time, still quite useful as a sanity check. We can also play what-if scenarios with the boolean properties, see the impact (for those under control) and steer the project accordingly.

Sunday, June 26, 2005

 

Partial classes and encapsulation

A few years ago, Scott Meyers published a controversial article ("How non-member functions improve encapsulation"). He had some good points but overall I didn't like the idea. If I take his theory to the extreme, a class with only getters and setters is "more encapsulated".
At the time, I thought the problem was real but the solution was bad - and that a different approach, like being able to add methods to a class without adding a subtype, could lead to a better solution.
For a long time now I've postponed any serious :-) thinking about partial classes in .NET and how they fit into the picture. Well, sooner or later I'll tinker with that :-)).

 

Multiple Dispatch in C# / .NET

In these days I'm working on a fast multiple dispatch engine for C# / .NET. The engine uses some "advanced" techniques, like .NET attributes and run-time MSIL generation.
It should be easy to use, fast (faster than the InvokeMember trick anyway), and most importantly, should allow a clean design without circular dependencies bewteen classes.
Stay tuned :-).

This page is powered by Blogger. Isn't yours?