WO2015188851A1 - Tool and method for modularizing a system - Google Patents

Tool and method for modularizing a system Download PDF

Info

Publication number
WO2015188851A1
WO2015188851A1 PCT/EP2014/062016 EP2014062016W WO2015188851A1 WO 2015188851 A1 WO2015188851 A1 WO 2015188851A1 EP 2014062016 W EP2014062016 W EP 2014062016W WO 2015188851 A1 WO2015188851 A1 WO 2015188851A1
Authority
WO
WIPO (PCT)
Prior art keywords
application
subset
components
applications
component
Prior art date
Application number
PCT/EP2014/062016
Other languages
German (de)
French (fr)
Inventor
Erich Günther
Martin Richard NEUHÄUSSER
Gabor SOVAK
Original Assignee
Siemens Aktiengesellschaft
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Siemens Aktiengesellschaft filed Critical Siemens Aktiengesellschaft
Priority to PCT/EP2014/062016 priority Critical patent/WO2015188851A1/en
Publication of WO2015188851A1 publication Critical patent/WO2015188851A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory
    • G06F9/44563Sharing

Definitions

  • the invention relates to a modularization tool for modularizing a system.
  • Modularizing can also be called split-up.
  • the system can be described as a graph whose components are nodes of the graph and whose dependencies are directed edges of the graph.
  • the directed graph of the system is contiguous. Otherwise, splitting the directed graph would be at least partially trivial.
  • Arranging a system S as a module is understood here to mean that the system is subdivided without residue into at least two subsystems, wherein graphs which describe the subsystems are in each case connected.
  • the invention relates to a method for generating a module of a system.
  • One approach to overcoming this difficulty is to divide such systems into subsystems (modules) that are largely independent of one another.
  • One goal of such a revision is to modularize the system (i.e., divide it into subsystems) so as to minimize resource requirements.
  • the resource requirement to be minimized is to minimize the maintenance effort of a system.
  • the resource requirement to be minimized may be to minimize the storage footprint (e.g., for software components to be kept concurrently in main memory), minimize clumping risk in fulfillment of transfer or transport jobs, minimize required manufacturing capacity, and / or Minimize an energy requirement and / or minimize a computing capacity (for example, on a server farm) exist.
  • the object of the present invention is an optimization task, as it (at least in a similar way) also at risk Distributing risk distribution systems, market analysis systems for modeling a market model, fault analysis systems for finding and analyzing causes of errors, sensitivity analyzes for possible modularisations (eg, cost and / or testability), and diagnostic systems for finding and analyzing causes of disease.
  • the object of the present invention is to provide a modularization tool and a corresponding method for generating a module of a system with which a cost-effective, error-free modularization of a complex system is possible.
  • a modularization tool for modularizing a system comprising a component detection device for detecting components of a system, a dependency detection device for detecting dependencies between the components, an application subset A determination device for determining a first application subset from a total of applications of the system, a component determination device, and a module determination device.
  • the component determination device is provided for determining for each application from the first application subset of those components of which a startup component of the respective application is at least indirectly dependent.
  • the module discovery device is provided for determining a first application subset specific component set, each component of the first application subset specific component set associated with each application of the first application subset, but not associated with each application with another application subset which contains more applications than the first application subset.
  • a first system component for example a software module
  • the first system component is dependent on the presence and readiness of the second system component (at least on one side).
  • An inverse dependence of the second system component on the first system component is not necessarily required for one thing.
  • the resulting graph is a subgraph that spans the graph of the original system. In the following, we will speak of a dependency 'pointing away' from the first system component if the first system component is dependent on the second system component (this definition being arbitrary).
  • a method for generating a module of a system comprises the following steps.
  • a first step a total of components of a system is detected.
  • dependencies between the components are recorded.
  • a third step a third step
  • Step is to set a first application subset of a total of applications of the system.
  • the fourth step determines for each application from the first application subset those components of which the start component of the respective application is at least indirectly dependent.
  • a first application subset specific component set is determined, wherein each component of the first application subsets specific component set of each application is associated with the first application subset, but not associated with each application to a different application subset, the more Applications includes as the first application subset.
  • the second step can be done before the first step. Alternatively or additionally, the third step may be performed before the first or before the second step.
  • One concept of the invention may be seen as determining an application subset specific component set, wherein each component of the application subset specific component set of each application is associated with a particular subset of a total set of applications, but not each application associated with other applications subset that contains more applications than the first application subset.
  • the launch component is required to run the application on the system. It is also possible that several starting components are provided per application. Typically, but not necessarily, the application-specific launch component of a first application is executed on not every execution of one of the other applications of the total set of applications.
  • the modularization tool has a first tool that is prepared to determine the components of the first application subset-specific component set by executing a recursively nested multiple loop, with the first tool being prepared with each newly discovered component perform a first sub-loop over all dependencies pointing away from the found component to determine all components of the first application-subset-specific component set on which the newly discovered components are dependent.
  • the proposed Modularmaschines vide by means of a determinate process and with minimal effort is feasible. If a dependency is found in the components already found when finding the application-by-item-specific component set, it is a cyclic dependency that can be ignored for further finding of dependent components.
  • the modularization tool has a second tool for mapping the system into a directed graph, wherein each of the components is associated with exactly one node of the directed graph and each direct dependency between pairs of the components is associated with an edge of the directed graph.
  • the modularization tool has a third tool for extracting from the system the first application subset specific component set determined by the modularization tool. As a result, a modularization of a system following a system change can be re-optimized in the short term with little effort and in a timely manner.
  • the modularization tool has a start component detection device for selecting at least one application-specific starting component from the quantity of the components for at least one application from the total amount of applications. If an application knows a component that belongs to the application, one or more start components of the application can be found starting from the component by tracing the one-sided dependencies in the opposite direction of the one-sided dependencies.
  • a startup component is a component that does not have a dependency that is directed in the opposite direction of the dependencies. A startup component is thus found when tracing back the one-way dependencies a component is found whose input degree is zero.
  • An independent refinement provides that the modularization tool has an application detection device for detecting a total amount of applications that are to be executable on the system. Effort and time required for a manual determination of applications can be saved if at least a subset of the total amount of Phrases that are to be executable on the system can be determined by means of an application detection device. Based on the description of the system by means of a directed graph, all applications of a system can be determined at least by tracing back all existing directed edges (one-sided dependencies) in the opposite direction. Since, under this condition, each start component is distinguished from all other components in that the input level of the node representing the start component is equal to zero, all start components and thus all applications can be determined by machine.
  • the module-determining device is prepared to determine an application-subset-specific component quantity for each non-empty subset of the total amount of applications, wherein each component of the application subset-specific component quantity of each application is assigned to the respective subset of applications but not every application is associated with a different application subset that contains more applications than the first application subset.
  • An application-specific benefit arises when the modularization tool is part of at least one of the following application systems: a load distribution system for distributing transport orders and / or transfer orders and / or production orders and / or energy deliveries and / or computer loads and / or memory loads to available ones Resources; a software development system for modeling a complex system; a market analysis system for modeling a market model; a risk assessment system for modeling risk models;
  • a fault analysis system for searching and analyzing Error causes
  • a diagnostic system for finding and analyzing causes of disease.
  • FIG. 1 schematically shows a structural design of a modularization tool for modularizing a system
  • FIG. 4 shows schematically an example of a software program in the programming language Java
  • FIG. 6 shows schematically an example of a transitive envelope of a first node of a graph, schematically the example of FIG. 6 with a transitive envelope of a second node of the same graph, FIG.
  • FIGS. 6 and 7 schematically shows a sequence of a modularization for the example of FIGS. 6 and 7,
  • FIG. 9 schematically shows a directed graph containing a
  • FIG. 11 shows schematically a flow chart of a method for
  • the modularization tool MW shown in FIG. 1 for modularizing a system S comprises a component detection device VE, a dependency detection device EE, a component determination device KE and a module determination device ME.
  • the letter S denotes a system for executing applications f, wherein the system S comprises a plurality of components v, wherein between the respective two components of multiple pairs of components each one-sided dependence e exists.
  • the components v in V represent functional units. In a software system, these would be, for example, code blocks, functions, classes, libraries, modules, or parameters.
  • the directed edges e in E represent influences between the components v in V. Examples of such one-way dependencies e in software systems are function calls in Java, web service calls in SOA environments or calls to a library of a service-oriented architecture (SOA). A data flow for return or the like is not represented by an edge. It is therefore assumed that no backward directed influence by an edge e (vl, v2) between two components vi and v2 takes place.
  • the component detection device VE is prepared to determine the components v (nodes of a graph G) of the system S from a system description Sb of the system S.
  • the dependency detection device EE is prepared to determine the one-sided dependencies e (directed edges) between the respective two components of pairs of components v of the system S from a system description Sb of the system S.
  • the component determination device KE is prepared to determine from the set V of the detected components v and the set E of the detected directed edges e an amount V (f) of components v (f) required for executing an application f ,
  • V denotes a set of components v.
  • V (f) denotes all components v (f) of a single application f of the system S.
  • E denotes a set of one-sided dependencies e.
  • E (f) denotes the set of all one-sided dependencies e (f) between components v (f) of an application f.
  • the capital letter F denotes a set of applications f.
  • Tm (F) denotes a subset (application subset) of a set F of applications f of the system S.
  • V (F) will denote the union of all sets V (f) of all components v (f) of all applications f of system S (typically V (F) denotes all nodes v of system S).
  • V (F) denotes all nodes v of system S.
  • a corresponding notation is also used here for other quantities.
  • TM (F) denotes the set of all subsets tm (F) of applications f.
  • TM (F) So is the power of the set F of applications f.
  • the capital letter M denotes the set of all modules m of the system S.
  • the abbreviation vs (f) designates a start component of a single application f.
  • the component determination device KE requires (as an input also the indication of at least one application-specific start component vs (f)) (to determine an amount V (f) of components v (f) required for executing the application f).
  • Application specific start components vs (f) can be determined manually or by machine by means of a start component detection device SKE. Basically it is possible that all or part of the
  • Set F of applications f has more than one startup component vs (f) (the set of all startup components vs (f) of an application f may be denoted VS (f)).
  • a separate application f can be defined for each start component vs' (f) of an application. If no start-component-specific modularization M 'but only an application-specific modularization M is desired, the start-component-specific modularization M' can be converted into a purely application-specific modularization M in an optional post-processing step 141. For this purpose, for each application subset tm (F), all start component-specific modules are used
  • any' here means that the specified decrease is to be performed for each of the other application subsets tm '(F) that contains more applications f than the particular application subset tm (F).
  • a modularization M is defined as the set of all application-subset-specific modules m.
  • the modularization M is not an amount of components v (that is, not equal to V (F)) but an amount whose elements are m (similar to a power set) sets.
  • edges e are considered to be properties of components v, the edges for modularization need not be considered as soon as it is clear which components v belong to which functions f.
  • the modularization tool MW has an application subset determination device FTME for the automatic determination of subsets tm (F) of applications.
  • the modularization tool MW has an application detection device FE for detecting a total quantity F of applications f that are to be executable on the system S.
  • the method 100 shown in FIG. 2 for generating a module m of a system S comprises the following steps.
  • a first step 110 a total quantity V of components v of a system S is detected.
  • a second step 120 one-sided dependencies e between the components v are detected.
  • a third step 130 a first application Subset tm (F) of a total set F of applications f of the system S.
  • a fourth step 140 for each application f from a first application subset tm (F) of applications f, those components v are determined from which a start component vs (f) of the respective application f is at least indirectly dependent.
  • a first application subset specific component set m is generated, but each component v (m) is associated with the first application subset specific component set m of each application f of a first application subset tm (F), but not each application f is associated with another applications subset tm '(F) that includes more applications f than the first application subset tm (F).
  • the steps of method 100 may also be performed in a different order.
  • the second step 120 may be performed prior to the first step 110.
  • the third step 130 it is also possible for the third step 130 to be carried out before the first 110 or before the second 120 steps.
  • the components v, of which a start component vs (f) of the respective application f is at least indirectly dependent can be calculated by calculating a transitive envelope E + around the start component vs (in the fourth step 140). f) are determined on the edge relation E of the graph G.
  • the next step is to compute which nodes v are needed for the application f defining the system S.
  • the application f For example, if a software system S incorporated in a servo drive controls a permanent magnet synchronous motor, such a drive would typically have at least the three applications 'speed control', 'brake' and 'control encoder'.
  • Each of these applications f is realized in the software system S of such a drive by means of a (preferably small) set V (f) of components v.
  • the actual modularization can be started as soon as the application f has been extracted from the input structure of the system S according to its representative components v and the structure of the directed graph G.
  • the quantity V of the representative components v need not be completely known by each application f.
  • all components v with connections e to those components v that are relevant for a specific application f can be determined automatically.
  • only those components v that are representative of the respective application f need to be specified by a user of the modularization tool MW.
  • directed graphs G can be divided into directed subgraphs and the system S modularized.
  • V is a nonempty set of Node v
  • E is a set of edges e, with EcVxV.
  • the sets V (f) should define the relevant v nodes v for each application.
  • Each set V (f) of an application f is completed along a transitive envelope E + of the edge relation E.
  • the transitive envelope E + of a two-digit relation E on a set V (f) is given by
  • the transitive shell E + is typically not reflective.
  • E + were a reflexive transitive envelope E * , then this would mean in addition that not only individual, but even without exception all components v of the envelope E + is dependent on itself.
  • the components v (f) are methods, it would mean that not only individual but each of these methods is recursive and recursively used in the system, which is not usually the case .
  • the corresponding module m is calculated according to the proposed modularization method 100 according to Equation 1.
  • the modularization M can be determined by first, for each element (ie each application subset tm (F)) of the power set TM (F), the set V (tm (F)) of those components v of the considered application subset tm (F) (the set F of all applications f) is formed, which corresponds to each application f are assigned to the particular subset tm (F) and then removed from this component set V (tm (F)) components v of all those other subsets tm '(F) that contain more applications f than the first application subset, if they are each of the applications f are associated with the respective other subset tm '(F) considered (see Equation 1).
  • each of the modules rtii, mi 2 mi 3 and mi 2 3 must be loaded.
  • the modules m 2 , m 23 , and m 3 are not needed for the application fi in the main memory, because they are not required for the execution of the functionality of the application fi.
  • This modularization method 100 can be carried out completely automatically (at least with the exception of specifying the applications f and their most frequently used nodes v).
  • the modularization method 100 determines how a system S can be split.
  • the system S can be divided according to the modularization M (division) determined by means of the modularization method 100.
  • vs (fi) vi
  • the architecture of the system S is mapped into a directed graph G, where the components (nodes v in the directed graph G) are connected with directed edges e, which represent one-sided dependencies on other components (eg, directions of invocation) (see FIG. 5).
  • directed graph G for each application f the transitive envelope E + of the node v can be calculated, which the application f needs for its execution (see FIGS. 6 and 7).
  • a first set V (fi) of components v (fi) of a first application fi consists of nodes vi, v 2 , v 5
  • a second set V (f 2 ) of components v (f 2 ) consists of Node v 3 , v 4 , v 5 exists.
  • the second modulus m 2 contains from the considered set V of vertex v exactly that set V (f 2 ) ⁇ (F ⁇ f 2 ) of vertex v 3 , v 4 , which only needs execution of the second application f 2 become.
  • the third module m 12 contains from the considered set V of nodes v exactly that set i 2 of nodes v 5 which are required both for executing the first application fi and for executing the second application f 2.
  • M 12 V ( fi) nV (f 2 ). For the application fi only all nodes v of the set mi mi 2 need to be maintained or loaded. For the characteristic f 2 only every node v the amount m 2 need to be maintained or loaded to i2.
  • a modularization method 200 will now be explained as a further exemplary embodiment.
  • a system S is identified that needs improvement (ie, a system S grown over time or a system S developed for other conditions than exist today.)
  • Software architecture of software or Embedded Control is an example of a system (grown over decades).
  • An embedded software controller uses different applications created from software packages, which in turn are built from components v, which are core components of such Systems S are.
  • a second step 220 required parts of the system S are determined.
  • This example implements an export attached to a data flow process that has already been created. The data can then be in the
  • GRAPHML file format (the v node as a grain components and edges e as one-sided dependencies), which is a good starting point for using a graph visualization tool.
  • a visualization G makes it easier to get an overview of a strong network that the user often encounters in complex systems.
  • 9 shows, from an embedded control, the directed graph G of its components v and the one-sided dependences e existing between its components v.
  • groups of components v between which there is strong cross-linking are shown more closely side by side (ie with shorter edges e) than components v that do not belong to such a group of components v.
  • a mapping into a solution space is performed.
  • relevant applications f of the given system S are defined (which have an influence on the modularization M).
  • the mapping G -> M is already known.
  • the mapping G -> M can be worked out by means of expertise (knowledge of the system S to be modularized) from the directed graph G of the problem space. This can be done with the aid of a (preferably interactive) graph visualization tool, with which clusters can be displayed in the directed graph G.
  • step 245 clusters G are visualized in the directed graph and nodes v are searched which can be assigned to a set of applications f. Then edges e are searched, the applications thus determined connect. Then it is attempted to remove these edges e by appropriate measures (for example, weak references, downstream processing).
  • This step may require semi-manual manipulation of the directed graph G by a system architect or other skilled person.
  • possible components v are details of mechanical design, diagnostic features, or safety functions.
  • a calculation of the modularization M is performed.
  • a plug-in for the graph visualization tool can be installed, which calculates the modularization M on the basis of given applications f, and the result is displayed graphically and in text form.
  • FIG. 10 shows a detail view of the upper left corner of the directed graph G of FIG. 9.
  • Black knots v (rtii) are exclusively used fi.
  • V (fi) ⁇ V Plotted nodes v (m 2 ) belong exclusively to the application f 2 .
  • application name; component name
  • the component union amount mi mi 2 is required.
  • the component merging amount m 2 is required by i 2 .
  • the result M of the proposed modularization method 200 is provided to developers and system architects, and the calculated modularization M can be realized.
  • the proposed methods 100, 200 propose a method for optimizing architectures S by reengineering and using incomplete information about applications f.
  • the method of modularizing a system S may be performed as follows.
  • An existing architecture S with a high degree of crosslinking is loaded as a directed graph G into a graph analysis tool MW.
  • a graph analysis tool MW By means of the predefined features f (which have been mapped in node v of the directed graph G) becomes a transitive envelope
  • E + (vs (f)) of a starting node vs (f) of each application calculates f.
  • complementary and intersections m are formed.
  • the present invention is not limited to software systems S. It can also be used to modularize any type of system S (regardless of the type of unilateral dependencies e).
  • An example of modularization M is a system S modeled from different perspectives (e.g., hardware and software perspectives), as is common in the automotive field, where many development goals must be considered.
  • the proposed modularization methods 100, 200 may be helpful in determining boundaries of a subsystem V (f) and to help developers and system architects modularize a system S (ie, minimize the number of one-way dependencies e) and prevent that is a further development of an application f the whole considered system S affects or spreads. This may be particularly helpful to a system architect to keep track of how different parts V (f) of the system S are related to each other. As a result, the system S can be easily divided into modules m for future handling.
  • the method 200 shown in FIG. 11 for modularizing a system S comprises the following steps.
  • a system S is identified, which needs improvement.
  • required component v of the system S are determined.
  • structural data V, E are imported from the system S into a graph visualization program.
  • applications f of the system S are defined in a problem space and an image is taken in a solution space.
  • a calculation of a modularization M is started.
  • the modularization M calculated by means of the proposed modularization method 200 is provided to a system architect and / or a system developer.
  • a further development of the proposed modularization tool MW and the proposed method 100, 200 provides that the first application-component-specific component quantity m is determined during a real-time operation of the system S. Independent further development provides that the first application-specific-quantity-specific component quantity m determined by the modularization tool MW is divided out of the system S during real-time operation.
  • the invention provides a modularization tool MW which comprises inter alia a component determination device KE and a module determination device ME.
  • the component determination device KE is provided for determining 130 for each application f from a first set F of applications f of those components v of the system S that are associated with a start component vs (f) of the respective application f are at least indirectly dependent.
  • the module determination device ME is provided for determining 140 a first application subset-specific component quantity m, each component v (tm (F)) of the first application subset-specific component quantity m of each application f of a first subset tm (F) is associated with a total set F of applications f, but is not associated with each application f of another applications subset tm '(F) that includes more applications f than the first application subset tm (F).
  • the modularization M is determined by determining transitive envelopes E + (vs (f)).
  • the present invention provides a modularization tool MW for modularizing a complex system S and a method 100 for generating a module M of the system S.
  • the modularization tool MW and the method 100 for generating a module m of a system S those components v (f) needed for executing an application can be determined. Based on this knowledge, it is possible to maintain only those components v (f) for the care of a particular application f, which may affect the application f. Alternatively or additionally, this knowledge can also be used to dynamically load only those parts of a software system S into a main memory at runtime, which are required for executing the application f to be executed.
  • the largest possible modules m are defined. As a result, an increased demand for resources (for example, by additional loading and unloading of modules m in a main memory), due to an unnecessarily large number of modules m is avoided. LIST OF REFERENCE NUMBERS
  • V component amount Set of parameters; node-set

Abstract

A modularization tool (MW) has, inter alia, a component determination apparatus (KE) and a module determination apparatus (ME). The component determination apparatus (KE) is provided for the purpose of determining (140), for each application (f) from a first subset (tm(F)) of applications (f), those components (v) of a system (S) on which a starting component (vs(f)) of the particular application (f) is at least indirectly dependent. The module determination apparatus (ME) is provided for the purpose of determining (150) a first set of components (m) specific to the subset of applications, wherein each component (v) in the first set of components (m) specific to the subset of applications is assigned to each application (f) in the first subset (tm(F)) of applications but is not assigned to each application (f) in another subset (tm(F)) of applications which comprises more applications (f) than the first subset (tm(F)) of applications. A corresponding method (100) for producing a module (m) of a system (S) is also provided.

Description

Beschreibung description
Werkzeug und Verfahren zum Modularisieren eines Systems Tool and method for modularizing a system
Die Erfindung betrifft ein Modularisierungswerkzeug zum Modularisieren eines Systems. Modularisieren kann auch als Auf teilen bezeichnet werden. Das System kann als Graph beschrie ben werden, wobei dessen Komponenten Knoten des Graphen und dessen Abhängigkeiten gerichtete Kanten des Graphen sind. Zwecks Fokussierung auf das von der vorliegenden Erfindung z lösende Problem und ohne Beschränkung der Allgemeinheit wird im Folgenden unterstellt, dass der gerichtete Graph des Systems zusammenhängend ist. Ansonsten wäre ein Aufteilen des gerichteten Graphen zumindest teilweise trivial. Unter Modul arisieren eines Systems S wird hier verstanden, dass das Sys tem restfrei in mindestens zwei Teilsysteme aufgeteilt wird, wobei Graphen, die die Teilsysteme beschreiben, jeweils zusammenhängend sind. The invention relates to a modularization tool for modularizing a system. Modularizing can also be called split-up. The system can be described as a graph whose components are nodes of the graph and whose dependencies are directed edges of the graph. In order to focus on the problem to be solved by the present invention and without restricting the generality, it will hereinafter be assumed that the directed graph of the system is contiguous. Otherwise, splitting the directed graph would be at least partially trivial. Arranging a system S as a module is understood here to mean that the system is subdivided without residue into at least two subsystems, wherein graphs which describe the subsystems are in each case connected.
Außerdem betrifft die Erfindung ein Verfahren zum Erzeugen eines Moduls eines Systems. Moreover, the invention relates to a method for generating a module of a system.
Systeme (z.B. Softwaresysteme) neigen dazu, durch Weiterentwicklungen und Pflegemaßnahmen mit der Zeit in Größe und Korn plexität zu wachsen. Ab einem bestimmten Punkt wird die ursprüngliche Struktur als ungeeignet zum Hinzufügen von Funktionalität betrachtet, die zum Zeitpunkt des Entwurfs des Systems (insbesondere seiner Architektur) noch nicht in Auge gefasst wurde. Die Folge ist, dass neue Funktionalitäten hin zugefügt werden, ohne der Struktur des Systems Rechnung zu tragen. Weil damit gleiche Funktionalität an unterschiedlichen Stellen mehrfach realisiert wird, werden dann auch die Speicheranforderungen unannehmbar groß. Damit steigen auch die Kosten für Hinzufügen von Funktionalität schnell und Begleiterscheinungen eines Hinzufügens von Funktionalität können nur noch unzureichend erkannt werden. Die Wartbarkeit ei nes so gewachsenen Systems nimmt ab oder wird sogar unmöglich. Irgendwann im Lebenszyklus eines komplexen Systems kön nen nur noch wenige Fachleute, die langfristig eingearbeitet sind, innere Zusammenhänge, Abhängigkeiten, Nebenwirkungen und ursprüngliche Entwurfsabsichten des Systems überblicken und Aktualisierungen des Systems planen. Spätestens von diesem Zeitpunkt an ist es notwendig, die vorhandene Architektur des Systems zu überarbeiten, um das System wieder handhabbar zu machen . Systems (eg software systems) tend to grow in size and grain size over time due to further development and maintenance measures. At some point, the original structure is considered inappropriate for adding functionality that was not envisaged at the time the system (especially its architecture) was designed. The consequence is that new functionalities are added without taking into account the structure of the system. Because the same functionality is realized multiple times at different locations, then the memory requirements are unacceptably large. This also increases the cost of adding functionality quickly and concomitants of adding functionality can only be recognized insufficiently. The maintainability of such a grown system decreases or even becomes impossible. At some point in the life cycle of a complex system Only a few professionals who are trained for the long term, are able to survey internal relationships, dependencies, side effects and original design intentions of the system and plan updates of the system. From then on, it is necessary to revise the existing architecture of the system in order to make the system manageable again.
Ein Ansatz, diese Schwierigkeit in den Griff zu bekommen, besteht darin, solche Systeme in Teilsysteme (Module) aufzuteilen, die zueinander weitgehend unabhängig sind. Ein Ziel einer solchen Überarbeitung ist es, das System so zu modulari- sieren (d.h. so in Teilsysteme aufzuteilen), dass ein Ressourcenbedarf minimiert wird. One approach to overcoming this difficulty is to divide such systems into subsystems (modules) that are largely independent of one another. One goal of such a revision is to modularize the system (i.e., divide it into subsystems) so as to minimize resource requirements.
Beispielsweise braucht für die einzelnen konkreten Anwendungsfälle eines Software-Systems jeweils nur eine (in der Regel kleine) echte Teilmenge der Systemkomponenten gepflegt werden und/oder zum Ausführen in dem begrenzten Hauptspeicher gehalten werden. Software-Komponenten, die zum Ausführen einer Anwendung gleichzeitig im Hauptspeicher eines Rechners benötigt werden, können in dynamisch ladbare Bibliotheken gepackt werden, die nur auf Anforderung in den Hauptspeicher geladen werden. For example, only one (generally small) real subset of the system components needs to be maintained and / or kept in the limited main memory for execution for the individual concrete use cases of a software system. Software components needed to run an application simultaneously in the main memory of a computer can be packaged in dynamically loadable libraries that are loaded into main memory only upon request.
In einem möglichen Anwendungsszenario besteht der zu minimierende Ressourcenbedarf in einem Minimieren des Pflegeaufwands eines Systems. Je nach Anwendungsszenario kann der zu minimierende Ressourcenbedarf stattdessen in einem Minimieren des Speicherbedarfs (beispielsweise für gleichzeitig in einem Hauptspeicher zu haltende Softwarekomponenten) , einem Minimieren eines Klumpenrisikos bei einer Erfüllung von Beförde- rungs- oder Transportaufträgen, einem Minimieren einer benötigten Fertigungskapazität und/oder einem Minimieren eines Energiebedarfs und/oder einer Minimieren einer Rechnerkapazität (beispielsweise auf einer Serverfarm) bestehen. Die Aufgabe der vorliegenden Erfindung ist eine Optimierungsaufgabe, wie sie sich (zumindest in ähnlicher Weise) auch bei Risiko- Verteilungssystemen zum Verteilen von Risiken, bei Marktanalysesystemen zum Modellieren eines Marktmodells, bei Fehleranalysesystemen zum Suchen und Analysieren von Fehlerursachen, bei Sensibilitätsanalysen für mögliche Modularisierungen (beispielsweise hinsichtlich Kosten und/oder Testbarkeit) und bei Diagnosesystemen zum Suchen und Analysieren von Krankheitsursachen stellt. In one possible application scenario, the resource requirement to be minimized is to minimize the maintenance effort of a system. Instead, depending on the application scenario, the resource requirement to be minimized may be to minimize the storage footprint (e.g., for software components to be kept concurrently in main memory), minimize clumping risk in fulfillment of transfer or transport jobs, minimize required manufacturing capacity, and / or Minimize an energy requirement and / or minimize a computing capacity (for example, on a server farm) exist. The object of the present invention is an optimization task, as it (at least in a similar way) also at risk Distributing risk distribution systems, market analysis systems for modeling a market model, fault analysis systems for finding and analyzing causes of errors, sensitivity analyzes for possible modularisations (eg, cost and / or testability), and diagnostic systems for finding and analyzing causes of disease.
Es gibt Werkzeuge für statische Analysen von Software-Code. Während sich die Ergebnisse von diesen Werkzeugen zum Erkennen von unabhängigen Software-Komponenten grundsätzlich teilweise nutzen lassen, zielen sie auf ein Durchsetzen von Codierstandards und auf ein Erkennen von Programmierfehlern (beispielsweise auf ein Erkennen von Zugriffen außerhalb eines freigegebenen Speicherplatzbereichs (array-out-of-bound violation) , eines nicht vorbesetzten Zeigers (NULL There are tools for static analysis of software code. While the results of these tools for identifying independent software components can be generally exploited in part, they are aimed at enforcing coding standards and at detecting programming errors (for example, detecting access outside a shared space (array-out-of-memory)). bound violation), of a non-defaulted pointer (NULL
dereferences ) oder einer Endlosschleife. dereferences) or an infinite loop.
Jedoch sind noch keine Werkzeuge bekannt, die eine Systembe Schreibung als Graph nutzen, um ein komplexes System in Korn ponenten zu zerlegen. Viele bekannte Techniken (wie Abhängi keitsmatrizen ) neigen bei realen System dazu, sehr stark zu wachsen, wodurch oftmals Klarheit und Überblick verloren ge hen und eine Verwendbarkeit und/oder ein Nutzen dieser Tech niken stark eingeschränkt ist. However, tools are still not known which use a system description as a graph to break a complex system into components. Many known techniques (such as dependency matrices) tend to grow very rapidly in real systems, often resulting in loss of clarity and clarity, and severely restricting the usability and / or benefit of these techniques.
Die Aufgabe der vorliegenden Erfindung besteht darin, ein Modularisierungswerkzeug und ein entsprechendes Verfahren zum Erzeugen eines Moduls eines Systems bereitzustellen, mit dem ein kostengünstiges, fehlerfreies Modularisieren eines komplexen Systems möglich ist. The object of the present invention is to provide a modularization tool and a corresponding method for generating a module of a system with which a cost-effective, error-free modularization of a complex system is possible.
Erfindungsgemäß wird diese Aufgabe durch ein Modularisierungswerkzeug zum Modularisieren eines Systems gelöst, wobei das Modularisierungswerkzeug eine Komponenten-Erfassungsvorrichtung zum Erfassen von Komponenten eines Systems, eine Abhängigkeiten-Erfassungsvorrichtung zum Erfassen von Abhängigkeiten zwischen den Komponenten, eine Anwendungen-Teilmengen- Ermittlungsvorrichtung zum Festlegen einer ersten Anwendungen-Teilmenge aus einer Gesamtmenge von Anwendungen des Systems, eine Komponenten-Ermittlungsvorrichtung und eine Modul- Ermittlungsvorrichtung umfasst. Die Komponenten-Ermittlungs- Vorrichtung ist zum Ermitteln für jede Anwendung aus der ersten Anwendungen-Teilmenge derjenigen Komponenten vorgesehen, von denen eine Startkomponente der jeweiligen Anwendung zumindest mittelbar abhängig ist. Die Modul-Ermittlungsvorrichtung ist zum Ermitteln einer ersten anwendungen- teilmengen-spezifischen Komponentenmenge vorgesehen, wobei jede Komponente der erstem anwendungen-teilmengen-spezifi- schen Komponentenmenge jeder Anwendung der ersten Anwendungen-Teilmenge zugeordnet ist, aber nicht jeder Anwendung einer anderen Anwendungen-Teilmenge zugeordnet ist, die mehr Anwendungen beinhaltet als die erste Anwendungen-Teilmenge. According to the invention, this object is achieved by a modularization tool for modularizing a system, wherein the modularization tool comprises a component detection device for detecting components of a system, a dependency detection device for detecting dependencies between the components, an application subset A determination device for determining a first application subset from a total of applications of the system, a component determination device, and a module determination device. The component determination device is provided for determining for each application from the first application subset of those components of which a startup component of the respective application is at least indirectly dependent. The module discovery device is provided for determining a first application subset specific component set, each component of the first application subset specific component set associated with each application of the first application subset, but not associated with each application with another application subset which contains more applications than the first application subset.
Wenn eine erste Systemkomponente (beispielsweise ein Softwaremodul) für ihre Ausführung beispielsweise eine Methode oder einen Parameter einer zweiten Systemkomponente benötigt, ist die erste Systemkomponente von Vorhandensein und Funktionsbereitschaft der zweiten Systemkomponente (zumindest einseitig) abhängig. Eine umgekehrte Abhängigkeit der zweiten Systemkomponente von der ersten Systemkomponente ist dafür zum Einen nicht zwingend erforderlich. Der resultierende Graph ist ein Teilgraph, durch den der Graph des ursprünglichen Systems aufgespannt wird. Im Folgenden wird von einer Abhängigkeit gesprochen, die von der ersten Systemkomponente 'weg weist', wenn die erste Systemkomponente von der zweiten Systemkomponente abhängig ist (wobei diese Begriffsdefinition willkürlich ist) . If a first system component (for example a software module) requires, for example, a method or a parameter of a second system component for its execution, the first system component is dependent on the presence and readiness of the second system component (at least on one side). An inverse dependence of the second system component on the first system component is not necessarily required for one thing. The resulting graph is a subgraph that spans the graph of the original system. In the following, we will speak of a dependency 'pointing away' from the first system component if the first system component is dependent on the second system component (this definition being arbitrary).
Entsprechend umfasst ein erfindungsgemäßes Verfahren zum Erzeugen eines Moduls eines Systems folgende Schritte. In einem ersten Schritt wird eine Gesamtmenge von Komponenten eines Systems erfasst. In einem zweiten Schritt werden Abhängigkeiten zwischen den Komponenten erfasst. In einem dritten Accordingly, a method according to the invention for generating a module of a system comprises the following steps. In a first step, a total of components of a system is detected. In a second step, dependencies between the components are recorded. In a third
Schritt wird eine erste Anwendungen-Teilmenge aus einer Gesamtmenge von Anwendungen des Systems festgelegt. In einem vierten Schritt werden für jede Anwendung aus der ersten Anwendungen-Teilmenge diejenigen Komponenten ermittelt, von denen die Startkomponente der jeweiligen Anwendung zumindest mittelbar abhängig ist. In einem fünften Schritt wird eine erste anwendungen-teilmengen-spezifische Komponentenmenge ermittelt, wobei jede Komponente der ersten anwendungen- teilmengen-spezifischen Komponentenmenge jeder Anwendung der ersten Anwendungen-Teilmenge zugeordnet ist, aber nicht jeder Anwendung einer anderen Anwendungen-Teilmenge zugeordnet ist, die mehr Anwendungen beinhaltet als die erste Anwendungen- Teilmenge. Der zweite Schritt kann vor dem ersten Schritt durchgeführt werden. Alternativ oder zusätzlich kann der dritte Schritt vor dem ersten oder vor dem zweiten Schritt ausgeführt werden. Step is to set a first application subset of a total of applications of the system. In one The fourth step determines for each application from the first application subset those components of which the start component of the respective application is at least indirectly dependent. In a fifth step, a first application subset specific component set is determined, wherein each component of the first application subsets specific component set of each application is associated with the first application subset, but not associated with each application to a different application subset, the more Applications includes as the first application subset. The second step can be done before the first step. Alternatively or additionally, the third step may be performed before the first or before the second step.
Ein Konzept der Erfindung kann darin gesehen werden, dass eine anwendungen-teilmengen-spezifische Komponentenmenge ermittelt wird, wobei jede Komponente der anwendungen-teilmengen- spezifischen Komponentenmenge jeder Anwendung einer bestimm- ten Teilmenge aus einer Gesamtmenge von Anwendungen zugeordnet ist, aber nicht jeder Anwendung einer anderen Anwendungen-Teilmenge zugeordnet ist, die mehr Anwendungen beinhaltet als die erste Anwendungen-Teilmenge. Dadurch, dass jede Komponente der anwendungen-teilmengen-spezifischen Komponenten- menge jeder Anwendung einer bestimmten Teilmenge aus einerOne concept of the invention may be seen as determining an application subset specific component set, wherein each component of the application subset specific component set of each application is associated with a particular subset of a total set of applications, but not each application associated with other applications subset that contains more applications than the first application subset. By having each component of the application subset specific component set of each application of a particular subset of one
Gesamtmenge von Anwendungen zugeordnet ist, wird je denkbare Kombination von Anwendungen nur maximal ein einziges Modul definiert und erzeugt. So wird erreicht, dass die einzelnen Module nicht unzweckmäßig klein sind und die Anzahl der er- mittelten Module nicht unnötig groß ist. Durch die letztgenannte Eigenschaft wird ein vermeidbarer Ressourcenbedarf durch unnötige Granularität der Module (beispielsweise ein komponentenzahlabhängiger Ressourcenbedarf und/oder erhöhter Ressourcen durch vermeidbare Lade- und Entladevorgänge) ver- mieden. Dadurch, dass keine Komponente der ersten anwendungen-teilmengen-spezifischen Komponentenmenge jeder Anwendung einer anderen Anwendungen-Teilmenge zugeordnet ist, die mehr Anwendungen beinhaltet als die erste Anwendungen-Teilmenge, wird erreicht, dass einzelne Module und deren Ressourcenbedarf nicht unnötig groß sind. Typischerweise ist die Startkomponente für eine Ausführung der Anwendung auf dem System erforderlich. Auch ist es möglich, dass je Anwendung mehrere Startkomponenten vorgesehen sind. Typischer-, aber nicht zwingenderweise wird die anwendungsspezifische Startkomponente einer ersten Anwendung bei nicht jeder Ausführung einer der anderen Anwendungen der Gesamtmenge von Anwendungen ausgeführt . Is assigned to the maximum number of applications, only a maximum of a single module is defined and generated for each conceivable combination of applications. This ensures that the individual modules are not impractically small and that the number of modules determined is not unnecessarily large. The latter feature avoids avoidable resource requirements due to unnecessary granularity of the modules (eg, a component number dependent resource requirement and / or increased resources through avoidable load and unload operations). By having no component of the first application subset specific component set of each application associated with a different application subset containing more applications than the first application subset, is achieved that individual modules and their resource requirements are not unnecessarily large. Typically, the launch component is required to run the application on the system. It is also possible that several starting components are provided per application. Typically, but not necessarily, the application-specific launch component of a first application is executed on not every execution of one of the other applications of the total set of applications.
Es ist zielführend, wenn das Modularisierungswerkzeug ein erstes Werkzeug aufweist, das dazu vorbereitet ist, die Komponenten der ersten anwendungen-teilmengen-spezifischen Komponentenmenge mittels Ausführung einer rekursiv verschachtelten Mehrfachschleife zu ermitteln, wobei das erste Werkzeug dazu vorbereitet ist, mit jeder neu aufgefundenen Komponente der ersten anwendungen-teilmengen-spezifischen Komponentenmenge eine weitere Unterschleife über alle von der aufgefundenen Komponente weg weisenden Abhängigkeiten auszuführen, um alle Komponenten der ersten anwendungen-teilmengen-spezifi- schen Komponentenmenge zu ermitteln, von denen die neu aufgefundenen Komponenten abhängig sind. Hiermit ist das vorgeschlagene Modularisierungsverfahren mittels eines determinierten Ablaufs und mit minimalem Aufwand durchführbar. Wenn beim Auffinden der anwendungen-teilmengen-spezifischen Komponentenmenge eine Abhängigkeit in die bereits gefundenen Komponenten ausgeführt wird, handelt es sich um eine zyklische Abhängigkeit, die für das weitere Auffinden in Abhängigkeit befindlicher Komponenten ignoriert werden kann. It is useful if the modularization tool has a first tool that is prepared to determine the components of the first application subset-specific component set by executing a recursively nested multiple loop, with the first tool being prepared with each newly discovered component perform a first sub-loop over all dependencies pointing away from the found component to determine all components of the first application-subset-specific component set on which the newly discovered components are dependent. Hereby, the proposed Modularisierungsverfahren by means of a determinate process and with minimal effort is feasible. If a dependency is found in the components already found when finding the application-by-item-specific component set, it is a cyclic dependency that can be ignored for further finding of dependent components.
Vorteilhaft ist, wenn das Modularisierungswerkzeug ein zweites Werkzeug zum Abbilden des Systems in einen gerichteten Graphen aufweist, wobei jeder der Komponenten genau ein Knoten des gerichteten Graphen zugeordnet ist und jeder direkten Abhängigkeit zwischen Paaren der Komponenten eine Kante des gerichteten Graphen zugeordnet ist. Eine Abbildung des Systems in einen gerichteten Graphen führt zu einer allgemeinverständlichen, bewährten Beschreibung des Systems (soweit dies bei einem komplexen System überhaupt möglich ist) . It is advantageous if the modularization tool has a second tool for mapping the system into a directed graph, wherein each of the components is associated with exactly one node of the directed graph and each direct dependency between pairs of the components is associated with an edge of the directed graph. An illustration of the system in a directed graph leads to a well-understood, proven description of the system (as far as this is even possible with a complex system).
Es hat auch Vorteile, wenn das Modularisierungswerkzeug ein drittes Werkzeug zum Herausteilen der von dem Modularisierungswerkzeug ermittelten ersten anwendungen-teilmengen- spezifischen Komponentenmenge aus dem System aufweist. Hierdurch kann eine Modularisierung eines Systems im Anschluss an eine Systemänderung kurzfristig mit geringem Aufwand und zeitnah nachoptimiert werden. It also has advantages when the modularization tool has a third tool for extracting from the system the first application subset specific component set determined by the modularization tool. As a result, a modularization of a system following a system change can be re-optimized in the short term with little effort and in a timely manner.
Bevorzugt ist auch, wenn das Modularisierungswerkzeug eine Startkomponenten-Erfassungsvorrichtung zum Auswählen für mindestens eine Anwendung aus der Gesamtmenge von Anwendungen mindestens je eine anwendungsspezifischen Startkomponente aus der Menge der Komponenten aufweist. Sofern für eine Anwendung eine Komponente bekannt ist, die zu der Anwendung gehört, können ausgehend von der Komponente mittels eines Zurückverfolgens der einseitigen Abhängigkeiten in Gegenrichtung der einseitigen Abhängigkeiten eine oder mehrere Startkomponenten der Anwendung aufgefunden werden. Eine Startkomponente ist eine Komponente, zu der keine Abhängigkeit gehört, die in Gegenrichtung der Abhängigkeiten gerichtet ist. Eine Startkomponente ist also aufgefunden, wenn beim Zurückverfolgen der einseitigen Abhängigkeiten eine Komponente aufgefunden wird, deren Eingangsgrad Null ist. Optional ist es auch möglich, alle Startkomponenten einer Anwendung (oder aller Anwendungen) eines Systems automatisch aufzufinden, indem ausgehend von jeder Komponente der Anwendung (beziehungsweise aller Anwendungen des Systems) alle einseitigen Abhängigkeiten in Gegenrichtung der einseitigen Abhängigkeiten zurückverfolgt werden . It is also preferred if the modularization tool has a start component detection device for selecting at least one application-specific starting component from the quantity of the components for at least one application from the total amount of applications. If an application knows a component that belongs to the application, one or more start components of the application can be found starting from the component by tracing the one-sided dependencies in the opposite direction of the one-sided dependencies. A startup component is a component that does not have a dependency that is directed in the opposite direction of the dependencies. A startup component is thus found when tracing back the one-way dependencies a component is found whose input degree is zero. Optionally, it is also possible to automatically locate all startup components of an application (or all applications) of a system by tracing all one-way dependencies in the opposite direction of one-way dependencies, starting from each component of the application (or all applications of the system).
Eine davon unabhängige Weiterbildung sieht vor, dass das Modularisierungswerkzeug eine Anwendungen-Erfassungsvorrichtung zum Erfassen einer Gesamtmenge von Anwendungen aufweist, die auf dem System ausführbar sein sollen. Aufwand und Zeitbedarf für eine manuelle Ermittlung von Anwendungen kann eingespart werden, wenn zumindest eine Teilmenge der Gesamtmenge von An- Wendungen, die auf dem System ausführbar sein sollen, mittels einer Anwendungen-Erfassungsvorrichtung ermittelbar ist. Ausgehend von der Beschreibung des Systems mittels eines gerichteten Graphen können alle Anwendungen eines Systems zumindest dann mittels eines Zurückverfolgens aller vorhandenen gerichteten Kanten (einseitigen Abhängigkeiten) in Gegenrichtung ermittelt werden. Da sich unter dieser Voraussetzung jede Startkomponente gegenüber allen anderen Komponenten dadurch auszeichnet, dass der Eingangsgrad des Knotens, der die Startkomponente darstellt, gleich Null ist, sind damit alle Startkomponenten und somit alle Anwendungen maschinell ermittelbar . An independent refinement provides that the modularization tool has an application detection device for detecting a total amount of applications that are to be executable on the system. Effort and time required for a manual determination of applications can be saved if at least a subset of the total amount of Phrases that are to be executable on the system can be determined by means of an application detection device. Based on the description of the system by means of a directed graph, all applications of a system can be determined at least by tracing back all existing directed edges (one-sided dependencies) in the opposite direction. Since, under this condition, each start component is distinguished from all other components in that the input level of the node representing the start component is equal to zero, all start components and thus all applications can be determined by machine.
Besonders vorteilhaft ist, wenn die Modul-Ermittlungsvorrichtung dazu vorbereitet ist, zu jeder nichtleeren Teilmenge der Gesamtmenge von Anwendungen eine anwendungen-teilmengen- spezifische Komponentenmenge zu ermitteln, wobei jede Komponente der anwendungen-teilmengen-spezifischen Komponentenmenge jeder Anwendung der jeweiligen Anwendungen-Teilmenge zugeordnet ist, aber nicht jeder Anwendung einer anderen Anwendungen-Teilmenge zugeordnet ist, die mehr Anwendungen beinhaltet als die erste Anwendungen-Teilmenge. Wenn zu jeder nichtleeren Anwendungen-Teilmenge der Gesamtmenge von Anwendungen eine solche anwendungen-teilmengen-spezifische Komponentenmenge ermittelt wird, kann eine optimale vollständige Modularisierung des Systems erreicht werden. It is particularly advantageous if the module-determining device is prepared to determine an application-subset-specific component quantity for each non-empty subset of the total amount of applications, wherein each component of the application subset-specific component quantity of each application is assigned to the respective subset of applications but not every application is associated with a different application subset that contains more applications than the first application subset. By determining such an application subset specific component set for each nonempty application subset of the total application set, optimal complete modularization of the system can be achieved.
Ein anwendungsspezifischer Nutzen ergibt sich, wenn das Modularisierungswerkzeug Teil zumindest eines der folgenden Anwendungssysteme ist: eines Lastverteilungssystems zum Verteilen von Beförderungsaufträgen und/oder von Transportaufträgen und/oder von Fertigungsaufträgen und/oder von Energielieferungen und/oder von Rechnerlasten und/oder von Speicherlasten auf verfügbare Ressourcen; eines Softwareentwicklungssystems zum Modellieren eines komplexen Systems; eines Marktanalysesystems zum Modellieren eines Marktmodells; eines Risikoabschätzungssystems zum Modellieren von Risikomodellen; An application-specific benefit arises when the modularization tool is part of at least one of the following application systems: a load distribution system for distributing transport orders and / or transfer orders and / or production orders and / or energy deliveries and / or computer loads and / or memory loads to available ones Resources; a software development system for modeling a complex system; a market analysis system for modeling a market model; a risk assessment system for modeling risk models;
eines Fehleranalysesystems zum Suchen und Analysieren von Fehlerursachen; eines Diagnosesystems zum Suchen und Analysieren von Krankheitsursachen. a fault analysis system for searching and analyzing Error causes; a diagnostic system for finding and analyzing causes of disease.
Die Erfindung ist anhand der beigefügten Zeichnungen näher erläutert, in denen zeigen: The invention is explained in more detail with reference to the accompanying drawings, in which:
FIG 1 schematisch einen strukturellen Aufbau eines Modularisierungswerkzeugs zum Modularisieren eines Systems, 1 schematically shows a structural design of a modularization tool for modularizing a system,
FIG 2 schematisch ein Ablaufdiagramm eines Verfahrens zum 2 schematically shows a flowchart of a method for
Erzeugen eines Moduls eines Systems,  Generating a module of a system,
FIG 3 schematisch ein Mengendiagramm von Mengen, deren Mengenelemente Komponenten von Anwendungen eines Systems sind, 3 schematically shows a set diagram of sets whose set elements are components of applications of a system,
FIG 4 schematisch ein Beispiel eines Software-Programms in der Programmiersprache Java, 4 shows schematically an example of a software program in the programming language Java,
FIG 5 schematisch einen gerichteten Graphen für ein erstes 5 schematically shows a directed graph for a first
Ausführungsbeispiel ,  Embodiment,
FIG 6 schematisch ein Beispiel für eine transitive Hülle eines ersten Knotens eines Graphen, schematisch das Beispiel der FIG 6 mit einer transi tive Hülle eines zweiten Knotens desselben Graphen, 6 shows schematically an example of a transitive envelope of a first node of a graph, schematically the example of FIG. 6 with a transitive envelope of a second node of the same graph, FIG.
FIG 8 schematisch einen Ablauf einer Modularisierung für das Beispiel der FIG 6 und 7, 8 schematically shows a sequence of a modularization for the example of FIGS. 6 and 7,
FIG 9 schematisch einen gerichteten Graphen, der eine FIG. 9 schematically shows a directed graph containing a
Struktur einer eingebetteten Steuerung beschreibt, dessen Knoten für zwei Anwendungen der Steuerung eingefärbt sind,  Structure of an embedded controller whose nodes are colored for two applications of the controller,
FIG 10 schematisch eine Detailansicht des gerichteten Gra- phen der FIG 9, 10 schematically shows a detailed view of the directed graph phen of FIG. 9,
FIG 11 schematisch ein Ablaufdiagramm eines Verfahrens zum 11 shows schematically a flow chart of a method for
Modularisieren eines Systems.  Modularizing a system.
Die nachfolgend näher geschilderten Ausführungsbeispiele stellen bevorzugte Ausführungsformen der vorliegenden Erfindung dar. The embodiments described in more detail below represent preferred embodiments of the present invention.
Das in FIG 1 gezeigte Modularisierungswerkzeug MW zum Modularisieren eines Systems S umfasst eine Komponenten-Erfassungsvorrichtung VE, eine Abhängigkeiten-Erfassungsvorrichtung EE, eine Komponenten-Ermittlungsvorrichtung KE und eine Modul-Ermittlungsvorrichtung ME. The modularization tool MW shown in FIG. 1 for modularizing a system S comprises a component detection device VE, a dependency detection device EE, a component determination device KE and a module determination device ME.
Im Folgenden werden zur Bezeichnung von Mengen die Großbuchstaben E, F, M und V verwendet. Zur Bezeichnung von Elementen dieser Mengen werden entsprechende Kleinbuchstaben e, f, m und v verwendet. Der Buchstabe S bezeichnet ein System zum Ausführen von Anwendungen f, wobei das System S mehrere Komponenten v aufweist, wobei zwischen den jeweiligen beiden Komponenten von mehreren Paaren von Komponenten jeweils eine einseitige Abhängigkeit e besteht. In the following, the capital letters E, F, M and V are used to denote quantities. To denote elements of these sets, corresponding lower case letters e, f, m, and v are used. The letter S denotes a system for executing applications f, wherein the system S comprises a plurality of components v, wherein between the respective two components of multiple pairs of components each one-sided dependence e exists.
Eine Strukturverbesserung (Refactoring) oder eine Modularisierung M eines Systems S kann mittels Gewinnung eines gerichteten Graphen G = (V,E) gelöst werden, der das System S beschreibt. Die Komponenten v in V repräsentieren funktionale Einheiten. In einem Softwaresystem wären das beispielsweise Code-Blöcke, Funktionen, Klassen, Bibliotheken, Module, oder Parameter. Die gerichteten Kanten e in E repräsentieren Beeinflussungen zwischen den Komponenten v in V. Beispiele von solchen einseitigen Abhängigkeiten e sind in Software Systemen Funktionsaufrufe in Java, WebService calls in SOA- Umgebungen oder Aufrufe einer Bibliothek eines Betriebssystems (SOA = service-orientated architecture) . Ein Datenfluss zur Rückgabe oder Ähnliches wird nicht durch eine Kante dargestellt. Es wird also unterstellt, dass keine rückwärtsge- richtete Beeinflussung durch eine Kante e(vl,v2) zwischen zwei Komponenten vi und v2 stattfindet. A refactoring or modularization M of a system S can be solved by obtaining a directed graph G = (V, E) describing the system S. The components v in V represent functional units. In a software system, these would be, for example, code blocks, functions, classes, libraries, modules, or parameters. The directed edges e in E represent influences between the components v in V. Examples of such one-way dependencies e in software systems are function calls in Java, web service calls in SOA environments or calls to a library of a service-oriented architecture (SOA). A data flow for return or the like is not represented by an edge. It is therefore assumed that no backward directed influence by an edge e (vl, v2) between two components vi and v2 takes place.
Die Komponenten-Erfassungsvorrichtung VE ist dazu vorberei- tet, die Komponenten v (Knoten eines Graphen G) des Systems S aus einer Systembeschreibung Sb des Systems S zu ermitteln. Die Systembeschreibung kann beispielsweise ein Übersetzungs- oder ablauffähiges Programmsystem oder eine in einer CAD- Sprache dokumentierte Maschinenstruktur (beispielsweise von einem Getriebe) sein (CAD = Computer Aided Design) . The component detection device VE is prepared to determine the components v (nodes of a graph G) of the system S from a system description Sb of the system S. The system description can be, for example, a translatable or executable program system or a machine structure documented in a CAD language (for example, from a transmission) (CAD = Computer Aided Design).
Die Abhängigkeiten-Erfassungsvorrichtung EE ist dazu vorbereitet, die einseitigen Abhängigkeiten e (gerichteten Kanten) zwischen den jeweiligen beiden Komponenten von Paaren von Komponenten v des Systems S aus einer Systembeschreibung Sb des Systems S zu ermitteln. The dependency detection device EE is prepared to determine the one-sided dependencies e (directed edges) between the respective two components of pairs of components v of the system S from a system description Sb of the system S.
Die Komponenten-Ermittlungsvorrichtung KE ist dazu vorbereitet, aus der Menge V der ermittelten Komponenten v und der Menge E der ermittelten gerichteten Kanten e eine Menge V(f) von Komponenten v(f) zu ermitteln, die für ein Ausführen einer Anwendung f erforderlich sind. Der Großbuchstabe V bezeichnet eine Menge von Komponenten v. Mit V(f) werden alle Komponenten v(f) einer einzelnen Anwendung f des Systems S bezeichnet. Der Großbuchstabe E bezeichnet eine Menge von einseitigen Abhängigkeiten e. Mit E(f) wird die Menge aller einseitigen Abhängigkeiten e(f) zwischen Komponenten v(f) einer Anwendung f bezeichnet. Der Großbuchstabe F bezeichnet eine Menge von Anwendungen f. Mit tm(F) wird eine Teilmenge (Anwendungen-Teilmenge) einer Menge F von Anwendungen f des Systems S bezeichnet. The component determination device KE is prepared to determine from the set V of the detected components v and the set E of the detected directed edges e an amount V (f) of components v (f) required for executing an application f , The capital letter V denotes a set of components v. V (f) denotes all components v (f) of a single application f of the system S. The capital letter E denotes a set of one-sided dependencies e. E (f) denotes the set of all one-sided dependencies e (f) between components v (f) of an application f. The capital letter F denotes a set of applications f. Tm (F) denotes a subset (application subset) of a set F of applications f of the system S.
Mit V(F) wird die Vereinigungsmenge aller Mengen V(f) aller Komponenten v(f) aller Anwendungen f des Systems S bezeichnet werden (typischerweise bezeichnet V(F) alle Knoten v des Systems S) . Eine entsprechende Notation wird hier auch für andere Mengen verwendet. Beispielsweise wird mit TM(F) die Menge aller Teilmengen tm(F) von Anwendungen f bezeichnet. TM(F) ist also die Potenzmenge der Menge F der Anwendungen f. Entsprechend bezeichnet der Großbuchstabe M die Menge aller Module m des Systems S. Mit der Abkürzung vs(f) wird eine Startkomponente einer einzelnen Anwendung f bezeichnet. Die Komponenten-Ermittlungsvorrichtung KE benötigt (um eine Menge V(f) von Komponenten v(f) zu ermitteln, die für ein Ausführen der Anwendung f erforderlich sind) als Eingabe auch die Angabe mindestens einer anwendungsspezifischen Startkomponente vs (f) . Anwendungsspezifische Startkomponenten vs (f) können manuell oder maschinell mittels einer Startkomponenten-Erfassungsvorrichtung SKE ermittelt werden. Grundsätzlich ist es möglich, dass alle oder nur Teil derV (F) will denote the union of all sets V (f) of all components v (f) of all applications f of system S (typically V (F) denotes all nodes v of system S). A corresponding notation is also used here for other quantities. For example, TM (F) denotes the set of all subsets tm (F) of applications f. TM (F) So is the power of the set F of applications f. Accordingly, the capital letter M denotes the set of all modules m of the system S. The abbreviation vs (f) designates a start component of a single application f. The component determination device KE requires (as an input also the indication of at least one application-specific start component vs (f)) (to determine an amount V (f) of components v (f) required for executing the application f). Application specific start components vs (f) can be determined manually or by machine by means of a start component detection device SKE. Basically it is possible that all or part of the
Menge F der Anwendungen f mehr als eine Startkomponente vs(f) aufweist (die Menge aller Startkomponenten vs(f) einer Anwendung f kann mit VS (f) bezeichnet werden) . In diesem Fall kann zum Durchführen des Modularisierungsverfahrens 100 in einem Vorverarbeitungsschritt 101 für jede Startkomponente vs ' (f) einer Anwendung eine eigene Anwendung f definiert werden. Falls keine startkomponentenspezifische Modularisierung M', sondern nur eine anwendungsspezifische Modularisierung M erwünscht ist, kann die startkomponentenspezifische Modulari- sierung M' in einem optionalen Nachverarbeitungsschritt 141 in eine rein anwendungsspezifische Modularisierung M umgewandelt werden. Hierzu werden für jede Anwendungen-Teilmenge tm(F) alle startkomponentenspezifischen Module Set F of applications f has more than one startup component vs (f) (the set of all startup components vs (f) of an application f may be denoted VS (f)). In this case, to perform the modularization method 100 in a pre-processing step 101, a separate application f can be defined for each start component vs' (f) of an application. If no start-component-specific modularization M 'but only an application-specific modularization M is desired, the start-component-specific modularization M' can be converted into a purely application-specific modularization M in an optional post-processing step 141. For this purpose, for each application subset tm (F), all start component-specific modules are used
m' (tm (F) ; vs (f) ) der jeweiligen Anwendungen-Teilmenge tm(F) zu einem jeweiligen anwendungen-teilmengen-spezifischen (dann aber nicht mehr startkomponentenspezifischen) Modul vereinigt ( m' (tm(F) ;VS (f) ) -> m(tm(F) ) . m '(tm (F); vs (f)) of the respective application subset tm (F) to a respective application subset specific (but then no more startup component specific) module (m' (tm (F); VS ( f)) -> m (tm (F)).
Erfindungsgemäß ist ein Modul m die Menge V(tm(F)) derjenigen Komponenten v einer bestimmten Teilmenge tm(F) (der Menge F aller Anwendungen f) , die jeder Anwendung f der bestimmten Teilmenge tm(F) zugeordnet sind, vermindert um die Menge V(TM' (F) ) aller Komponenten v, die jeder Anwendung f irgend- einer der anderen Anwendungen-Teilmengen tm' (F) angehört, die mehr Anwendungen f beinhaltet als die bestimmte Anwendungen- Teilmenge tm(F) : m (tm (F) := (tm (F) \V (TM' (F) ) (Gleichung 1). According to the invention, a modulus m is the set V (tm (F)) of those components v of a particular subset tm (F) (the set F of all applications f) associated with each application f of the particular subset tm (F) minus the Quantity V (TM '(F)) of all components v, which can be used by any application f belongs to one of the other application subsets tm '(F), which contains more applications f than the particular application subset tm (F): m (tm (F): = (tm (F) \ V (TM' (F) ) (Equation 1).
Das Wort 'irgendeiner' bedeutet hier, dass die spezifizierte Verminderung für jede der anderen Anwendungen-Teilmengen tm' (F) durchzuführen ist, die mehr Anwendungen f beinhaltet als die bestimmte Anwendungen-Teilmenge tm(F) . The word 'any' here means that the specified decrease is to be performed for each of the other application subsets tm '(F) that contains more applications f than the particular application subset tm (F).
Entsprechend ist eine Modularisierung M als Menge aller an- wendungen-teilmengen-spezifischen Module m definiert. Die Modularisierung M ist keine Menge von Komponenten v (also nicht etwa gleich V(F)) sondern eine Menge, deren Elemente m (ähnlich wie bei einer Potenzmenge) Mengen sind. Correspondingly, a modularization M is defined as the set of all application-subset-specific modules m. The modularization M is not an amount of components v (that is, not equal to V (F)) but an amount whose elements are m (similar to a power set) sets.
Wenn Kanten e als Eigenschaften von Komponenten v angesehen werden, brauchen die Kanten für die Modularisierung nicht be- sonders betrachtet werden, sobald feststeht, welche Komponenten v zu welchen Funktionen f gehören. If edges e are considered to be properties of components v, the edges for modularization need not be considered as soon as it is clear which components v belong to which functions f.
In einer Weiterbildung weist das Modularisierungswerkzeug MW eine Anwendungen-Teilmengen-Ermittlungsvorrichtung FTME zum maschinellen Ermitteln von Teilmengen tm(F) von Anwendungen auf . In a further development, the modularization tool MW has an application subset determination device FTME for the automatic determination of subsets tm (F) of applications.
In einer davon unabhängigen Weiterbildung weist das Modularisierungswerkzeug MW eine Anwendungen-Erfassungsvorrichtung FE zum Erfassen einer Gesamtmenge F von Anwendungen f auf, die auf dem System S ausführbar sein sollen. In an independent development, the modularization tool MW has an application detection device FE for detecting a total quantity F of applications f that are to be executable on the system S.
Das in FIG 2 gezeigte Verfahren 100 zum Erzeugen eines Moduls m eines Systems S umfasst folgende Schritte. In einem ersten Schritt 110 wird eine Gesamtmenge V von Komponenten v eines Systems S erfasst. In einem zweiten Schritt 120 werden einseitige Abhängigkeiten e zwischen den Komponenten v erfasst. In einem dritten Schritt 130 wird eine erste Anwendungen- Teilmenge tm(F) aus einer Gesamtmenge F von Anwendungen f des Systems S festgelegt. In einem vierten Schritt 140 werden für jede Anwendung f aus einer ersten Anwendungen-Teilmenge tm(F) von Anwendungen f diejenigen Komponenten v ermittelt, von de- nen eine Startkomponente vs(f) der jeweiligen Anwendung f zumindest mittelbar abhängig sind. In einem fünften Schritt 150 wird eine erste anwendungen-teilmengen-spezifische Komponentenmenge m erzeugt, wobei jede Komponente v (m) der ersten anwendungen-teilmengen-spezifischen Komponentenmenge m jeder Anwendung f einer ersten Anwendungen-Teilmenge tm(F) zugeordnet ist, aber nicht jeder Anwendung f einer anderen Anwendungen-Teilmenge tm' (F) zugeordnet ist, die mehr Anwendungen f beinhaltet als die erste Anwendungen-Teilmenge tm(F) . Die Schritte des Verfahren 100 können auch in einer anderen Reihenfolge durchgeführt werden. Beispielsweise kann der zweite Schritt 120 vor dem ersten Schritt 110 durchgeführt werden. Alternativ oder zusätzlich ist es auch möglich, dass der dritte Schritt 130 vor dem ersten 110 oder vor dem zwei- ten 120 Schritt ausgeführt wird. The method 100 shown in FIG. 2 for generating a module m of a system S comprises the following steps. In a first step 110, a total quantity V of components v of a system S is detected. In a second step 120, one-sided dependencies e between the components v are detected. In a third step 130, a first application Subset tm (F) of a total set F of applications f of the system S. In a fourth step 140, for each application f from a first application subset tm (F) of applications f, those components v are determined from which a start component vs (f) of the respective application f is at least indirectly dependent. In a fifth step 150, a first application subset specific component set m is generated, but each component v (m) is associated with the first application subset specific component set m of each application f of a first application subset tm (F), but not each application f is associated with another applications subset tm '(F) that includes more applications f than the first application subset tm (F). The steps of method 100 may also be performed in a different order. For example, the second step 120 may be performed prior to the first step 110. Alternatively or additionally, it is also possible for the third step 130 to be carried out before the first 110 or before the second 120 steps.
Wie im Folgenden Ausführungsbeispiel näher erläutert wird, können (im vierten Schritt 140) die Komponenten v, von denen eine Startkomponente vs (f) der jeweiligen Anwendung f zumin- dest mittelbar abhängig sind, mittels Berechnung einer transitiven Hülle E+ um die Startkomponente vs(f) auf der Kantenrelation E des Graphen G ermittelt werden. As will be explained in more detail in the following exemplary embodiment, the components v, of which a start component vs (f) of the respective application f is at least indirectly dependent, can be calculated by calculating a transitive envelope E + around the start component vs (in the fourth step 140). f) are determined on the edge relation E of the graph G.
Ein mögliches Verfahren für die Durchführung des fünften Schritts 150 ergibt sich für den Fachmann unmittelbar aus obiger Gleichung. Aus der Tatsache, dass die Teilmengen einer endlichen Menge (also die Anzahl der Elemente einer Potenzmenge) abzählbar sind, ergibt sich, dass zum Auffinden aller Teilmengen tm(F) eine endliche Festpunktiteration verwendet werden kann. One possible method for carrying out the fifth step 150 results for the person skilled in the art directly from the above equation. From the fact that the subsets of a finite set (ie the number of elements of a power set) are countable, it follows that a finite fixed point iteration can be used to find all subsets tm (F).
Im Folgenden wird ein Verfahren 200 zum Modularisieren von Software-Modulen m beschrieben. Nachdem der gerichtete Graph G (beispielsweise mittels einer statischen Analyse) extrahiert wurde, besteht der nächste Schritt darin, zu berechnen, welche Knoten v für die Anwendung f benötigt werden, die das System S definieren. Wenn beispielsweise ein Software-System S, das in einem Servo- Antrieb eingebaut ist, einen permanenterregten Synchronmotor steuert, würde ein solcher Antrieb typischerweise wenigstens die drei Anwendungen 'Geschwindigkeit steuern', 'Bremsen' und 'Encoder steuern' aufweisen. Jede dieser Anwendungen f ist in dem Softwaresystem S eines solchen Antriebs mittels einer (vorzugsweise kleinen) Menge V(f) von Komponenten v verwirklicht . In the following, a method 200 for modularizing software modules m will be described. After the directed graph G has been extracted (eg, by means of a static analysis), the next step is to compute which nodes v are needed for the application f defining the system S. For example, if a software system S incorporated in a servo drive controls a permanent magnet synchronous motor, such a drive would typically have at least the three applications 'speed control', 'brake' and 'control encoder'. Each of these applications f is realized in the software system S of such a drive by means of a (preferably small) set V (f) of components v.
Mit dem eigentlichen Modularisieren kann begonnen werden, sobald die Anwendung f entsprechend ihrer repräsentativen Komponenten v und der Struktur des gerichteten Graphen G aus der eingegebenen Struktur des Systems S extrahiert wurden. Dabei braucht die Menge V der repräsentativen Komponenten v nicht von jeder Anwendung f vollständig bekannt sein. Für ein teilweises Modularisieren reicht es aus, transitive Hüllen E+ in dem gerichteten Graphen G nur um diejenigen Komponenten v herum zu ermitteln, die betrachtet werden. So können automatisiert alle Komponenten v mit Verbindungen e zu denjenigen Komponenten v ermittelt werden, die für eine spezielle Anwendung f relevant sind. Hierzu brauchen von einem Anwender des Modularisierungswerkzeugs MW nur diejenigen Komponenten v angegeben werden, die für die jeweilige Anwendung f repräsentativ sind. The actual modularization can be started as soon as the application f has been extracted from the input structure of the system S according to its representative components v and the structure of the directed graph G. In this case, the quantity V of the representative components v need not be completely known by each application f. For partial modularization, it suffices to determine transitive envelopes E + in the directed graph G only around those components v that are considered. Thus, all components v with connections e to those components v that are relevant for a specific application f can be determined automatically. For this purpose, only those components v that are representative of the respective application f need to be specified by a user of the modularization tool MW.
Danach wird für jede Anwendung f die Menge V(f) aller für die Anwendung f benötigten Komponenten v (d.h. Knoten) ermittelt. Mit dem Modularisierungsverfahren 100 können gerichteten Graphen G in gerichtete Teilgraphen aufgeteilt werden und das System S modularisiert werden. Thereafter, for each application f, the set V (f) of all components v (i.e., nodes) required for the application f is determined. With the modularization method 100, directed graphs G can be divided into directed subgraphs and the system S modularized.
G sei ein gerichteter Graph, welcher aus einem geordneten Paar G = (V, E) besteht, wobei V eine nichtleere Menge von Knoten v und wobei E eine Menge von Kanten e ist, mit EcVxV. Die Mengen V(f) sollen für jede einzelne Anwendung f die für die jeweilige Anwendung f jeweils relevanten Knoten v definieren . Let G be a directed graph consisting of an ordered pair G = (V, E), where V is a nonempty set of Node v and where E is a set of edges e, with EcVxV. For each individual application f, the sets V (f) should define the relevant v nodes v for each application.
Jede Menge V(f) einer Anwendung f wird vervollständigt entlang einer transitiven Hülle E+ der Kantenrelation E. Die transitive Hülle E+ einer zweistelligen Relation E auf einer Menge V(f) ist gegeben durch Each set V (f) of an application f is completed along a transitive envelope E + of the edge relation E. The transitive envelope E + of a two-digit relation E on a set V (f) is given by
(v„v ) e £+ :« « e N0 Λ Ξν, , ν^.,., ν,, , ν, e V : (y, , ν^, θΊ , v2 ),...(vn , v ) e E . (v "v) e £ + :« «e N 0 Λ Ξν,, ν ^.,., ν ,,, v, e V: (y,, ν ^, θΊ, v 2 ), ... ( vn , v) e E.
Eine transitive Hülle E+ (auch transitiver Abschluss einer zweistelligen Relation E ist eine Erweiterung der zweistelli- gen Relation E, die außer den direkten Paaren e der Relation (d.h. Kanten e) zusätzlich alle indirekten Paare e+ = (vi, Vj ) enthält (und damit transitiv ist) . A transitive shell E + (also transitive conclusion of a two-digit relation E is an extension of the two-digit relation E, which contains all indirect pairs e + = (vi, Vj) in addition to the direct pairs e of the relation (ie edges e) ( and thus is transitive).
Bei den hier praxisrelevanten Systemen ist die transitive Hülle E+ typischerweise nicht reflexiv. Denn, wenn E+ eine reflexive transitive Hülle E* wäre, dann würde dies zusätzlich bedeuten, dass nicht nur einzelne, sondern sogar ausnahmslos alle Komponenten v der Hülle E+ von sich selbst abhängig ist. (Wenn es sich bei den Komponenten v(f) beispiels- weise um Methoden handelt, würde dies bedeuten, dass nicht nur einzelne, sondern jede dieser Methoden rekursiv ist und in dem System rekursiv genutzt wird, was jedoch in der Regel nicht der Fall ist.) Für eine bestimmte Anwendungen-Teilmenge tm(F) berechnet sich das dazugehörige Modul m entsprechend dem vorgeschlagenen Modularisierungsverfahren 100 nach Gleichung 1 . In the systems relevant to practice here, the transitive shell E + is typically not reflective. For if E + were a reflexive transitive envelope E * , then this would mean in addition that not only individual, but even without exception all components v of the envelope E + is dependent on itself. (For example, if the components v (f) are methods, it would mean that not only individual but each of these methods is recursive and recursively used in the system, which is not usually the case .) For a certain application subset tm (F), the corresponding module m is calculated according to the proposed modularization method 100 according to Equation 1.
Die Modularisierung M kann ermittelt werden, indem für jedes Element (d.h. jede Anwendungen-Teilmenge tm(F)) der Potenzmenge TM(F) zunächst die Menge V(tm(F)) derjenigen Komponenten v der betrachteten Anwendungen-Teilmenge tm(F) (der Menge F aller Anwendungen f) gebildet wird, die jeder Anwendung f der bestimmten Teilmenge tm(F) zugeordnet sind, und dann aus dieser Komponentenmenge V(tm(F)) Komponenten v aller derjenigen anderen Teilmengen tm' (F) entfernt werden, die mehr Anwendungen f beinhalten als die erste Anwendungen-Teilmenge, sofern sie jeder der Anwendungen f der jeweils betrachteten anderen Teilmenge tm' (F) zugeordnet sind (siehe Gleichung 1) . The modularization M can be determined by first, for each element (ie each application subset tm (F)) of the power set TM (F), the set V (tm (F)) of those components v of the considered application subset tm (F) (the set F of all applications f) is formed, which corresponds to each application f are assigned to the particular subset tm (F) and then removed from this component set V (tm (F)) components v of all those other subsets tm '(F) that contain more applications f than the first application subset, if they are each of the applications f are associated with the respective other subset tm '(F) considered (see Equation 1).
Das folgende erste Beispiel erläutert anhand FIG 3 die vorgeschlagene Modularisierung, wenn drei Anwendungen flr f2, fs betrachtet werden: m123 = (f1) (f2) (f3) The following first example explained with reference to FIG 3, the proposed modular, when three applications f LR f 2, f are considered: m 123 = (f 1) (f 2) (f 3)
m13 =(F(f1) F(f3))\m123 m 13 = (F (f 1 ) F (f 3 )) \ m 123
m23 =( (f2) (f3))\m123 m 23 = ((f 2 ) (f 3 )) \ m 123
m1 = (f1)\( (f2)u (f3)) m 1 = (f 1 ) \ ((f 2 ) u (f 3 ))
m2 = (f2)\( (f1)u (f3)) m 2 = (f 2 ) \ ((f 1 ) u (f 3 ))
m3 = (f3)\( (f1)u (f2)) m 3 = (f 3 ) \ ((f 1 ) u (f 2 ))
Wenn beispielsweise die Anwendung fx ausgeführt werden soll, muss zumindest zeitweise jedes der Module rtii, mi2 mi3 and mi23 geladen werden. Die Module m2, m23, and m3 werden für die Anwendung fi im Hauptspeicher nicht benötigt, weil sie für die Ausführung der Funktionalität der Anwendung fi nicht erforderlich sind. If, for example, the application f x is to be executed, at least temporarily each of the modules rtii, mi 2 mi 3 and mi 2 3 must be loaded. The modules m 2 , m 23 , and m 3 are not needed for the application fi in the main memory, because they are not required for the execution of the functionality of the application fi.
Dieses Modularisierungsverfahren 100 kann (zumindest mit Ausnahme des Festlegens der Anwendungen f und ihrer meistgenutzten Knoten v) vollkommen automatisch ausgeführt werden. Das Modularisierungsverfahren 100 ermittelt, wie ein System S aufgeteilt werden kann. This modularization method 100 can be carried out completely automatically (at least with the exception of specifying the applications f and their most frequently used nodes v). The modularization method 100 determines how a system S can be split.
In einem nachfolgenden Schritt kann das System S entsprechend der mittels des Modularisierungsverfahrens 100 ermittelten Modularisierung M (Aufteilung) aufgeteilt werden. In a subsequent step, the system S can be divided according to the modularization M (division) determined by means of the modularization method 100.
Das folgende zweite Beispiel erläutert die vorgeschlagene Modularisierung, wenn nur zwei Anwendungen fi, f2 betrachtet werden . Gegeben ist das in FIG 4 dargestellte erste Listing von Java Code (der Software-Architektur) mit den fünf Methoden vi, v2 , v3, v4 , v5. The following second example illustrates the proposed modularization when only two applications fi, f 2 are considered. Given is the first listing of Java code (the software architecture) shown in FIG 4 with the five methods vi, v2, v3, v4, v5.
Wenn nicht alle diese Methoden in jeder Umgebung immer benötigt werden, ist es möglich, dieses Stück von Programmcode mit dem vorgeschlagenen Modularisierungsverfahren 100 zu mo- dularisieren . Zu diesem Zweck werden Anwendungen f definiert. Die Information, die in dieser Liste von Anwendungen f verfügbar ist, kann unvollständig sein, weil die transitive Hülle des ausgewählten Verfahrens 100 berechnet wird, so dass für das vorgeschlagene Modularisierungsverfahren 100 nur die Kenntnis der Startkomponenten vs (f) erforderlich ist. Unless all of these methods are always needed in each environment, it is possible to modularize this piece of program code with the proposed modularization method 100. For this purpose, applications f are defined. The information available in this list of applications f may be incomplete because the transitive shell of the selected method 100 is calculated so that the proposed modularization method 100 requires only the knowledge of the starting components vs (f).
In einem ersten Schritt werden Informationen über anwendungs- bezogene Startkomponenten bereitgestellt: vs (fi) = vi; In a first step, information about application-related startup components is provided: vs (fi) = vi;
vs (f2) = v3. vs (f 2 ) = v 3 .
In einem nächsten Schritt wird die Architektur des Systems S in einen gerichteten Graphen G abgebildet, wobei die Komponenten (die Knoten v in dem gerichteten Graphen G) mit ge- richteten Kanten e verbunden sind, welche einseitige Abhängigkeiten von anderen Komponenten (beispielsweise Aufrufrichtungen) darstellen (siehe FIG 5) . Mit dem gerichteten Graphen G kann für jede Anwendung f die transitive Hülle E+ der Knoten v berechnet werden, die die Anwendung f zu ihrer Ausfüh- rung benötigt (siehe FIG 6 und 7) . In a next step, the architecture of the system S is mapped into a directed graph G, where the components (nodes v in the directed graph G) are connected with directed edges e, which represent one-sided dependencies on other components (eg, directions of invocation) (see FIG. 5). With the directed graph G, for each application f the transitive envelope E + of the node v can be calculated, which the application f needs for its execution (see FIGS. 6 and 7).
In diesem Beispiel besteht eine erste Menge V(fi) von Komponenten v(fi) einer ersten Anwendung fi aus den Knoten vi, v2, v5, während eine zweite Menge V(f2) von Komponenten v(f2) aus den Knoten v3, v4, v5 besteht. Mittels Kombinieren der Mengen V(fi), V(f2) kann eine Menge M von Modulen rtii , m2, mi2 ermittelt werden (siehe FIG 8) . Bei zwei Anwendungen fi, f2 entsteht typischerweise ein erstes rtii , ein zweites m2 und ein drittes mi2 Modul. Das erste Modul rtii enthält aus der betrachteten Menge V von Knoten v genau diejenige Menge m = In this example, a first set V (fi) of components v (fi) of a first application fi consists of nodes vi, v 2 , v 5 , while a second set V (f 2 ) of components v (f 2 ) consists of Node v 3 , v 4 , v 5 exists. By combining the sets V (fi), V (f 2 ), a set M of modules rtii, m 2 , m i2 can be determined (see FIG. 8). In two applications fi, f 2 , typically a first rtii, a second m 2 and a are formed third mi2 module. The first module rtii contains from the considered set V of vertex v exactly that set m =
V (fi) \V
Figure imgf000021_0001
von Knoten vi , v2, die ausschließlich für eine Ausführung der ersten Anwendung fi benötigt werden. Das zwei- te Modul m2 enthält aus der betrachteten Menge V von Knoten v genau diejenige Menge V (f2) \ (F\f2) von Knoten v3, v4, die ausschließlich für eine Ausführung der zweiten Anwendung f2 benötigt werden. Das dritte Modul m12 enthält aus der betrachteten Menge V von Knoten v genau diejenige Menge i2 von Knoten v5, die sowohl für ein Ausführen der ersten Anwendung fi als auch für eine Ausführen der zweiten Anwendung f2 benötigt werden m12 = V(fi)nV(f2) . Für die Anwendung fi brauchen nur alle Knoten v der Menge mi mi2 gepflegt oder geladen werden. Für das Merkmal f2 brauchen nur alle Knoten v der Menge m2umi2 gepflegt oder geladen werden.
V (fi) \ V
Figure imgf000021_0001
of nodes vi, v 2 needed exclusively for execution of the first application fi. The second modulus m 2 contains from the considered set V of vertex v exactly that set V (f 2 ) \ (F \ f 2 ) of vertex v 3 , v 4 , which only needs execution of the second application f 2 become. The third module m 12 contains from the considered set V of nodes v exactly that set i 2 of nodes v 5 which are required both for executing the first application fi and for executing the second application f 2. M 12 = V ( fi) nV (f 2 ). For the application fi only all nodes v of the set mi mi 2 need to be maintained or loaded. For the characteristic f 2 only every node v the amount m 2 need to be maintained or loaded to i2.
Um ein besseres Verständnis des vorgeschlagenen Modularisierungsverfahrens und seiner Verwendung zu erhalten, wird nun als ein weiteres Ausführungsbeispiel ein Modularisierungsver- fahrens 200 erläutert. In order to gain a better understanding of the proposed modularization method and its use, a modularization method 200 will now be explained as a further exemplary embodiment.
Hierbei wird in einem ersten Schritt 210 ein System S identifiziert, das verbesserungsbedürftig ist (d.h. ein System S, das mit der Zeit gewachsen ist oder ein System S, das für an- dere Voraussetzungen entwickelt wurden, als sie heute bestehen. Die Softwarearchitektur einer Software oder einer eingebetteten Steuerung (embedded Controllers) ist ein Beispiel für ein (über Jahrzehnte) gewachsenes System S. Eine eingebettete Software-Steuerung benutzt unterschiedliche Anwendun- gen, welche aus Softwarepaketen erstellt werden, die wiederum aus Komponenten v aufgebaut sind, welche Kernbestandteile eines solchen Systems S sind. Here, in a first step 210, a system S is identified that needs improvement (ie, a system S grown over time or a system S developed for other conditions than exist today.) Software architecture of software or Embedded Control (embedded Controllers) is an example of a system (grown over decades). An embedded software controller uses different applications created from software packages, which in turn are built from components v, which are core components of such Systems S are.
In einem zweiten Schritt 220 werden benötigte Teile des Sys- tems S ermittelt. In diesem Beispiel wird ein Export realisiert, der an einen Datenflussprozess angefügt ist, der bereits hergestellt wurde. Die Daten können dann in dem In a second step 220, required parts of the system S are determined. This example implements an export attached to a data flow process that has already been created. The data can then be in the
GRAPHML-Dateiformat exportiert werden (das Knoten v als Korn- ponenten und Kanten e als einseitige Abhängigkeiten umfasst) , welches ein guter Ausgangspunkt zum Benutzen eines Graphen- Visualisierungswerkzeugs ist. GRAPHML file format (the v node as a grain components and edges e as one-sided dependencies), which is a good starting point for using a graph visualization tool.
In einem dritten Schritt 230 werden die exportierten Daten in ein Graphen- isualisierungsprogramm importiert. Dies ist nicht unbedingt notwendig, weil das vorgeschlagene Modularisierungsverfahren 200 auch ohne irgendein Visualisieren des Graphen G berechnet werden kann. Eine Visualisierung G erleichtert allerdings, einen Überblick über eine starke Vernetzung zu erhalten, die dem Nutzer in komplexen Systemen S oft begegnet. FIG 9 zeigt von einer eingebetteten Steuerung den gerichteten Graphen G ihrer Komponenten v und der einseitigen Abhängigkeiten e, die zwischen ihren Komponenten v bestehen. In der Darstellung des Graphen G sind Gruppen von Komponenten v zwischen denen eine starke Vernetzung besteht, dichter nebeneinander (also mit kürzeren Kanten e) dargestellt als Komponenten v, die nicht zu einer solchen Gruppe von Komponenten v gehören. In a third step 230, the exported data is imported into a graphualization program. This is not necessary because the proposed modularization method 200 can be calculated without any visualization of the graph G. However, a visualization G makes it easier to get an overview of a strong network that the user often encounters in complex systems. 9 shows, from an embedded control, the directed graph G of its components v and the one-sided dependences e existing between its components v. In the representation of the graph G, groups of components v between which there is strong cross-linking are shown more closely side by side (ie with shorter edges e) than components v that do not belong to such a group of components v.
In einem vierten Schritt 240 werden Anwendungen f in dem Problemraum definiert und eine Abbildung in einen Lösungsraum durchgeführt. Dazu werden relevante Anwendungen f des gegebenen Systems S definiert (die einen Einfluss auf die Modularisierung M haben) . In manchen Anwendungsfällen für eine Modularisierung M ist die Abbildung G -> M schon bekannt. In anderen Anwendungsfällen einer Modularisierung M kann die Abbildung G -> M mittels Fachkenntnis (Kenntnis des zu modulari- sierenden Systems S) aus dem gerichteten Graphen G des Problemraums erarbeitet werden. Dies kann unter Zuhilfenahme eines (vorzugsweise interaktiven) Graphen-Visualisierungswerkzeugs erfolgen, mit dem Cluster im gerichteten Graphen G dargestellt werden können. In a fourth step 240, applications f in the problem space are defined and a mapping into a solution space is performed. For this purpose, relevant applications f of the given system S are defined (which have an influence on the modularization M). In some cases of modularization M, the mapping G -> M is already known. In other applications of a modularization M, the mapping G -> M can be worked out by means of expertise (knowledge of the system S to be modularized) from the directed graph G of the problem space. This can be done with the aid of a (preferably interactive) graph visualization tool, with which clusters can be displayed in the directed graph G.
In einem optionalen Zwischenschritt 245 werden in dem gerichteten Graphen G Cluster visualisiert und Knoten v gesucht, die einer Menge von Anwendungen f zugeordnet werden können. Dann werden Kanten e gesucht, die so ermittelte Anwendungen verbinden. Dann wird versucht, diese Kanten e durch geeignete Maßnahmen (beispielsweise schwache Bezüge, nachgelagerte Verarbeitung) zu entfernen. Dieser Schritt kann eine halbmanuelle Bearbeitung des gerichteten Graphen G durch einen System- architekten oder einen anderen Fachmann erfordern. In an optional intermediate step 245, clusters G are visualized in the directed graph and nodes v are searched which can be assigned to a set of applications f. Then edges e are searched, the applications thus determined connect. Then it is attempted to remove these edges e by appropriate measures (for example, weak references, downstream processing). This step may require semi-manual manipulation of the directed graph G by a system architect or other skilled person.
In diesem Beispiel einer eingebetteten Steuerung S sind mögliche Komponenten v Einzelheiten eines mechanischen Aufbaus, diagnostischer Merkmale oder von Sicherheitsfunktionen. In this example of an embedded controller S, possible components v are details of mechanical design, diagnostic features, or safety functions.
In einem fünften Schritt 250 wird eine Berechnung der Modularisierung M durchgeführt. Dazu kann ein Plug-in für das Graphen-Visualisierungswerkzeug installiert werden, welches die Modularisierung M ausgehend von gegebenen Anwendungen f be- rechnet, und das Ergebnis bildlich und in Textform ausgegeben werden . In a fifth step 250, a calculation of the modularization M is performed. For this purpose, a plug-in for the graph visualization tool can be installed, which calculates the modularization M on the basis of given applications f, and the result is displayed graphically and in text form.
Ein Beispiel für ein Visualisierungsergebnis ist in FIG 10 dargestellt, welches eine Detailansicht der oberen linken Ecke des gerichteten Graphen G der FIG 9 darstellt. Schwarze Knoten v (rtii ) gehören hier ausschließlich zur Anwendung fi. Für das Modul ml gilt m2 := V(rtii ) = V(fi)\V(f2) = An example of a visualization result is shown in FIG. 10, which shows a detail view of the upper left corner of the directed graph G of FIG. 9. Black knots v (rtii) are exclusively used fi. For the module ml we have m 2 : = V (rtii) = V (fi) \ V (f 2 ) =
V (fi) \V
Figure imgf000023_0001
. Karierte Knoten v(m2) gehören hier ausschließlich zur Anwendung f2. Für das Modul m2 gilt m2 := V(m2) =
Figure imgf000023_0002
= V(f2) \V(F\f2) . Die schraffierten Knoten v (rtii2 ) gehören hier zu einer Schnittmenge mi2 von Knoten v(mi2 ) , die sowohl zuir Anwendung fi 3.1 s ciuch zu Anwendung f2 cjehöirGn (ΓΠ12 := V(m12) = V(fi) nV(f2) . Anwendungsname; Komponentename
V (fi) \ V
Figure imgf000023_0001
, Plotted nodes v (m 2 ) belong exclusively to the application f 2 . For the module m2, m 2 = V (m 2 ) =
Figure imgf000023_0002
= V (f 2 ) \ V (F \ f 2 ). The hatched nodes v (rtii 2 ) here belong to an intersection m i2 of nodes v (mi 2 ), which can be used for application f2 cjehöirGn (ΓΠ12: = V (m 12 ) = V (fi) nV (f 2 ). application name; component name
fi; v000311 fi; v000311
f2; v002000 f 2 ; v002000
Zur Ausführung der Anwendung fi wird die Komponenten- Vereinigungsmenge mi mi2 benötigt. Zum Ausführen der Anwendung f2 wird die Komponenten-Vereinigungsmenge m2 u mi 2 benötigt . In einem sechsten Schritt 260 wird das Ergebnis M des vorgeschlagenen Modularisierungsverfahrens 200 Entwicklern und Systemarchitekten bereitgestellt, und die berechnete Modularisierung M kann verwirklicht werden. In order to execute the application fi, the component union amount mi mi 2 is required. In order to execute the application f 2 , the component merging amount m 2 is required by i 2 . In a sixth step 260, the result M of the proposed modularization method 200 is provided to developers and system architects, and the calculated modularization M can be realized.
Mit den vorgeschlagenen Verfahren 100, 200 wird ein Verfahren zum Optimieren von Architekturen S mittels Reengineering und Nutzen unvollständiger Informationen über Anwendungen f vorgeschlagen . The proposed methods 100, 200 propose a method for optimizing architectures S by reengineering and using incomplete information about applications f.
Das Verfahren zum Modularisieren eines Systems S kann wie folgt ausgeführt werden. Eine vorhandene Architektur S mit einem hohen Vernetzungsgrad wird als gerichteter Graph G in ein Graphen-Analysewerkzeug MW geladen. Mittels der vordefinierten Merkmale f (welche in Knoten v des gerichteten Graphen G abgebildet wurden) wird eine transitive Hülle The method of modularizing a system S may be performed as follows. An existing architecture S with a high degree of crosslinking is loaded as a directed graph G into a graph analysis tool MW. By means of the predefined features f (which have been mapped in node v of the directed graph G) becomes a transitive envelope
E+(vs(f)) eines Startknotens vs(f) einer jeden Anwendung f berechnet. Die transitive Hülle besteht jeweils aus einer Knotenmenge (E+(vs(f)) = V (E+ (vs ( f) ) ) . Danach werden aus den Hüllen E+(vs(f)) Komplementär- und Schnittmengen m gebildet. Diese Komplementär- und Schnittmengen m beschreiben eine Modularisierung M der Architektur S, die die eingangs genannte Ziele der Erfindung erfüllt. E + (vs (f)) of a starting node vs (f) of each application calculates f. The transitive shell consists of a set of nodes (E + (vs (f)) = V (E + (vs (f)).) Then, from the envelopes E + (vs (f)), complementary and intersections m are formed. These complementary and intersections m describe a modularization M of the architecture S, which meets the objectives of the invention mentioned above.
Die vorliegende Erfindung ist nicht auf Softwaresysteme S beschränkt. Sie kann auch dazu verwendet werden, (unabhängig von der Art der einseitigen Abhängigkeiten e) jede Art von System S zu modularisieren. Ein Beispiel für Modularisierung M ist ein System S, das aus unterschiedlichen Sichtweisen (beispielsweise Hardware- und Software-Sichtweisen) modelliert wurde, wie es im automotiven Bereich üblich ist, in dem viele Entwicklungsziele berücksichtigt werden müssen. Die vorgeschlagenen Modularisierungsverfahren 100, 200 können hilfreich sein, um Grenzen eines Teilsystems V(f) zu ermitteln und um Entwicklern und Systemarchitekten zu helfen, ein System S nach Vorgaben zu modularisieren (d.h. die Anzahl der einseitigen Abhängigkeiten e zu minimieren) und zu verhindern, dass sich eine Weiterentwicklung einer Anwendung f auf das gesamte betrachtete System S auswirkt oder ausbreitet. Dies kann insbesondere für einen Systemarchitekten hilfreich sein, um einen Überblick darüber zu behalten, wie verschiedenen Teile V(f) des Systems S zueinander in Beziehung stehen. Im Ergebnis kann das System S für eine zukünftige Handhabung leicht in Module m aufgeteilt werden. The present invention is not limited to software systems S. It can also be used to modularize any type of system S (regardless of the type of unilateral dependencies e). An example of modularization M is a system S modeled from different perspectives (e.g., hardware and software perspectives), as is common in the automotive field, where many development goals must be considered. The proposed modularization methods 100, 200 may be helpful in determining boundaries of a subsystem V (f) and to help developers and system architects modularize a system S (ie, minimize the number of one-way dependencies e) and prevent that is a further development of an application f the whole considered system S affects or spreads. This may be particularly helpful to a system architect to keep track of how different parts V (f) of the system S are related to each other. As a result, the system S can be easily divided into modules m for future handling.
Das in FIG 11 gezeigte Verfahren 200 zum Modularisieren eines Systems S umfasst folgende Schritte. In einem ersten Schritt 210 wird ein System S identifiziert, das verbesserungsbedürftig ist. In einem zweiten Schritt 220 werden benötigte Komponente v des Systems S ermittelt. In einem dritten Schritt 230 werden Strukturdaten V, E von dem System S in ein Graphen- Visualisierungsprogramm importiert. In einem vierten Schritt 240 werden Anwendungen f des Systems S in einem Problemraum definiert und eine Abbildung in einen Lösungsraum durchgeführt. In einem fünften Schritt 250 wird mit einer Berechnung einer Modularisierung M begonnen. In einem sechsten Schritt 260 wird die mittels des vorgeschlagenen Modularisierungsverfahrens 200 berechnete Modularisierung M einem Systemarchitekten und/oder einem Systementwickler bereitgestellt. The method 200 shown in FIG. 11 for modularizing a system S comprises the following steps. In a first step 210, a system S is identified, which needs improvement. In a second step 220 required component v of the system S are determined. In a third step 230, structural data V, E are imported from the system S into a graph visualization program. In a fourth step 240, applications f of the system S are defined in a problem space and an image is taken in a solution space. In a fifth step 250, a calculation of a modularization M is started. In a sixth step 260, the modularization M calculated by means of the proposed modularization method 200 is provided to a system architect and / or a system developer.
Eine Weiterbildung des vorgeschlagenen Modularisierungswerkzeugs MW und der vorgeschlagenen Verfahrens 100, 200 sieht vor, dass die erste anwendungen-teilmengen-spezifische Komponentenmenge m während eines Echtzeitbetriebs des Systems S ermittelt wird. Eine davon unabhängige weitere Weiterbildung sieht vor, dass die von dem Modularisierungswerkzeug MW ermittelte erste anwendungen-teilmengen-spezifische Komponentenmenge m während eines Echtzeitbetriebs aus dem System S herausgeteilt wird. A further development of the proposed modularization tool MW and the proposed method 100, 200 provides that the first application-component-specific component quantity m is determined during a real-time operation of the system S. Independent further development provides that the first application-specific-quantity-specific component quantity m determined by the modularization tool MW is divided out of the system S during real-time operation.
Die Erfindung stellt ein Modularisierungswerkzeug MW bereit, das unter anderem eine Komponenten-Ermittlungsvorrichtung KE und eine Modul-Ermittlungsvorrichtung ME aufweist. Die Komponenten-Ermittlungsvorrichtung KE ist zum Ermitteln 130 für jede Anwendung f aus einer ersten Menge F von Anwendungen f derjenigen Komponenten v des Systems S vorgesehen, die mit einer Startkomponente vs(f) der jeweiligen Anwendung f zumindest mittelbar abhängig sind. Die Modul-Ermittlungsvorrichtung ME ist zum Ermitteln 140 einer ersten anwendungen- teilmengen-spezifischen Komponentenmenge m vorgesehen, wobei jede Komponente v(tm(F)) der ersten anwendungen-teilmengen- spezifischen Komponentenmenge m jeder Anwendung f einer ersten Teilmenge tm(F) aus einer Gesamtmenge F von Anwendungen f zugeordnet ist, aber nicht jeder Anwendung f einer anderen Anwendungen-Teilmenge tm' (F) zugeordnet ist, die mehr Anwendungen f beinhaltet als die erste Anwendungen-Teilmenge tm(F) . The invention provides a modularization tool MW which comprises inter alia a component determination device KE and a module determination device ME. The component determination device KE is provided for determining 130 for each application f from a first set F of applications f of those components v of the system S that are associated with a start component vs (f) of the respective application f are at least indirectly dependent. The module determination device ME is provided for determining 140 a first application subset-specific component quantity m, each component v (tm (F)) of the first application subset-specific component quantity m of each application f of a first subset tm (F) is associated with a total set F of applications f, but is not associated with each application f of another applications subset tm '(F) that includes more applications f than the first application subset tm (F).
Die Modularisierung M wird mittels Ermittlung transitiver Hüllen E+(vs(f)) ermittelt. The modularization M is determined by determining transitive envelopes E + (vs (f)).
Die vorliegende Erfindung stellt ein Modularisierungswerkzeug MW zum Modularisieren eines komplexen Systems S und ein Verfahren 100 zum Erzeugen eines Moduls m des Systems S bereit. Mit dem Modularisierungswerkzeug MW und dem Verfahren 100 zum Erzeugen eines Moduls m eines Systems S können diejenigen Komponenten v(f) ermittelt werden, die für ein Ausführen einer Anwendung benötigt werden. Ausgehend von dieser Kenntnis ist es möglich, zur Pflege einer bestimmten Anwendung f nur diejenigen Komponenten v(f) zu pflegen, die sich auf die Anwendung f auswirken können. Alternativ oder zusätzlich kann diese Kenntnis auch dazu genutzt werden, um zur Laufzeit nur solche Teile eines Softwaresystems S dynamisch in einen Hauptspeicher zu laden, die für ein Ausführen der auszuführenden Anwendung f benötigt werden. Gleichzeitig werden, unter Beachtung der Randbedingung, dass dieses Ziel erfüllt wird, möglichst große Module m definiert. Dadurch wird ein erhöhter Ressourcenbedarf (beispielsweise durch zusätzliche Lade- und Entladevorgänge von Modulen m in einen Hauptspeicher) , infolge einer unnötig großen Zahl von Modulen m vermieden . Bezugszeichenliste The present invention provides a modularization tool MW for modularizing a complex system S and a method 100 for generating a module M of the system S. With the modularization tool MW and the method 100 for generating a module m of a system S, those components v (f) needed for executing an application can be determined. Based on this knowledge, it is possible to maintain only those components v (f) for the care of a particular application f, which may affect the application f. Alternatively or additionally, this knowledge can also be used to dynamically load only those parts of a software system S into a main memory at runtime, which are required for executing the application f to be executed. At the same time, considering the boundary condition that this goal is fulfilled, the largest possible modules m are defined. As a result, an increased demand for resources (for example, by additional loading and unloading of modules m in a main memory), due to an unnecessarily large number of modules m is avoided. LIST OF REFERENCE NUMBERS
AS Anwendungssystem AS application system
e gerichtete Abhängigkeit; gerichtete Kante e dependent dependence; directed edge
E Menge gerichteter Abhängigkeiten; Menge gerichteter E set of directed dependencies; Lot of directed
Kanten  edge
E+ transitive Hülle einer Menge, die mindestens einen E + transitive shell of an amount containing at least one
Startkomponenten aufweist  Starting components has
EE Abhängigkeiten-Erfassungs orrichtung  EE dependency detection device
f Anwendung f application
F Menge von Anwendungen  F amount of applications
FE Anwendungen-Erfassungsvorrichtung  FE application detection device
FTME Anwendungsteilmengen-Ermittlungsvorrichtung  FTME application subset detection device
G gerichteter Graph  G directed graph
KE Komponenten-Ermittlungsvorrichtung KE component detection device
m Modul; anwendungsteilmengen-spezfische Komponentenmenge m module; Application subset specific component quantity
M Menge von Modulen; Modularisierung  M amount of modules; modularization
ME Modul-Ermittlungsvorrichtung  ME module detection device
MW Modularisierungswerkzeug MW modularization tool
S System  S system
Sb Systembeschreibung  Sb system description
tm(F) Teilmenge einer Menge von Anwendungen tm (F) Subset of a set of applications
TM(F) Menge aller Teilmengen einer Menge von Anwendungen v Komponente, Parameter; Knoten  TM (F) set of all subsets of a set of applications v component, parameters; node
vs(f) Startkomponenten; Startparameter; Startknotenvs (f) starting components; Start parameters; starting node
VS (F) Menge aller Startkomponenten VS (F) Quantity of all start components
V Komponentenmenge; Parametermenge; Knotenmenge V component amount; Set of parameters; node-set
VE Komponenten-Erfassungsvorrichtung VE component detection device
100 Verfahren zum Erzeugen eines Moduls 100 Method for Creating a Module
110 Erfassen einer Gesamtmenge von Komponenten  110 Capture a total amount of components
120 Erfassen von Abhängigkeiten zwischen Komponenten 120 Detecting Dependencies Between Components
130 Festlegen einer ersten Anwendungen-Teilmenge 140 Ermitteln von Komponenten, von denen die Startkomponente abhängig ist 130 Setting a First Application Subset 140 Identify components on which the startup component depends
150 Ermitteln einer ersten anwendungen-teilmengen- spezifischen Komponentenmenge  150 Determine a first application subset specific component set
200 Verfahren zum Modularisieren eines Systems 200 Method of Modularizing a System
210 erster Schritt  210 first step
220 zweiter Schritt  220 second step
230 dritter Schritt  230 third step
240 vierter Schritt  240 fourth step
245 optionaler Zwischenschritt 245 optional intermediate step
250 fünfter Schritt  250th step
260 sechster Schritt  260 sixth step

Claims

Patentansprüche claims
1. Modularisierungswerkzeug (MW) zum Modularisieren eines Systems (S) , wobei das Modularisierungswerkzeug (MW) umfasst: - eine Komponenten-Erfassungsvorrichtung (VE) zum Erfassen (110) von Komponenten (v) des Systems (S); A modularization tool (MW) for modularizing a system (S), the modularization tool (MW) comprising: - a component detection device (VE) for detecting (110) components (v) of the system (S);
eine Abhängigkeiten-Erfassungsvorrichtung (EE) zum Erfassen (120) von Abhängigkeiten (e) zwischen den Komponenten (v) ;  a dependency detection device (EE) for detecting (120) dependencies (e) between the components (v);
- eine Anwendungen-Teilmengen-Ermittlungsvorrichtung (FTME) zum Festlegen (130) einer ersten Anwendungen-Teilmenge (tm(F)) aus einer Gesamtmenge (F) von Anwendungen (f) des Systems (S) ; an application subset determination device (FTME) for determining (130) a first application subset (tm (F)) from a total quantity (F) of applications (f) of the system (S);
eine Komponenten-Ermittlungsvorrichtung (KE) zum Ermit- teln (140) für jede Anwendung (f) aus der ersten Anwendungen-Teilmenge (tm(F)) derjenigen Komponenten (v) , von denen eine Startkomponente (vs(f)) der jeweiligen Anwendung (f) zumindest mittelbar abhängig ist; und  a component determining means (KE) for determining (140) for each application (f) from the first application subset (tm (F)) of those components (v) of which a starting component (vs (f)) of the respective ones Application (f) is at least indirectly dependent; and
eine Modul-Ermittlungsvorrichtung (ME) zum Ermitteln (150) einer ersten anwendungen-teilmengen-spezifischen a module determining device (ME) for determining (150) a first application subset specific
Komponentenmenge (m) , wobei jede Komponente (v) der ersten anwendungen-teilmengen-spezifischen Komponentenmenge (m) jeder Anwendung (f) der ersten Anwendungen-Teilmenge (tm(F)) zugeordnet ist, aber nicht jeder Anwendung (f) einer anderen Anwendungen-Teilmenge (tm' (F) ) zugeordnet ist, die mehr Anwendungen (f) beinhaltet als die erste Anwendungen-Teilmenge (tm(F)). Component set (m), where each component (v) of the first application subset specific component set (m) of each application (f) is associated with the first application subset (tm (F)), but not each application (f) of another Associated with an application subset (tm '(F)) that includes more applications (f) than the first application subset (tm (F)).
2. Modularisierungswerkzeug (MW) nach Anspruch 1, dadurch ge- kennzeichnet, dass das Modularisierungswerkzeug (MW) ein erstes Werkzeug aufweist, das dazu vorbereitet ist, die Komponenten (v (m) ) der ersten anwendungen-teilmengen-spezifischen Komponentenmenge (m) mittels Ausführung einer rekursiv verschachtelten Mehrfachschleife zu ermitteln, wobei das erste Werkzeug dazu vorbereitet ist, mit jeder neu aufgefundenen2. Modularization tool (MW) according to claim 1, character- ized in that the modularization tool (MW) comprises a first tool which is prepared, the components (v (m)) of the first application-portion-specific component quantity (m) by executing a recursively nested multiple loop, with the first tool being prepared with each newly found one
Komponente (v) der ersten anwendungen-teilmengen-spezifischen Komponentenmenge (m) eine weitere Unterschleife über alle von der aufgefundenen Komponente (v) weg weisenden Abhängigkeiten (e) auszuführen, um alle Komponenten (v) der ersten anwendungsspezifischen Komponentenmenge (m) zu ermitteln, von denen die neu aufgefundenen Komponenten (v) abhängig sind. Component (v) of the first application subset specific component set (m) another subloop across all dependencies pointing away from the found component (v) (e) to determine all the components (v) of the first application-specific component set (m) on which the newly discovered components (v) are dependent.
3. Modularisierungswerkzeug (MW) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass das Modularisierungswerkzeug (MW) ein zweites Werkzeug zum Abbilden des Systems (S) in einen gerichteten Graphen (G) aufweist, wobei jeder der Komponenten (v) genau ein Knoten des gerichteten Graphen (G) zugeordnet ist und jeder direkten Abhängigkeit (e) zwischen Paaren von Komponenten (v) eine Kante (e) des gerichteten Graphen (G) zugeordnet ist. Modularization tool (MW) according to one of the preceding claims, characterized in that the modularization tool (MW) has a second tool for mapping the system (S) into a directed graph (G), each of the components (v) being exactly one node is associated with the directed graph (G) and any direct dependence (e) between pairs of components (v) is associated with an edge (e) of the directed graph (G).
4. Modularisierungswerkzeug (MW) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass das Modularisierungswerkzeug (MW) ein drittes Werkzeug zum Herausteilen der von dem Modularisierungswerkzeug (MW) ermittelten ersten anwen- dungen-teilmengen-spezifischen Komponentenmenge (m) aus dem System (S) aufweist. 4. Modularisierungswerkzeug (MW) according to any one of the preceding claims, characterized in that the Modularisierungswerkzeug (MW) a third tool for dividing the determined by the Modularisierungswerkzeug (MW) first application-portion-specific component set (m) from the system ( S).
5. Modularisierungswerkzeug (MW) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass das Modularisierungswerkzeug (MW) eine Startkomponenten-Erfassungsvorrichtung (SKE) zum Auswählen für mindestens eine Anwendung (f) aus der Gesamtmenge (F) von Anwendungen (f) mindestens je einer anwendungsspezifischen Startkomponente (vs(f)) aus der Menge (V(F)) der Komponenten (v(F)) aufweist. Modularization tool (MW) according to one of the preceding claims, characterized in that the modularization tool (MW) comprises a starting component detection device (SKE) for selecting at least one application (f) from the total quantity (F) of applications (f) at least an application-specific starting component (vs (f)) from the set (V (F)) of the components (v (F)).
6. Modularisierungswerkzeug (MW) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass das Modularisierungswerkzeug (MW) eine Anwendungen-Erfassungsvorrichtung (FE) zum Erfassen einer Gesamtmenge (F) von Anwendungen (f) aufweist, die auf dem System (S) ausführbar sein sollen. Modularization tool (MW) according to one of the preceding claims, characterized in that the modularization tool (MW) has an application detection device (FE) for detecting a total quantity (F) of applications (f) executable on the system (S) should be.
7. Modularisierungswerkzeug (MW) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Modul- Ermittlungsvorrichtung (ME) dazu vorbereitet ist, zu jeder nichtleeren Teilmenge (tm(F)) der Gesamtmenge (F) von Anwen- düngen (f) eine anwendungen-teilmengen-spezifische Komponentenmenge (m) zu ermitteln, wobei jede Komponente (v) der anwendungen-teilmengen-spezifischen Komponentenmenge (m) jeder Anwendung (f) der jeweiligen Anwendungen-Teilmenge (tm(F)) zugeordnet ist, aber nicht jeder Anwendung (f) einer anderen Anwendungen-Teilmenge (tm' (F) ) zugeordnet ist, die mehr Anwendungen (f) beinhaltet als die erste Anwendungen-Teilmenge (tm(F) ) . 7. Modularization tool (MW) according to one of the preceding claims, characterized in that the module-determining device (ME) is prepared to each non-empty subset (tm (F)) of the total amount (F) of applications fertilize (f) to determine an application subset specific component set (m), each component (v) associated with the application subset specific component set (m) of each application (f) of the respective application subset (tm (F)) but is not associated with each application (f) of any other application subset (tm '(F)) that includes more applications (f) than the first application subset (tm (F)).
8. Modularisierungswerkzeug (MW) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass das Modularisierungswerkzeug (MW) Teil zumindest eines der folgenden Anwendungssysteme (AS) ist: 8. Modularisierungswerkzeug (MW) according to one of the preceding claims, characterized in that the Modularisierungswerkzeug (MW) is part of at least one of the following application systems (AS):
eines Lastverteilungssystems zur Verteilung von Beförderungsaufträgen und/oder von Transportaufträgen und/oder von Fertigungsaufträgen und/oder von Energielieferungen und/oder von Rechnerlasten und/oder von Speicherlasten auf verfügbare Ressourcen;  a load distribution system for the distribution of transport orders and / or transport orders and / or production orders and / or energy supplies and / or computer loads and / or storage loads to available resources;
eines Risikoverteilungssystems zur Verteilung von Beförderungsaufträgen und/oder von Transportaufträgen und/oder von Fertigungsaufträgen und/oder von Energielieferungen und/oder von Rechnerlasten und/oder von Speicherlasten auf Ausfallbereiche;  a risk distribution system for distribution of transport orders and / or transport orders and / or production orders and / or energy supplies and / or computer loads and / or storage loads to failure areas;
eines Softwareentwicklungssystems zur Modellierung eines komplexen Systems;  a software development system for modeling a complex system;
eines Marktanalysesystems zur Modellierung eines Marktmodells;  a market analysis system for modeling a market model;
eines Risikoabschätzungssystems zur Modellierung von Risikomodellen ;  a risk assessment system for the modeling of risk models;
eines Fehleranalysesystems zur Suche und Analyse von Fehlerursachen;  an error analysis system for the search and analysis of error causes;
eines Diagnosesystems zur Suche und Analyse von Krankheitsursachen .  a diagnostic system for the search and analysis of disease causes.
9. Verfahren (100) zum Erzeugen eines Moduls (m) eines Systems (S) , wobei das Verfahren (100) folgende Schritte umfasst: 9. Method (100) for generating a module (m) of a system (S), the method (100) comprising the following steps:
Erfassen (110) einer Gesamtmenge (V) von Komponenten (v) des Systems (S) ; Erfassen (120) von Abhängigkeiten (e) zwischen den Komponenten (v) ; Detecting (110) a total amount (V) of components (v) of the system (S); Detecting (120) dependencies (e) between components (v);
Festlegen (130) einer ersten Anwendungen-Teilmenge  Defining (130) a first application subset
(tm(F)) aus einer Gesamtmenge (F) von Anwendungen (f) des Systems (S) ; (tm (F)) from a total quantity (F) of applications (f) of the system (S);
Ermitteln (140) für jede Anwendung (f) aus der ersten Anwendungen-Teilmenge (tm(F)) derjenigen Komponenten (v) , von denen die Startkomponente (vs(f)) der jeweiligen Anwendung (f) zumindest mittelbar abhängig ist;  Determining (140) for each application (f) from the first applications subset (tm (F)) of those components (v) of which the starting component (vs (f)) of the respective application (f) is at least indirectly dependent;
Ermitteln (150) einer ersten anwendungen-teilmengen- spezifischen Komponentenmenge (m) , wobei jede Komponente (v(m)) der ersten anwendungen-teilmengen-spezifischen Komponentenmenge (m) jeder Anwendung (f) der ersten Anwendungen-Teilmenge (tm(F)) zugeordnet ist, aber nicht jeder Anwendung (f) einer anderen Anwendungen-Teilmenge (tm' (F) ) zugeordnet ist, die mehr Anwendungen (f) beinhaltet als die erste Anwendungen-Teilmenge (tm(F)) . Determining (150) a first application subset specific component set (m), each component (v (m)) of the first application subset specific component set (m) of each application (f) of the first application subset (tm (F )), but not associated with each application (f) of another application subset (tm '(F)) that includes more applications (f) than the first application subset (tm (F)).
PCT/EP2014/062016 2014-06-10 2014-06-10 Tool and method for modularizing a system WO2015188851A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/EP2014/062016 WO2015188851A1 (en) 2014-06-10 2014-06-10 Tool and method for modularizing a system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2014/062016 WO2015188851A1 (en) 2014-06-10 2014-06-10 Tool and method for modularizing a system

Publications (1)

Publication Number Publication Date
WO2015188851A1 true WO2015188851A1 (en) 2015-12-17

Family

ID=50976605

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2014/062016 WO2015188851A1 (en) 2014-06-10 2014-06-10 Tool and method for modularizing a system

Country Status (1)

Country Link
WO (1) WO2015188851A1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5797012A (en) * 1995-12-28 1998-08-18 International Business Machines Corporation Connectivity based program partitioning
US20030200350A1 (en) * 2002-04-19 2003-10-23 Ajay Kumar Class dependency graph-based class loading and reloading

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5797012A (en) * 1995-12-28 1998-08-18 International Business Machines Corporation Connectivity based program partitioning
US20030200350A1 (en) * 2002-04-19 2003-10-23 Ajay Kumar Class dependency graph-based class loading and reloading

Similar Documents

Publication Publication Date Title
EP0689694B1 (en) Process for the machine-generation of parallel processable command groups from a program for super-scalar microprocessors
DE102016214786A1 (en) Application profiling job management system, program and method
DE60017457T2 (en) PROCEDURE FOR ISOLATING AN ERROR IN ERROR MESSAGES
DE102019003851A1 (en) Systems and methods for the automatic realization of models for co-simulation
EP3049920A1 (en) Method and device for the automated production and provision of at least one software application
EP3446185B1 (en) Method and apparatus for designing a production process for producing a product composed of several part products
DE112013005993T5 (en) Method, apparatus and computer readable medium for optimal determination of data subsets
DE102014210854A1 (en) A computer-implemented method and signal sequence for a program for reusing executable software configurations for software systems, as well as a computer system and a computer program with program code for performing the method
DE112012004728T5 (en) Method, program and system for simulation execution
DE10206903A1 (en) Software application, software architecture and method for creating software applications, especially for MES systems
DE102017120016A1 (en) A method of configuring a test device set up to test an electronic controller and a configuration system
DE102012102883A1 (en) Method and system for generating a source code for a computer program for executing and simulating a process
DE10324594A1 (en) Method for providing improved simulation capabilities of a dynamic system outside of the original modeling environment
DE112018002316T5 (en) CODE COVERAGE TRACKING FOR A MICROCONTROLLER PROGRAM
EP2386949A1 (en) Method and device for allocating a number of sub-tasks from a task to a number of computing units in a pre-defined processor architecture
DE102012210482A1 (en) Method and system for migrating business process instances
DE112020000657T5 (en) SERVICE MANAGEMENT IN A DBMS
DE102010053701A1 (en) Relationship modeling for performance analysis of multi-core processors
EP3617912A1 (en) Method and device for the computer-assisted generation of a component of a technical system
WO2015188851A1 (en) Tool and method for modularizing a system
DE102014117431A1 (en) Simulation device, simulation method and program
EP3572956A1 (en) Creation of an interdisciplinary simulation model
DE112012006651T5 (en) Processing data streams with open executors
DE102019008598A1 (en) Identification and visualization of associations between code generated by a model and sources that influence code generation
DE102011082838A1 (en) Identification of reusable mechatronic components in factory automation

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14731194

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14731194

Country of ref document: EP

Kind code of ref document: A1