Software Engineering and Software Development Life Cycle (SDLC) in an Agile Environment
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:
○ Project stakeholders (who are they?)
○ Software, code, documents, etc (what are they?)
○ Activities (What are basic common activities?)
○ Framework to carry out the activities (how to perform SE activities?)
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)
- During the planning phase, the team creates personas and determines the cost and resources required for implementing the requirements.
- 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.
- 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.
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?
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.
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.
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 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/