32 ms·
I have two small corollaries to your description. The first is that, as the "Acknowledgements" section and the copyright page (2) implies, the target audience
by mdaniel 12y ago
I have two small corollaries to your description.
The first is that, as the "Acknowledgements" section and the copyright page (2) implies, the target audience for this type of thing is the kind of organization that enjoys the use of CMMI. It was one of the greater realizations in my career when I learned that CMMI isn't necessarily trying to improve software engineering as much as it is trying to make whatever process you have repeatable. It took you 6 months to make "hello world"? Great, please don't let it take you 5 or 7 months the next time.
And that segues into another aspect that you hinted at in your "2b, 2a, 2b" clause which is unlike traditional engineering disciplines, software engineering is almost always building something that no one has ever seen or imagined before. Thus, when asked to plan out what one is going to do that day, it's mostly "create a mental map of this unknown landscape as I discover where the theory meets the practice." It is absolutely helpful to have libraries and application servers, etc, but as for knowing _exactly_ what to type and exactly how long it should take to make another component that's shaped like the component from last week but who's innards are entirely different: good luck to us all.
- HeyLaughingBoy 12y agoYou are correct in your assessment of the main purpose of CMMI. But note that you need a repeatable way to build something before you can improve its quality. It doesn't do any good to build 100 units 100 different ways if you're going to try to make them better. However, I have to take issue with the statement that software engineering is always building something new. That's only true if you look at new houses being built and say they are each fundamentally different. Most software is very similar to many products before it. A large part of the reason that we need a Body of Knowledge is to extract the common parts and automate the making of them, or at least automate the process of making them.