1/16
Looks like no tags are added yet.
Software failures are a consequence of?
Increasing system complexity: There is pressure to build and deliver larger, more complex software systems in shorter timeframes.
Failure to use software engineering methods.
The full scope of delivering Software products
software is not just the computer programs themselves but also all associated documentation, libraries, support websites, and configuration data that are needed to make these programs useful.
This is one of the important differences between professional and amateur software development. If you are writing a program for yourself, no one else will use it
if you are writing software that other people will use and other engineers will change, then you usually have to provide additional information as well as the code of the program.
What is the difference between software engineering and computer science?
Computer science focuses on theory and fundamentals.
Software engineering is concerned with the practicalities of developing and delivering useful software.
What is the difference between software engineering and system engineering?
System engineering is concerned with all aspects of computer based systems development including hardware, software and process engineering.
Software engineering is part of this more general process.
What are the costs of software engineering?
Roughly 60% of software costs are development costs. 40% are testing costs.
For custom software, evolution costs often exceed development costs.
What are the attributes of good software?
Good software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable.
There are two kinds of software products
Generic products: These are stand-alone systems that are produced by a development organization and sold on the open market to any customer who is able to buy them. Ex: apps for mobile devices, software for PCs such as databases, word processors, drawing packages, and project management tools.
Customized (or bespoke) software: software These are systems that are commissioned by and developed for a particular customer. A software contractor designs and implements the software especially for that customer. Examples of this type of software include control systems for electronic devices, systems written to support a particular business process, and air traffic control systems.
The critical distinction between Generic products & Customized software
in Generic products, the organization that develops the software controls the software specification. This means that if they run into development problems, they can rethink what is to be developed.
For custom products, the specification is developed and controlled by the organization that is buying the software. The software developers must work to that specification.
Software engineering
Software engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has gone into use.
Engineering discipline
Engineers make things work. They apply theories, methods, and tools where these are appropriate.
However, they use them selectively and always try to discover solutions to problems even when there are no applicable theories and methods.
Software engineering also includes activities such as software project management and the development of tools, methods, and theories to support software development.
Software process.
A software process is a sequence of activities that leads to the production of a software product. Four fundamental activities are common to all software processes.
Software specification, where customers and engineers define the software that is to be produced and the constraints on its operation.
Software development, where the software is designed and programmed.
Software validation, where the software is checked to ensure that it is what the customer requires.
Software evolution, where the software is modified to reflect changing customer and market requirements.
How Software engineering is related to computer science.
Computer science is concerned with the theories and methods that underlie computers and software systems, whereas software engineering is concerned with the practical problems of producing software.
Some knowledge of computer science is essential for software engineers.
However, computer science theory is often most applicable to relatively small programs. Elegant theories of computer science are rarely relevant to large, complex problems that require a software solution.
The four related issues that affect many different types of software
Diversity Increasingly, systems are required to operate as distributed systems across networks that include different types of computer and mobile devices.
Business and social change Businesses and society are changing incredibly quickly as emerging economies develop and new technologies become available.
Security and trust As software is intertwined with all aspects of our lives, it is essential that we can trust that software.
Scale Software has to be developed across a very wide range of scales, from very small embedded systems in portable or wearable devices through to Internet-scale, cloud-based systems that serve a global community.
Software engineering diversity
Each type of system requires specialized software engineering techniques because a software has different characteristics.
List some of different types of applications
Interactive transaction apps: Run on remote servers, accessed via computers or mobile devices.
Embedded control systems: Manage hardware devices like mobile software or car systems.
Entertainment systems: For personal enjoyment, like games on consoles.
Modeling and simulation: Simulate physical processes, often on high-performance systems.
Data collection and analysis: Gather data from sensors, analyze it, sometimes in the cloud.
Systems of systems: Complex setups in large organizations, combining various software.
What are the Software Engineering fundamentals that apply to all types of software systems?
Well managed development process: They should be developed using a managed and understood development process.
Dependability and performance are important for all types of system. Software should behave as expected, without failures.
Understanding and managing the software specification and requirements (what the software should do) are important.
Maximize resource efficiency by reusing existing software when suitable rather than creating new solutions.
Internet software engineering
Internet Software Engineering refers to the discipline of developing software applications and systems specifically for use on the internet. This discipline started around 2000s.
This made it much cheaper to change and upgrade the software, as there was no need to install the software on every PC. It also reduced costs, as user interface development is particularly expensive.
The fundamental ideas of software engineering, discussed in the previous section, apply to web-based software, as they do to other types of software.