0%

Book Description

Right Your Software and Transform Your Career

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.

Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.

Table of Contents

  1. Cover Page
  2. About This eBook
  3. Half Title Page
  4. Title Page
  5. Copyright Page
  6. Dedication Page
  7. Contents
  8. Preface
    1. How This Book Is Organized
    2. Some Assumptions About the Reader
    3. What You Need to Use This Book
    4. Conventions Used in This Book
    5. Additional Online Resources
    6. Acknowledgments
  9. About the Author
  10. 1. The Method
    1. What Is The Method?
    2. What The Method Is Not
  11. Part I: System Design
    1. 2. Decomposition
      1. Avoid Functional Decomposition
      2. Volatility-Based Decomposition
      3. Identifying Volatility
    2. 3. Structure
      1. Use Cases and Requirements
      2. Layered Approach
      3. Typical Layers
      4. Classification Guidelines
      5. Subsystems and Services
      6. Open and Closed Architectures
    3. 4. Composition
      1. Requirements and Changes
      2. Composable Design
      3. There Is No Feature
      4. Handling Change
    4. 5. System Design Example
      1. System Overview
      2. The Anti-Design Effort
      3. Business Alignment
      4. The Architecture
      5. Design Validation
      6. What’s Next?
  12. Part II: Project Design
    1. 6. Motivation
      1. Why Project Design?
    2. 7. Project Design Overview
      1. Defining Success
      2. Project Initial Staffing
      3. Educated Decisions
      4. Services and Developers
      5. Effort Estimations
      6. Critical Path Analysis
      7. Scheduling Activities
      8. Project Cost
      9. Earned Value Planning
      10. Roles and Responsibilities
    3. 8. Network and Float
      1. The Network Diagram
      2. Floats
      3. Floats-Based Scheduling
    4. 9. Time and Cost
      1. Accelerating Software Projects
      2. Schedule Compression
      3. Time–Cost Curve
      4. Avoiding Classic Mistakes
      5. Project Cost Elements
      6. Network Compression
    5. 10. Risk
      1. Choosing Options
      2. Time–Risk Curve
      3. Risk Modeling
      4. Compression and Risk
      5. Risk Decompression
      6. Risk Metrics
    6. 11. Project Design in Action
      1. The Mission
      2. Finding the Normal Solution
      3. Network Compression
      4. Efficiency Analysis
      5. Time–Cost Curve
      6. Planning and Risk
      7. SDP Review
    7. 12. Advanced Techniques
      1. God Activities
      2. Risk Crossover Point
      3. Finding the Decompression Target
      4. Geometric Risk
      5. Execution Complexity
      6. Very Large Projects
      7. Small Projects
      8. Design by Layers
    8. 13. Project Design Example
      1. Estimations
      2. Dependencies and Project Network
      3. The Normal Solution
      4. Compressed Solution
      5. Design by Layers
      6. Subcritical Solution
      7. Comparing the Options
      8. Planning and Risk
      9. Preparing for the SDP Review
    9. 14. Concluding Thoughts
      1. When to Design a Project
      2. General Guidelines
      3. Design of Project Design
      4. In Perspective
      5. The Hand-Off
      6. In Practice
      7. Debriefing Project Design
      8. About Quality
  13. Appendices
    1. A. Project Tracking
      1. Activity Life Cycle and Status
      2. Project Status
      3. Tracking Progress and Effort
      4. Projections
      5. Projections and Corrective Actions
      6. More on Projections
    2. B. Service Contract Design
      1. Is This a Good Design?
      2. Modularity and Cost
      3. Services and Contracts
      4. Factoring Contracts
      5. Contract Design Metrics
      6. The Contract Design Challenge
    3. C. Design Standard
      1. The Prime Directive
      2. Directives
      3. System Design Guidelines
      4. Project Design Guidelines
      5. Project Tracking Guidelines
      6. Service Contract Design Guidelines
  14. Index
  15. Code Snippets