Software Development Workflows

Q1. Workflows in Software Development

The term workflow refers to a sequence of related activities in a process. In software development, workflows are linked to product artifacts and project phases. There are seven primary workflows:

  • Management Workflow: Overseeing the process and ensuring success for all stakeholders.
  • Environment Workflow: Automating the process and maintaining the development environment.
  • Requirements Workflow: Analyzing the problem and defining the requirements.
  • Design Workflow: Creating the solution and developing the architecture and design.
  • Implementation Workflow: Building the components and managing the implementation and deployment.
  • Assessment Workflow: Evaluating process and product quality trends.
  • Deployment Workflow: Delivering the final product to the user.

These workflows often overlap and iterate throughout the development lifecycle. Key principles related to these workflows include:

Architecture-First Approach

Prioritizing requirements analysis, design, implementation, and assessment before full-scale development ensures a solid foundation. This early focus on the architecture is crucial for successful development.

Iterative Life-Cycle Process

Each phase may involve multiple iterations of the workflows. This allows for flexibility and refinement throughout the project.

Round-Trip Engineering

Treating environment activities as a primary workflow emphasizes the importance of the development environment and its impact on the process.

Demonstration-Based Approach

Early implementation and assessment activities enable the creation of executable prototypes, allowing for continuous feedback and validation.

Q2. Iterative Workflows

An iteration is a set of activities performed in a specific order, varying depending on the development phase. Each iteration focuses on a set of usage scenarios. The workflow within an iteration typically includes:

  1. Management: Planning the iteration, defining the release content, and assigning tasks.
  2. Environment: Updating the development environment to reflect changes in baselines and components.
  3. Requirements: Analyzing the plan, architecture, and requirements to elaborate use cases and evaluation criteria.
  4. Design: Refining the architecture and design to support the iteration’s goals.
  5. Implementation: Developing, acquiring, and integrating components to meet the evaluation criteria.
  6. Assessment: Evaluating the iteration’s results, including compliance with criteria and quality of baselines.
  7. Deployment: Transitioning the release to users or conducting a post-mortem analysis for future improvements.

Q3. Joint Management Reviews

Major milestones in the development lifecycle serve as checkpoints for stakeholder alignment. Different stakeholders have unique perspectives:

  • Customers: Focus on schedule, budget, feasibility, risk, requirements, progress, and product compatibility.
  • Users: Concerned with consistency with requirements, usability, potential for growth, and quality.
  • Architects and Systems Engineers: Emphasize product compatibility, requirements changes, trade-offs, completeness, consistency, and balance between risk, quality, and usability.
  • Developers: Focus on requirements detail, usage scenarios, component selection, risk resolution, product compatibility, and the development environment.
  • Maintainers: Concerned with product and documentation quality, understandability, interoperability, and the maintenance environment.
  • Others: May include regulatory agencies, contractors, investors, and sales and marketing teams, each with their own perspectives.

Joint management reviews provide a platform for these stakeholders to discuss progress, address concerns, and ensure alignment throughout the project.