Bibliography

Aiello 2010

Configuration Management Best Practices: Practical methods that work in the real world. Aiello & Sachs. Addinson-Wesley, 2010.

As IT systems have grown increasingly complex and mission-critical, effective configuration management (CM) has become critical to an organization’s success. Using CM best practices, IT professionals can systematically manage change, avoiding unexpected problems introduced by changes to hardware, software, or networks. Now, today’s best CM practices have been gathered in one indispensable resource showing you how to implement them throughout any agile or traditional development organization.
Configuration Management Best Practices is practical, easy to understand and apply, and fully reflects the day-to-day realities faced by practitioners. Bob Aiello and Leslie Sachs thoroughly address all six “pillars” of CM: source code management, build engineering, environment configuration, change control, release engineering, and deployment. They demonstrate how to implement CM in ways that support software and systems development, meet compliance rules such as SOX and SAS-70, anticipate emerging standards such as IEEE/ISO 12207, and integrate with modern frameworks such as ITIL, COBIT, and CMMI.
Configuration Management Best Practices is the essential resource for everyone concerned with CM: from CTOs and CIOs to development, QA, and project managers and software engineers to analysts, testers, and compliance professionals.

Chrissis 2012

CMMI for Development: Guidelines for process integration and product improvement. Chrissis, Konrad & Shrum. Addison-Wesley, 2012.

CMMI® for Development (CMMI-DEV) describes best practices for the development and maintenance of products and services across their lifecycle. By integrating essential bodies of knowledge, CMMI-DEV provides a single, comprehensive framework for organizations to assess their development and maintenance processes and improve performance. Already widely adopted throughout the world for disciplined, high-quality engineering, CMMI-DEV Version 1.3 now accommodates other modern approaches as well, including the use of Agile methods, Lean Six Sigma, and architecture-centric development.
CMMI® for Development, Third Edition, is the definitive reference for CMMI-DEV Version 1.3.

Cwalina 2009

Framework Design Guidelines: Conventions, idioms, and patterns for reusable .NET libraries. Cwalina & Abrams. Addinson-Wesley, 2009.

Framework Design Guidelines, Second Edition, teaches developers the best practices for designing reusable libraries for the Microsoft .NET Framework. Expanded and updated for .NET 3.5, this new edition focuses on the design issues that directly affect the programmability of a class library, specifically its publicly accessible APIs.
This book can improve the work of any .NET developer producing code that other developers will use. It includes copious annotations to the guidelines by thirty-five prominent architects and practitioners of the .NET Framework, providing a lively discussion of the reasons for the guidelines as well as examples of when to break those guidelines.
Microsoft architects Krzysztof Cwalina and Brad Abrams teach framework design from the top down. From their significant combined experience and deep insight, you will learn the general philosophy and fundamental principles of framework design; naming guidelines for the various parts of a framework;guidelines for the design and extending of types and members of types
Issues affecting–and guidelines for ensuring–extensibility; how (and how not) to design exceptions; guidelines for–and examples of–common framework design patterns.
Guidelines in this book are presented in four major forms: Do, Consider, Avoid, and Do not. These directives help focus attention on practices that should always be used, those that should generally be used, those that should rarely be used, and those that should never be used. Every guideline includes a discussion of its applicability, and most include a code example to help illuminate the dialogue.

Duvall 2011

Continuous Integration: Improving software quality and reducing risk. Duvall, Matyas & Glover. Addison-Wesley, 2007.

For any software developer who has spent days in “integration hell,” cobbling together myriad software components, Continuous Integration: Improving Software Quality and Reducing Risk illustrates how to transform integration from a necessary evil into an everyday part of the development process. The key, as the authors show, is to integrate regularly and often using continuous integration (CI) practices and techniques.
The authors first examine the concept of CI and its practices from the ground up and then move on to explore other effective processes performed by CI systems, such as database integration, testing, inspection, deployment, and feedback. Through more than forty CI-related practices using application examples in different languages, readers learn that CI leads to more rapid software development, produces deployable software at every step in the development lifecycle, and reduces the time between defect introduction and detection, saving time and lowering costs. With successful implementation of CI, developers reduce risks and repetitive manual processes, and teams receive better project visibility.

Erl 2009

SOA Principles of Service Design. Erl, Thomas. Prentice Hall, 2008.

Erl 2010

Service-Oriented Architecture: Concepts, technology, and desing. Erl, Thomas. Prentice Hall, 2005.

A comprehensive tutorial that teaches fundamental and advanced SOA design principles, supplemented with detailed case studies and technologies used to implement SOAs in the real world. ***We’ll have cover endorsements from Tom Glover, who leads IBM’s Web Services Standards initiatives; Dave Keogh, Program Manager for Visual Studio Enterprise Tools at Microsoft, and Sameer Tyagi, Senior Staff Engineer, Sun Microsystems. All major software manufacturers and vendors are promoting support for SOA. As a result, every major development platform now officially supports the creation of service-oriented solutions. Parts I, II, and III cover basic and advanced SOA concepts and theory that prepare you for Parts IV and V, which provide a series of step-by-step “how to” instructions for building an SOA. Part V further contains coverage of WS-* technologies and SOA platform support provided by J2EE and .NET.

Erl 2010 b

SOA Design Patterns. Erl at alli. Prentice Hall, 2009.

Erl 2010 c

Web Service Contract Design & Versioning for SOA. Erl at alli. Prentice Hall, 2009.

For Web services to succeed as part of SOA, they require balanced, effective technical contracts that enable services to be evolved and repeatedly reused for years to come. Now, a team of industry experts presents the first end-to-end guide to designing and governing Web service contracts. Writing for developers, architects, governance specialists, and other IT professionals, the authors cover the following areas: understanding web service contract technologies; WSDL; XML Schema; WS-Policy; message Design with SOAP; message Design with WS-Addressing; message Design with MTOM, and SOAP with Attachments (SwA); versioning Techniques and Strategies; web service contracts and SOA.

Erl 2010 d

SOA with .NET & Windows Azure: Realizing service-orientation with the Microsoft Platform. Erl at alli. Prentice Hall, 2010.

The Authoritative Guide to Building Service-Oriented Solutions with Microsoft .NET Technologies and the Windows Azure Cloud Computing Platform
In SOA with .NET and Windows Azure, top Microsoft technology experts team up with Thomas Erl to explore service-oriented computing with Microsoft’s latest .NET service technologies and Windows Azure innovations.
The authors provide comprehensive documentation of on-premise and cloud-based modern service technology advancements within the Microsoft platform and further show how these technologies have increased the potential for applying and realizing service-orientation practices and goals.
Specifically, the book delves into Microsoft enterprise technologies, such as: Windows Communication Foundation (WCF); Windows Azure; Windows Workflow Foundation (WF); Windows Azure AppFabric; BizTalk Server; Windows Presentation Foundation (WPF); as well as industry service mediums, including WS-* and REST, and many related service industry standards and technologies.
The book steps through common SOA design patterns and service-orientation principles, along with numerous code-level examples that further detail various technology architectures and implementations.

Erl 2011

SOA Governance: Governing shared services on-premisse and in the Cloud. Erl at alli. Prentice Hall, 2011.

The Definitive Guide to Governing Shared Services and SOA Projects. The result of a multi-year project to collect proven industry practices for establishing IT governance controls specific to the adoption of SOA and service-orientation. Authored by world-renowned experts in the fields of SOA, IT governance, and cloud computing, this comprehensive book provides clear direction as to what does and does not constitute SOA governance and then steps the reader through the most important industry governance practices, as they pertain to individual SOA project lifecycle stages.
With a consistent, vendor-neutral focus, and with the help of case study examples, the authors demonstrate how to define and position precepts, organizational roles, processes, standards, and metrics. Readers benefit from thorough and visually depicted cross-references and mapping between roles, processes, precepts, and project stages, enabling them to fully explore dynamics and dependencies and thereby learn how to use these governance controls to create their own custom SOA governance systems.
This important title will be valuable to every practitioner concerned with making SOA work, including senior IT managers, project managers, architects, analysts, developers, administrators, QA professionals, security specialists, and cloud computing professionals.

Evans 2009

Domain-Driven Design: Tracking complexity in the heart of software. Evans, Eric. Addinson-Wesley, 2004.

The software development community widely acknowledges that domain modeling is central to software design. Through domain models, software developers are able to express rich functionality and translate it into a software implementation that truly serves the needs of its users. But despite its obvious importance, there are few practical resources that explain how to incorporate effective domain modeling into the software development process.
Domain-Driven Design fills that need. This is not a book about specific technologies. It offers readers a systematic approach to domain-driven design, presenting an extensive set of design best practices, experience-based techniques, and fundamental principles that facilitate the development of software projects facing complex domains. Intertwining design and development practice, this book incorporates numerous examples based on actual projects to illustrate the application of domain-driven design to real-world software development.
Readers learn how to use a domain model to make a complex development effort more focused and dynamic. A core of best practices and standard patterns provides a common language for the development team. A shift in emphasis–refactoring not just the code but the model underlying the code–in combination with the frequent iterations of Agile development leads to deeper insight into domains and enhanced communication between domain expert and programmer. Domain-Driven Design then builds on this found…

Fowler 2006

Refactoring: Improving the design of existing code. Fowler, Martin. Addison-Wesley, 1999.

Refactoring is about improving the design of existing code. It is the process of changing a software system in such a way that it does not alter the external behavior of the code, yet improves its internal structure. With refactoring you can even take a bad design and rework it into a good one. This book offers a thorough discussion of the principles of refactoring, including where to spot opportunities for refactoring, and how to set up the required tests. There is also a catalog of more than 40 proven refactorings with details as to when and why to use the refactoring, step by step instructions for implementing it, and an example illustrating how it works The book is written using Java as its principle language, but the ideas are applicable to any OO language.

Fowler 2011

Patterns of Enterprise Application Architecture. Fowler at alli. Addison-Wesley, 2003.

The practice of enterprise application development has benefited from the emergence of many new enabling technologies. Multi-tiered object-oriented platforms, such as Java and .NET, have become commonplace. These new tools and technologies are capable of building powerful applications, but they are not easily implemented. Common failures in enterprise applications often occur because their developers do not understand the architectural lessons that experienced object developers have learned.
Patterns of Enterprise Application Architecture is written in direct response to the stiff challenges that face enterprise application developers. The author, noted object-oriented designer Martin Fowler, noticed that despite changes in technology–from Smalltalk to CORBA to Java to .NET–the same basic design ideas can be adapted and applied to solve common problems. With the help of an expert group of contributors, Martin distills over forty recurring solutions into patterns. The result is an indispensable handbook of solutions that are applicable to any enterprise application platform.
This book is actually two books in one. The first section is a short tutorial on developing enterprise applications, which you can read from start to finish to understand the scope of the book’s lessons. The next section, the bulk of the book, is a detailed reference to the patterns themselves. Each pattern provides usage and implementation information, as well as detailed code examples in Java or C#. The entire book is also richly illustrated with UML diagrams to further explain the concepts.
Armed with this book, you will have the knowledge necessary to make important architectural decisions about building an enterprise application and the proven patterns for use when building them.

Fowler 2011 b

Domain-Specific Languages. Fowler & Parsons. Addinson-Wesley, 2010.

When carefully selected and used, Domain-Specific Languages (DSLs) may simplify complex code, promote effective communication with customers, improve productivity, and unclog development bottlenecks. In Domain-Specific Languages , noted software development expert Martin Fowler first provides the information software professionals need to decide if and when to utilize DSLs. Then, where DSLs prove suitable, Fowler presents effective techniques for building them, and guides software engineers in choosing the right approaches for their applications.
This book’s techniques may be utilized with most modern object-oriented languages; the author provides numerous examples in Java and C#, as well as selected examples in Ruby. Wherever possible, chapters are organized to be self-standing, and most reference topics are presented in a familiar patterns format.
Armed with this wide-ranging book, developers will have the knowledge they need to make important decisions about DSLs—and, where appropriate, gain the significant technical and business benefits they offer.
The topics covered include how DSLs compare to frameworks and libraries, and when those alternatives are sufficient; using parsers and parser generators, and parsing external DSLs; understanding, comparing, and choosing DSL language constructs; determining whether to use code generation, and comparing code generation strategies; and previewing new language workbench tools for creating DSLs

Gamma 2005

Design Patterns: Elements of reusable object-oriented software. Gamma, Helm, Johnson & Vlissides. Addison-Wesley, 1995.

Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves. * The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the software development process, and how you can leverage them to solve your own design problems most efficiently.

Highsmith 2009

Agile Project Management: Creating Innovative Products. Highsmith, Jim. Addinson-Weslei, 2009.

Today, the pace of project management moves faster. Project management needs to become more flexible and far more responsive to customers. Using Agile Project Management (APM), project managers can achieve all these goals without compromising value, quality, or business discipline. In Agile Project Management, Second Edition, renowned agile pioneer Jim Highsmith thoroughly updates his classic guide to APM, extending and refining it to support even the largest projects and organizations.
Writing for project leaders, managers, and executives at all levels, Highsmith integrates the best project management, product management, and software development practices into an overall framework designed to support unprecedented speed and mobility. The many topics added in this new edition include incorporating agile values, scaling agile projects, release planning, portfolio governance, and enhancing organizational agility. Project and business leaders will especially appreciate Highsmith’s new coverage of promoting agility through performance measurements based on value, quality, and constraints.

Humble 2011

Continuous Delivery: Reliable software releases through build, test, and development automation. Humble & Farley. Addison-Wesley, 2011.

Getting software released to users is often a painful, risky, and time-consuming process. This groundbreaking new book sets out the principles and technical practices that enable rapid, incremental delivery of high quality, valuable new functionality to users. Through automation of the build, deployment, and testing process, and improved collaboration between developers, testers, and operations, delivery teams can get changes released in a matter of hours — sometimes even minutes–no matter what the size of a project or the complexity of its code base.
Jez Humble and David Farley begin by presenting the foundations of a rapid, reliable, low-risk delivery process. Next, they introduce the “deployment pipeline,” an automated process for managing all changes, from check-in to release. Finally, they discuss the “ecosystem” needed to support continuous delivery, from infrastructure, data and configuration management to governance.
The authors introduce state-of-the-art techniques, including automated infrastructure management and data migration, and the use of virtualization. For each, they review key issues, identify best practices, and demonstrate how to mitigate risks. Whether you’re a developer, systems administrator, tester, or manager, this book will help your organization move from idea to release faster than ever—so you can deliver value to your business rapidly and reliably.

Kawalerowicz 2011

Continuous Integration in .NET. Kawalerowics & Berntson. Manning, 2011.

Continuous integration is a software engineering process designed to minimize “integration hell.” It’s a coordinated development approach that blends the best practices in software delivery. For .NET developers, especially, adopting these new approaches and the tools that support them can require rethinking the development process altogether.
Continuous Integration in .NET is a tutorial for developers and team leads that teaches readers how to re-imagine their development strategy by creating a consistent continuous integration process. This book shows how to build on the tools they already know – .NET Framework and Visual Studio – and to use powerful software like MSBuild, Subversion, TFS 2010, Team City, CruiseControl.NET, NUnit, and Selenium..

Leffingwell 2011

Agile Software Requirements: Lean requirements practices for teams, programs, and the enterprise. Leffingwell, Dean. Addinson-Wesley, 2011.

Effective requirements discovery and analysis is a critical best practice for serious application development. Until now, however, requirements and Agile methods have rarely coexisted peacefully. For many enterprises considering Agile approaches, the absence of effective and scalable Agile requirements processes has been a showstopper for Agile adoption. In Agile Software Requirements, Dean Leffingwell shows exactly how to create effective requirements in Agile environments.
This book will help you leverage the benefits of Agile without sacrificing the value of effective requirements discovery and analysis. You’ll find proven solutions you can apply right now–whether you’re a software developer or tester, executive, project/program manager, architect, or team leader.

McMahon 2011

Integrating CMMI® and Agile Development: Case studies and proven techniques for faster performance improvement. McMahon, Paul E. Addison-Wesley, 2010.

Many organizations that have improved process maturity through Capability Maturity Model Integration (CMMI®) now also want greater agility. Conversely, many organizations that are succeeding with Agile methods now want the benefits of more mature processes. The solution is to integrate CMMI® and Agile. Integrating CMMI® and Agile Development offers broad guidance for melding these process improvement methodologies. It presents six detailed case studies, along with essential real-world lessons, big-picture insights, and mistakes to avoid.
Drawing on decades of process improvement experience, author Paul McMahon explains how combining an Agile approach with the CMMI® process improvement framework is the fastest, most effective way to achieve your business objectives. He offers practical, proven techniques for CMMI® and Agile integration, including new ways to extend Agile into system engineering and project management and to optimize performance by focusing on your organization’s unique, culture-related weaknesses.

Metsker 2007

Design Patterns in C#. Metsker, Steven J. Addison-Wesley, 2004.

This book is an application book, rather than a theoretical one. It is written for software practitioners who want to gain a better understanding of the patterns described in the seminal design patterns book by Gamma et al. The book’s intent is to give developers the confidence and know-how to apply the original 23 patterns identified in the Gamma book, with all code examples provided in C#. There are a large number of programmers and designers who have “grown up” in the Microsoft environment. Traditionally, this environment has not placed an emphasis on structured approaches to software engineering (such as patterns), but there is a growing sentiment toward applying proven approaches to application development (such as design patterns) in this environment. For this reason, the timing for this new book from patterns expert Steve Metsker is superb.

Nilsson 2011

Applying Domain-Driven Design and Patterns: With Examples in C# and .NET. Nilsson, Jimmy. Addison-Wesley, 2006.

Applying Domain-Driven Design and Patterns is the first complete, practical guide to leveraging patterns, domain-driven design, and test-driven development in .NET environments. Drawing on seminal work by Martin Fowler and Eric Evans, Jimmy Nilsson shows how to customize real-world architectures for any .NET application. You’ll learn how to prepare domain models for application infrastructure; support business rules; provide persistence support; plan for the presentation layer and UI testing; and design for service orientation or aspect orientation. Nilsson illuminates each principle with clear, well-annotated code examples based on C# 2.0, .NET 2.0, and SQL Server 2005. His examples will be valuable both to C# developers and those working with other .NET languages and databases — or even with other platforms, such as J2EE.

Weigers 2003

Software Requirements: Practical techniques for gathering and managing requirements throughout the product development cycle. Wiegers, Karl E. Microsoft Press, 2003.

 
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: