Righting Software

A Method for System and Project Design

By Juval Löwy

December 2019, Addison-Wesley

Righting Software presents the proven, structured, and highly engineered approach to software design that renowned architect Juval Löwy has practiced and taught around the world. Although companies of every kind have successfully implemented his original design ideas across hundreds of systems, these insights have never before appeared in print.

Based on first principles in software engineering and a comprehensive set of matching tools and techniques, Löwy's methodology integrates system design and project design. First, he describes the primary area where many software architects fail and shows how to decompose a system into smaller building blocks, or services, based on volatility. Next, he shows how to flow an effective project design from the system design; how to accurately calculate the project duration, cost, and risk; and how to devise multiple execution options.

The method and principles in Righting Software apply regardless of your project and company size, technology, platform, or industry. Löwy starts the reader on a journey that addresses the critical challenges of software development today by righting software systems and projects as well as careers and possibly the software industry as a whole. Software professionals, architects, project leads, or managers at any stage of their career will benefit greatly from this book, which provides guidance and knowledge that would otherwise take decades and many projects to acquire.

The book comes with a rich set of example files and templates that demonstrate and automate the calculations. Download the examples here.


Programming WCF Services, 4<sup>th</sup> Edition

Programming WCF Services, 4th Edition

Design and Build Maintainable Service-Oriented Systems

By Juval Löwy & Michael Montgomery

November 2015, O'Reilly & Associates

Programming WCF Services is the authoritative, bestselling guide to Microsoft’s unified platform for developing modern, service-oriented applications on Windows. Hailed as the definitive treatment of WCF, this guide provides unique insight, rather than documentation, to help you learn the topics and skills you need for building maintainable, extensible, and reusable WCF-based applications.


Programming WCF Services, 3rd Edition

Mastering WCF and the Azure AppFabric Service Bus

By Juval Löwy

August 2010, O'Reilly & Associates

Programming WCF Services is the authoritative, bestselling introduction to Microsoft's unified platform for developing service-oriented applications (SOA) on Windows. Hailed as the most definitive treatment of WCF available, it provides insight, not documentation, to help you learn the topics and skills you need for building WCF-based applications that are maintainable, extensible, and reusable.

Author Juval Löwy revised this edition to include the newest productivity-enhancing features of .NET Framework 4 and the Azure AppFabric Service Bus, as well as the latest WCF ideas and techniques. By teaching you the why and the how of WCF programming, Programming WCF Services will help you master WCF and make you a better software engineer.


Programming WCF Services, 2<sup>nd</sup> Edition

Programming WCF Services, 2nd Edition

Building Service-Oriented Applications

By Juval Löwy

November 2008, O'Reilly & Associates

Programming WCF Services is the authoritative, bestselling introduction to Microsoft's unified platform for developing service-oriented applications (SOA) on Windows. Hailed as the most definitive treatment of WCF available, this relentlessly practical book provides insight, not documentation, to help you learn the topics and skills you need for building WCF-based applications that are maintainable, extensible, and reusable. Author Juval Lowy, Microsoft software legend and participant in WCF's original strategic design review, revised this new edition for the latest productivity-enhancing features of C# 3.0 and the .NET 3.5 SP1 Framework. The book also contains Lowy's ServiceModelEx, a framework of useful utilities, tools, and helper classes that let you simplify and automate many tasks, and extend WCF as well. With this book, you will:

  • Learn about WCF architecture and essential building blocks, including key concepts such as reliability and transport session
  • Use built-in features such as service hosting, instance management, concurrency management, transactions, disconnected queued calls, and security
  • Take advantage of relevant design options, tips, and best practices in Lowy's ServiceModelEx framework to increase your productivity and the quality of your WCF services
  • Learn the rationale behind particular design decisions, and discover poorly documented and little-understood aspects of SOA development

By teaching you the "why" along with the "how" of WCF programming, Programming WCF Services not only will help you master WCF, it will enable you to become a better software engineer.


Programming WCF Services, 1<sup>st</sup> Edition

Programming WCF Services, 1st Edition

Building SOA's with Windows Communication Foundation

By Juval Löwy

March 2007, O'Reilly & Associates

Written by Microsoft software legend Juval Lowy, Programming WCF Services is the authoritative introduction to Microsoft's new, and some say revolutionary, unified platform for developing service-oriented applications (SOA) on Windows. Relentlessly practical, the book delivers insight, not documentation, to teach developers what they need to know to build the next generation of SOAs.

After explaining the advantages of service-orientation for application design and teaching the basics of how to develop SOAs using WCF, the book shows how you can take advantage of built-in features such as service hosting, instance management, asynchronous calls, synchronization, reliability, transaction management, disconnected queued calls and security to build best in class applications. Programming WCF Services focuses on the rationale behind particular design decisions, often shedding light on poorly-documented and little-understood aspects of SOA development. Developers and architects will learn not only the "how" of WCF programming, but also relevant design guidelines, best practices, and pitfalls. Original techniques and utilities provided by the author throughout the book go well beyond anything that can be found in conventional sources.

Based on experience and insight gained while taking part in the strategic design of WCF and working with the team that implemented it, Programming WCF Services provides experienced working professionals with the definitive work on WCF. Not only will this book make you a WCF expert, it will make you a better software engineer. It's the Rosetta Stone of WCF.


Programming .NET Components 2nd Edition

By Juval Löwy

July 2005, O'Reilly & Associates

Since its publication in 2003, Programming .NET Components has established itself as the definitive reference to .NET component-oriented development as well as to the .NET Framework itself. Hailed by readers as the Rosetta stone for .NET and the Harry Potter for developers, now in a thoroughly revised second edition, Juval Lowy has updated this classic title to reflect changes introduced by the release of Visual Studio 2005 and .NET 2.0. The addition of generics, iterators and anonymous methods to .NET 2.0, as well as changes to the .NET Framework, provide new options for component development that are thoroughly explained in new examples and text. The book revisits and extends the numerous helper classes and utilities introduced in the first edition, as well as adding some two more years' worth of Juval's original techniques, ideas, and breakthroughs.

Also included in the new edition are an introduction to generics, arguably the most useful addition to .NET 2.0; a C# coding standard, which many regard as the de facto industry standard for C# development; and a bonus set of helper classes and controls such as thread-safe Windows Forms controls and security controls that utilize the ASP.NET 2.0 credential-management infrastructure.

With its focus on .NET components and interfaces as the fundamental building blocks of .NET applications, the book continues to offer a unique and thoroughly modern approach to .NET programming. Programming .NET components is packed with helpful code examples, tips, design guidelines, pitfalls and original utilities that will simplify and speed up your work. For those committed to component-based development – and those wondering if they should be – this is the .NET book to buy and keep by your side.


Programming .NET Components 1<sup>st</sup> Edition

Programming .NET Components 1st Edition

Design and Build Maintainable Systems Using Component-Oriented Programming

By Juval Löwy

April 2003, O'Reilly & Associates

Programming .NET Components offers a complete introduction to the new Microsoft .NET component model, focusing on the aspects of .NET that make it ideal for building reusable, maintainable, and robust components. Author Juval Löwy, a noted authority on component-oriented programming, teaches the intricacies of .NET component programming and the related system issues to application developers, along with relevant design guidelines, tips, best practices, and known pitfalls. The book is packed with helpful original utilities aimed at simplifying the programming model and increasing the developer productivity.

Programming .NET Components offers everything you'll need to know to program components for real-life .NET applications, using Windows Forms, ASP.NET, ADO.NET, or web services. Anyone interested in developing .NET applications, especially enterprise level, will find this book an invaluable resource.


COM and .NET Component Services

By Juval Löwy

September 2001, O'Reilly & Associates

There are two factors that make COM and .NET Component Services essential. First, .NET developers still manage many aspects of their application such as object instances, transactions, concurrency, security, asynchronous calls, disconnected work, publishing and subscribing to events, application deployment and so on. These connectivity or “plumbing” issues have almost noting to do with the functionality the end customer is paying for, and yet developers spend as much as 80% of their time on “plumbing” (and sometimes as high as 95%), instead of adding business value to their application. Not only that, but the majority of the bugs (and the time spent fixing them) are usually traced back to connectivity and plumbing defects, not to the business problem addressed by the application. COM and .NET Enterprise Services can basically take care and manage these aspects of the application, and let the developers focus on implementing the business logic. You gain not only productivity and faster time to market, but also quality because Microsoft has done excellent job in implementing these services, both in robustness and in performance. The second factor is the shift from Windows and COM based applications to .NET. Both COM and .NET relies on COM+ (called Enterprise Services in .NET) for component services (the name COM+ is therefore misleading). .NET offers exciting new application frameworks such as Web Services, ASP.NET, WinForms, WebForms, and ADO.NET. However, adopting a radically new technology such as .NET is never an easy endeavor for companies and developers. Most companies have considerable investments in existing code base and development skills. Unless companies have a compelling reason to move to .NET or a reasonable migration path, companies will avoid .NET. Because COM+ is .NET component services, COM+ can offer such a migration path for companies and developers. Companies can start (or continue) their projects in COM, using COM+ as a supporting platform for component services, and then when the time comes to move to .NET, they start plugging into the same architecture .NET components, in a very seamless manner, reusing and interacting with their existing COM components.

The book has a few unique differentiators that sets it apart from many other books:

  • The book focuses on the “how to” – practical explanations on how to apply the technology, how to overcome real life hurdles, design issues, and tradeoffs.
  • The book discusses at length how .NET components can take advantage of COM+ services.
  • The book describes the next version of COM+ on Windows XP.