Software Engineering Fundamentals: Models, SRS, Metrics
What is Software Engineering? Aim and Principles
Software Engineering is a disciplined approach to designing, developing, testing, and maintaining software systems. It applies engineering principles, methodologies, and best practices to ensure that software is reliable, efficient, scalable, and cost-effective.
Aim of Software Engineering
The main aim of Software Engineering is to develop high-quality software that meets user requirements while ensuring:
- Reliability – The software should function correctly
Software Quality Assurance & Testing Fundamentals
Software Quality: Definitions & QA vs QC
Quality: The degree to which software meets specified requirements and customer expectations.
Quality Assurance (QA): A preventive, process-oriented activity that ensures quality in the processes by which products are developed.
Quality Control (QC): A corrective, product-oriented activity that involves identifying defects in actual products using inspections and testing.
Difference between QA & QC:
Aspect | QA | QC |
Focus | Process | Product |
Goal | Prevent defects | Detect |
Software Quality Assurance: Testing Methodologies
Software Program Testing Essentials
- Testing aims to demonstrate that a program functions as intended and to uncover defects before deployment.
- Software testing involves executing a program with artificial data.
- Results are checked for errors, anomalies, or insights into the program’s non-functional attributes.
- Testing can reveal the presence of errors, not their absence.
- It is a crucial part of the broader verification and validation (V&V) process, which also incorporates static validation techniques.
Core Concepts in Software Engineering & Development
Software Engineering: Definition & Layers
Software engineering is a systematic, disciplined, and measurable approach to the design, development, maintenance, testing, and evaluation of software systems. It applies engineering principles to create high-quality software solutions that are reliable, efficient, and scalable, while addressing complex real-world problems. The main objectives of software engineering are to:
- Produce cost-effective solutions
- Minimize development risks
- Manage project complexity
- Ensure
Software Development Processes and Requirements
Software Development Processes
Software development involves transforming user requirements into functional software. Key processes include:
- Software Specification: Defining the software’s functionality and operational constraints with input from customers and engineers.
- Software Development: Designing and programming the software.
- Software Validation: Verifying that the software meets customer requirements.
- Software Evolution: Modifying the software to adapt to changing customer needs and market demands.
System Modeling Essentials: UML Perspectives & Diagrams
What is System Modeling?
Process of creating abstract graphical models of a system.
Goal: Understand and communicate different views (perspectives).
Common Language: UML (Unified Modeling Language)
Four System Perspectives
Perspective | Description |
---|---|
External | Models the system environment or context |
Interaction | Shows how system components or users interact |
Structural | Shows how the system or data is organized |
Behavioral | Shows how the system behaves or reacts to events |
Context Models
Show the operational context of a