L02: What is Software? Flashcards
What is a program?
Set of instructions written in a particular language
What is software engineering?
- Software engineering is an engineering discipline that is
concerned with all aspects of software production - All or part of the programs, procedures, rules, and
associated documentation of an information processing
system - Computer programs, procedures and possibly associated
documentation and data pertaining to the operation of a
computer system
In the context of an abstraction model, where is software?
- Application Layer
- Middleware Layer
- Operating System
Who creates software?
- Software companies
- Public/private organisations with software divisions
- Academic/research groups
- Individual developers
What are the features of professional software development?
Professional software development is not for personal use, interest, or enjoyment
Who is software for?
- Specific customers
- Organisations or individuals
- General market
The customer or developers usually decide the specification of what is required of the software
What are some types of applications?
There are many different types of software system. Each requires appropriate software engineering tools and
techniques for its development.
- Standalone (can operate by itself without relying on other servers)
- Interactive, transaction based, e.g. online banking
- Embedded control, e.g. car, washing machine
- Entertainment, e.g. games
- Modelling and simulation
- Data collection and analysis
- System of systems
What are the attributes of good software?
- The software should deliver the required functionality and
performance to the user and should be maintainable,
dependable and acceptable - Maintainability
Software must evolve to meet changing needs - Dependability
Software must be trustworthy - Efficiency
Software should not make wasteful use of system resources - Acceptability and usability
Software must accepted by the users for which it was designed. This means it must be understandable, usable and compatible with other systems. - Ethical
- Secure
- Accessible
What are some goals of software development?
The fundamental ideas of software engineering are
applicable to all types of software system
- Good quality software
- Delivered on time
- Produced within budget
- Satisfies customer requirements
- Meets legal, ethical and professional standards
What are some challenges of software development?
- Increasing reliance of individuals/organisations/governments on software for support
- Increasing diversity and complexity of systems
- Demand for faster delivery times and other business pressures
- Heterogeneity (software must run on different devices, OSs)
- Business and social change (software must be relevant to current market trends and practices)
- Security and trust
- Scale
What are the 3 layers of software engineering?
- Software engineering process
Forms the basis for structuring activities for production of software and managing the project - Software engineering methods
Determine how different stages of developing software are accomplished
Choice of methods depend on organisational and regulatory constraints - Software engineering tools
Provide automated/semi-automated support for processes and methods used
What are the 4 software engineering activities?
- Software specification
What the system should do and its development constraints - Software development
Production of the software system - Software validation
Checking that the software is what the customer wants - Software evolution
Changing the software in response to changing demands
What is the rough division of software engineering costs?
- 60% Development
- 40% Testing
- Software costs more to maintain than develop, especially for systems with a long life
- Software engineering is concerned with cost-effective software development
- Costs vary depending on the type of system being developed and the requirements of system attributes such as performance and system reliability
What is software engineering?
- Software engineering is an engineering discipline that is concerned with all aspects of software production.
- Software engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to be solved, the development constraints and the resources available.
What is the difference between software engineering and computer science?
- Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software.
- Computer science theories are still insufficient to act as a complete underpinning for software engineering (unlike e.g. physics and electrical engineering).