Software Engineering and Software Development Life Cycle (SDLC) in an Agile Environment

Hanwen Zhang
6 min readJul 31, 2023

--

Software Engineering is a systematic approach to the development, operation, and retirement of software. Software process has a positive effect if applied correctly, meets schedules, has higher quality, and is more maintainable.

We always want to produce high-quality products with all features with less time and cost. However, there are always trade-offs among these factors: cost (e.g., the number of man hours), time (e.g., the number of weeks before delivery), quality (e.g., the number of defects), and functionality (the number of features completed).

In the alternative approach (Agile), each iteration has a fixed time and cost. The quality cannot be compromised. However, the number of features completed may be negotiable. Quality is one of the most important goals of the Agile process.

Software Development Life Cycle (SDLC) is a software development process that involves the entire software life cycle including project planning, requirements analysis, design, development, testing, deployment, and maintenance.

When talking about Software Engineering, think about the 4Ps:

  • People
    ○ Project stakeholders (who are they?)
  • Product
    ○ Software, code, documents, etc (what are they?)
  • Project
    ○ Activities (What are basic common activities?)
  • Process
    ○ Framework to carry out the activities (how to perform SE activities?)

INVEST principle

Used in agile software development to define and evaluate user stories or product backlog items.

Independent — Negotiable — Valuable — Estimable — Small — Testable

User Story (Describe One Specific Thing) Template

We can use personas (end user roles / imaged users) to describe scenarios that can help develop user stories — and understand potential types of possible end users.

  • Title (Feature name)
  • As a [role], I can/want to [feature/functionality], so that [reason]

The ECB Pattern

The entity-control-boundary (ECB), entity-boundary-control (EBC), or boundary-control-entity (BCE) is an architectural pattern used in use-case-driven object-oriented programming that structures the classes composing high-level object-oriented source code according to their responsibilities in the use-case realization.

  • Entity: the persistent data and logic
  • Control: the control tasks (actions)
  • Boundary: the interfaces

Acceptance Test (Confirmation) Template

Designed to verify whether a user story has been correctly implemented and the conditions of satisfaction according to the specified requirements and criteria.

  • Given … (setup/preconditions)
  • When … (input/actions)
  • Then … (expected outputs)

Planning

  • During the planning phase, the team creates personas and determines the cost and resources required for implementing the requirements.

Development

  • During the development phase, the team follows best practices in software development, code review, code style, good documentation, use of automation tools, use of linting tools, meaningful variable names, and more.

Deployment

  • Before deployment, make sure the application is ready for delivery, and make sure it passed all the required tests.
  • DevOps developer delivers new features with all the CI/CD work and manages the pipeline.

Project Management

Standup

The purpose of a daily standup meeting is to learn the current progress of every team member who works on Scrum tasks. Occurs daily.

  • What did you do yesterday?
  • What will you do today?
  • Are there any blockers in your way?

Sprint Planning

Scrum event involves committing to the work of a new sprint by constructing a sprint backlog, and the prioritization is ongoing and should be up to date. Occurs on the first day of the sprint, usually bi-weekly.

Backlog Refinement (Grooming)

The team reviews product backlog items, develops a shared understanding, and estimates the effort of each item. If the effort of an item is estimated as being very large, it will likely need to be broken into smaller, more manageable items. Occurs before sprint planning, usually bi-weekly.

Sprint Review

The Sprint Review is when the team gathers to demonstrate the work completed in the sprint. The team should also acknowledge the work the team committed to that did not get finished and the challenges they discovered. Occurs at the end of the sprint, usually bi-weekly.

Retrospective

The Retro meetings occur at the end of a project to help teams pause and think about improving future performance. Occurs at the end of the sprint, usually bi-weekly.

  • What went well
  • What went bad
  • What can be improved

Agile Software Development

Agile Methodologies/practices encourage the customer or client to be involved in the development of software that gives people formal roles and responsibilities and provides expectations for collaboration.

The goal is to make the software development process simpler, lighter, quicker, and more adaptive to changes.

What is the Waterfall Model? No longer in the practice of modern software development as it has been approved to be inefficient in producing products. This model for software development follows a sequential and irreversible series of steps, like water flowing downstream. Design — Build — Test.

General Workflow in Agile SDLC

  • Attending daily stand-ups, weekly sprint planning, working on the ticket that has been assigned, as well as attending other scrum meetings like sprint review, backlog grooming sessions, and retrospective meetings.
  • Generally, keep a 2-week long sprint. There are 6 sprints in each quarter and 3 months (quarterly) release cycle.
  • Sprint 1 to Sprint 5 dedicates to development
  • Sprint 6 focuses on final testing and release + investigation of new features for the next quarter
  • During Sprint 6, the last 3 days we held PI Planning
  • SAFe is the framework of Scrum

Program Increment (PI) Planning event where we determine objects and features, resourcing and commitment, break large initiatives into smaller chunks focus on 12-week deliverables, and check every two weeks to see our progress.

SAFe Framework establishes a continuous flow of work and exploration that supports incremental value delivery based on constant feedback and adjustment.

Scrum Methodology

Scrum is the most widely used Agile framework nowadays.

  • A Stakeholder is someone outside the Scrum team who has a say in what the product should be, such as a manager, client, or customer
  • The Product Owner is the “voice of the customer” and is responsible for developing, maintaining, and prioritizing the items in the product backlog.
  • The Scrum Master is responsible for making sure the work of the team goes smoothly by facilitating Scrum and removing impediments.
  • Development Team Members are the members of the team who write and test code but are NOT a role in Scrum.

To be certified for scrum master — https://www.scrumstudy.com/

--

--

Hanwen Zhang

Full-Stack Software Engineer at a Healthcare Tech Company | Document My Coding Journey | Improve My Knowledge | Share Coding Concepts in a Simple Way