Unsolved problems in software engineering
Appearance
There is not a canonical list of unsolved problems in software engineering; however, there are the following issues:
- List of antipatterns, which might be thought of as statements of poor practice, in contradistinction to the list of design patterns
- Poorly predictable relationship of project duration to program functionality
- Systematic detection of software defects
- Statistical tendency of project to run behind schedule and over-budget
- Adding additional manpower to a lagging software project (especially in later parts of the project) may actually cause further schedule slippage due to overhead experienced during the integration of new employees. See The Mythical Man-Month.
- Current complexity of most programming languages, in general
- Current complexity of most applications, to the extent that companies fail when programmers leave, if those companies have no one else who understands what the programmers have done.
- Non-standard implementation of standards or specifications by multiple organizations result in a requirement for implementation specific code and special case exceptions as a necessity for cross-platform interoperability. Notable modern examples include web browser compatibility and web-services interoperability.
- Arbitrariness of most software concepts, which is related to historical hardware and software implementation, lack of common standards worldwide, and economic pressures.