Semantic Software Design

Book description

With this practical book, architects, CTOs, and CIOs will learn a set of patterns for the practice of architecture, including analysis, documentation, and communication. Author Eben Hewitt shows you how to create holistic and thoughtful technology plans, communicate them clearly, lead people toward the vision, and become a great architect or Chief Architect.

This book covers each key aspect of architecture comprehensively, including how to incorporate business architecture, information architecture, data architecture, application (software) architecture together to have the best chance for the system’s success.

  • Get a practical set of proven architecture practices focused on shipping great products using architecture
  • Learn how architecture works effectively with development teams, management, and product management teams through the value chain
  • Find updated special coverage on machine learning architecture
  • Get usable templates to start incorporating into your teams immediately
  • Incorporate business architecture, information architecture, data architecture, and application (software) architecture together

Publisher resources

View/Submit Errata

Table of contents

  1. Preface
    1. Conventions Used in This Book
    2. Using Code Examples
    3. O’Reilly Online Learning
    4. How to Contact Us
    5. Acknowledgments
  2. I. Episteme: The Philosophy of Design
  3. 1. Origins of Software Architecture
    1. Software’s Conceptual Origins
    2. Copies and Creativity
    3. Why Software Projects Fail
    4. The Impact of Failures
  4. 2. The Production of Concepts
    1. Semantics and the Software Factory
    2. The Myth of Requirements
    3. Semantics and Software Architecture
    4. The Semantic Field
    5. Designers Are Producers of Concepts
      1. Designing Concepts
    6. What Is a Concept?
      1. Accomplish, Avoid, Fix
      2. Outlining Your Concept on the Concept Canvas
    7. Ideas Are Captured in a Lookbook
    8. Fit to Purpose
    9. The Concept Is Expressed in a Parti
      1. An Example
      2. Adding Aspects to the Parti
      3. The Parti Is Based on a Series of Reveals
    10. Understanding Ideas
      1. Sense Certainty
      2. Metacognition
    11. Context
    12. Sets
      1. Relations
    13. Advantages of Semantic Design
  5. 3. Deconstruction and Design
    1. Introduction to Deconstruction
    2. Simplexity
    3. (De)composition
    4. Affordance
    5. Give Intention and Use Value to Negative Space
    6. Give Design Decisions at Least Two Justifications
    7. Design from Multiple Perspectives
    8. Create a Quarantine or Embassy
    9. Design for Failure
    10. Design Language
      1. Naming
    11. Start Opposite the User
    12. Platforms
      1. Disappearing
  6. II. Semantic Design in Practice
  7. 4. Design Thinking
    1. Why Design Thinking?
    2. Exploring Design Thinking
      1. Principles
      2. The Method
    3. Implementing the Method
    4. Summary
  8. 5. Semantic Design Practices and Artifacts
    1. Design Principles
    2. Pair Designing
    3. Murals
    4. Vision Box
    5. Mind Maps
    6. Use Cases
    7. Guidelines and Conventions
      1. Utils
      2. Domain
      3. service-api
      4. service-impl
      5. service-client
    8. Approaches
    9. Design Definition Document
      1. Considerations for Composing Your Design Definition
    10. Position Papers
    11. RAID
    12. Presentations and Multiple Viewpoints
    13. Summary
  9. 6. The Business Aspect
    1. Capturing the Business Strategy
      1. Provide a Common Understanding
      2. Align Strategic Objectives and Tactical Demands
    2. Framework Introduction
      1. Scope of the Framework
    3. Create the Business Glossary
    4. Create the Organizational Map
    5. Create a Business Capabilities Model
    6. Create a Process Map
    7. Reengineer Processes
    8. Take Inventory of Systems
    9. Define the Metrics
    10. Institute Appropriate Governance
    11. Business Architecture in Applications
    12. Summary
  10. 7. The Application Aspect
    1. Embrace Constraints
    2. Decouple User Interfaces
      1. UI Packages
    3. On Platform Design
    4. Service Resources and Representations
      1. Domain Language
    5. API Guidelines
    6. Deconstructed Versioning
    7. Cacheability and Idempotence
    8. Independently Buildable
    9. Strategies and Configurable Services
    10. Application-Specific Services
    11. Communicate Through Services
    12. Expect Externalization
    13. Design for Resilience
    14. Interactive Documentation
    15. Anatomy of a Service
      1. UI Packages
      2. Orchestrations
      3. Engines
      4. Data Accessors
    16. Eventing
      1. Structure of an Event Message
    17. Contextual Services and Service Mixins
    18. Performance Improvement Checklist
    19. Separating API from Implementation
    20. Languages
    21. Radical Immutability
    22. Specifications
    23. A Comment on Test Automation
    24. A Comment on Comments
    25. Summary
  11. 8. The Data Aspect
    1. Business Glossary
    2. Strategies for Semantic Data Modeling
    3. Polyglot Persistence
      1. Persistence Scorecard
    4. Multimodeling
    5. Data Models for Streams
    6. Feature Engineering for Machine Learning
    7. Classpath Deployment and Network Proxies
    8. Peer-to-Peer Persistent Stores
    9. Graph Databases
      1. OrientDB and Gremlin
    10. Data Pipelines
    11. Machine Learning Data Pipelines
    12. Metadata and Service Metrics
    13. Auditing
    14. ADA Compliance
    15. Summary
  12. 9. The Infrastructure Aspect
    1. Considerations for Architects
    2. DevOps
    3. Infrastructure as Code
    4. Metrics First
      1. Compliance Map
    5. Automated Pipelines Also First
    6. The Production Multiverse and Feature Toggling
      1. Implementing Feature Toggles
      2. Multi-Armed Bandits: Machine Learning and Infinite Toggles
    7. Infrastructure Design and Documentation Checklist
    8. Chaos
    9. Stakeholder Diversity and Inside/Out
    10. Summary
  13. III. Operations, Process, and Management
  14. 10. The Creative Director
    1. The Semantic Designer’s Role
    2. Creative Directors Across Industries
      1. In Fashion
      2. In Film
      3. In Video Games
      4. In Advertising
      5. In Theater
      6. In Technology
      7. What’s In a Name?
  15. 11. Management, Governance, Operations
    1. Strategy and Tooling
    2. Oblique Strategies
    3. Lateral Thinking and Working with Concepts
    4. Conceptual Tests
    5. Code Reviews
    6. Demos
    7. The Operational Scorecard
    8. The Service-Oriented Organization
      1. Cross-Functional Teams
    9. The Designed Scalable Business Machine
    10. Managing Modernization as a Program
    11. Change Management
    12. Governance
      1. Goals
      2. Metrics
      3. Service Portfolio
      4. Service Inventory and Metadata
    13. Service Design Checklist
      1. Service Design
      2. Service Operations
      3. Business Processes
      4. Data
      5. Errors
      6. Performance
      7. Security
      8. Quality Assurance
      9. Availability and Support
      10. Deployment
      11. Documentation
    14. Further Reading on Organizational Design
  16. 12. The Semantic Design Manifesto
    1. The Manifesto
      1. The Four Ideals
      2. The Key Practices
      3. Opening
  17. A. The Semantic Design Toolbox
    1. The Tools
      1. Thinking Stage
      2. Concept Stage
      3. Design Stage
      4. Operations and Governance
  18. B. Further Reading
    1. Architecture and Design Books
    2. Philosophy Books
    3. Software Books
  19. Index

Product information

  • Title: Semantic Software Design
  • Author(s): Eben Hewitt
  • Release date: October 2019
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9781492045953