-
What is a software
A set of instructions that the system understands and makes it to perform some operations.
-
SDLC stands for Software Development Life Cycle.
Broadly 6 phases of development
// the ‘Who’ of each phase depend on the scope of entire project
- Requirement Gathering and Analysis Phase
-
Goal
Document functional and non-functional requirements
- Functional requirements specify What the software/product should do.
- Non-functional requirements specify how the software/product should behave like
- Response Time
- Accessibility
- Availability
- Scalability
- Maintainability
- Extensibility …
-
Who
- Business Analyst
- Business user or Functional Users
- Architect(s)
- Lead Developer
- Project Manager or Scrum Master
- They coordinate the project / application
- A project will have a definite start and definite end.
-
Process
- Techniques
- Understand the existing system or process
- Discussion with the stake holders
- Interview end users and stake holders
- Questionnaire
- Workshops
- SMART // certain indicators on how the requirements should be
- Specific
- Measurable
- Agreed by all stakeholders
- Realistic
- Time bound
- Screen / Visual Prototypes
- Techniques
-
Deliverables
- Use Cases
- Identified Actors/Users
- Screen Prototyping
- UX designs
- Reviewed and Approved Requirements
-
- Design Phase
-
Goal
Develop a system architecture/design based on the reviewed and approved deliverables. i.e., functional and non-functional requirements.
-
Who
- Lead developer(s)
- Architect(s)
-
Process
- Design discussion
- Refer phase one deliverables
- Design Patterns references - general reusable solutions to recurring problems
- Architecture references
// experience and knowledge of persons involved plays a key role in this phase.
// design should be within the scope of the functional and non-functional requirements
-
Deliverables
- Database designs
- Conceptual
- Logical
- Physical
- Integration / API / Endpoint designs
- example of optional google login in site login page to integrate login.
- Application design
- language used, databases ..
- Infrastructure design
- configuration of server
- Reviewed and Approved design
- Database designs
-
- Development of Coding Phase
-
Goal
Develop actual software based on the design deliverables
-
Who
- Developers(s)
- Lead Developer(s)
-
Process
- review the design by developers
- address doubts and clarify design before implementation
- have an open mind
- have a positive attitude and be open to ideas and recommendations
- create a harmonious environment
- Code based on design(s)
- Unit test the code
- review the design by developers
-
Deliverables
- completed software development
- reviewed and approved software programs / coding.
-
- Testing or Quality Assurance Phase
-
Goal
Perform software testing based on functional and non-functional requirements.
-
Who
- Tester(s)
- Lead tester(s)
- Load and performance testers
-
Process
- inputs are functional and non-functional requirements and developed code
- develop and execute unit test cases
- manual use case execution
- develop and execute integration test cases (if there is any)
- develop and execute load and performance test cases
- user acceptance testing
- Business / functional users will be given beta access and test the product
-
Deliverables
- Completed development and execution of test cases
- Reviewed and approved test results
-
- Deployment Phase
-
Goal
Moving the developed software to production environment so that end users can access it.
-
Who
- Software configuration manager (SCM) // will deploy
- Lead Developer
- Infrastructure team
- Project Manager / Scrum Master
- User
-
Process
- Project manager / Scrum master coordinates the deployment plan with all stakeholders
- set up deployment date
- move the software to production
- test the live application by end user
// the best practice is always to have a backup plan
// also perform one type of testing in production
-
Deliverables
- software application available in production to end users
-
- Maintenance or Support Phase
-
Goal
fix software bugs or issues that are identified in live software during usage by end user.
-
Who
- Developer(s)
- Lead developer(s)
- Users
-
Process
- recreate the issue and review
- update and test the code / configuration / software program and resolve the issue
- document the issue and fix
-
Deliverables
- Updated production build
-
- Requirement Gathering and Analysis Phase