Introduction to Software Engineering
Definition
Software engineering is concerned with theories, methods, and tools for professional software
development.
Importance
- Economies of developed nations depend on software.
- Software costs often dominate system costs, with maintenance costs exceeding development
costs for long-life systems.
Software Products
- Generic products: Stand-alone systems marketed to any customer (e.g., PC software).
- Customized products: Commissioned by specific customers to meet their needs (e.g., air traffic
control software).
Software Engineering Activities
- Specification: Defining what the software should do.
- Development: Designing and programming the software.
- Validation: Ensuring the software meets customer requirements.
- Evolution: Modifying the software to reflect changing needs.
Essential Attributes of Good Software
- Maintainability: Software should evolve to meet changing needs.
- Dependability and Security: Software should be reliable, secure, and safe.
- Efficiency: Software should use system resources effectively.
- Acceptability: Software should be understandable, usable, and compatible with other systems.
Software Engineering Ethics
- Confidentiality: Respecting employer/client confidentiality.
- Competence: Not misrepresenting one's skills or accepting work beyond one's competence.
- Intellectual Property Rights: Protecting the intellectual property of employers and clients.
- Computer Misuse: Not using technical skills to misuse computers.
ACM/IEEE Code of Ethics
1. PUBLIC - Act in the public interest.
2. CLIENT AND EMPLOYER - Work in the best interests of clients and employers.
3. PRODUCT - Ensure high professional standards.
4. JUDGMENT - Maintain integrity and independence.
5. MANAGEMENT - Promote ethical management of software development.
6. PROFESSION - Advance the profession's integrity and reputation.
7. COLLEAGUES - Be fair and supportive to colleagues.
8. SELF - Engage in lifelong learning and promote ethical practice.
Case Studies
1. Insulin Pump Control System: An embedded system that calculates and delivers insulin doses
based on blood sugar levels.
2. Mental Health Care Patient Management System (MHC-PMS): A system for managing patient
records in mental health care.
3. Wilderness Weather Station: A data collection system for monitoring weather conditions in remote
areas.
Key Points
- Software engineering involves all aspects of software production, from specification to
maintenance.
- Good software should be maintainable, dependable, efficient, and acceptable.
- Software engineers have ethical responsibilities and must follow professional codes of conduct.
- Different types of software systems require different engineering techniques and tools.