TechWhirl (TECHWR-L) is a resource for technical writing and technical communications professionals of all experience levels and in all industries to share their experiences and acquire information.
For two decades, technical communicators have turned to TechWhirl to ask and answer questions about the always-changing world of technical communications, such as tools, skills, career paths, methodologies, and emerging industries. The TechWhirl Archives and magazine, created for, by and about technical writers, offer a wealth of knowledge to everyone with an interest in any aspect of technical communications.
> Make no mistake about it, in good systems analysis/design, the developer's
> perspective is EXACTLY the same as the end-user's perspective.
Methinks you're making a mistake there. The architect's perspective must
/include/ the user's; he or she is responsible for seeing that the design
meets user needs, after all. But it is nothing like /identical/ to the
user's view, as you seem to suggest. It also includes a lot else, resource
constraints being the most obvious example.
There are various trade-offs that the architect makes. There are two main
differences between good and ghastly architecture. One is indeed whether
those choices are actually made with the user's needs firmly in mind. The
other, though, basically comes down to whether the architect has good
judgement about some complex issues of which user requirements are only
one facet.
If we're talking about implementers rather than architects it isn't even
clear that user requirements are directly relevant. If the architect got
it right and you implement the spec correctly, the user will be served.
Forget the user; read the spec.
> In the
> ideal, one software module (and it's associated procedures) accomplishes one
> end-user task. ... the overriding principle in design
> is that there should be a one-to-one correlation between essential module
> and end-user task.
Nonsense. Consider Kernighan's (or Pike? Some Unix guru, anyway) claim that
the surest test of good software design is that it works even when the user
thinks up some application that the designer never dreamed of.