Updated to upcoming 23.09

git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@2393 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
eifops
2023-09-25 09:13:12 +00:00
parent 246745930d
commit e2bb303f94
2975 changed files with 63910 additions and 342 deletions

View File

@@ -0,0 +1,27 @@
[[Property:title|Eiffel Scheme Syntax]]
[[Property:weight|0]]
[[Property:uuid|503b260c-99c5-06fb-2953-8899866c1c51]]
The Eiffel scheme syntax is:
<tt>
<nowiki>eiffel</nowiki>:?<i><eiffel-resource></i>
</tt>
where <i><eiffel-resource></i> is a combination of following parts, connected by '''&''' if more than one part are required:
* <system>, in the form of system=to_be_replaced, '''to_be_replaced''' consists of system_name or uuid of the system, or both connected by "'''.'''".
* <target>, in the form of target=to_be_replaced, '''to_be_replaced''' consists of target_name or uuid of the system, or both connected by "'''.'''".
* <cluster>, in the form of cluster=to_be_replaced, '''to_be_replaced''' is the name of the cluster.
* <class>, in the form of class=to_be_replaced, '''to_be_replaced''' is the name of the class.
* <feature>, in the form of feature=to_be_replaced, '''to_be_replaced''' is the name of the feature.
{{note|All parts above are unordered. }}
{{seealso|<br/>
[[EIS incoming Examples|Examples]] }}

View File

@@ -0,0 +1,14 @@
[[Property:title|EIS incoming Examples]]
[[Property:weight|1]]
[[Property:uuid|24adee5e-7ccf-3280-b009-8e183ab9279c]]
The following are examples of EIS incoming URIs.
* eiffel:?class=STRING_8&feature=is_equal
* eiffel:?cluster=elks&class=STRING_8&feature=is_equal
* eiffel:?target=base&cluster=elks&class=STRING_8&feature=is_equal
* eiffel:?system=ec.D398E904-E3C8-4F8A-B9E7-6FE493CEA02F&target=base&cluster=elks&class=STRING_8&feature=is_equal
* eiffel:?class=STRING_8
* eiffel:?cluster=elks

View File

@@ -0,0 +1,5 @@
[[Property:title|EIS: Incoming]]
[[Property:weight|3]]
[[Property:uuid|cf25a603-5446-9964-892c-227c4077a829]]
The EIS incoming mechanism is based on URI, and introduces a new URI scheme: '''eiffel'''. By entering the URI into the address field of a browser, or clicking on the hyperlink, an existing EiffelStudio instance or new EiffelStudio instance will try to resolve the URI and display corresponding resources.

View File

@@ -0,0 +1,59 @@
[[Property:title|EIS: Outgoing]]
[[Property:weight|2]]
[[Property:uuid|773ef802-5f9f-107a-4c5d-8dcf17654d23]]
==Annotations==
Annotations for outgoing EIS links may be applicable to:
* An individual class or feature. In this case the annotation appears in the class text, as part of an Eiffel <code>note</code> clause (the obsolete keyword <code>indexing</code> may still be supported, depending upon which syntax level is chosen in project preferences).
* A target, library or cluster. In this case the annotation appears in the associated ECF file.
EiffelStudio provides support for entering annotations through the [[Information Tool|Information Tool]].
To specify a link between Eiffel and external information, you include such an annotation.
The primary components of an annotation are:
# The '''EIS''' marker.
# The '''[[Protocols|protocol]]''', which indicates the type of external information, and making it possible for EIS to determine the associated external tool. If the '''protocol''' is omitted, its value defaults to "URI".
# The '''source'''. This is the location of the external information, for example a URL, or a file name.
==Syntax for Annotations==
Annotations can occur in Eiffel source code and in project configuration files (.ecf). The format of the '''EIS marker''' varies depending upon the context in which it is used. The rest of the annotation format is the same in both contexts.
Individual annotations can be placed in Eiffel files either through the [[Information Tool]] or by manual editing of the files.
Additionally, a special type of annotation called an '''Automatic annotation''' can be specified for Eiffel configuration [[general target options|targets]]. An automatic annotation on a target will put an implicit annotation with a variable source on each class in the target. An implicit annotation on any particular class can be overridden by an explicitly coded annotation, when necessary.
The following example illustrates the form of an EIS annotation written in Eiffel source code. The annotation appears in the <code>note</code> part of a class or feature definition:
<code lang="text">
EIS: "name=Project Requirement", "src=$(system_path)/docs/requirements.pdf", "protocol=PDF", "nameddest=4.1", "tag=requirement"
</code>
The '''EIS marker''' is the label '''EIS:''' (this label is called the ''Note_name'' in the ISO/ECMA Eiffel Standard syntax). The '''EIS marker''' tells the Eiffel Information System that this particular ''Note_entry'' is of interest to EIS.
The '''name''' property assigns a name to this annotation. The name will be visible in the [[Information Tool]].
In this example, the '''source''' name (src) includes the string '''$(system_path)''', a reference to a [[Variable Definition|variable]], '''system_path''', which is a predefined variable for the the project location.
The '''protocol''' is '''PDF'''.
The '''nameddest''' property (name destination) is a specific property of PDF documents that tells the external tool for PDF documents to open the document at a particular named destination.
The '''tag''' property associates a text tag, in this case "requirement" with this link. Tags show up in the [[Information Tool]] and can be used to organize annotations.
The following is an example of an annotation Eiffel configuration (.ecf) file:
<code lang="text">
<note>
<EIS protocol="pdf" name="Project Requirement" src="$(system_path)/docs/requirements.pdf" nameddest="4.1"/>
</note>
</code>
Eiffel configuration files have XML definitions, so this is just an XML version of what was coded into an Eiffel class above. The annotation appears in a <code lang="text"><note/></code> element. The '''<code lang="text"><EIS/></code>''' element plays role of '''EIS marker''', just as '''EIS:''' does in the <code>note</code> entry in the source code example above. The '''<code lang="text"><EIS/></code>''' element in Eiffel configuration files is supported in ECF schema version 1.4 and later.
{{seealso|<br/>
[[Variable Definition|Variable Definition]] }}

View File

@@ -0,0 +1,48 @@
[[Property:title|Annotation Management]]
[[Property:weight|1]]
[[Property:uuid|696457ef-ac1f-40c1-a0da-54900d9cccf8]]
The Information Tool gives you the ability to '''add''', '''modify''', and '''remove''' annotations from within the tool. When you manage annotations via the Information Tool, the appropriate text changes are made to the annotation targets. So, for example, if you use the Information Tool to add an annotation to a class, you will see the annotation after a new '''EIS marker''' in the <code>note</code> part of the class text.
{{note|Annotation management is not available in lists corresponding to tag nodes in the information tree. That is, annotations listed in ''All tags'', ''Items without tag'', and nodes for specific named tags cannot be altered. }}
Of course, you can also use the EiffelStudio editor or an external editor to manage annotations in Eiffel source code and configuration files using the annotation syntax described in [[EIS: Outgoing]]. The advantage to using the Information Tool is that the tool modifies the files for you, making the process less prone to error.
==Adding==
For each node in the information tree, the list of associated annotations is visible to the right. At the bottom the list, there is an entry that is blank, except for the '''Name''' column which contains an ellipsis (" ... "). Double clicking the blank line creates a new unnamed annotation. You can then modify the new entry as you wish.
==Modifying==
Select a line in the annotation list, then click into a column you wish to change. This will activate ''editing/choosing'' mode. Now you can edit text in the column or if the column is a drop down list, you can choose an alternative entry. Once the editing area drop down list is deactivated, the modification is done and synchronized into code automatically.
==Removing==
By pressing '''Delete''', or clicking the ''delete'' button [[Image:16x16--general-delete-icon]] on the bottom toolbar, you will delete any selected annotations in the list. This deletes the annotation entries from the list and also from the corresponding the Eiffel class or configuration text.
{{note|Multiple entries in the annotation list can be deleted by selecting them all prior to clicking ''delete''. }}
==Enabling and disabling automatic annotation entries==
Automatic annotations can be enabled for a particular project target. Once enabled, each class in the target will exhibit an implicit annotation with a particular source. You can define the source at the same time you enable automatic annotations for a target.
To enable automatic annotations, select the desired target in the information tree. When you do this, the button on the bottom toolbar with the automatic annotation [[Image:automatic annotation icon]] icon becomes enabled. Click this button and you will see the '''Edit Automatic EIS Entry'' dialog box as in Figure 1.
[[Image:edit automatic eis entry dialog]]
Figure 1. The Edit Automatic EIS Entry dialog
You enable automatic annotations by checking the box labeled '''Enable Auto-Entry'''. You construct an appropriate source from explicit strings and/or variable names in the are labeled '''Source'''.
You can disable automatic annotation entries on a target by invoking the Edit Automatic EIS Entry dialog box and un-checking the '''Enable Auto-Entry''' checkbox.
{{note|Most changes made to annotations via the Information Tool are irreversible. However, changes made to annotations on a class or feature which is currently open in the Editor Pane may be reversed by using the editor's '''Undo''' command. The '''undo''' feature should be used with caution as the '''undo''' does not function in some early EIS versions.}}

View File

@@ -0,0 +1,73 @@
[[Property:title|Browsing Information]]
[[Property:weight|0]]
[[Property:uuid|2260eabd-cbc9-c385-6295-96474249953f]]
[[Image:information tool v71|1000px]]
Figure 1: The Information Tool
==Information Tree==
On the left of the tool window is the information tree. The tree displays all locations which contain annotations, as well as a subtree of tags by which annotations can be organized. Clicking or pressing enter on a node of the tree displays the list of annotations associated with that node. In Figure 1, the node APPLICATION, a class, has been selected, and its annotations are listed on the right.
A node in the information tree that has annotations will be decorated with the small "i" icon [[Image:EIS information icon]], as you see in the case of APPLICATION.
You can navigate to the following types of nodes in the information tree:
* Target
* Cluster
* Library
* Class
* Feature
* Items without tags
==Annotation List==
The annotation list appears on the right of the tool window.
The following columns are available in the list:
* '''Target''' - the development object where that piece of annotation belongs to. Typical locations are target, cluster, class and feature.
* '''Source''' - the address of the resource, typically a URL or file path. Variables can be used.
* '''Parameters''' - additional information relevant to certain protocols, for example, a page number in a PDF document.
* '''[[Protocols|Protocol]]''' - the type of the Source.
* '''Name''' - the name of the annotation.
* '''Tags''' - terms or phrases used to categorize annotations. Tags are separated by '''","'''
* '''Override''' - checkbox is checked if an implicit, automatically generated annotation is being overridden by the annotation in this list entry. If this list entry is itself an implicit annotation, this column shows the automatic annotation [[Image:automatic annotation icon]] icon. Override is defined only for annotations on classes.
{{note|EIS ignores any parameters in '''Parameters''' which are not used by the '''protocol''' specified in the entry. }}
{{tip| Clicking on title of each column sorts the list based on the values in that column. }}
==Opening Resources==
The most straightforward way of opening a resource from the Information tool is to select the annotation containing the resource and click the "Go to" button on the status bar below the annotation list.
The resource associated with a particular annotation can also be opened by double-clicking on the annotation in the Information Tool list. Alternatively, you can use the arrow keys to highlight the annotation in the Information Tool list and then press enter. EIS opens the resource associated with the annotation using the external tool for the resource's protocol. So, for example, URI resources will be opened in the default web browser.
While using EiffelStudio, pressing '''F1''' while the cursor is in the editor pane will access annotations associated with the Eiffel object that is currently shown in the editor pane. If only one annotation is available, then its resource is automatically opened by EIS. If more than one annotation is available, the '''Select help document''' dialog box (see Figure 2) appears providing the name and type of the available resources. You can use the dialog to choose which resources you wish to display.
[[Image:select help document dialog]]
Figure 2: The Select Help Document dialog box
==Sweeping Information==
Sweeping annotation information will update the Information Tool with current data for all the annotations in the current system. There are two approaches to sweeping information:
* '''Automatic''' - EIS automatically sweeps information at times when Information tool is visible. On the bottom toolbar, clicking the ''automatic sweeping'' toggle button [[Image:automatic sweeping icon]] to the ''down'' position activates automatic sweeping. Clicking the button back to the ''up'' position disables automatic sweeping.
* '''Manual''' - Clicking the ''manual sweeping'' button [[Image:manual sweeping icon]] on the bottom toolbar triggers an immediate manual sweep.
The progress bar in the bottom of the tool indicates the progress of a currently executing sweep.
==Using Pick-and-Drop with the Information tool==
You can use pick-and-drop with the information tool. If you drop a pebble on the information tree, the annotation list, the "Locate currently edited class/cluster" icon [[Image:EIS locate class or cluster icon]] on the mini-toolbar, or the Info tab [[Image:EIS info tab]], the Information tool will find and display any annotations associated with the dropped pebble. If you drop a pebble on the "Add" button [[Image:EIS add button]] a new entry will be created for the object represented by the pebble. Lastly, dropping a pebble representing a target or cluster on the "Edit EIS auto-node generation property" button [[Image:automatic annotation icon]] will display the automatic node generation dialog for the target or cluster associated with the pebble.

View File

@@ -0,0 +1,32 @@
[[Property:title|Change Analysis]]
[[Property:weight|0]]
[[Property:uuid|a503cf13-6374-9932-5ee2-a69b363e6701]]
[[Image:information tool change analysis]]
The information tool can track changes in an Eiffel system or external resources side, and potentially affected items on either side are listed.
== Major Features ==
* '''Affected target:''' List of elements of the Eiffel system that would be affected by a change in external resources.
* '''Affected source:''' List of external resources that might be affected by changes in the Eiffel system.
* '''Change acknowledgement:''' Acknowledgement of the changes which will be ignored with no further actions.
== Typical Work Flows ==
=== Affected external resources caused by a change in the Eiffel system ===
# Open a class, add an Information entry with an external resource in the class.
# Start working on that class, save it at as you normally do on regular basis.
# Open the information tool, go to Affected source item in the left tree.
# Check the list of external resources that might be affected by last changes.
# Acknowledge the changes once you have updated the external resource accordingly (possibly no change is required in the case of simple system changes).
=== Affected items in the Eiffel system caused by an external resource change ===
# Open a class, add an Information entry with an external resource in the class.
# Start working on that external resource, save it at as you normally do on regular basis.
# Open the information tool, go to Affected target in the left tree.
# Check the list of classes that might be affected by last changes of the external resource. (You may need to click on the "sweep the system now." button to get a full list if auto-sweeping is not enabled.)
# Acknowledge the changes once you have updated the Eiffel system accordingly (possibly no change is required in the case of a simple edit in the external resource).
== Current limitations ==
The tracking of external resource changes is limited to external resources that are local files. If an external resource is a URL, it will not detect any potential changes done at that URL.

View File

@@ -0,0 +1,10 @@
[[Property:title|Information Tool]]
[[Property:weight|0]]
[[Property:uuid|26e2c799-b48a-c588-cdf1-dd47b1994b09]]
The Information tool is an EiffelStudio tool that helps you create outgoing annotations in your Eiffel projects. Read more about using the Information tool on the following pages.
[[Image:information tool v71|1000px]]

View File

@@ -0,0 +1,21 @@
[[Property:title|Protocols]]
[[Property:weight|2]]
[[Property:uuid|69b4d9d4-570e-e7ac-087b-88449a608d0b]]
EIS supports following protocols:
* URI: This protocol does not need to specified. By default, it will be taken if nothing is specified or unknown protocol is specified.
* PDF: PDF protocol supports three parameters: "type" "page" and "nameddest". (Windows only)
** '''type''' - "file" is used to open PDF files in PDF reader. Otherwise in a browser.
** '''page''' - a page number at which to open a document.
** '''nameddest''' - a named destination at which to open a document.
* DOC: Represents a Microsoft Word document.
** '''bookmark''' - Name of a Microsoft Word document bookmark.
The list of currently supported protocols is always available in a drop-down menu associated with entries in the '''Protocol''' column of the [[Browsing information|Information tool]]'s annotation list.
{{note|The status of supported protocols described above is as of EiffelStudio version 7.1. }}

View File

@@ -0,0 +1,38 @@
[[Property:title|Variable Definition]]
[[Property:weight|3]]
[[Property:uuid|7705ab33-a505-7711-a106-5fedd2e1040e]]
==Sources of variables==
EIS supports following types of variables which can be used in '''Source''' of annotation list.
* EiffelStudio installation built-in variables
** ISE_WIKI = http://dev.eiffel.com
** EIFFELROOM = http://www.eiffelroom.com
** ISE_DOC = http://docs.eiffel.com 
** ISE_DOC_UUID = http://doc.eiffel.com/isedoc/uuid 
** ISE_DOC_REF = http://doc.eiffel.com/isedoc/eis 
* Other EiffelStudio built-in variables
** system_path = The path of the system being annotated
* Context related built-in variables. These variables can be used in specific context. For instance, '''feature_name''' refers to the name of the feature with which an annotation is associated.
** feature_name
** class_name
** group_name
** target_name
{{note|A context related built-in variable is only valid in a annotation that is associated with a component to which the variable name refers. For example, '''feature_name''' has no effect if used in a '''target''' component.}}
* Individual system or library preference variables. This kind of variable is defined in your Project Settings. Manage these variables by following this path in the System tree on the left of the Project Setting dialog:
<code lang="text">
System -> Target -> Advanced -> Variables
</code>
* Environment variables. Variables defined in the operating system environment.
==Accessing variables from the Information tool==
When you use the Information tool, the list of all available variables is available through auto-completion when you are typing in an entry under the '''Source''' column of the annotations list. You may either type the dollar-sign '''"$"''' or '''"Ctrl + Space"''' to invoke auto-completion. What you will see in this case is the entire list of available variables, as enumerated above. Bear in mind that this includes all environment variables defined in your operating system environment, which means that some of the entries shown would not be appropriate for use as variables for EIS purposes.

View File

@@ -0,0 +1,32 @@
[[Property:title|Eiffel Information System]]
[[Property:weight|-2]]
[[Property:uuid|7e0394e1-cb31-fae3-79b6-9d1847ef8db7]]
==Introduction==
The Eiffel Information System (EIS) provides a unified mechanism for linking development objects - e.g., classes and features - of Eiffel systems with '''external''' information resources. External means information other than Eiffel program texts. Usually the tools associated with external resources are separate from Eiffel, such as web browsers. Examples of external information resources and possible corresponding external tools are:
* Resource: Web page -- External Tool: default web browser
* Resource: PDF document -- External Tool: Adobe Acrobat
* Resource: Microsoft Word document -- External tool MS Word
EIS is also intended to be the standard mechanism for obtaining help on Eiffel and EiffelStudio, replacing previous solutions. In that case, external tools may actually be Eiffel tools.
EIS makes two mechanisms available to users: '''Outgoing''' (from Eiffel to external tools), '''Incoming''' (the reverse).
Examples of outgoing mechanisms include:
* Associating EIS '''annotations''' containing references to external resources with certain Eiffel components of Eiffel systems.
* Automatically opening the corresponding external tool to display or edit information associated with an annotation.
* Listing all external information (in a class, cluster or entire system) corresponding to a specified tag.
Examples of incoming mechanisms include:
* For supported tools, selecting external information linked to an Eiffel developer object and having EiffelStudio open automatically and targeted to that object.
==EIS supports the Eiffel method==
EIS plays an important role in the Eiffel software development method. Eiffel's focus is software quality. One aspect of the Eiffel method that contributes to software quality is the '''Single Product Principle''' as described in the [[ET: The Software Process in Eiffel#The Single Product Principle|Eiffel Tutorial]]: viewing the software as a single product which is expected to be repeatedly refined, extended, and improved.
The bulk of the Single Product Principle is made possible by the seamless nature of the Eiffel method and the elegant design of the Eiffel programming language. Eiffel allows multiple views of the single software product that are appropriate to certain phases of development and readable by those fulfilling certain development roles. For example, potential reuse consumers use the '''contract''' views to explore class specifications. Also in support of seamlessness and the single product is a single integrated set of tools, the EiffelStudio IDE, working across the entire lifecycle, providing, for example, automatic extraction of the contract views just mentioned. The EiffelStudio graphical views of software (BON and UML, as produced by the Diagram Tool) directly support these ideas through their "roundtrip style". That is, changes to the diagram immediately generate code and changes to the code are reflected in the diagram. Of course documents in other formalisms, for example software requirements specifications (SRS), remain necessary for human consumption; but they should be closely linked to the core project asset, the Eiffel code.
Within EiffelStudio, EIS effects this by ensuring that any documents existing outside the software itself can be linked to the software text and vice versa. For example, if an external software requirements document exists, say in PDF format, it is essential to record precisely the associations between elements in the requirements document and the portion of the software text in which those elements are realized. Perhaps the requirements document contains a statement: "Whenever the tank temperature reaches 50 degrees, the valve shall be closed". In the software text, there will be some feature, for example, <code>monitor_temperature</code> in the class <code>TANK</code>, reflecting this requirement. The requirements statement and the software feature should be linked to one another. This is to ensure that dependencies appear clearly, and that any change in either the requirements or the code triggers the corresponding update to the other side. This is what EIS provides.