Unit II: Overview of the Software Development Process PDF

Summary

This document provides an overview of the software development process, including types of software, phases of software development, a look at stakeholders, and team roles. This document is intended for students in the field of application development and emerging technologies, and it covers topics such as system software and software development risks.

Full Transcript

Unit II. Overview of the Software Development Process CC-105 Application Development and Emerging Technologies Unit II – Software Development Process What is Software? It is a collection of programs, data, and instructions that tell a computer how to perform specific tasks....

Unit II. Overview of the Software Development Process CC-105 Application Development and Emerging Technologies Unit II – Software Development Process What is Software? It is a collection of programs, data, and instructions that tell a computer how to perform specific tasks. It enables hardware to function and allows users to perform various operations, from basic calculations to complex data processing. CC-105 Application Development and Emerging Technologies Unit II – Software Development Process Types of Software (cont.) System Software - Manages hardware components and provides a platform for application software (e.g. Operating systems (Windows, macOS, Linux), device drivers, and utility programs). Application Software - Designed for end users to perform specific tasks (e.g. Web browsers, word processors, and media players) CC-105 Application Development and Emerging Technologies Unit II – Software Development Process Types of Software Programming Software - Provides tools for developers to write, test, and debug programs (e.g. Compilers, text editors, and Integrated Development Environments (IDEs)). Middleware - Connects different software applications or services, facilitating communication between them. CC-105 Application Development and Emerging Technologies Unit II – Software Development Process Software Development Process (SDP) It is a structured approach to designing, creating, testing, and maintaining software applications. It follows a series of well-defined phases to ensure quality, efficiency, and alignment with user requirements. CC-105 Application Development and Emerging Technologies Unit II – Software Development Process Phases of Software Development 1. Requirement Analysis 5. Testing 2. Planning 6. Deployment 3. Design 7. Maintenance and Updates 4. Implementation (Coding & Development) CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 1. Requirement Analysis (cont.) To gather, analyze, and document user and system requirements. Activities: Identify stakeholders (e.g., users, clients, developers). Conduct interviews, surveys, and brainstorming sessions. Create Software Requirement Specification (SRS) documents. CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 1. Requirement Analysis (cont.) Activities: Define functional (what the system should do) and non-functional (performance, security, usability) requirements. Perform feasibility studies (technical, operational, economic feasibility). CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 1. Requirement Analysis (cont.) Stakeholder A stakeholder in software development is any individual, group, or entity that has an interest, influence, or impact in the software project. Stakeholders can be internal (part of the organization) or external (outside the organization). CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 1. Requirement Analysis (cont.) Primary Stakeholders These stakeholders are directly involved in or impacted by the software system. End Users Software Developers (Customers/Clients) UI/UX Designers Product Owner Testers (QA Engineers) Project Manager CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 1. Requirement Analysis (cont.) Secondary Stakeholders These stakeholders influence the project but do not directly use or develop the software. Business Analysts Investors & Sponsors Marketing Team System Administrators (IT Legal & Compliance Support) Officers CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 1. Requirement Analysis (cont.) Key External Stakeholders These stakeholders have an indirect impact on the software’s success from outside the organization. Government & Regulatory Bodies Competitors Third-party Vendors CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 1. Requirement Analysis (cont.) In the Software Development Process, requirements are categorized into two main types: Functional Requirements (Describe what the system should do) Non-Functional Requirements (Describe how the system should perform) CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 1. Requirement Analysis (cont.) Functional Requirements It specify the core features, operations, and behaviors of the software. They define what the system should accomplish based on business and user needs. Describe specific inputs, processes, and outputs. Define business rules, data processing, and interactions. Represent tasks that users and other systems can perform. CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 1. Requirement Analysis (cont.) Functional Requirements Examples: User Authentication, Data Storage, Payment Processing, Search Functionality, Order Confirmation Deliverables: Use Case Diagrams, User Stories, System Design Documents CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 1. Requirement Analysis (cont.) Non-Functional Requirements (NFRs) It define the quality attributes, performance, and constraints of the system. They do not specify what the system does but rather how well it performs. Categories: Performance, Scalability, Security, Usability, Availability, Maintainability, Compliance Deliverables: Performance Benchmarks, Security Policies, System Architecture Documentation CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 1. Requirement Analysis (cont.) Software Requirements Specification (SRS) It is a detailed document that describes a software system’s functional and non-functional requirements, constraints, and design considerations. It serves as a blueprint for developers, testers, and stakeholders throughout the Software Development Life Cycle (SDLC). CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 1. Requirement Analysis (cont.) Standard Structure of an SRS Document (IEEE 830-1998) 1. Introduction Purpose – Describes the software’s goals and why it is being developed. Scope – Defines the system’s boundaries and major functionalities. Definitions & Acronyms – Explains technical terms used in the document. References – Lists related documents, laws, or standards. Overview – Brief summary of what is covered in the document. CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 1. Requirement Analysis (cont.) Standard Structure of an SRS Document (IEEE 830-1998) 2. Overall Description Product Perspective – How the software fits into an existing system or workflow. User Characteristics – Defines the users and their skill levels. Operating Environment – Specifies hardware, software, and network requirements. Design & Implementation Constraints – Any restrictions (e.g., programming languages, frameworks). Assumptions & Dependencies – Conditions the system relies upon (e.g., external APIs, third-party services). CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 1. Requirement Analysis (cont.) Standard Structure of an SRS Document (IEEE 830-1998) 3. Functional Requirements Describes what the system should do. Organized into modules or features. Uses use cases, user stories, or process workflows. CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 1. Requirement Analysis (cont.) Standard Structure of an SRS Document (IEEE 830-1998) 4. Non-Functional Requirements Defines how well the system should perform. Includes performance, security, usability, and scalability. CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 1. Requirement Analysis (cont.) Standard Structure of an SRS Document (IEEE 830-1998) 5. External Interface Requirements User Interfaces – UI/UX design considerations, accessibility requirements. Hardware Interfaces – Describes interactions with external hardware. Software Interfaces – Integration with other software or APIs. Communication Interfaces – Network protocols, data exchange formats (e.g., JSON, XML). CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 1. Requirement Analysis (cont.) Standard Structure of an SRS Document (IEEE 830-1998) 6. System Features Describes each feature in detail including: Purpose Inputs & Outputs Processing logic Constraints CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 1. Requirement Analysis (cont.) Standard Structure of an SRS Document (IEEE 830-1998) 7. Other Requirements Legal & Compliance Requirements – GDPR, HIPAA, or industry-specific regulations. Performance Metrics – Load testing, uptime, response times. Backup & Recovery – Disaster recovery strategies. CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 1. Requirement Analysis (cont.) Deliverables: Business Requirement Document (BRD) Software Requirement Specification (SRS) Use Case Diagrams & User Stories CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 2. Planning (cont.) To define the project scope, timeline, resources, and risks. Activities: Define project scope, objectives, and constraints. Create a work breakdown structure (WBS). Assign roles and responsibilities. CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 2. Planning (cont.) Activities: Estimate cost, time, and resources. Identify potential risks and create mitigation plans. CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 2. Planning Deliverables: Project Plan Risk Management Plan Budget Estimation CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 2. Planning (cont.) Roles and Responsibilities in a Software Development Team 1. Project Manager (PM) 7. Quality Assurance (QA) 2. Business Analyst (BA) Engineer / Tester 3. Product Owner (PO) 8. DevOps Engineer 4. Software Architect 9. Security Analyst 5. UI/UX Designer 10. Stakeholders 6. Developers (Front-end, Back- end, Full Stack) CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 2. Planning (cont.) Roles and Responsibilities in a Software Development Team Project Manager (PM) Defines project scope, objectives, and timeline. Allocates resources and budget. Manages communication among stakeholders. Monitors risks and ensures project stays on schedule. CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 2. Planning (cont.) Roles and Responsibilities in a Software Development Team Business Analyst (BA) Gathers and analyzes business requirements. Acts as a bridge between stakeholders and the development team. Documents functional and non-functional requirements. Ensures that the software aligns with business goals. CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 2. Planning (cont.) Roles and Responsibilities in a Software Development Team Product Owner (PO) Defines product vision and roadmap. Prioritizes features and maintains the product backlog. Works closely with the development team to clarify requirements. CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 2. Planning (cont.) Roles and Responsibilities in a Software Development Team Software Architect Designs high-level software structure and system architecture. Defines technology stack and development frameworks. Ensures scalability, security, and maintainability of the software. CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 2. Planning (cont.) Roles and Responsibilities in a Software Development Team UI/UX Designer Designs user interface and experience. Creates wireframes, prototypes, and user flow diagrams. Ensures usability and accessibility standards are met. CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 2. Planning (cont.) Roles and Responsibilities in a Software Development Team Developers (Front-end, Back-end, Full Stack) Translates requirements into functional software. Implements system architecture and integrates components. Writes clean, maintainable, and efficient code. CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 2. Planning (cont.) Roles and Responsibilities in a Software Development Team Quality Assurance (QA) Engineer / Tester Defines testing strategies and test plans. Conducts functional, performance, and security testing. Ensures the software meets quality standards before deployment. CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 2. Planning (cont.) Roles and Responsibilities in a Software Development Team DevOps Engineer Manages CI/CD pipelines (source, build, test, deploy) and automates deployments. Ensures server infrastructure is scalable and secure. Monitors system performance and reliability. * CI/CD stands for Continuous integration / continuous delivery DevOps – Development and Operations CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 2. Planning (cont.) Roles and Responsibilities in a Software Development Team Security Analyst Identifies and mitigates security risks in software. Implements best practices for data protection and compliance. Conducts vulnerability assessments and penetration testing. * CI/CD stands for Continuous integration / continuous delivery DevOps – Development and Operations CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 2. Planning (cont.) Roles and Responsibilities in a Software Development Team Stakeholders Provide input on business needs and goals. Review progress and approve key deliverables. Offer feedback to improve the software solution.. CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 2. Planning (cont.) Software Development Risks 1. Technical Risks 2. Project Management Risks 3. Security Risks 4. Operational Risks CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 2. Planning (cont.) Software Development Risks Technical Risks Requirement Changes Technology Obsolescence Integration Issues Performance Bottlenecks CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 2. Planning (cont.) Software Development Risks Project Management Risks Scope Creep Inaccurate Estimation Resource Shortages Missed Deadlines CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 2. Planning (cont.) Software Development Risks Security Risks Data Breaches Injection Attacks Weak Authentication Compliance Violations (GDPR, HIPAA, PCI-DSS) CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 2. Planning (cont.) Software Development Risks Operational Risks Poor Documentation Inefficient Communication Server Downtime Dependency Failures CC-105 Application Development and Emerging Technologies Unit II – Software Development Process 2. Planning (cont.) Software Development Risks Business Risks Market Competition Budget Overruns Customer Dissatisfaction Legal Issues CC-105 Application Development and Emerging Technologies