8.1. Introduction to Software Engineering
Software Engineering is the systematic approach to the development, operation, maintenance, and retirement of software
· It applies engineering principles to software development
· Aims to deliver reliable, efficient, maintainable, and scalable software systems
· Involves planning, analysis, design, coding, testing, and maintenance phases
· Ensures quality, time, and cost-effectiveness in software projects
· Helps manage complex and large-scale software with proper documentation and tools
· Promotes team collaboration, version control, and requirement analysis
·
Common software
engineering models include:
• Waterfall Model
• Agile Model
• Spiral Model
• V-Model
8.2. System Analysis and Design
· Stands for System Analysis and Design (SAD)
· It is a process of planning, analyzing, designing, and implementing information systems
· Helps in solving problems through a structured approach by studying the current system and creating a new one
· Used in software development, business process modeling, and IT project management
System Analysis
· The process of examining a business situation with the intent of improving it through better procedures and methods
· Involves:
o Requirement gathering from stakeholders
o Understanding the existing system (manual or computerized)
o Identifying the problems and needs
o Creating feasibility studies (technical, operational, economic)
o Creating Data Flow Diagrams (DFDs), Entity Relationship Diagrams (ERDs)
· The output is a System Requirement Specification (SRS) document
System Design
· Refers to the process of defining the architecture, components, modules, interfaces, and data for a system
· Converts the requirements from system analysis into a blueprint for building the system
· Involves:
o Logical Design: What the system must do (data structures, relationships, etc.)
o Physical Design: How the system will be implemented (hardware, software, DBMS)
o Designing input/output screens, reports, database schemas, and user interfaces
Phases of System Analysis and Design
1. Preliminary Investigation
2. System Analysis
3. System Design
4. System Development
5. System Testing
6. System Implementation
7. System Maintenance
Tools Used
· DFD (Data Flow Diagram)
· ER Diagram
· Flowcharts
· UML Diagrams
· CASE tools (Computer-Aided Software Engineering)
Benefits
· Improves system performance
· Reduces redundancy and cost
· Enhances data integrity and reliability
· Supports decision making and automation
· Helps in better project planning and execution
8.3. Software Development Lifecycle (SDLC) & Software Project Management
Software Development Lifecycle (SDLC)
SDLC is a step-by-step process used to develop high-quality software in a systematic, structured, and efficient manner.
Phases of SDLC:
1. Requirement Gathering & Analysis
o Understanding what the user needs from the system.
o Gathering business, user, and system requirements.
o Output: SRS (Software Requirement Specification)
2. System Design
o Designing system architecture, database schema, user interface, etc.
o Two parts: Logical Design and Physical Design
3. Implementation / Coding
o Developers write code in the chosen programming language based on the design.
4. Testing
o The software is tested for errors, bugs, and performance.
o Testing types: Unit Testing, Integration Testing, System Testing, Acceptance Testing
5. Deployment
o Software is installed on the client’s environment.
o Can be done in stages (e.g., beta release, full release)
6. Maintenance
o Ongoing updates, bug fixes, improvements after deployment.
o Includes: corrective, adaptive, and perfective maintenance
Popular SDLC Models
· Waterfall Model
· Agile Model
· Spiral Model
· V-Model
· Iterative Model
Software Project Management
Definition: It is the process of planning, organizing, and managing resources to successfully complete software projects.
Elements of Software Project Management:
1. Project Planning
o Defining scope, objectives, tasks, milestones, deadlines
2. Resource Management
o Allocating and managing the team, budget, tools, and time
3. Risk Management
o Identifying potential risks and preparing mitigation strategies
4. Time and Cost Estimation
o Using models like COCOMO to estimate project duration and budget
5. Quality Management
o Ensuring the final product meets the required standards and user expectations
6. Team Collaboration
o Managing communication among developers, testers, clients, and stakeholders
Common Tools Used
· JIRA, Trello – Task tracking
· Git, GitHub – Version control
· MS Project – Project planning
· Slack, Teams – Communication
8.4. Software Design, Requirement Analysis and Specification
Software Design
Software design is the process of defining the architecture, components, interfaces, and data of a software system to satisfy specified requirements.
Types of Software Design:
· Architectural Design
o Defines overall structure and high-level components of the system (modules, layers, client-server, etc.).
· Detailed Design
o Focuses on the design of each component (algorithms, database schema, etc.).
· Interface Design
o Designs how software modules interact with each other or with the user.
· User Interface (UI) Design
o Design of how users interact with the system (buttons, forms, layout, etc.).
2. Requirement Analysis
Requirement analysis is the process of gathering, analyzing, and validating the needs and requirements of the users and stakeholders for the system.
Objectives:
· Understand what the client wants.
· Identify functional and non-functional requirements.
Functional Requirements:
· Define what the system should do (e.g., user login, data processing, etc.)
Non-Functional Requirements:
· Define how the system performs (e.g., speed, security, reliability, scalability)
Techniques Used:
· Interviews
· Questionnaires
· Observation
· Document Analysis
· Use Case Diagrams (UML)
3. Software Requirement Specification (SRS)
SRS is a formal document that describes in detail the functional and non-functional requirements of the software to be developed.
Purpose of SRS:
· Serves as a contract between client and developer.
· Helps avoid misunderstandings and rework.
· Acts as a base for design, development, and testing.
Contents of an SRS Document:
1. Introduction
o Purpose, Scope, Definitions, Overview
2. Overall Description
o Product perspective, functions, user characteristics
3. Specific Requirements
o Functional and non-functional requirements
4. External Interfaces
o Hardware, software, user, and communication interfaces
Benefits of Proper Design and Requirement Analysis
· Saves time and cost
· Reduces errors in software
· Improves product quality
· Helps in better project planning
8.5. Software Reliability, Testing, and Maintenance
1. Software Reliability
Software reliability refers to the ability of a software system to perform its required functions under specified conditions for a defined period of time without failure.
Concepts:
· Fault: A defect in the code.
· Error: A human mistake while coding.
· Failure: System does not behave as expected.
Factors Affecting Reliability:
· Code quality
· Error handling
· Software complexity
· Testing quality
· Environmental conditions (hardware, OS, etc.)
Measures of Reliability:
· Mean Time Between Failures (MTBF)
· Failure Rate
· Availability
2. Software Testing
Testing is the process of executing a program with the intent of finding errors and ensuring the software meets its requirements.
Objectives:
· Identify bugs or defects.
· Ensure software performs correctly.
· Verify that requirements are met.
Types of Testing:
Type |
Description |
Unit Testing |
Tests individual components or modules. |
Integration Testing |
Tests interaction between modules. |
System Testing |
Tests the complete software as a whole. |
Acceptance Testing |
Done by the client to ensure requirements are met. |
Regression Testing |
Done after changes to ensure existing features work. |
Performance Testing |
Tests speed, scalability, and responsiveness. |
Security Testing |
Checks for vulnerabilities in the software. |
Testing Techniques:
· White Box Testing – Internal structure is tested (logic, code paths).
· Black Box Testing – Only inputs and outputs are tested, not internal code.
· Gray Box Testing – Combines both white and black box testing.
3. Software Maintenance
Software maintenance is the process of modifying and updating software after its delivery to fix defects, improve performance, or adapt it to a changed environment.
Types of Maintenance:
Type |
Description |
Corrective Maintenance |
Fixing errors or bugs found in the software. |
Adaptive Maintenance |
Modifying the software to run in a new environment (e.g., OS upgrade). |
Perfective Maintenance |
Improving or enhancing features based on user feedback. |
Preventive Maintenance |
Making changes to prevent future problems. |
Importance:
· Keeps software usable and relevant.
· Adapts to new technologies and environments.
· Improves software quality over time.