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?
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?
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.
Define Software Engineering
What are the 10 areas of knowledge that make up software engineering?
What are 5 extra knowledge areas added to SWEBOK?
What are some areas of application in a software engineering project?
computer science vs software engineering. How do they differ?
Computer science
Software Engineering
A software engineer applies the results from computer science as problem-solving tools in their projects. What chemistry is to chemical engineering, or physics is to electrical engineering.
What is the inherit difference between comp sci and software engineering?
Complexity usually caused by the size of the system.
Other factors are also an influence.
Put simply, computer science is concerned with solving small-scale problems regarding certain computational problems, while software engineering is concerned with how to build and manage large-scale systems.
The complexity of large-scale systems is generally so great that it is not possible for one person to understand the system, so it is necessary for teams of people to coordinate with each other for a software project to succeed.
Example of of a large scale software engineering project?
The first Linux operating system kernel, which was designed and implemented by Linus Torvalds entirely on his own, consisted of just over 10 thousand lines of code. Linux 4.2, released in June 2015, consists of almost 19.5 million lines of code, and has been developed by thousands of people over almost two decades. The Linux kernel could simply not have been produced without following sound software engineering principles, due to its inherent complexity. Software engineering is about dealing with this complexity using art, science, and engineering. There are several planning, problem solving, monitoring, and controlling disciplines involved in the development now. For example, the Linux kernel itself has several different branches, with each branch having several levels of stability. Such a task requires a configuration management process that must be strictly adhered to. Such a process is part of the larger software engineering method that is followed by Torvalds and his army of developers.
How do software engineers approach solving large scale problems?
a top-down approach to building software. They:
What are some similarities between software engineering and other forms of engineering?