COM 2229/COM2629 Lecture Note 6 PDF
Document Details
Uploaded by GorgeousQuasimodo
2024
Mr UD Anokwuru
Tags
Summary
COM 2229/COM2629 Lecture Note 6 discusses the Software Development Life Cycle (SDLC) model, focusing specifically on six phases: Planning, Requirement Analysis, Defining Requirements, Designing Architecture, Developing Product, Product Testing, and Deployment and Maintenance. This note explains the importance of each phase, emphasizing the critical role of clearly defined requirements in successful software projects. The note also covers key activities and types of requirements, with relevant examples.
Full Transcript
COM 2229/COM2629 Lecture Note 6 Introduction to Information Systems (System Analysis) Lecturer: MR UD Anokwuru SDLC Phases The SDLC model involves six phases or stages while developing any software. SDLC is a collection of these six stages, and the stages of SDLC are as follow...
COM 2229/COM2629 Lecture Note 6 Introduction to Information Systems (System Analysis) Lecturer: MR UD Anokwuru SDLC Phases The SDLC model involves six phases or stages while developing any software. SDLC is a collection of these six stages, and the stages of SDLC are as follows: 1. Planning 2. Requirement Analysis (System Analysis) 3. Defining Requirements (System Analysis) 4. Designing Architecture(System Design) 5. Developing Product (System Development) 6. Product Testing and Integration (System Implementation and Testing) 7. Deployment and Maintenance of Products (System Implementation and evaluation Defining Requirements Defining requirements effectively is critical to the success of any software development project, as it directly influences the quality, timeline, and budget of the project. Purpose of Requirement Definition Clarity and Direction: Clearly defining the requirements ensures that all stakeholders have a shared understanding of what the software will accomplish.Scope Definition: It outlines the scope of the project, ensuring that the development team and stakeholders agree on what will and won't be included. Key Activities in the Requirement Definition Phase Requirement Gathering: Collecting requirements from all stakeholders, including customers, end-users, and subject matter experts. Requirement Analysis: Analyzing the gathered requirements to ensure they are clear, complete, and feasible. Documentation: Creating detailed documentation that describes all the functional and non-functional requirements of the system. This might include: Business Requirements Document (BRD): Describes the high-level business needs. Functional Requirements Specification (FRS): Describes the functionality that the system must provide. Use Cases: Scenarios that describe how users will interact with the system. User Stories: Short, simple descriptions of a feature told from the perspective of the person who desires the new capability. Types of Requirements Functional Requirements: Define what the system should do. For example, "The system shall allow users to create and manage accounts." Non-Functional Requirements: Define how the system should behave. This includes performance, security, usability, and reliability. Business Requirements: Define the high-level business needs and objectives that the software will fulfill. Technical Requirements: Define the technical constraints and considerations, such as platforms, programming languages, and interoperability. Tools and Techniques Interviews and Workshops: Engaging stakeholders directly to gather their needs and expectations. Surveys and Questionnaires: Collecting data from a larger group of stakeholders. Prototyping: Building a preliminary version of the system to refine and validate requirements. Joint Application Development (JAD): Collaborative sessions where stakeholders and developers work together to define requirements. Output of the Requirement Definition Phase Requirements Specification Document: The primary output is a detailed document that serves as a reference for the development team throughout the SDLC. This document is often referred to as the Software Requirements Specification (SRS). Approved Requirements Baseline: A version of the requirements document that has been reviewed and approved by all stakeholders, providing a baseline against which future development can be measured. Importance in the SDLC Foundation for Design and Development: The defined requirements serve as the blueprint for the design and development phases. Risk Mitigation: Clearly defined requirements reduce the risk of scope creep, misunderstandings, and project overruns. Quality Assurance: Well-documented requirements provide a basis for testing and validation, ensuring the final product meets the user's needs. Requirement Analysis: Gathering Requirements: Understand the business requirements, user needs, and system constraints. Use Case Scenarios: Develop use cases to identify how the software will be used and what it needs to accomplish. Technical Requirements: Define technical requirements, including performance, security, and integration needs. SYSTEM Design – The design stage in the Software Development Life Cycle (SDLC) is a critical phase where the requirements gathered during the requirements analysis phase are transformed into a blueprint for building the software. This phase involves planning the system's architecture, user interface, data structures, and overall design to ensure that the software will meet the specified requirements. Key Activities in the Design Stage: System Architecture Design: Database Design: User Interface (UI) Design: Component Design: Data Flow Design: Security Design: Technical Specifications: Prototyping (Optional): System Architecture Design: Defines the overall structure of the system, including the software and hardware components. Determines how these components interact with each other. Decides on the technology stack, such as the choice of programming languages, frameworks, and tools. Database Design: Involves designing the database schema that will be used by the software. Ensures that the data structures support the application's needs, including considerations for performance, scalability, and security. User Interface (UI) Design: Focuses on designing the layout and appearance of the software's user interface. Considers usability, accessibility, and user experience (UX) principles. Creates wireframes, mockups, and prototypes. Component Design: Breaks down the system into individual components or modules. Specifies how these components will interact with each other. Details the functionality of each component, including input/ output, data flow, and error handling. Data Flow Design: Outlines how data will move through the system. Defines the flow of information between different components and external systems. Security Design: Identifies potential security risks and how to mitigate them. Includes designing authentication, authorization, encryption, and other security measures. Technical Specifications: Produces detailed technical documentation that developers will use to build the system. Includes diagrams such as Entity-Relationship Diagrams (ERD), Class Diagrams, Sequence Diagrams, etc. Prototyping (Optional): Sometimes a prototype or proof of concept is developed to validate certain aspects of the design. Helps in identifying potential issues early and refining the design before full-scale development begins. 1. System Designing Architecture The first step in designing SDLC architecture is to understand the requirements of your software project. You need to identify the problem you are trying to solve, the scope of the project, the stakeholders, the users, the functional and non-functional requirements, and the assumptions and risks. By integrating architectural design into the SDLC, organizations can ensure that the software not only meets the current requirements but is also flexible, scalable, and maintainable for the future. This critical process ensures the software system is well- structured, scalable, and meets the specified requirements. 2. System Design-Architectural Design: High-Level Architecture: Design the overall system architecture, including components, modules, and their interactions. Technology Stack: Select the appropriate technology stack (programming languages, frameworks, databases, etc.). Design Patterns: Apply design patterns (e.g., MVC, Microservices, SOA) to ensure best practices in software architecture. Data Modeling: Design the database schema, data flow, and data storage mechanisms. Integration Design: Plan how different systems and components will interact, including APIs, middleware, and 3. Detailed Design: Component Design: Break down the high-level architecture into smaller components or modules. Interface Design: Define the interfaces between different components, including APIs and data exchange formats. Security Design: Incorporate security measures at both the system and component levels, including encryption, authentication, and authorization. Scalability Planning: Design for scalability by considering load balancing, caching, and horizontal scaling techniques 4. Implementation: Coding Standards: Ensure developers follow coding standards and best practices aligned with the architectural design. Code Reviews: Conduct code reviews to ensure the implementation adheres to the architectural blueprint. Continuous Integration: Use CI/CD pipelines to integrate and deploy code regularly, ensuring alignment with the architecture. 5. Testing: Unit Testing: Test individual components to ensure they function as designed. Integration Testing: Test interactions between different components to ensure they work together seamlessly. Performance Testing: Ensure the system meets performance benchmarks, including load testing, stress testing, and optimization. Security Testing: Perform security tests to identify vulnerabilities in the architecture, such as penetration testing. 6. Deployment: Deployment Strategy: Plan the deployment architecture, including server configuration, cloud services, and environment setup. Monitoring: Implement monitoring tools to track the performance and health of the system in production. Rollback Plan: Prepare a rollback plan in case deployment issues arise, ensuring minimal downtime. 7. Maintenance: Architecture Evolution: Continuously assess and evolve the architecture to accommodate new requirements, technologies, or performance improvements. Bug Fixes: Address architectural issues that arise from bug reports or system failures. Refactoring: Regularly refactor code and architecture to maintain system integrity and performance over time. Key Considerations in Architectural Design within SDLC: Modularity: Design systems in a modular way to enable easier updates and maintenance. Documentation: Maintain comprehensive documentation for the architecture to ensure future developers and stakeholders understand the system. Collaboration: Work closely with stakeholders, including developers, testers, and operations teams, to ensure the architecture supports their needs. Future-Proofing: Design with future requirements in mind, ensuring that the system can evolve without major overhauls. Key Considerations in Architectural Design within SDLC: Modularity: Design systems in a modular way to enable easier updates and maintenance. Documentation: Maintain comprehensive documentation for the architecture to ensure future developers and stakeholders understand the system. Collaboration: Work closely with stakeholders, including developers, testers, and operations teams, to ensure the architecture supports their needs. Future-Proofing: Design with future requirements in mind, ensuring that the system can evolve without major overhauls. Output of the Design Stage: Design Documents: Comprehensive documentation detailing all aspects of the system design. Architectural Blueprints: High-level diagrams showing the system architecture. Database Schemas: Detailed descriptions of the database design. User Interface Prototypes: Mockups and wireframes for the UI. Component Specifications: Detailed descriptions of each software component.