Practical Software Engineering: A Case-Study Approach
by:
Maciaszek & Liong
|
On-line Price:
$130.96 (includes GST)
Paperback w/ CD package 864
13%Off Retail Price
You
save: $19.00
Usually ships within 3-5 business days. We will advise you if a delay or price change is expected.
|
Retail Price:
$149.96
Publisher:
PRENTICE HALL,2004-09-28 00:00:00
Category:
SOFTWARE ENGINEERING Level: B/I/A
ISBN: 0321204654 ISBN13: 9780321204653
|
| Add to Shopping Cart |
Description The distinctive character of this book stems from two endeavors. First, this book is about the way software engineering is done in practice. Second, it is about software engineering for enterprise applications. "Enterprise applications include payroll, patient records, shipping tracking, cost analysis, credit scoring, insurance, supply chain, accounting, customer service, and foreign exchange trading. Enterprise applications don't include automobile fuel injection, word processors, elevator controllers, chemical plant controllers, telephone switches, operating systems, compilers, and games." (Fowler, 2003, p.3). The book is pivoted on one main case-study, a large number of supporting examples, and end-of-chapter problem-solving exercises consisting of case-study exercises and minicases. A particular organization that the case-study, problem-solving exercises and most examples are derived from is a company specializing in advertising expenditure measurement. The book endeavors to give broad software engineering knowledge and to provide background information prior to presenting case-study solutions. However, a distinguishing emphasis of the book is to concentrate on support skills for system design and programming. For given requirements, the book iteratively develops design and implementation models. Case-study, examples and problem-solving exercises are carefully selected to emphasize various aspects of software development as necessitated by unique characteristics of different applications and target software solutions. The book consists of four parts. Part A (Software projects) discusses software lifecycle, software engineering tools, project planning, budgeting and scheduling, project quality, risk management, and change management. The next three parts (B, C, and D) concentrate on methods, techniques, processes, and development environments of software engineering. The case-study, examples and problem-solving exercises are based on the experience gained from a large ACNielsen project. For pedagogical reasons, industrial problems and solutions have been simplified and re-implemented specifically for the purpose of the book. Occasionally, for comparative purposes, more than one programming environment has been used in presented solutions. All programming code, including code not presented in the text, is available on the book's website. The code is mostly Java accessing Oracle database.
Features and Benefits Education in mind. The book was written with education in mind. The case-study, examples and problem-solving exercises are not just plainly taken from real-world solutions; they are molded to suit educational needs. Real-world solutions are part of a complex business and software implementation context. That context is likely to be overwhelming and uninteresting to a reader, so it is simplified as much as possible. Presentation of GUI and database designs as well as programming examples eliminates unnecessary dependencies, "information noise" and repetitive tasks. Annotated solutions. There are no black-or-white, true-false, zero-one solutions in information systems. Frequently a solution serves a particular purpose and may look plainly wrong when analyzed from a different perspective. Therefore, answers and solutions are carefully annotated. Alternative solutions. Sometimes a single solution, no matter how annotated and explained, is not distinguishingly better from other potential solutions. To this aim, alternative solutions are frequently provided and explained. Review questions to reinforce the reader's knowledge by insightful questions to each chapter. The questions are divided into discussion questions and case-study questions. Problem-solving exercises to challenge the reader to attempt extended or alternative solutions to the case-study and to the minicases specifically introduced for each chapter. Website with complete set of supporting material, including models and programming code (mostly UML, Java and database (Oracle) code). Whenever possible, the files are provided in interchange formats suitable for migration (importing) to other tools and development environments Emphasis on principles. There are some well-defined principles of good software engineering and system development. The book identifies and explains these principles and makes linkages to more complete sources of information.
Table Of Contents Preface Part A Software Projects 1 Software Lifecycle 1.1 From Inception to Retirement 1.2 Software Production Process 1.3 Software Maintenance Process Review Questions Problem-Solving Exercises 2 Software Engineering Tools 2.1 Project Management Tools 2.2 System Modeling Tools 2.3 Software Programming Environments 2.4 Change Management Tools Review Questions Problem-Solving Exercises 3 Project Planning, Budgeting and Scheduling 3.1 Project Plan Development 3.2 Project Cost Management 3.3 Project Time Management Review Questions Problem-Solving Exercises 4 Project Quality and Risk Management 4.1 Quality Prerequisites 4.2 Software Metrics 4.3 Software Testing 4.4 Risk Response Control Review Questions Problem-Solving Exercises 5 Change Management 5.1 Requirements Traceability 5.2 Defect Management 5.3 Enhancement Management 5.4 Software Configuration Management Review Questions Problem-Solving Exercises Part B Starting the Project 6 Business Object Model 6.1 Advertising Expenditure Measurement - The Business 6.2 Business Context Diagram 6.3 Business Use Case Model 6.4 Business Glossary 6.5 Business Class Model Summary Key Terms Review Questions Problem-Solving Exercises 7 Domain Object Model 7.1 Contact Management - The Domain 7.2 Domain Use Case Model 7.3 Domain Glossary 7.4 Domain Class Model Summary Key Terms Review Questions Problem-Solving Exercises 8 Iteration 1 Requirements and Object Model 8.1 Use Case Model 8.2 Use Case Document 8.3 Conceptual Classes 8.4 Supplementary Specification Summary Key Terms Review Questions Problem-Solving Exercises 9 Architectural Design 9.1 Architectural Layers and Dependency Management 9.2 Architectural Frameworks 9.3 Architectural Patterns Summary Key Terms Review Questions Problem-Solving Exercises 10 Database Design and Programming 10.1 Quick Tutorial in Relational Databases from Software Engineering Viewpoint 10.2 Mapping Transient Objects to Persistent Records 10.3 Database Design and Creation for Email Management Summary Key Terms Review Questions Problem-Solving Exercises 11 Class and Interaction Design 11.1 Finding Classes from Use Case Requirements 11.2 Architectural Elaboration of Class Design 11.3 Interactions 11.4 Interactions for Email Management Summary Key Terms Review Questions Problem-Solving Exercises 12 Programming and Testing 12.1 Quick Tutorial in Java from Software Engineering Viewpoint 12.2 Test-Driven Development 12.3 Acceptance and Regression Testing 12.4 Iteration 1 Runtime Screenshots Summary Key Terms Review Questions Problem-Solving Exercises 13 Iteration 1 Annotated Code 13.1 Code Overview 13.2 Package Acquaintance 13.3 Package Presentation 13.4 Package Control 13.5 Package Entity 13.6 Package Mediator 13.7 Package Foundation Summary Key Terms Review Questions Problem-Solving Exercises Part C Emphasis on Presentation and Domain Logic 14 Iteration 2 Requirements and Object Model 14.1 Use Case Model 14.2 Use Case Document 14.3 Conceptual Classes and Relational Tables 14.4 Supplementary Specification Summary Key Terms Review Questions Problem-Solving Exercises 15 Architectural Refactoring 15.1 Refactoring Targets 15.2 Refactoring Methods 15.3 Refactoring Patterns 15.4 Refactored Class Model Summary Key Terms Review Questions Problem-Solving Exercises 16 User Interface Design and Programming 16.1 User Interface Design Guidelines 16.2 User Interface Components 16.3 User Interface Event Handling 16.4 User Interface for Business Components 16.5 User Interface Design and Programming in Email Management Summary Key Terms Review Questions Problem-Solving Exercises 17 Web-based User Interface Design and Programming 17.1 Enabling Technologies for Web Pages 17.2 Enabling Technologies for Web Server 17.3 Transactions on Stateless Internet Systems 17.4 Web Design Patterns Summary Key Terms Review Questions Problem-Solving Exercises 18 Inheritance, Visibility and Exception Handling 18.1 Visibility 18.2 Polymorphism 18.3 Polymorphism Patterns 18.4 Database Exception Handling 18.5 Database Concurrency Control 18.6 Java Exception Handling 18.7 Java Threats and Synchronization Summary Key Terms Review Questions Problem-Solving Exercises 19 Iteration 2 Annotated Code 19.1 Database Code 19.2 Web Code 19.3 Acquaintance and Libraries Code 19.4 Presentation Layer Code 19.5 Control Layer Code 19.6 Domain Layer Code 19.7 Foundation Layer Code 19.8 Iteration 2 Runtime Screenshots Summary Key Terms Review Questions Problem-Solving Exercises Part D Emphasis on Data Sources 20 Iteration 3 Requirements and Object Model 20.1 Use Case Model 20.2 Use Case Document 20.3 Conceptual Classes and Relational Tables 20.4 Supplementary Specification Summary Key Terms Review Questions Problem-Solving Exercises 21 Business Rules and Transactions 21.1 Where to Program Business Rules? 21.2 Declarative Integrity Rules 21.3 Procedural Integrity Rules 21.4 Where to Program Business Logic? 21.5 Business Transactions Summary Key Terms Review Questions Problem-Solving Exercises 22 Persistence Design 22.1 Specific versus Generic Design 22.2 JDBC 22.3 SQLJ 22.4 Persistence Patterns Summary Key Terms Review Questions Problem-Solving Exercises 23 Transaction Design 23.1 Transactions in Application 23.2 Transactions in Database 23.3 Transaction Patterns Summary Key Terms Review Questions Problem-Solving Exercises 24 Business Components 24.1 BC4J 24.2 EJB 24.3 Java Server Pages 24.4 XML with JSP Summary Key Terms Review Questions Problem-Solving Exercises 25 Iteration 3 Annotated Code 25.1 Database Code 25.2 Web Code 25.3 Acquaintance and Libraries Code 25.4 Presentation Layer Code 25.5 Control Layer Code 25.6 Domain Layer Code 25.7 Foundation Layer Code 25.8 Iteration 3 Runtime Screenshots Summary Key Terms Review Questions Problem-Solving Exercises 26 Planning Next Iterations 26.1 Querying Database 26.2 Transactions 26.3 Exception Handling 26.4 Concurrency 26.5 Recovery 26.6 Security Summary Key Terms Review Questions Problem-Solving Exercises Appendix on the Web 27 UML Models 28 Java Code 29 Database Code Appendix Bibliography Index
|