We engineer software. Other just craft it
Buy it at:
See also bibliography
Practical Software Engineering: Analysis and Design for the .NET Platform
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 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.
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 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:
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.