Software Development Life Cycle Kanwal Bhatnagar March 1, 2016
What is SDLC? SDLC - Software Development Life Cycle a process used by software industry to design, develop, and test high quality softwares Process details a plan to follow for software projects Development, maintenance, replacement, and enhancement procedures for a specific software Useful for improving quality of software Six phases
Phase 1 - Planning and Requirement Analysis Performed by: Senior members of team (excluding manager) Input from customer, sales department, market surveys, and experts in industry Collected information is used to Plan project approach and determine how practical it is - economically, technically, and operationally Plan quality assurance requirements Identify of potential risks
Phase 2 - Defining Requirements Performed by: Business Analyst (B.A.) Product requirements are clearly specified and documented SRS document - Software Requirement Specification Requirements must be approved by customer or market analysts
Phase 3 - Designing the Product Architecture Performed by: Architect Using the SRS as reference, architects propose design approaches Define all architectural components, including communication and data flow diagrams with external/third party units Internal design of components is clearly described with minimal details Documented in Design Document Specification (DDS) Reviewed by stakeholders Based on guidelines like risk assessment, budget, time restrictions, project potency, and design flexibility
Phase 4 - Building or Developing the Product Performed by: Developer Actual development begins - product assembly starts Programming code is created, following standards set in the DDS Programmers must follow coding rules established by their company or the programming tools they use (i.e. compilers, debuggers, interpreters) Programming languages used: C, C++, Java, PHP, and Pascal
Phase 5 - Testing the Product Performed by: Tester Testing mostly lnvolved in all stages Product defects are documented, located, fixed, and retested Must be at quality levels described in the SRS
Phase 6 - Deployment in the Market and Maintenance Performed by: Implementation Engineer (IT) Released formally into the correct market May occur in stages, if according to business strategy: 1 - released on a small scale (limited segment) to be tested in the real business atmosphere User acceptance testing (UAT) 2 - feedback tells whether to release product as is or with modifications (back into targeting market) Once released, maintenance is done for customers
Popular SDLC Models in Industry Agile Model Big Bang Model Spiral Model Waterfall Model
Importance of Communication - Division of Responsibilities (BAD) Relay Communication model - higher possibility of misunderstanding as requirements are misunderstood, dropped out, or unnecessarily put in Manager relays customer requirements and analysis to lead designers (architects) Designers relay information to module leads, etc. (GOOD) Shared Communication model - everyone has a certain part in ownership and they know how their part fits in with the larger project.
Importance of Communication - SPOC SPOC - Single Point of Contact Assigned for different roles in a project One person is held accountable for that part in the project Activities include: planning, estimation, and execution of assigned roles Contributions from peers is encouraged to produce better quality results Transparent communication is important SPOC can contribute in other parts where he/she is not the owner
Importance of Communication - Barriers of Communication Encouraged forms of communication: Upward communication Information flows from lower levels of hierarchy to upper levels Cross-functional/Cross-team communication Information flows across different functional expertise (i.e. marketing, finance, designing, operations, etc.) Can be formal or informal
Importance of Communication - Delay in Communication The right communication must occur at the right time Express any questions or suggestions Convey concerns regarding errors Share any new, interesting ideas It may end up benefitting the team or the customers
In Conclusion... Communication is important in ensuring software quality Often, informal communication may be more beneficial than communicating through formal means