Feature Oriented Programming and Design
I recently attended a talk by Dr. Don Batory, on Generative and Component-Based Software Engineering. The goal of generative is to increase the productivity, quality, and reduce time-to-market in software development. [ Who's not trying to do this? Isn't this why Java was invented?]
The part I found most interesting was the discussion on Feature Oriented Programming. For Generative design to work properly, requirements must focus on 'what not how'. 'How' things are to be implemented is a task for design. Requirements should be thought of as a set of features that provide benefit to the consumer.
Dr. Batory mentioned that requirements are a big problem in software engineering. Anyone who has dealt with a government or big IT shops can comment on the problem. Even techniques like Use Cases can contribute to the problem when it drives requirements to individual function points.
FOP is strangely familiarly to the quote made by General George S Patton Jr. "Never tell people how to do things. Tell them what to do and they will surprise you with their ingenuity."
On the flip side, many managers just want the work done, and complain that developers commonly over engineer problems. However, I see this as a management problem and not a developer problem. Many managers don't understand how to set boundaries, or set evaluations that compare performance versus quality of work, but that is a discussion for another BLOG.