Software
From StudyWiki
Contents |
Overview
- Software
- Instructions (computer programs) that when executed provide desired features, functions, and performance
- Data structures that enable the programs to adequately manipulate information
- Documents that describe the operation and use of the program
| What is it? | The product built and supported by software professionals.
Includes executables for any architecture/systems of all sizes, the content presented by the software, and all electronic media |
| Who makes it? | Software Engineers |
| Why is it Important? | it affects all aspects of our live, and is pervasive through society |
| What are the steps involved in creating it? | A software engineering approach. It requires an agile, adaptable process that leads to a high quality result that meets the user's needs |
| What is the work product? | Software Engineers: programs, content/data, and supporting documents
User: program function or output that benefits user |
The Role of Software
Software has a dual role:
- Product
- means of delivering a product
- it is a means of interacting with hardware
Software Characteristics
- Software is developed or engineered; it is not manufactured in the classical sense
- Software doesn't wear out
- Most software is custom built, although component-based construction is gaining popularity
Software Categories
- System Software
- Collection of programs to service other programs.
- Characterised by:
- heavy interaction with hardware
- heavy use by multiple users
- concurrent operations using scheduling
- resource sharing
- process management
- complex data structures
- multiple external interfaces
- Application Software
- Stand-alone programs to solve a specific business need
- Engineering/Scientific Software
- resources intensive programs for simulations, CAD, and research
- Embedded Software
- Software residing in a product or system, to control hardware for the user and system
- Product Line Software
- Provides specific capability for use by many customers
- Web Applications
- Software designed to operate across the internet
- Artificial Intelligence Software
- Software that uses complex non-numerical algorithms to solve complex problems and mimic intelligence
Legacy Software
Legacy software is old or outdated software that is still in use.
Often suffers from poor quality (missing/out dated documentation, complicated, badly coded) due to ongoing updates to meet new needs.
Legacy software must often be:
- adapted to new computing environments/technologies
- enhanced due to new business requirements
- extended for interoperability with newer systems (including the internet)
- redesigned so the architecture supports networking
which all leads to re-engineering [1]
Software Failure Rates
Hardware deteriorates rapidly and the beginning and end of its lifecycle.
- Infant Mortality
- failure due to design/manufacturing defects
- Wear Out
- failure due to deterioration caused by use as hardware reaches the end of its lifespan
Initially, failure rate is high due to undiscovered defects, then failure rate drops and stabilises. Software doesn't deteriorate, hence the idealised curve.
As changes are made, errors requiring correction are introduced causing failure rate to rapidly increase and gradually decrease.
Another change is made before the failure rate recovers requiring further corrections preventing the rate from returning to its former level.
As the failure rate is never able to return to its previous level, failure increases. The software is deteriorating due to change.


