[Eduardo Fernandez] This is a position paper intended for Workshop 12 . I don't have time to include my example but will bring it to OOPSLA . GOOD ANALYSIS AS THE BASIS FOR GOOD DESIGN AND IMPLEMENTATION The majority of the papers published about OO as well as the majority of textbooks concentrate on implementation . Books on Java , C++, and other languages outnumber by far the books on OOA /OOD . This reflect the emphasis of professional programmers in implementing as soon as possible. Another trend is the use of design patterns , this group performs design , but usually skips analysis. This lack of appreciation for the value of analysis is reflected in the quality of the analysis performed in industry , many of the analysis examples shown in textbooks , journal articles , and conferences contain errors or are unrealistic (cats, dogs, pizzas,...). In my opinion this neglect of analysis is a very serious mistake ; there is no hope to produce a good design ,much less a good implementation if the analysis stage is not of a high quality. High quality analysis is characterized by : -- It is an accurate representation of the requirements . Without this condition , the other stages will require extensive redoing. -- It is a clear conceptual model . The model reflects the complexities of the application but does not introduce complexities of its own. -- It has no implementation concepts ; that is, it reflects only the problem to be solved . -- It is easily modifiable. Small changes in the requirements result in small changes in the model ,e.g., a new attribute, a new relationship, but not a substantial redesign. -- It is extensible. Its parts should be easily reusable in new applications. -- It reflects both static and dynamic aspects of the problem . Many solutions ignore dynamic aspects. Similar measures of quality apply to the design model, except for implementation aspects, now we can worry about performance and architectures. Good OOA is difficult . I have observed this in the work of my students , both full-time and industry. One can see this also in the literature , where one frequently encounters errors such as : -- Implementation aspects . Classes describing records, files, databases, are mixed with the conceptual model classes. -- Wrong use of inheritance . Implementation inheritance is used ,which results in logically-incorrect models . -- Confusion in the use of relationship and aggregation. I use a student registration model from a textbook to illustrate some of these points. I compare my solution to the solution presented in the textbook and to others . How can we improve the quality of analysis and design ? I have the following suggestions: --- Make all the project programmers participate in the analysis and design stages , not just the implementation stage. --- Make some of your developers become OOA experts. This is a well-justified investment. --- Collect and study examples of good analysis . There are some around if you look carefully. --- Use OOA experts as consultants to review your analysis and design before you start implementing. It can save time and money. . ------------------------------------------------------------------------------------------------------------------------------------------------------------ Address of speaker : Dr. E.B.Fernandez Dept. of Computer Science and Eng. Florida Atlantic University Boca Raton, FL 33431 ed@cse.fau.edu http:// www.cse.fau.edu/~ed Tel. (561)367-3466 Fax (561)367-2800 Resume of speaker Eduardo B. Fernandez is a professor in the Department of Computer Science and Engineering at Florida Atlantic University in Boca Raton, Florida.He has worked at the NASA Satellite Tracking Station in Santiago,Chile ,taught at the University of Chile and the University of Miami,and researched the security and performance aspects of database systems at the Los Angeles Scientific Center of IBM. He started working on security models at the Los Angeles Scientific center of IBM Corp. in 1973 and has published a book and numerous papers on this subject. His research includes authorization policies and models for relational and object-oriented databases, security for hypertext documents, object-oriented and formal models for security,and architectural aspects. He introduced a course in object-oriented design at Florida Atlantic University in 1986. Currently this is one of the most popular courses of this department.He has added a new course on advanced topics of object-oriented design ,covering aspects such as concurrency,real-time aspects,patterns, distributed systems and CORBA architectures. His research on this topic includes state analysis of object-oriented systems ,sequences of use cases ,inventory patterns, and combination of object-oriented and structured design methodologies . He has also published numerous papers on database performance and fault-tolerant architectures. Eduardo Fernandez holds a MS degree in EE from Purdue University and a Ph.D in Computer Science from UCLA. He is a Senior Member of IEEE and a Member of ACM. He is an active industry consultant and participant at conferences.