We have produced an initial model for how software may be described. There are several properties of software we are, at least initially, interested in capturing.
Data and data formats – The description of inputs and output to software programmes and the formats in which they are encoded.
Software organizations – here we differentiate between two subtypes directly; the developers (responsible for authoring software) and the publishers (responsible for making software available to a particular consumer group).
Algorithm – description of the inputs, outputs and method for achieving a particular objective.
Programming language – the language in which source code is written.
Information processing – tying the algorithm and data inputs to the software process of execution.
Objective – the objective, task or purpose for which the software is being used
Version is also of particular interest although not shown on the diagram. Versions present an interesting modeling problem – how should a version be represented? How do you compare two versions? How do we say one version is more recent than another?