The development of a software system takes place in three iterative and incremental phases — analysis, design and implementation. This book describes the methods and techniques used for analysis and design, with implementation issues addressed to the extent to which they must be considered in the design. The text concentrates on object-oriented software development, using the Unified Modeling Language (UML). The book uses the teach-by-example principle — all concepts are exemplified and the running case studies present integrated solutions.
The focus of the book is on developing large-scale, client/server, multi-tier object-oriented information systems. The client is a workstation with a GUI and the server manages a database. The client, server and middle-tier processes communicate via object messaging. The server database can be relational, object-relational or purely object-oriented.
The book identifies ways to:
* Improve software architectures
* Conduct testing and manage change
* Integrate analysis and design models
* Promote layered structuring of objects
* Build maintainable and scalable systems
* Harness the complexity of large system models
* Understand consequences of reckless modeling
The book can be used for undergraduate courses in computer science or information systems such as systems analysis, systems design, software engineering, databases and abject technology, as well as being a valuable resource for software projects. The book has also been written for professionals developing business information systems, such as IT managers, application developers, consultants, analysts, designers, programmers, testers, software engineers, systems integrators and educators. The text is accompanied by a comprehensive website that contains a wealth of additional material for instructors, students and professionals.
Review By: Fabrizio Stortoni 11/17/2003This book speaks of the analysis and design portions of large-scale software development projects. It centers on Object Oriented (OO) design using the Unified Modeling Language (UML). The first half of the book establishes the concepts, techniques, and underpinnings, and the later chapters extend the discussion to User Interface Design, Database Design, Program and Transaction Design, Testing, and Change Management.
It is meant to support the needs of undergraduate Computer Science courses as well as design practitioners. The material is a good introduction to OO thinking. It gives a broad and effective overview, as well as much detail on each topic. The entire range of UML modeling techniques is carefully described and illustrated – use case modeling, activity modeling, class modeling, and state chart modeling. The areas of requirements elicitation and requirements management are both presented. Is it enough information to simply go out and do it? If it is not, it is certainly enough information to tell you what additional things you might need to learn. More importantly it provides a rich conceptual framework into which to fit new and remembered facts.
The book follows a very logical outline format. This structures the topics in such a way that it’s easy to keep track of how the material you’re reading fits into the overall context. The style is academic but accessible. It is well illustrated and relies on a substantial tutorial and examples. These are drawn from real world applications such as On Line Shopping and Contact Management. Each chapter is supplemented by review questions and exercises.
Some of the material in this book was new to me, and some I already knew. I found that the topics I’m knowledgeable about were described well, and this gave me confidence that the material that was unfamiliar to me was equally well represented.
Be aware that this is a college textbook and is written as such. It makes a genuine attempt to be easy on the eyes, and it is lively in tone as well as intellectually stimulating, but if you go in expecting an easy read, you will be disappointed. The book is a useful overview, with enough detail about each topic to serve as a very thorough introduction to the field.
Finally, like every book on software, it can be useful to testers who believe that knowledge about how software is put together helps us think of effective tests. Oh, right! Referential integrity! Can I do something to this database that will break that?
This book describes the analysis and design portions of large-scale software development projects. It centers on Object Oriented (OO) design using the Unified Modeling Language (UML). The material is a good introduction to OO thinking, and illustrates the entire range of UML modeling techniques. Though it is meant to support the needs of Computer Science students and software designers, it is an excellent starting place for testers who feel the need to learn about OO concepts and tools.