pse logo

Maciaszek L.A. and Liong B.L. (2005):
Practical Software Engineering
Addison Wesley, 864p.

addison logo

Outline and Organization

The distinctive character of this book stems from two endeavors. Firstly, this book is about the way software engineering is done in practice. Secondly, it is about software engineering for enterprise applications. The following description of what enterprise applications include and what exclude applies fully to this book: "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, two minicases with related exercises, a large number of supporting examples, tutorials to review basic modeling and programming concepts, and end-of-chapter problem-solving exercises which contain mostly case-study exercises. The organization that is a reference for the case-study, and for some minicases and examples, is a company specializing in advertising expenditure measurement. The book names this organization after its core business activity - AEM (in reality the organization has been ACNielsen's Nielsen Media Research - Sydney, Australia). The case-study is Email Management (EM) - a subsystem of AEM's Contact Management (CM) system.

As shown in a Venn diagram below - AEM is the business, CM is one of the business domains, and EM is the case-study. Examples and minicases are drawn from a cross-section of domains of the AEM business, including CM. Some examples are not related to AEM.  The case-study is enriched by examples and by case-study exercises. Tutorials are used to quickly teach introductory topics with relation to UML modeling, Java programming, relational databases, GUI construction, and working with business components.

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 show how to apply this knowledge on software projects. For given requirements, the book iteratively develops design and implementation models. Case-study, minicases, 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, modeling languages, engineering tools, project planning, and process management. The next three parts (B, C, and D) introduce the case-study, minicases and examples. The discussion in these three parts concentrates on the methods, techniques, processes, and development environments of software engineering.

Parts B, C and D correspond to three project (case-study) iterations. Each iteration starts with use case specifications enriched by an initial object model. The generic theory and practical knowledge underpinning each iteration are explained prior to demonstrating the case-study design and programming solutions. Any knowledge specific to the case-study solutions, and without significant generic appeal, is presented within or as a subsection of the case-study discussion. Each iteration results in a complete solution and concludes with a chapter that contains the source code with necessary annotations and references to explanations in prior chapters.

Part B (From Requirements via Architectural Design to Software Release) starts by giving the business context for the EM case-study. The first two chapters in this part present the business object model for AEM and the domain object model for CM. Next, the EM requirements are defined and the EM Iteration 1 is successively developed. The cornerstone of the first iteration is a sound architectural design amenable to successive stepwise enhancements. The "deliverable" of the first iteration is the software release to the users.

Part C (Software Refactoring and User Interface Development) concentrates on determining the front-end of the system and on the presentation and domain layers of the application. It discusses the graphical user interface (GUI) design, including a Web-enabled front-end. The transformation from Iteration 1 to Iteration 2 is achieved through architectural refactoring and the development of an attractive user interface.

Part D (Data Engineering and Business Components) moves the focus point from the system front-end to its backbone and to the middle-tier. This part discusses the storage and manipulation of data, implementation of business rules, transaction processing and security control. It explains also how the application logic can be moved to an application server in the middle-tier.

Although Iteration 3 of the case-study is developed from Iteration 2, Part C and D of the book can be studied relatively independently. A reader can elect to concentrate on one of these parts and only page through the other part. For example, a database designer/programmer may have a marginal interest in Part C, whereas a GUI designer or Java programmer may have a marginal interest in Part D. An expectation is that some readers will concentrate on Parts A and B of the book and will fully identify with Parts C and D after a period of experimentation and gaining better appreciation of knowledge contained in earlier parts. It is also possible, in more advanced project-oriented courses, to begin using the book from Part B.

From the total number of twenty three chapters in the book, six chapters are completely dedicated to the EM case-study (these are chapters 8, 13, 14, 18, 19, and 23). The educational value of these six chapters is through understanding and analyzing the case-study. This is an ultimate in "learning-by-example". By contrast, the first five chapters (Part A) explain the foundations of software engineering and they do not refer to the case-study. The remaining twelve chapters have both theoretical parts and the parts that link the theory to the case-study, minicases or other examples. 

About Us | Site Map | Contact Us | ©2005 Pearson Education - Addison Wesley