Thursday, June 24, 2004

Estimation is the point

Estimating the effort necessary for a software project is always difficult but is always necessary. As the project progresses your estimate should converge on what is actually occurring in the project. However, often initial estimates are needed immediately after the project is conceived, to determine whether it is affordable/doable. At that early point you have to draw on your experience and analogy to produce an estimate, noting places where the dragons (unknowns/traps) are.

If you do have more time or after those initial "back of the envelope" estimates, there are tools that can help you estimate the effort. NASA has a great site on software estimation that includes an informative, downloadable handbook on estimation techniques and it can be found here.

Function points are one of the more popular software estimation technologies and Stevens teaches the methodology. IFPUG (International Function Point Users Group) is the society that promotes function points and its web site can be found here. However in order to obtain the full benefits of the organization, you must join it and there is a membership fee of $50 for students and $185 for professionals (plus an additional $75 first year fee).

Any experiences/data on software estimation techniques that you could provide in comments to this post would be appreciated and useful, Thanks!

Finally my web site is undergoing fairly significant upgrading of information. In particular I am creating resource pages for software engineering, rule-based programming and languages. If you have any additions to those pages send me some mail. Hope you are enjoying your summer. Later!

Thursday, June 17, 2004

Creative Engineering

An ongoing discussion in my Software Engineering classes is what is engineering and what is science. Often students will express the opinion that science is creative and engineering follows rules. Most engineers and scientists would contest such strong distinctions. For example, the University of Oxford has this remark in their Engineering Science description, "The qualities of a good engineer include not only a high degree of technical competence but also imagination, strength of purpose, commonsense - and a social conscience." This is a terrific description.

I would be interested in your opinion. What is your definition of Engineering Science? Is it the science of: design, build, test? What differentiates science and engineering? I realize these are cosmic questions but the discussion arises in almost every class I teach in Software Engineering in the Computer Science Department, so it is clear that many are wresling with these concepts and any insight on the topic would be appreciated.

Thanks and later!

Monday, June 14, 2004

Rules Redux

In the halcyon days of expert systems (1980's and early 90's), rule based programming was very popular since it was a straightforward way of representing user knowledge. Rule base programming environments also provide the opportunity to do data driven programming -- a technique that deserves to be used much more than it is currently used. Since I think rules are under represented in current development -- I will periodically discuss it in this blog hoping to at least increase awareness of it. I also am creating a section on my web page that will support folks interested in rule based programming. I would be interested in comments from anyone who is considering or is use the rule base technique.

If you want to get involved in rule based programming one of the best ways to get started is to use CLIPS. CLIPS is a rule based environment that originated at NASA and is quite good. It also is free and you can get information on how to download it and the excellent supporting documentation here. You can do quite a bit with CLIPS it is very impressive and highly recommended.

If you are interested in sampling the latest in rule based technology, then I suggest Production Systems Technologies and their RETE-II technology. Charles Forgy is the Chief Scientist of PST and the inventor of the RETE algorithm (used in CLIPS and many other rule based environments. Quite simply RETE made rule based technology commercially viable. I have known Charles Forgy for decades and have used everything from OPS4 to his newest stuff and it is great. PST's environments are commercial products, they are not free but they are worth it if you need to build high performance products. (BTW I am not involved with PST in any way other than using and liking their products and knowing Charles (Lanny) Forgy.)

I will have more on rule based systems and data driven programming in the next few months. Check here and on my web page for further information. Later!