1
Suggestions and Requests / Re: Software Engineering Standards - IEEE SRS SDD
« on: December 06, 2007, 11:19:12 am »Quote
I suppose, all I'm trying to say is, for the sake of your own sanity, consider why documentation has failed this craft before.
To me it's not because it was not well structured. Further, I have read through ALL of the last three pages looking (yet again) for "good ideas". Yet I am still not convinced that the "structured analysis" approach is feasible. Every day that work I see trade offs, concessions, bitter and sometimes "better" arguments about ....
While we are straying quite confidently from the topic, I'll make the point that we are dealing with a double edged sword. The reason that the industry adopted structured approaches was because of the utter failure of unstructured approaches. Does any one remember the time before the UML and why all the competing methodologies came about? And why the UML was formed between three competing, overlapping, popular methods. And why structured documentation by various agencies was developed and refined?
While structured approaches have their problems, the alternative is quite unacceptable. The challenge is using a structured approach effectively. It needs to be flexible for the project's scale and purpose (and I believe, Bruce, this is the real problem). In this respect, I do appreciate the anecdotal "projects" presented.
The people using it also need to be able to communicate effectively. If you've been following the educational trends, the demand for better communication skills by industry and government has changed curricula across the world. Also, consider the time it takes for a new employee to understand a project with and without structure. What about accountability? I could go on (and I have). No, I don't believe abandoning the "structured approach" way of doing things is a viable solution.
So, if all you want to do is string two cans between your's and grandma's house, your structured approach should be scaled way down to fit the need, not the other way around. If you want to use electric wiring and cell towers, it should scale up. If you want to use existing tech, it might even scale down further:
Customer: "I just want to make a phone call"
Requirement: "User must make a phone call."
Design: "Use existing phone to make phone call. See existing phone documentation."
Implementation: "Educate user to pickup the phone and make phone calls."
Test: "Check that phone works as per phone documentation."
Parents do this with their children all the time. Just because some of these things are obvious doesn't mean they are not done. They are just not done in a formal manner.
Many people skip the idea of requirements because of the "obvious" nature many of them represent. The mind tends to realize the requirement and dismiss it immediately as the (design) solution forms. We are trained like this from infancy. But, when we are dealing with particularly hairy problems, the solutions are not as obvious. We think though what the problem's parts need. By breaking down a problem, we get back to familiar territory, see the need (requirement) and form the solution (design). Again, the "need -> solution" process is fairly instantaneous in our minds. Why we get stuck on problems is due to the unclear nature of the needs for the problem.
Problem: How do I make an anti-gravity machine?
Need: An understanding of how the gravitational energy for the force is generated and can be manipulated.
Solution: Currently, none exists.
Why: We know that gravity (force) exists, but nothing about its energy's source (i.e. some hypotheses, nothing testable).
Hopefully, I successfully redirected back to structured requirements and design for SE (but not entirely back to IEEE SRS and SDD).
