End-user |
Undertanding the XRN schemaWe now enter the structure of a XRN XML release notes file.
Is it worth reading all that?Before considering reading this section, you have two possible caricatural attitudes:
There are chances that you are between the two attitudes. If you are bold, skip this section and remember that it exists, when you meet some concepts that you do not understand. Yes, the most important is to remember that this section exists. Important:
Warning:
OK, so far, what we did was rather basic and straightforward. Straightforward, that is something that we obviously want to keep. However, basic is not enough. So let's focus a little more about the anatomy of an XRN release notes XML file, so that we can understand what kind of valuation piece of information can be expressed so as to make our release notes framework more useful. Definition of a release notesImportant:
Important:
Warning:
Note: It should be a good idea to generate a picture of the fully expanded XSD, so as to provide an overview on overall schema. In order to enclose some release notes information, it is necessary to define a top-level Note: The definition, via the XSD This XML element contains some mandatory attributes, which are:
They should be enough in order to identify the component. Anatomy of a componentNow that we have introduced the top XML element We are going to detail the content of the XML elements that lies under this top element and that constitute the content of the underlying component. Note: You can refer to the example on the XRN file that we have already been using. ActorsThis element has a single attribute Note: Would it not be a good idea to shift that element rather at the bottom if it is not that important at the beginning? ComponentsThis XML element enables to define the location of other component release notes (the raw ones under XML format, but also
the potentially rendered one, only in HTML for the moment). It is make of We can understand that this information maybe valuable when we want or need to "cross-reference" components. This will appear more visible when we come to the rendering, but for now, forget it. DeliveriesThis is a very basic XML element that only owns one URI attribute namedhref : this URI will be used as a prefix concerning the location of all delivery artifacts URLs. Don't worry, we'll come to the
concept of artifact very soon...
SummaryThis XML element expects to contain textual overall description concerning the underlying component. If you already have a detailed description somewhere else (like in Maven, for instance), there is now use repeating it. Important:
Just provide an accurate description provided your component resides nowhere else, except in a VSC system, that is kind of pre-requisite (otherwise, why making a release notes framework, if you can't tag your developments). ReleasesThere, we begin to enter the enter the core of the framework, which, let's remember it, about the notes on component releases. This part will enclose all the releases that have been or will be performed for the component. A release? What do we call "release" in fact? There may be various definitions, but for us, a release is the process of building a component official new version aimed at being distributed . OK, this is rather loose as a definition, but we do not want to restrict and imprison minds. This Important:
Anatomy of a releaseThat's time now to declare a release of my component. The obvious thing is that we need to name that release, otherwise, we would not be able to refer to it in the future. This is declared via the XML element various attributes, that we now exhaustively present.
Underneath this XML node, we know find some XML elements that provide additional information concerning the release itself. For the moment, we do not know much about the content of the release. DeliveriesThis section contains all the delivery artifacts yielded for the current version of the component. This is the reason why
it is made of Important:
Moreover, this section contains an optional and first-positioned The composition, dependencies and requirements blocksThe next forthcoming XML element have something in common, this is the reason why they are introduced altogether. What kind of information do they provide? They indicate precisely the relationships of the component with other components. Note: Why not then introducing a
Let's focus individually on each of them.
Note: Before going any further, you need to know that the CompositionFirst of all, be aware that this section only concerns components made of other components, like libraries do. If you are working on a non reusable component, just forget this. You do care? OK, this is very simple, this node will contain references to all the components that are delivered in your component. Imagine that you have designed a library, which is just a collapse of other libraries. In that case, you will declare of those libraries that are part of the present component. The element contains a first This is followed by a list of DependenciesThis XML element addresses the need to express that the component depends on other components, when it comes to the development. This means that this information is not supposed to be interesting for the end-user (even if he is a developer). Nevertheless, this information is very precious for developers, because it remembers them what their developing environment should contain in order to develop on it (and not working with it). As for the Following that summary, you will find the references of the individual components that are required at development time when
working on the project for contributing on the source code. Just like in the previous composition block, the RequirementsThis XML element points to the component that are required at runtime, in order for your delivery artifacts to work. This information is rather dedicated to the end-user: it is often a place where you can overview in one glimpse the environment that needs to be prepared in order to run the component properly. It is also aimed at helping the production team in charge with the administration of the component. The structure is the same as for the dependencies. InheritanceBecause it would really be too tedious to fulfil those pieces of information for every new release, by default, the blocks are supposed to be inherited from one release to the next ones. If nothing has changed concerning the composition between two consecutive versions for instance, you do not want to fulfill the block once again: in that case, do not write this block at all, it will considered as unchanged. This policy also applies for the dependencies and requirements block. Most of the time, from one release to the next one, only one component changes or is added, among those expressed in the previous blocks. The framework naturally contemplates this case. If you need to express that one component version has changed in the block, you just need to write the block with only this component in it, with the right version. The same thing applies if one component is being added. Example: Let's say that in Note: This default inheritance feature is transitive, which means that it is being propagated to the later releases. But now, how would you express that one component has been removed from one the block? This is in order to address this issue that we have introduced the block 'inherit' Boolean attribute. What is it about? The 'inherit' Boolean attribute is present in each of the blocks (composition, dependencies, requirements), and its default
value is Hence, when you need to indicate that a component is to be removed from a block, set this attribute to SummaryAs in many places in the XSD, you are given the opportunity to provide an overall description of the release. If you are familiar
with the Doxygen tool, think of this summary as the FeaturesSo far, we were not able to express what modification, features have been introduced for the current release. At last, we focus to that part of the release notes. This XML element just contain Anatomy of a featureA "feature"? Whatzaaaaahhh ??? A feature is to be seen as a technical or functional modification of the behavior of the component artifacts. This feature is supposed to explain what has changed from the previous release. Note: As a general rule, the XRN framework focuses on the changes from one release to the next one, so that you just have to focus on those differences. The aim of XRN is not to standardize the way a feature is expressed, and its aim is not to be a substitute to as needs expression
system. However, we need to be able to indicate what a feature is exactly about in order to render it properly. The AttributesWarning:
Note: When listing the attributes, we'll refer to the notion of actor identifier (the same notion has already been used when we refered to the release builder identifier vai the
TitleThis XML first direct-child element enables to provide a textual summary title to the feature, which will used when rendering the release notes.ItemIn order to be able to describe precisely the feature, you are givenItem XML elements that contain textual descriptions. Use as many as you want in order to articulate your explanations.
You did it!Well, well, it seems that we have actually reached the end of the explanation concerning the anatomy of a XRN release notes file. Congratulations if you found the courage to read it all: you will soon be rewarded of your efforts. Because, with those explanations in mind, we are confident that you better understand what the framework is about. |