Software quality attributes

Get Started. It's Free
or sign up with your email address
Software quality attributes by Mind Map: Software quality attributes

1. Business

1.1. Safe

1.2. Reliable

1.3. International

1.3.1. Localization

1.3.2. Globalization

1.4. Secure

1.4.1. OAuth & standards

1.4.2. Secrets

1.4.3. Pentests & synack

1.4.4. Fraud detection

1.5. Accessible

1.5.1. WCAG testing

1.6. Responsive

1.7. Usable

1.7.1. Domain-driven design

1.7.1.1. Modeling business objects

1.7.1.2. Specific emerging tech (blockchain, RPA)

1.7.1.2.1. Build vs. Buy (a decision you may revisit)

1.7.1.3. Industry standards (payments, HL7, etc.)

1.7.2. Prototyping

1.7.3. MVC & derivatives

1.7.4. Guided journey (AI, bots)

1.8. Sustainable

1.9. Minimizing complexity to gain speed to solution

1.9.1. Software architect as artist

1.9.2. Selecting frameworks for advantage

2. Internal efficiency

2.1. Extensible

2.1.1. Single responsibility

2.1.2. Mobile frontends & API

2.1.3. Features

2.1.4. Plugin, dynamically loading, lazy loadng

2.1.4.1. Adapter (GOF)

2.1.5. Workflow

2.1.5.1. State, Chain of Responsility (GOF)

2.1.5.1.1. DESIGN: onboarding workflow for signup

2.2. Performance

2.2.1. Microservices vs. composed functions

2.2.1.1. Sidecar & API mesh abstractions

2.2.2. Command and Query Responsibility Segregation (CQRS)

2.2.3. NoSQL databases

2.2.3.1. Collections & lists (impact to database layer)

2.2.3.2. Transactional vs. reference vs. historical data

2.2.3.3. Document databases

2.2.3.4. Graph data (GraphQL?)

2.3. Testable

2.3.1. A/B testing

2.3.2. Unit tests and independent "chaos" tests

2.4. Maintainable

2.4.1. Application controllers and routing (startup.cs)

2.4.2. Dependency injection (DRY)

2.4.2.1. Singleton (GOF)

2.4.3. ORMs

2.5. Correct

2.5.1. Error handling

2.5.2. Concurrency, locks & semaphores

2.6. Remote collaboration tools

2.7. Definition of Done

2.7.1. Principles

2.7.1.1. Separation of concerns

2.7.1.2. Loose coupling

2.7.1.3. Information hiding

3. Environment

3.1. Portable

3.1.1. Containerization

3.1.2. Cloud hosting

3.2. Deployable

3.2.1. CI/CD pipelines

3.2.1.1. Shift left

3.2.2. Packaging

3.3. Scalable

3.3.1. Event and asynch models

3.3.1.1. Pub-sub & smart endpoints

3.3.1.2. message bus, ESB

3.3.2. IoT and stream processing

3.3.3. Statelessness and caching

3.3.4. Auto-scaling

3.4. Available

3.4.1. Metrics collection & dynamic testing

3.4.2. FMEA

3.5. Resilient

3.5.1. Bulkhead

3.5.2. Circuit breaker

3.5.3. Decoupling

3.6. Configurable

3.7. Recoverable

3.7.1. Retries / heartbeat

3.8. C4 Design and artifacts

3.8.1. Evolutionary design

4. Integration

4.1. Interoperable

4.1.1. OpenAPI standards

4.1.2. Strangler

4.1.2.1. Arch runway & PI plan for modernization

4.1.2.2. "Odd" systems like mainframes; choosing integration patterns

4.1.2.2.1. File copy & sync data

4.1.2.2.2. Service integration (REST)

4.1.2.2.3. RPC

4.1.2.2.4. Direct data integration

4.2. Adaptable

4.2.1. Shared data models

4.3. Discoverable

4.3.1. Contracts, gateways & API

4.3.2. DTO

4.4. Autonomous

4.4.1. "Backend for Frontend"

4.5. Durable

4.5.1. Idempotent

4.6. Manageable

4.6.1. Health checks

4.7. Effective workshops