We engineer software. Other just craft it

Home Company Services Process Downloads

Buy it at:

See also bibliography

Practical Software Engineering: Analysis and Design for the .NET Platform

Enricos Manassis

ISBN: 0-321-13619-5
Publisher: Addison Wesley Professional
Copyright: 2004
Format: Paper; 272 pp



During the last several years I had the opportunity to acquire and develop a variety of technical and non-technical skills. Specifically, I focused in developing my skills in the following three dimensions:

  • The process of engineering software-intensive systems. Understand Who is doing What and When, for the successful development of a software system. The success of the system being defined by the completion on time, within budget, with controlled and measured quality, fulfilling all the requirements in a traceable way.
  • Object oriented analysis and design, which is based on use-case analysis and UML design. Though UML has proven to be a powerful notation with adequate semantics in order to represent object-oriented concepts, modeling a system is really a matter of experience in translating use case specifications into meaningful object designs. This addresses the How in specific parts of the What of the process. Moreover these designs need to integrate at a detailed level within a specific technological platform.
  • The technology, more specifically the Microsoft Windows platform as an application server. I participated in the development of distributed systems, with COM and MTS initially, later with COM+ and nowadays with .NET.

The insight I have gained from these experiences is that to be successful, modern software engineering has to integrate all these three dimensions. This is also reflected in the conceptual thread in the presentation of the above three elements: The What of the process has to translate into a How of the model, which in turn has to integrate the architecture of the technology used to implement the system.

At the same time I was very conscious of the very poor ratio of success (as defined above) of building software systems. I always wonder what our modern cities would look like if our civilisation constructed buildings the way it constructs software. A lot of the people I met in the industry were lacking this consciousness, and my conclusion was that it was due to a lack of education in software engineering. Though myriads of books already address the three elements listed above separately and in great detail, they rarely ever cover all the issues at the same time. In some cases the issues are covered in such fine detail that the reader misses the vision of the whole software engineering approach.

Goals of this Book

This book has the ambition to cover in one installment the three dimensions of Process, Methods and Technology. Moreover and very importantly, it covers these issues in a concise and practical way. At the same time, this book focuses solely on the functional aspects of software development, limiting the scope of the Software Engineering discussion, but achieving to thoroughly explore this dimension, which is of direct concern to the main stakeholders of any business automation solution, that is, the business users. The approach taken is to describe the steps of the development process and the thought process that one needs to follow to go from one step to the next, going all the way to the complete solution. The book takes the point of view of a beginner to intermediate practitioner who is asked to develop an e-commerce system, using a rigorous approach to system specification, analysis and design. One way to achieve this is to read an extensive array of specialised books, each describing a specific element of knowledge to acquire. This approach is time consuming and by the time you're done you are an experienced practitioner. In contrast, this book aims to quickly give you a holistic vision of the issues involved and hence a better understanding of the process of applying a rigorous approach to software development. At the same time, you will find throughout this book a set of book references to develop detailed knowledge of the topic at hand, thus giving you directions for deeper skill development.

The precise objective is to present you with a holistic view of software development for distributed e-commerce systems. Spanning from requirements analysis to design, implementation and testing, it covers all aspects of a pragmatic approach to modern software engineering, leveraging the most current and recognized best practices.

Key features:

  • Use of a case study. A specific functionality that is implemented in the sample application is used throughout the book as a thread to demonstrate all the process activities.
  • Holistic vision of Process, Method and Technology (.NET). Presents hands-on Object-Oriented analysis and design. Describes the thought process from requirements capture to class model and code generation. Presents hands-on Software Development Process (as an instantiation of a subset of the Rational Unified Process, see the book The Rational Unified Process: An Introduction). The process is supported by the book structure itself.
  • Show the forest (the concepts) behind the tree (the design of a sample application). Provide book references to explore in more depth the new concepts introduced in each section.
  • Serve the knowledge in a way that unifies your knowledge in technology with design and process. You gain insight without being overwhelmed by extended descriptions that try to cover every element of the technology (.NET), the methods (object oriented analysis and design) and the process (Rational Unified Process).

Who should read this Book?

Practical Software Engineering: Analysis and Design for the .NET Platform is aimed at a wide range of people involved in software development. The roles that will benefit the more are those that are the most closely related to development: developers, software architects, functional architects/analysts, testers, and project managers.

This book assumes that you have a basic knowledge of software development, and an introductory understanding of object-oriented principles, use case analysis and UML notation (a very practical book for understanding UML is UML Distilled, Second Edition). It also assumes basic knowledge of the .NET framework, specifically for understanding the design and implementation models, as well as for reviewing the companion code. Throughout the book you will find references to other books for further reading. All these references are summarized at the end of the book in a practical bibliography. This bibliography constitutes a comprehensive set of resources to delve into the details of the elements of knowledge presented here. It can be seen as a bundle of books that, along with the appropriate hands-on experience, will help you achieve expertise in software engineering.

Structure of the Book

The structure of the book follows the life cycle of a single iteration in the development of the system. This structure is consistent with the principles put forward by the Rational Unified Process, albeit simplified in order to achieve the objective of practicality. We can consider the structure of the book to be a vertical slice in the Rational Unified Process, where we examine the workflows that are most relevant to the development activities.

Chapter 1 will introduce some software engineering principles to get you into the correct mindset for a practical approach to a rigorous software development process. It will also introduce the case study that will be used throughout the rest of the book. Finally, it will present the software development process, which will be followed, further underlined by the book structure itself.

The rest of the book will take you through a case study for specifying, analysing, designing and implementing a sample software system on the .NET framework, using a simple and practical approach. The book is divided in two parts that address the two main areas of concern in the software development process: part I is the system specification and part II the system design. The separation represents also the clear point in the process, where the user representatives stop their involvement in the production of development artefacts.

The structure of each chapter is organized as follows:

  • The introduction will review in some detail the concepts that will be discussed in the current chapter, and will place the activities of the chapter in the correct context within the process. This is also where you will find most of the references to books that delve into the details of the methods presented in the chapter.
  • Approach for the activity covered by the chapter. In this part you will find an introduction to the methods and techniques, which will be applied to produce the artefacts. As the objective of the book is not to cover the full details of the methods and techniques, you will also find in this section references for further reading.
  • A case study with the description of one case of developing an artefact for that activity. In this part you will find a concrete application of the described method to the corresponding part of the overall case study.
  • Summary of the chapter to stress the relationship of what you have seen in the chapter to the overall process. The strong elements of the applied technique are also pointed out.

Companion Site

The complete case study can be found at www.booksreasy.com. This is a demo site where you can work with the sample application that is featured in the book. You can also download the complete models for Rational XDE and the source code for Microsoft Visual Studio .NET. This application is useful in two perspectives:

  • It is a concise and complete sample application, which demonstrates a robust architecture for .NET systems, thus helping you acquire hands on knowledge on .NET.
  • It demonstrates the design of a .NET system using UML, round trip engineering, and the integration of Rational XDE with Microsoft Visual Studio .NET. In this perspective, the book can be seen as a tutorial to the design of the companion .NET sample.

As a consequence, you can use all the material as a robust basis for your own development projects. I encourage you to download, review and experiment with the material while reading this book.



Av. Louise 200/132, B-1050 Brussels, Belgium
T: +32 495 24 06 56  
F: +32 2 611 60 46

© softclarITy 2010 All rights reserved. Privacy | Legal