270 likes | 288 Views
Read about Parnas and Clements' innovative approach to creating effective software documentation through rational design processes and the importance of user-centered manuals. Explore how utilizing rational agents can enhance documentation quality and communication between stakeholders. Discover practical tools and methods for developing coherent documentation that meets user needs and facilitates software maintenance. Gain valuable insights into the challenges and benefits of fake documentation practices.
E N D
Parnas and Clements:A Rational Design Process: How and Why to Fake It • IEEE TSE, vol SE-12, no. 2, Feb. 1986 • The Goal of Software Software Engineering: A Rational Design Process • What is a rational agent? • Considers all choices thoroughly and correctly • Perfectly documents all results • Sounds great, but… Parnas and Clement 86
There Is No Rational Agent • Lots of reasons: • Customers don’t know what they want, • don’t know everything we need in advance, • we’re only human, • external change, • preconceived notions, • economic limitations… • the list goes on • We abandon “rational” design. . . Parnas and Clement 86
Why Document? • Requirements: User <-> Developer communication, estimation, turnover insurance, establishing desired behavior • Module: Work assignments, cross-module-implementer communication, module connection overview • Future: Maintainers need a way to learn the system • Others, too Parnas and Clement 86
What’s Wrong With Most Documentation? • Poor Organization (mostly “stream of consciousness” or “stream of execution”) • Both nearly impossible to find anything when you look for something • Boring prose • Confusing/inconsistent terminology • Myopic viewpoint (too close to system when written) • . . . wouldn’t it be nice to have the “rational” documentation? Parnas and Clement 86
Fake It! • Imagine yourself as the ideal agent, and write the documentation you would have produced • Design the documentation • Separation of concerns: One system aspect for one section, no more, no less • Document what is important, with the addition of rejected design decisions • Justification: Even Mathematics, the very definition of “rational”, works this way: Results preferred over precise history of an idea Parnas and Clement 86
Conclusions • Result: Useful documentation that can be produced in the real world • Unlike other papers presented, these ideas are still revolutionary • Unfortunately, few people do this. (In fact, people are often shocked if you do.) • Tells us what we want, but not how to get it Parnas and Clement 86
Related 1: User’s Manual as Requirements Specification • Berry, Daudjee, et al. May 2001 • Summary: The desirable properties of a users manual are the same as the desirable properties of a requirements specification. • So write the Requirements Specification in the form of a User’s Manual Berry, Daudjee, et al. 2001
What Properties? • Requirements elicitation • Communication • Client can understand user’s manuals where they may not understand other standard requirements documents • Programmers can see exactly what the requirements are calling for • Validation • Customer’s ideas versus designer’s ideas • Code versus features Berry, Daudjee, et al. 2001
Why User’s Manual? • To write one, one must have: • A complete understanding of each use the system will be put to (use cases) • We can write one for each type of user, to ensure feature coverage (developer vs. user vs. administrator) • Provides scenarios which can be used as test cases • Enforces user-centered design (can’t write manual to the developers) • Exposes ambiguities Berry, Daudjee, et al. 2001
Related 2: Software Documents: Concepts and Tools • Jim Welsh, Jun Han in Software - Concepts and Tools (vo15, no. 1, 1994) • Summary: all results of the software engineering process can be considered as documents. • Source Code: a carefully specified formal document that can be executed by a computer. Welsh and Han 94
Ideal Development Environment • Set of Documents focusing on required features. • Set of Tools help us maintain the documents (i.e. consistency across versions): • starting with the loosest, informal specifications. • moving toward fully formal specifications. • ending up with actual source code (literate program) Welsh and Han 94
Tools: Rational Assistants • verification of code • tie together the original specification, the formal specification, and the actual code. • improve the ease of formally validating code. • Improve level of connectivity • automated consistency checks: e.g. propagate a variable name change across all code. • analyze certain changes. Welsh and Han 94
Extending Parnas’s work • A concrete way to achieve the goals Parnas and Clements lay out. • By improving our tools, we improve our ability to create coherent documents. • contain all of the information we may be interested. • from the start through to the finish. • If the proposed "Software Documents" existed, it would be much easier to produce "Rational Documentation." Welsh and Han 94
Related 3: A Development Method for Multiagent Systems • J. Lind 2000 • Summary: a pragmatic process model for the development of multiagent systems based on the combination of standard SE techniques using 7 views. • The approach applied and refined successfully in various industrial research projects. J. Lind 2000
MASSIVE view • MASSIVE: MultiAgent SystemSInterative View Engineering J. Lind 2000
View-oriented Modeling? • “View" is a projection of the root model of the system with only a certain type of information in it. • Projection: is analogous with geometric projection of multi-dimensional objects into lower dimensions. • A “Model” for the creation of multiagent systems based on the idea of creating and using seven "views" on the system. J. Lind 2000
Iterative View Engineering • How to create the views and models? • Combines: • Roundtrip Engineering (Balzert 98) • Iterative Enhancement (Basili and Turner 75) • Using IE as a repeated subprocess to extend RE • Adding IE steps to the creation of the model, the implementation • Adding trips around the whole process J. Lind 2000
Extending Parnas’s work • adding to the corpus of work on abstract documentation processes. • using the observations Parnas and Clements made about rational design processes. • “any specification is initially incomplete” • Parnas and Clements provided useful ideas for the difficult problem of developing documentation, and software. J. Lind 2000
Uncited: A Pragmatic Approach to Software Documentation • Klaus Didrich, Torsten Klein 1996 • Summary: The author extends Literate Programming to work in more situations then traditional Literate Program Didrich Klein 1996
Quick Sidebar: What is Literate Programming? • Developed by Knuth in his paper “Literate Programming”, The Computer Journal, 27(2):97-111, 1984 • Principle: Focus on documentation over code, write both in same file • Uses a tool to construct source code files from the doc/code hybrid files Didrich, Klein 1996
Dosfop Diagram Didrich Klein 1996
Problems • A language on top of a language increases complexity and learning time • Languages have changed • Need for code re-ordering reduced by increased granularity of OO and functional programming • More real programming modules work across multiple files, which original Literate Programming specs handled poorly Didrich Klein 1996
Why Should This Paper Cite Parnas? • It must be possible to integrate quick-and-dirty code and only later document it • This is a way of faking a rational design process Didrich Klein 1996