How we did it:
For any feedback, any questions, any notes or just for chat - feel free to follow us on social networks
Michael C. Feathers
The average book on Agile software development describes a fairyland of greenfield projects, with wall-to-wall tests that run after every few edits, and clean & simple source code.
The average software project, in our industry, was written under some aspect of code-and-fix, and without automated unit tests. And we can't just throw this code away; it represents a significant effort debugging and maintaining. It contains many latent requirements decisions. Just as Agile processes are incremental, Agile adoption must be incremental too. No more throwing away code just because it looked at us funny.
Mike begins his book with a very diplomatic definition of "Legacy". I'l skip ahead to the undiplomatic version: Legacy code is code without unit tests.
Before cleaning that code up, and before adding new features and removing bugs, such code must be de-legacified. It needs unit tests.
To add unit tests, you must change the code. To change the code, you need unit tests to show how safe your change was.
The core of the book is a cookbook of recipes to conduct various careful attacks. Each presents a particular problem, and a relatively safe way to migrate the code towards tests.
Code undergoing this migration will begin to experience the benefits of unit tests, and these benefits will incrementally make new tests easier to write. These efforts will make aspects of a legacy codebase easy to change.
It's an unfortunate commentary on the state of our programming industry how much we need this book.
Ralph Johnson, Erich Gamma, John Vlissides, Richard Helm
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. Each pattern describes the circumstances in which it is applicable, when it can be applied in view of other design constraints, and the consequences and trade-offs of using the pattern within a larger design. All patterns are compiled from real systems and are based on real-world examples. Each pattern also includes code that demonstrates how it may be implemented in object-oriented programming languages like C++ or Smalltalk. 0201633612B07092001
This volume is a handbook for enterprise system developers, guiding them through the intricacies and lessons learned in enterprise application development. It provides proven solutions to the everyday problems facing information systems developers.
Features the best practices in the art and science of constructing software--topics include design, applying good techniques to construction, eliminating errors, planning, managing construction activities, and relating personal character to superior software. Original. (Intermediate)
Martin Fowler, Kent Beck
Users can dramatically improve the design, performance, and manageability of object-oriented code without altering its interfaces or behavior. "Refactoring" shows users exactly how to spot the best opportunities for refactoring and exactly how to do it, step by step.
This practical book includes a tutorial of the entire set of Windows and .NET APIs required to write concurrent programs. Because so much of the threading and synchronization features of the platform are Windows-general, the author, Joe Duffy, focuses first on the general behavior and then on the API details of native and managed code. Interspersed among the tutorial are many difficult-to-discover, useful insights, and internal details about how things work.
Shows developers how COM operates and how to use it to create efficient and stable programs consistent with the COM philosophy, allowing disparate applications and components to work together across a variety of languages, platforms, and host machines. Original. (Advanced).
The first edition of this book was released at the 2001 Tech-Ed conference in Atlanta, Georgia. At that time, the .NET platform was still a beta product, and in many ways, so was this book. This is not to say that the early editions of this text did not have merit—after all, the book was a 2002 Jolt Award finalist and it won the 2003 Referenceware Excellence Award. However, over the years that author Andrew Troelsen spent working with the common language runtime (CLR), he gained a much deeper understanding of the .NET platform and the subtleties of the C# programming language, and he feels that this fifth edition of the book is as close to a “final release” as he’s come yet. This new edition has been comprehensively revised and rewritten to make it accurately reflect the C# 4 language specification for the .NET 4 platform. You’ll find new chapters covering the important concepts of dynamic lookups, named and optional arguments, Parallel LINQ (PLINQ), improved COM interop, and variance for generics. If you’re checking out this book for the first time, do understand that it's targeted at experienced software professionals and/or graduate students of computer science (so don't expect three chapters on iteration or decision constructs!). The mission of this text is to provide you with a rock-solid foundation in the C# programming language and the core aspects of the .NET platform (assemblies, remoting, Windows Forms, Web Forms, ADO.NET, XML web services, etc.). Once you digest the information presented in these 25 chapters, you’ll be in a perfect position to apply this knowledge to your specific programming assignments, and you’ll be well equipped to explore the .NET universe on your own terms. What you’ll learn Be the first to understand the .NET 4 platform and Visual C# 2010. Discover the ins and outs of the leading .NET technology. Learn from an award-winning author who has been teaching the .NET world since version 1.0. Find complete coverage of the WPF, WCF, and WF foundations that support the core .NET platform. Who this book is for This book is for anyone with some software development experience who is interested in the new .NET Framework 4 and the C# language. Whether you are moving to .NET for the first time or are already writing applications on .NET 2.0 or .NET 3.5, this book will provide you with a comprehensive grounding in the new technology and serve as a complete reference throughout your coding career. Table of Contents The Philosophy of NET Building C# Applications Core C# Programming Constructs, Part I Core C# Programming Constructs, Part II Defining Encapsulated Class Types Understanding Inheritance and Polymorphism Understanding Structured Exception Handling Understanding Object Lifetime Working with Interfaces Understanding Generics Delegates, Events, and Lambdas Advanced C# Language Features LINQ to Objects Configuring NET Assemblies Type Reflection, Late Binding, and Attribute-Based Prog Processes, AppDomains, and Object Contexts Understanding CIL and the Role of Dynamic Assemblies Dynamic Types and the Dynamic Language Runtime Multithreaded and Parallel Programming File I/O and Object Serialization ADO.NET Part I: The Connected Layer ADO.NET Part II: The Disconnected Layer ADO.NET Part III: The Entity Framework Introducing LINQ to XML Introducing Windows Communication Foundation Introducing Windows Workflow Foundation 40 Introducing Windows Presentation Foundation and XAML Programming with WPF Controls WPF Graphics Rendering Services WPF Resources, Animations, and Styles WPF Control Templates and UserControls Building ASP.NET Web Pages ASP.NET Web Controls, Master Pages and Theme ASP.NET State Management Techniques
Authored by Roberto Ierusalimschy, the chief architect of the language, this volume covers all aspects of Lua 5---from the basics to its API with C---explaining how to make good use of its features and giving numerous code examples. (Computer Books)
Demonstrating how to create your own custom controls to supercharge your Delphi applications, this text includes details about the flexible VCL component architecture. It shows how to design and debug your own controls and how to create commercial-quaility Delphi components. Also included are the secrets of Delphi's Object Model, the foundation of Delphi component architecture.
With Java maturing and branching out into so many different APIs, programmers are finding it difficult to find good, solid coverage of the many new need-to-know APIs in the numerous "catch all" Java books on the market. This title answers that need by presenting no-nonsense, nuts-and-bolts coverage of the new "niche" APIs like JNI, JTAPI, and the Java Wallet in a task-oriented reference format that gives coders the answers they need.
Offers step-by-step instructions on how to develop personalized custom controls for Delphi applications, and provides detailed coverage on flexible VCL component architecture, debugging, and Object-Oriented Programming. Original. (Advanced)
* Good coverage of C# as well as Delphi for .NET. * Not a port of a Delphi book – tightly focused on what’s new which includes the FCL overview that you need to make sense of the Microsoft documentation. * Particularly clear and well-written.
Once again, Robert Sedgewick provides a current and comprehensive introduction to important algorithms. The focus this time is on graph algorithms, which are increasingly critical for a wide range of applications, such as network connectivity, circuit design, scheduling, transaction processing, and resource allocation. In this book, Sedgewick offers the same successful blend of theory and practice that has made his work popular with programmers for many years. Christopher van Wyk and Sedgewick have developed concise new C++ implementations that both express the methods in a natural and direct manner and also can be used in real applications. "Algorithms in C++, Third Edition, Part 5: Graph Algorithms " is the second book in Sedgewick's thoroughly revised and rewritten series. The first book, Parts 1-4, addresses fundamental algorithms, data structures, sorting, and searching. A forthcoming third book will focus on strings, geometry, and a range of advanced algorithms. Each book's expanded coverage features new algorithms and implementations, enhanced descriptions and diagrams, and a wealth of new exercises for polishing skills. A focus on abstract data types makes the programs more broadly useful and relevant for the modern object-oriented programming environment. Coverage includes: A complete overview of graph properties and types Diagraphs and DAGs Minimum spanning trees Shortest paths Network flows Diagrams, sample C++ code, and detailed algorithm descriptions The Web site for this book (http: //www.cs.princeton.edu/ rs/) provides additional source code for programmers along with a wide range of academic support materials for educators. A landmark revision, " Algorithms in C++, Third Edition, Part 5 " provides a complete tool set for programmers to implement, debug, and use graph algorithms across a wide range of computer applications. 0201361183B11282001
Edward M. Reingold, Nachum Dershowitz
This new edition of the successful calendars book is being published in the new millennium and expands the treatment of the previous edition to new calendar variants. Calendrical Calculations makes accurate calendrical algorithms readily available for computer use with LISP and Java code for all the algorithms included on CD, and updates available on the Web. It gives a description of fourteen calendars and how they relate to one another: the present civil calendar (Gregorian), the recent ISO commercial calendar, the old civil calendar (Julian), the Coptic and Ethiopic calendars, the Islamic (Moslem) calendar; the Baha'i, the Hebrew (Jewish) calendar, the Mayan calendars, the French Revolutionary calendar, the Chinese calendar, and both the old (mean) and new (true) Hindu (Indian) calendars. This new edition will be a valuable resource for working programmers, as well as a fount of useful algorithmic tools for computer scientists.
Delphi Takes a Great Leap Forward; It's Time for You to Do the Same The latest release of Borland's Delphi is a major overhaul, featuring a brand-new IDE for both Win32 and .NET development and tons of other improvements. Mastering Borland Delphi 2005 is the best way to get up to speed, whether you're starting from scratch or have experience with an earlier version. Written by an award-winning and internationally known Delphi expert, this book shows you how to capitalize on Delphi's many advantages--including its clean language, speed of development, portability, and an active community that has produced hundreds of third-party tools. Coverage Includes * Writing code using the Delphi language * Navigating the Delphi 2005 IDE * Understanding the relationship between Delphi and Microsoft's .NET Framework * Tapping Delphi's database support * Using ADO.NET and the Borland Data Providers * Developing multi-tiered applications on Win32 and .NET platforms * Writing applications that will be portable from Win32 to .NET * Using Indy for sockets programming * Understanding your web development options with Delphi, including WebBroker, WebSnap, IntraWeb, and ASP.NET * Taking advantage of Delphi's XML and web services support * Using the ECO framework for Model-Driven Architecture Detailed Coverage of the Delphi Language, from an OOP Perspective In-depth Instruction in Win32 and .NET Development Using the New IDE Learn How Much You Can Accomplish with the Combined Borland and .NET Libraries See Why Delphi Is Now an Even Better Choice for Internet Development Master Delphi's Many New Capabilities, Including Refactoring, Unit Testing, Database Management, and More
Featuring a wealth of code examples appropriate for practicing developers, this advanced-level guide provides comprehensive coverage of such topics as arrays, binary trees, data compression. The CD includes the author's highly successful freeware library, EZDSL, along with the code from the book.
Delphi Component Design tells the inside story of how and why Delphi was built, and how to make use of this information to build better Delphi components and applications. Whether you're a Delphi application writer yearning to expand into component writing, or an experienced Delphi component writer in pursuit of the smaller, faster, better Holy Grail, Delphi Component Design will help you sort out what Delphi Visual Component Library (VCL) services can do for you (and how they do it); what your components can do for VCL; what standard behaviors your component classes must implement; and how to take advantage of little-known VCL classes and services to dramatically improve your component's ease of use, code reuse, flexibility, and performance. This is the no-stone-unturned authority on building advanced Delphi components - from high-level views of how a component fits into the grand scheme of things to the minute details of how each link between a component and the rest of the system works; from design-time support tools to run-time performance optimizations.
Deliver bug-free software projects on schedule and within budget Get a clear, complete understanding of how to estimate software costs, schedules, and quality using the real-world information contained in this comprehensive volume. Find out how to choose the correct hardware and software tools, develop an appraisal strategy, deploy tests and prototypes, and produce accurate software cost estimates. Plus, you'll get full coverage of cutting-edge estimating approaches using Java, object-oriented methods, and reusable components. Plan for and execute project-, phase-, and activity-level cost estimations Estimate regression, component, integration, and stress tests Compensate for inaccuracies in data collection, calculation, and analysis Assess software deliverables and data complexity Test design principles and operational characteristics using software prototyping Handle configuration change, research, quality control, and documentation costs "Capers Jones' work offers a unique contribution to the understanding of the economics of software production. It provides deep insights into why our advances in computing are not matched with corresponding improvements in the software that drives it. This book is absolutely required reading for an understanding of the limitations of our technological advances." --Paul A. Strassmann, former CIO of Xerox, the Department of Defense, and NASA
" Inprise/Borland's Delphi " may be the best Windows Rapid Application Development tool currently available. It offers full support for COM and ActiveX, an object-oriented widget library called the Visual Component Library, and an extensible and customizable rapid application development environment. Delphi in a Nutshell is the comprehensive reference to the programming language for this powerful RAD development tool. "Delphi in a Nutshell" begins with an introduction to Delphi Pascal and a clear discussion of the Delphi object model. It then covers RTTI, the key to Delphi's development environment, which is often poorly documented in other sources such as Delphi's official help files. The book also includes a chapter on concurrent programming in Delphi and the creation of multithreaded applications. The bulk of the book is a complete ordered reference to the Delphi language set. Each reference item includes : the syntax, using standard code conventions. A description. A list of arguments, if any, accepted by the function or procedure. Tips and tricks of usage-practical information on using the language feature in real programs. A brief example. A cross-reference to related keywords. Regardless of how much experience you have with Delphi, this is the book you'll pick up again and again as your standard reference. you'll also use it to master the finer points of the language and to troubleshoot problems. "Delphi in a Nutshell" is the one indispensable reference for Delphi programmers.
Still the Best Delphi Resource A Fully Revised Version of the Book That Won the Delphi Informant Readers Choice Award If you're looking to capitalize on the powerful capabilities of the latest release of Delphi, Mastering Delphi 6 is the one resource you can't do without. Practical, tutorial-based coverage helps you develop key skills, solve tough problems, and build and implement sophisticated functionality in your database, client/server, and Internet applications. The special insights of Delphi expert Marco Cantu you an extra advantage as you complete successful projects and progress towards Delphi mastery. Coverage includes: Getting to know the new run-time library (RTL) Learning to use the VCL and CLX visual libraries Developing custom components Creating data-aware controls and custom datasets Mastering database programming with BDE and dbExpress Mastering client/server programming with InterBase Interfacing with Microsoft's ADO using the dbGo component set Taking advantage of Delphi's support for COM, OLE Automation, and COM+ Programming for a multitiered application architecture Taking advantage of Delphi's support for XML and SOAP technologies Building practical, powerful Web applications Note: CD-ROM/DVD and other supplementary materials are not included as part of eBook file.