| legacy system | has definition A software system which is still undergoing evolution, but on which some or all of the original developers are no longer working |  |
| is a subtopic of 1.6 - Software Engineering Projects |  |
| is a kind of software system |  |
| software system | becomes complex because it is easy to add new features and because software engineers typically add features without fully understanding a system, which may not have been originally designed to accommodate the features |  |
| can automate business process |  |
| can be divided in many ways: |  |
| is better at error handling if it effectively prevents the user from making errors, detects errors, and helps the user to correct errors |  |
| is typically initially developed as a prototype |  |
| must have well-described requirements if other systems or subsystems are going to use its services or communicate with it |  |
| should be designed for flexibility right from the start |  |
| undergoes evolution over its life-span |  |
| system | can have specification which is then implemented by a collection of components |  |
| exists even if its components change over the course of time, or are replaced by equivalent components |  |
| has scope |  |
| has part component |  |
| has part hardware |  |
| has part module |  |
| has part software |  |
| has part subsystem |  |
| is divided up into subsystems |  |