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)Failure Rate = f(time)
  • f(software)≠f(hardware)f(software) \neq f(hardware)