In an effort to ensure that work on this project is productive, we have determined the following set of operating principles for Software Blueprints:
- Everything should be simple and obvious.
- It should be as self-documenting as possible.
- Consistency reduces complexity.
- Every avenue is a possibility (at least for the first 100 years).
- Each experiment as part of this project should be fairly focused.
- Each investigation as part of this project should have specific validation criteria.
The Software Blueprints project has as its end goal finding a solution to the ongoing 'Software Crisis'. Our avenue of approach to this problem is to find or invent a better way to document software systems. It is believed that if a suitable 'software blueprinting process' can be developed, we could expect to see at least an order of magnitude improvement in reliability, scalability, and software defect rates throughout the system lifecycle. We recognize that software engineering is a young field and that this is a very ambitious goal. However, through study and experimentation, we believe that this project can begin taking the first steps towards the eventual solution to the software problem.
Provisional set of goals for the project:
- Identify requirements for the software blueprints themselves.
- Validate the software blueprint requirements.
- Identify what is necessary to fully specify a software system.
- Identify what other fields have related 'blueprint' requirements.
- Identify what design artifacts these fields use as their completed specifications.
- Identify existing software engineering artifacts and evaluate them for suitability as part of a software blueprint.
- Develop any new software engineering artifacts needed for a concise set of software blueprints.
- Experimentally validate the usefulness of each potential blueprint artifact.