Software Engineering Notes
Introduction to Software Engineering
Unit A Overview
- Introduction to Software Engineering and Process Models.
- Covers requirements engineering, software design, implementation, testing, and quality.
- Topics include significance, challenges, and software myths.
- Software Development Methodologies: Waterfall, prototyping, incremental, and spiral models.
- Agile process models: Extreme Programming (XP), Adaptive Software Development (ASD), Scrum.
What is Software?
- Software = Program + Documentation + Operating Procedures
- Program: Instructions that provide desired function and performance when executed.
- Documentation: Manuals, analysis/specification, design, implementation, testing details (Context-Diagram, Data Flow Diagrams, Flow Charts, Entity-Relationship Diagram, Source Code Listings, Cross-Reference Listing, Test Data/Results).
- Operating Procedure: Used to set up and operate the software system (System Overview, User Manuals, Operational Manuals, Beginner's Guide, Tutorial, Reference Guide, Installation Guide, System Administration Guide).
Software Engineering Defined
- An engineering discipline concerned with all aspects of software production.
- Involves a systematic and organized approach, using appropriate tools and techniques.
- Aims for quality software delivered on time and within budget, satisfying requirements.
- Software Engineering (SE) applies engineering principles to software development.
Software Engineering vs. Computer Science
- Computer Science: Focuses on theory, fundamentals.
- Software Engineering: Focuses on the practicalities of developing and delivering useful software.
- Computer science theories act as a foundation for software engineering.
Software Engineering vs. System Engineering
- Software engineering is a part of system engineering.
- System engineering includes hardware, software, and process engineering.
- System engineers handle system specification, architectural design, integration, and deployment.
Software Process
- The way in which software is produced.
- A set of activities for software development or evolution.
- Generic activities: Specification, development, validation, evolution.
Product and Process
- Product: What is delivered to the customer (source code, specification document, manuals).
- Process: How software is produced; activities leading to a product.
- An efficient process is required to produce good quality products.
Software Product Types
- Generic: Sold to a range of customers (e.g., word processors).
- Bespoke (Custom): Developed for a single customer according to their specifications (e.g., traffic control system).
Software Characteristics
- Software is engineered/developed, not manufactured.
- Software does not "wear out" like hardware.
- Reusability of components is a key aspect.
- Software is flexible.
- FailureRate=f(time)
- f(software)=f(hardware)