Introduction to Software Engineering (Lecture 1) Flashcards
Define software engineering
Software engineering is an engineering discipline focusing on the cost-effective development of software systems. It’s concerned with all aspects of software production
Why is software engineering important?
- software is difficult to manage
- software is everywhere (or ubiquitous) and essential to daily life
- software systems are abstract and intangible
- software systems can quickly become extremely complex, difficult to understand, and expensive to change
Outline 2 reasons why software projects fail
- increasing system complexity
- constant changes in demand and failure to keep up - failure to use software engineering methods
- consequently, the software is often more expensive and less reliable than it should be
What are the attributes of good software?
Good software should deliver the required functionality and performance. It should be maintainable, dependable, usable, efficient, and acceptable to the users it is designed for
What is the difference between software engineering and computer science?
Software engineering focuses on the practicalities and delivering useful software; Computer science focuses on the theory and fundamentals
What is the difference between software engineering and system engineering
System engineering is concerned with all aspects of computer-based systems (e.g. hardware). Software engineering is a part of this more general process
What are the key challenges facing software engineering?
Coping with increasing diversity, demands for reduced delivery times and developing trustworthy software
What are the costs of software engineering?
60% are development costs, 40% are testing costs
What are the two fundamental types of software products?
Generic products and custom products
Generic Products
Stand-alone systems marketed and sold to any customer who wants to buy it
Customized Products
Software commissioned by a specific customer to meet their own needs
Four general issues that affect software
Heterogeneity; business and social change; security and trust; and scale
Four examples of professional responsibility (related to ethics)
- Confidentiality
- Competence
- Intellectual property rights
- Computer misuse
What is the ACM/IEEE Code of Ethics
These ethics aim to provide rules, standards and protection for software developers and their clients. The Code of Ethics has eight principles