Righting Software

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

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.

Author(s): Juval Löwy
Edition: 1
Publisher: Addison-Wesley Professional
Year: 2019

Language: English
Commentary: True PDF
Pages: 480

Cover
Title Page
Copyright Page
Contents
Preface
About the Author
Chapter 1 The Method
What Is The Method?
Design Validation
Time Crunch
Eliminating Analysis-Paralysis
Communication
What The Method Is Not
Part I: System Design
Chapter 2 Decomposition
Avoid Functional Decomposition
Problems with Functional Decomposition
Reflecting on Functional Decomposition
Avoid Domain Decomposition
Faulty Motivation
Testability and Design
Example: Functional Trading System
Volatility-Based Decomposition
Decomposition, Maintenance, and Development
Universal Principle
Volatility-Based Decomposition and Testing
The Volatility Challenge
Identifying Volatility
Volatile versus Variable
Axes of Volatility
Solutions Masquerading as Requirements
Volatilities List
Example: Volatility-Based Trading System
Resist the Siren Song
Volatility and the Business
Design for Your Competitors
Volatility and Longevity
The Importance of Practicing
Chapter 3 Structure
Use Cases and Requirements
Required Behaviors
Layered Approach
Using Services
Typical Layers
The Client Layer
The Business Logic Layer
The ResourceAccess Layer
The Resource Layer
Utilities Bar
Classification Guidelines
What’s in a Name
The Four Questions
Managers-to-Engines Ratio
Key Observations
Subsystems and Services
Incremental Construction
About Microservices
Open and Closed Architectures
Open Architecture
Closed Architecture
Semi-Closed/Semi-Open Architecture
Relaxing the Rules
Design "Don’ts"
Strive for Symmetry
Chapter 4 Composition
Requirements and Changes
Resenting Change
Design Prime Directive
Composable Design
Core Use Cases
The Architect’s Mission
There Is No Feature
Handling Change
Containing the Change
Chapter 5 System Design Example
System Overview
Legacy System
New System
The Company
Use Cases
The Anti-Design Effort
The Monolith
Granular Building Blocks
Domain Decomposition
Business Alignment
The Vision
The Business Objectives
Mission Statement
The Architecture
TradeMe Glossary
TradeMe Areas of Volatility
Static Architecture
Operational Concepts
Workflow Manager
Design Validation
Add Tradesman/Contractor Use Case
Request Tradesman Use Case
Match Tradesman Use Case
Assign Tradesman Use Case
Terminate Tradesman Use Case
Pay Tradesman Use Case
Create Project Use Case
Close Project Use Case
What’s Next?
Part II: Project Design
Chapter 6 Motivation
Why Project Design?
Project Design and Project Sanity
Assembly Instructions
Hierarchy of Needs
Chapter 7 Project Design Overview
Defining Success
Reporting Success
Project Initial Staffing
Architect, Not Architects
The Core Team
Educated Decisions
Plans, Not Plan
Software Development Plan Review
Services and Developers
Design and Team Efficiency
Task Continuity
Effort Estimations
Classic Mistakes
Estimation Techniques
Overall Project Estimation
Activity Estimations
Critical Path Analysis
Project Network
The Critical Path
Assigning Resources
Scheduling Activities
Staffing Distribution
Project Cost
Project Efficiency
Earned Value Planning
Classic Mistakes
The Shallow S Curve
Roles and Responsibilities
Chapter 8 Network and Float
The Network Diagram
The Node Diagram
The Arrow Diagram
Arrow versus Node Diagrams
Floats
Total Float
Free Float
Calculating Floats
Visualizing Floats
Floats-Based Scheduling
Float and Risk
Chapter 9 Time and Cost
Accelerating Software Projects
Schedule Compression
Working with Better Resources
Working in Parallel
Parallel Work and Cost
Time–Cost Curve
Points on Time–Cost Curve
Discrete Modeling
Avoiding Classic Mistakes
Project Feasibility
Finding Normal Solutions
Project Cost Elements
Direct Cost
Indirect Cost
Accounting versus Value
Total, Direct, and Indirect Costs
Compression and Cost Elements
Staffing and Cost Elements
Fixed Cost
Network Compression
Compression Flow
Chapter 10 Risk
Choosing Options
Time–Risk Curve
Actual Time–Risk Curve
Risk Modeling
Normalizing Risk
Risk and Floats
Risk and Direct Cost
Criticality Risk
Fibonacci Risk
Activity Risk
Criticality versus Activity Risk
Compression and Risk
Execution Risk
Risk Decompression
How to Decompress
Decompression Target
Risk Metrics
Chapter 11 Project Design in Action
The Mission
The Static Architecture
The Call Chains
List of Activities
Network Diagram
Planning Assumptions
Finding the Normal Solution
Unlimited Resources (Iteration 1)
Network and Resource Problems
Infrastructure First (Iteration 2)
Limited Resources
Going Subcritical (Iteration 7)
Choosing the Normal Solution
Network Compression
Compression Using Better Resources
Introducing Parallel Work
End of Compression Iterations
Throughput Analysis
Efficiency Analysis
Time–Cost Curve
Time–Cost Correlation Models
The Death Zone
Planning and Risk
Risk Decompression
Rebuilding the Time–Cost Curve
Modeling Risk
Risk Inclusion and Exclusion
SDP Review
Presenting the Options
Chapter 12 Advanced Techniques
God Activities
Handling God Activities
Risk Crossover Point
Deriving the Crossover Point
Finding the Decompression Target
Geometric Risk
Geometric Criticality Risk
Geometric Fibonacci Risk
Geometric Activity Risk
Geometric Risk Behavior
Execution Complexity
Cyclomatic Complexity
Project Type and Complexity
Compression and Complexity
Very Large Projects
Complex Systems and Fragility
Network of Networks
Designing a Network of Networks
Small Projects
Design by Layers
Pros and Cons
Layers and Construction
Chapter 13 Project Design Example
Estimations
Individual Activity Estimations
Overall Project Estimation
Dependencies and Project Network
Behavioral Dependencies
Nonbehavioral Dependencies
Overriding Some Dependencies
Sanity Checks
The Normal Solution
Network Diagram
Planned Progress
Planned Staffing Distribution
Cost and Efficiency
Results Summary
Compressed Solution
Adding Enabling Activities
Assigning Resources
Planned Progress
Planned Staffing Distribution
Cost and Efficiency
Results Summary
Design by Layers
Design by Layers and Risk
Staffing Distribution
Results Summary
Subcritical Solution
Duration, Planned Progress, and Risk
Cost and Efficiency
Results Summary
Comparing the Options
Planning and Risk
Risk Decompression
Recalculating Cost
Preparing for the SDP Review
Chapter 14 Concluding Thoughts
When to Design a Project
The Real Answer
Getting Ahead in Life
General Guidelines
Architecture versus Estimations
Design Stance
Optionality
Compression
Planning and Risk
Design of Project Design
In Perspective
Subsystems and the Timeline
The Hand-Off
Junior Hand-Off
Senior Hand-Off
Senior Developers as Junior Architects
In Practice
Debriefing Project Design
About Quality
Quality-Control Activities
Quality-Assurance Activities
Quality and Culture
Appendix A: Project Tracking
Activity Life Cycle and Status
Phase Exit Criteria
Phase Weight
Activity Status
Project Status
Progress and Earned Value
Accumulated Effort
Accumulated Indirect Cost
Tracking Progress and Effort
Projections
Projections and Corrective Actions
All Is Well
Underestimating
Resource Leak
Overestimating
More on Projections
The Essence of a Project
Handling Scope Creep
Building Trust
Appendix B: Service Contract Design
Is This a Good Design?
Modularity and Cost
Cost per Service
Integration Cost
Area of Minimum Cost
Services and Contracts
Contracts as Facets
From Service Design to Contract Design
Attributes of Good Contracts
Factoring Contracts
Design Example
Factoring Down
Factoring Sideways
Factoring Up
Contract Design Metrics
Measuring Contracts
Size Metrics
Avoid Properties
Limit the Number of Contracts
Using Metrics
The Contract Design Challenge
Appendix C: Design Standard
The Prime Directive
Directives
System Design Guidelines
Project Design Guidelines
Project Tracking Guidelines
Service Contract Design Guidelines
Index
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W