Software Engineering Notes

What is Software?
  • Set of instructions to process inputs and produce desired outputs.

  • Includes user documentation such as manuals.

Description of Software
  • Described by capabilities: functions, features, and facilities.

    • Functions: Executes specific tasks (e.g. sales order processing).

    • Features: Multi-currency handling, updating product status.

    • Facilities: Printing orders, emailing customers.

Classes of Software
  • Generic Software: Broad market, common requirements.

  • Customized Software: Tailored for specific customer needs.

What is Good Software?
  • Evaluation varies based on stakeholder (customer, end-user, developer).

Attributes of Good Software
  • Maintainability: Evolving with changing needs.

  • Dependability: Trustworthy performance.

  • Efficiency: Optimal use of resources.

  • Usability: User-friendly interface.

Software Characteristics
  • Logical (not physical) system element.

  • Developed (engineered), not manufactured.

  • Often custom-built rather than assembled from components.

Types of Software
  • System Software: Supports other programs (e.g. OS, compiler).

  • Real-time Software: Monitors real-world events.

  • Business Software: Analyzes and processes business data.

  • Engineering/Scientific Software: Uses algorithms for computations.

  • Embedded Software: Controls products, limited functions.

  • AI Software: Uses AI for solving complex problems.

  • Internet Software: Supports internet applications.

  • Software Tools/CASE: Aids in software construction.

What is Software Engineering?
  • Systematic approach to software analysis, design, implementation, and maintenance.

  • Layered technology (tools, methods, process, quality focus).

Key Components of Software Engineering
  1. Software Methods: Technical guidelines for building software (e.g. design, coding).

  2. Software Process: Activities for developing software (specification, development, validation, ev

    olution).

  3. Software Tools: Automated support for software processes.

Goals of Software Engineering
  • Improve productivity and quality.

  • Control schedules and costs.

  • Meet customer needs.

Difference Between Software Engineering and Computer Science
  • Computer science: focuses on theoretical fundamentals.

  • Software engineering: practical development and delivery of software.

Difference Between Software Engineering and System Engineering
  • Software engineering is part of system engineering.

  • System engineering encompasses hardware, software, and processes.

Components of Software Engineering Approach
  • Systems Engineering Approach: Understand system components, relationships, and requirements.

  • Development Engineering Approach: Translate system requirements into software goals, leading to design, testing, and implementation.