Software Development and Management
Definition
"Ensure that software products meet internal and external stakeholder needs, in terms of functionality, reliability, maintainability, operability, compliance, and auditability."
To fulfill the purpose, the practice needs to:
- Agree and improve an organization's approach to development and management of software products
- Ensure that software products continually meet organization's requirements and quality criteria throughout their lifecycle
Key Terms
Software: A set of instructions that tell the physical components (hardware) of a computer how to work.
Software development: Design and construction of software products according to functional and non-functional requirements and correction and enhancement of operational software products according to changing requirements.
Software quality: Capability of software product to satisfy stated and implied needs when used under specified conditions.
Technical debt: The total rework backlog accumulated by choosing workarounds instead of system solutions that would take longer.
Definition of Done: The agreed criteria for a proposed product or service, reflecting functional and non-functional requirements.
Development Approaches
| Approach | Characteristics |
|---|---|
| Agile | Iterative, incremental, adaptive; Scrum, Kanban |
| DevOps | Culture of collaboration between development and operations; CI/CD |
| Waterfall | Sequential, plan-driven; requirements → design → build → test → deploy |
| SRE (Site Reliability Engineering) | Applies software engineering to infrastructure and operations |
Processes
Management of the Organization's Approach
- Analyse organization's strategy, resources, and portfolios
- Develop and agree software development and management approach
- Develop and agree guidelines for different types of products
- Communicate approach and guidelines to key stakeholder groups
- Review and adjust the approach and guidelines
Software Development
- Review and prioritize software development tasks
- Design software
- Develop software unit
- Test software unit
- Integrate software units
- Test software system
Software Maintenance and Improvement
- Software system review
- Software improvement planning
- Software improvement initiation and control
Key Metrics
| Metric | What it measures |
|---|---|
| Satisfaction with development approach | Methodology quality |
| Adherence to chosen approach | Process compliance |
| Satisfaction with rate of change enabled by the approach | Delivery speed |
| Improvement initiatives throughput | Improvement velocity |
| Compliance with internal/external policies | Governance |
| Satisfaction with software products | Product quality |
| Delivery frequency/reliability of new/changed functionality | Release cadence |
| Development cost, technical debt | Financial health |
| Resource utilization | Efficiency |
| Software availability | Operational performance |
| Security breaches and audit-related costs | Security posture |
Key Roles
- Product owner/manager
- Scrum master/agile coach
- Delivery manager/lead
- Solution architect
- Software developer
- UX/UI designer
- Quality assurance engineer
Recommendations for Success
- Clarify the expected value
- Ensure that responsibilities are understood
- Improve where improvement is felt
- Always focus on the flow
- Leverage automation opportunities
Software Tools
- Analysis and reporting tools
- CMDB tools
- Collaboration and communication tools
- Enterprise architecture management tools
- External professional content libraries
- Knowledge and document management tools
- Learning Management System (LMS)
- CI/CD tools
- Monitoring and event management tools
- Orchestration and integration platforms
- Remote administration tools
- Diagnosis, deployment, and other infrastructure and software management tools
- Solution design and development tools
- Workflow and task management tools