Unsolved problems in software engineering
Appearance
There is not a canonical list of unsolved problems in software engineering; however, there is
- a list of antipatterns, which might be thought of as statements of poor practice, in contradistinction to the list of design patterns
- the poorly predictable relationship of project duration to program functionality
- the systematic detection of software defects
- the statistical tendency of project to run behind schedule and over-budget
- the current complexity of most programming languages, in general
- the current complexity of most applications, to the extent that when programmers leave, companies fail, if those companies have no one else who understands what the programmers have done.
- the arbitrariness of most software concepts, which is related to historical hardware and software implementation, lack of common standards worldwide, and economic pressures.
- 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 the integration of new employees. See The Mythical Man-Month.
- 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.