Chapter 1 Flashcards
What is software engineering?
Software Engineering refers to applying engineering principles to software development. (not the same thing as software development). It is a problem-solving activity.
What is software?
Software is both a solution and a problem. Generally it Is a solution to a problem.
What are examples of softwares?
- Word processors: The first word processors were built because composition, editing, and formatting of docu- ments was difficult using typewriters.
- Supply-chain logistics systems: A business may require some custom-built software to keep track of supply- chain logistics, because the current manual system they employ is inefficient and error prone.
- Games: Games are typically built to provide entertainment, and thus relieve us of the problem of boredom.
Can software stand in isolation?
NO. Software must interact with hardware devices that provide it with input and output (e.g. keyboards and PC monitors, or sensors and actuators in a rail system). Software is developed as part of a larger system.
What is a system?
A system is a collection of entities that are inter-connected. It is a set of programs, hardware components, networks and other devices that are inter-connected and work together to achieve a common goal.
What is a software system?
a set of programs that are inter-connected or related.
What are some requirements that limit software developement?
constraints imposed by hardware, communications networks, and other software.
How do you have the software match the hardware?
Via APIs. The design of a software system typically abstracts away from the details of the networks, operating systems and hardware.
What are APIs?
application programmer interfaces (APIs)
- allow developers to interact with hardware platforms without worrying about details of that interaction.
Do APIs protect us entirely from hardware?
An API, however, does not completely isolate us from networks and hardware. For example, it takes time for messages to be sent along a network and it takes time to acquire resources such as printers and data bases.
How to sensors affect software design?
Sensors, such as temperature sensors, motion detectors, RFID sensors, and cameras are other examples of devices that will not only influence your software design, but are often key parts of your solution to a specific engineering problem. In practice systems involving sensors require a complete systems approach to design.
What is a systems approach to design?
A systems approach is required for the design of many programs, especially if they combine hardware, software and networks into a single entity. This means much more than having to just think about delivering functions.
What are factors you have to consider with a systems approach to design?
- the physical layout of computers, network cables and the positioning of sensors, and other hardware;
- the reliability of components and how this affects the reliability of the system as a whole;
- the performance of components and how it affects the system as a whole; and
- other factors that will influence the behaviour of the system as a whole and how the system meets its goals.
What is a platform?
a computer executing a specific operating system possibly (probably) connected to a network and devices such as printers, scanners, PDAs or sensors. Every piece of software we write will eventually run on a platform.
What latencies do you have to consider when designing a system?
In designing and testing a system, you will need to take into account the latencies due to networks, communication with external devices such as sensors and interaction with other systems.