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
Software Methods: Technical guidelines for building software (e.g. design, coding).
Software Process: Activities for developing software (specification, development, validation, ev
olution).
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.