ScholarQuill logoScholarQuillUniversity Notes
  • Notes
  • Past Papers
  • Blogs
  • Todo
Login
ScholarQuill logoScholarQuillUniversity Notes
Login
NotesPast PapersBlogsTodo
More
SubjectsDiscussionCGPA CalculatorGPA CalculatorStudent PortalCourse Outline
About
About usPrivacy PolicyReportContact
Notes
Past Papers
Blogs
Todo
Analytics
    Current Subject
    🧩
    Human computer interaction
    COMP3113
    Progress0 / 51 topics
    Topics
    1. The Human: Input-Output Channels2. Human Memory3. Thinking, Reasoning, and Problem Solving4. Emotions5. Individual Differences6. Psychology and Design of Interacting Systems7. The Computer: Introduction8. Text Entry Devices9. Positioning, Pointing, and Drawing10. Display Devices11. Devices for Virtual Reality and 3D Interaction12. Physical Controls, Sensors, and Special Devices13. Paper Printing and Scanning14. Memory, Processing, and Networks15. The Interaction: Models of Interaction16. Frameworks and HCI17. Ergonomics18. Interaction Styles19. Elements of the WIMP Interfaces20. Interactivity21. Context of Interaction22. Experience23. Usability Paradigm and Principles: Introduction24. Paradigms for Interaction25. Interaction Design Basics: Introduction26. What is Design27. Process of Design28. User Focus29. Navigation Design30. Screen Design and Layout31. Iteration and Prototyping32. HCI in Software Process: Introduction33. Software Life Cycle34. Usability Engineering35. Iterative Design and Prototyping36. Design Rationale37. Design Rules, Prototyping, and Evaluation Techniques38. Task Analysis39. Universal Design40. User Support41. Computer Supported Cooperative Work42. Guidelines, Golden Rules, and Heuristics43. HCI Patterns44. Choosing an Evaluation Method45. Requirements of User Support46. Applications47. Design User Support Systems48. Introduction to Groupware, Pervasive and Ubiquitous Applications49. Groupware Systems50. Implementation of Synchronous Groupware51. Ubiquitous Computing
    COMP3113›Software Life Cycle
    Human computer interactionTopic 33 of 51

    Software Life Cycle

    7 minread
    1,273words
    Intermediatelevel

    Software Life Cycle

    The Software Life Cycle (SLC), often referred to as the Software Development Life Cycle (SDLC), is a structured framework that outlines the stages or phases involved in the development of software systems, from initial concept through to deployment and maintenance. The purpose of the Software Life Cycle is to ensure that software is developed systematically, with clear milestones and processes, to meet both functional and non-functional requirements, such as usability, security, and performance.

    The software life cycle typically consists of several distinct phases, each with its own set of activities and deliverables. The process may vary depending on the software development methodology (e.g., Waterfall, Agile, DevOps), but the core stages generally remain similar across methodologies.


    1. Requirement Gathering and Analysis

    The requirement gathering phase is the first and crucial step in the Software Life Cycle. It involves identifying and documenting the software's functional and non-functional requirements based on the needs of users, stakeholders, and the business.

    • Activities:

      • Stakeholder Interviews: Discussions with clients, users, and other stakeholders to understand their needs and expectations.
      • Surveys and Questionnaires: Collecting feedback from potential users to define the scope of the system.
      • Use Case Analysis: Identifying user stories, workflows, and scenarios in which the system will be used.
      • System Specifications: Writing detailed specifications of what the system should do, including both functional requirements (e.g., features, behaviors) and non-functional requirements (e.g., performance, security, usability).
    • Outcome: A comprehensive Requirements Specification Document that describes the software's expected functionality and constraints. This document serves as the foundation for all future stages of development.


    2. System Design

    Once the requirements are clearly understood, the next phase is system design, where the architecture of the software system is defined. The design phase converts the high-level requirements into a blueprint for building the system.

    • Activities:

      • High-Level Design (Architectural Design): Defining the overall structure of the system, including the system architecture, technology stack, and key components (e.g., databases, servers, user interfaces).
      • Low-Level Design (Detailed Design): Creating detailed designs of individual components, modules, or classes. This may include defining the flow of data, user interface design, algorithms, and database schema.
      • Prototyping: In some cases, a prototype or proof-of-concept is created to validate ideas or design approaches early on.
      • Usability and Interaction Design: If HCI principles are involved, the design phase also includes creating wireframes, UI mockups, and specifying interaction patterns to ensure the system is user-friendly.
    • Outcome: A System Design Document that specifies the architecture, technology stack, user interface, and how different parts of the system will work together. It may also include models such as UML diagrams or entity-relationship diagrams.


    3. Implementation (Coding/Development)

    The implementation phase is where the actual coding of the software occurs. Developers begin translating the design documents into executable code, creating the functionality described in the requirements specification.

    • Activities:

      • Coding: Developers write the code in the chosen programming language(s), ensuring the software implements the designed features and functions.
      • Unit Testing: As the code is developed, developers write and execute unit tests to ensure that each component or module functions correctly in isolation.
      • Version Control: Developers use version control systems (e.g., Git) to manage changes to the codebase, collaborate with other team members, and track progress.
    • Outcome: The software codebase and a suite of unit tests for individual components. At the end of this phase, the core functionality of the software is implemented.


    4. Testing

    Once the software is implemented, it undergoes a series of testing activities to ensure it works as intended, meets user requirements, and is free of bugs. Testing is a critical phase to ensure the software's quality and reliability.

    • Activities:

      • Integration Testing: Testing the interactions between different modules or components to ensure they work together correctly.
      • System Testing: Testing the complete, integrated software system against the requirements specification.
      • Usability Testing: Involves real users interacting with the software to identify usability issues and assess the user experience. This is particularly important in systems that rely on HCI principles.
      • Performance Testing: Assessing the software's speed, scalability, and responsiveness under different conditions.
      • Security Testing: Ensuring the software is secure against common vulnerabilities and attacks.
      • Bug Fixing: Any issues identified during testing are tracked and fixed by developers.
    • Outcome: A test report outlining the testing activities, results, and any remaining issues. Once testing is complete, the software is considered "ready for deployment."


    5. Deployment

    The deployment phase involves the release of the software to its intended users. This can occur in stages (e.g., beta releases, gradual rollouts) or as a full-scale launch.

    • Activities:

      • Release Planning: Deciding on the method of deployment (e.g., cloud, on-premises) and creating deployment plans.
      • Installation and Configuration: Preparing the system environment (e.g., setting up servers, configuring databases) and installing the software for users.
      • User Training and Documentation: Providing training to users on how to use the system and offering documentation for support.
      • Go-Live: Making the system live and available to users.
    • Outcome: The software is now live and being used by the target audience. The system should be continuously monitored for performance, errors, and user feedback.


    6. Maintenance

    After the software is deployed, the maintenance phase begins. This phase ensures the software remains functional, up-to-date, and meets the ongoing needs of users. It also involves correcting defects and enhancing the software with new features.

    • Activities:

      • Bug Fixing: Addressing any issues or bugs that arise after deployment.
      • Upgrades and Updates: Enhancing the software with new features, functionalities, or improvements based on user feedback or changing business requirements.
      • Performance Monitoring: Monitoring the software’s performance, ensuring it operates as expected, and making adjustments when needed.
      • Technical Support: Providing ongoing technical support and customer service to resolve user issues.
    • Outcome: A sustained, operational software product that is continuously improved based on evolving user needs and changing technology. Regular updates and bug fixes ensure the software stays functional and relevant over time.


    Common Software Development Methodologies

    While the core phases of the Software Life Cycle remain similar, different development methodologies approach the SDLC in different ways. Some of the most common methodologies include:

    • Waterfall: A linear and sequential approach where each phase must be completed before moving on to the next. This approach works well for projects with well-defined requirements but is less flexible when changes arise.

    • Agile: An iterative and incremental approach where development occurs in small cycles (sprints). Each cycle involves planning, development, testing, and review, with frequent adjustments based on feedback. Agile is ideal for projects with evolving requirements and emphasizes collaboration and flexibility.

    • DevOps: A methodology that integrates development and operations teams to streamline software delivery and improve collaboration between traditionally separate roles. It emphasizes continuous integration and continuous delivery (CI/CD) practices to automate and accelerate deployment.

    • Spiral: A hybrid approach that combines iterative development with a focus on risk assessment. The project evolves through multiple cycles of planning, development, testing, and review, with a focus on identifying and mitigating risks early.


    Conclusion

    The Software Life Cycle (SLC) is a systematic approach to software development that ensures software is built, tested, deployed, and maintained in an efficient and organized way. By following the various stages of the SLC, developers can create high-quality software that meets user needs, performs well, and remains relevant over time. The flexibility to adapt to different methodologies (e.g., Agile, Waterfall, DevOps) allows teams to tailor the process to the specific needs and constraints of each project, ensuring the best possible outcomes for users and stakeholders.

    Previous topic 32
    HCI in Software Process: Introduction
    Next topic 34
    Usability Engineering

    Past Papers

    Open this section to load past papers

    Click on Show Past Papers to see past papers.
    On This Page
      Reading Stats
      Est. reading time7 min
      Word count1,273
      Code examples0
      DifficultyIntermediate