• Nenhum resultado encontrado

SCIENTIFIC PAPERS UNIVERSITY OF LATVIA

N/A
N/A
Protected

Academic year: 2023

Share "SCIENTIFIC PAPERS UNIVERSITY OF LATVIA"

Copied!
304
0
0

Texto

Global Software Development (GSD; also known as Global Software Engineering (GSE) and Globally Distributed Software Development (GDSD)) has become the main trend in the field of software engineering. Many specialists recognize globally distributed software development as more complex than even the most complex project managed entirely in-house [8], [6].

Data Sources

Data Analysis

Refining the dependencies between the new problems and tagging the categories with the sources was done through selective coding. Due to the industrial background of the research, customer-related questions were also omitted after data analysis.

Results

3 Particularities of GSD Projects

Global Factors

Indeed, they demonstrate the peculiar nature of globally distributed software development and indicate the forces that act as obstacles during a project. Therefore, we emphasize the uniqueness of globally distributed environments and highlight that awareness of global factors inherent in the nature of globally distributed project environments can help practitioners either reduce the likelihood or magnitude of unexpected negative outcomes.

Global Threats

Global factors inherent in the nature of GSD projects are recognized as root global threats that can jeopardize the success of a global project. Each of the global factors and their combination causes different threats and conditions for negative results.

4 Outcome Predictions in Global Projects

  • Basic Concepts
  • Approach to Calculate Outcome Predictions
  • Survey Overview
  • Survey Data Analysis
  • Risk Barometer

Freq (t, ci,j) – frequency of occurrence of the negative outcome of the certain level of the certain threat;. Magnitude of the negative outcome of each threat is evaluated using a linear scale or its equivalent [None, Negligible, Slight, Moderate, Significant, Disastrous] as described earlier.

Table 1. Rating scales  Magnitude of the negative
Table 1. Rating scales Magnitude of the negative

5 Discussion

Particularities of Global Projects

Furthermore, practices adopted for global risk mitigation will act as a counterforce to global threats and reduce the impact of global factors and threats on project outcomes (see Figure 4). The magnitude of the impact of global factors and threats on project outcomes shows that they can indeed drive projects to failure if not managed in time.

Application of Risk Barometer

The Global Threat List provides guidance for effective risk identification and shows the different ways global factors can operate. Global threats can lead to a significant negative impact on the project budget, cause schedule deviations and customer dissatisfaction.

Conclusions

12] Smite D., Borzovs J., „A Framework for Overcoming Supplier Related Threats in Global Projects“, In Proceedings of the Int. 13] Smite D., “Project Outcome Predictions: Risk Barometer Based on Historical Data”, In Proceedings of the Int.

Application of Smart Technologies in Software Development: Automated Version Updating

1 Introduction

The other approach foresees that developers ensure the use of software in various environments and their combinations. In fact, all efforts to develop "universally applicable" software result in developing technical solutions for each of the environments.

2 Software Life Cycle Models and Smart Technologies

The objectives of the self-adaptive software [3, 4] partly overlap with the principles of the smart technologies. A detailed analysis of the characteristics of smart technologies can serve as the subject of a separate research paper.

Fig. 1. Components of Smart Technology
Fig. 1. Components of Smart Technology

3 Automated Version Updating

  • Environment Test
  • Installation of Software Version
  • Installation of the latest version on the server
  • Identification of parameters of the latest version
  • Comparison of software versions
  • Downloading and installing new components
    • Data Migration
    • Self-Testing
    • Back-up Administration
  • Use Cases
  • Indications for further research

The system downloads the necessary packages of the latest software versions and installs them on local workstations. Self-testing must be possible at almost any moment of system operation without disturbing users.

Acknowledgements

However, the mechanisms of intelligent technologies need regular adaptation to environmental changes, especially in the case of standardized software. The opportunities offered by intelligent technologies pay off and improve software delivery and user support even if a company has only two geographically separated subdivisions.

Towards a Semantic Execution Environment Testing Model

The paper is further organized as follows: the next chapter describes the background of the research and poses the research questions.

2 Background

Systems Interaction

For example, the organization's customer data can be shared between the CRM (Customer Relationship Management) software system. The integration can be performed by using public interfaces of the hosting system – an API (Advanced Programming Interface), if one exists, or by using internal mechanisms of the host system.

The Research Question

Performance requirements may vary from system to system, and some of them may be conflicting. Of course, the interface that the host system provides and the guest systems depend on may change over time.

3 Related Work

Self-Healing Systems and Built-In Tests

Here, the authors define a term "maintenance mode" [6] for a software system, which is proposed as a special execution mode of the system when built-in tests can be activated, but the business functionality of the system is not touched. Authors of the paper suggest that BITs are used to test whether the component is capable of operating the defined interfaces, ie.

Unit Testing and Test-Driven Development

Authors of [6] suggest that a component should contain one or more BITs that can be executed; and implement a specific interface to be called when the system is running in maintenance mode. It is noteworthy that the authors mention the importance of “Quality of Service” (QoS) testing for the verification of the operating environment, but their proposed model focuses on testing the contracts between the components. Therefore, QoS testing is a “by-product”.

Similar Ideas in Hardware Appliances

During initialization, the camera checks whether the card is currently available, the type and capacity of the flash card. The idea of ​​this paper is similar to the methodology described here - checking whether the external components relied on by the system under test fulfill their tasks.

4 The Proposed Model

  • Model Summary
  • Motivation for the Proposed Model
  • General Architecture of Runtime Validation Framework
  • Execution Requirements and External Verification Modules
  • Kinds of Data Employed by the SWP Framework
  • Creating a Software Profile Document

When the kernel is loaded, it finds the software profile document of the system under test and analyzes it. For a complete list of the essential elements of the Software Profile Framework (hereinafter SWPF), it is necessary to mention the EVM - External Verification Modules.

Fig. 1. The Tool-Driven Process of Software Profile Generation it the Development Environ- Environ-ment and Use in Other EnvironEnviron-ments
Fig. 1. The Tool-Driven Process of Software Profile Generation it the Development Environ- Environ-ment and Use in Other EnvironEnviron-ments

5 First Practical Experience

Therefore, the items in the inventory list have a property that describes the request XML node name that the current EVM can handle. Some of the computers tested did not have the required short date record, all of them had Windows XP SP 2 installed.

6 Conclusion

In: Proceedings of the Third European Conference on Software Maintenance and Reengineering, IEEE Computer Society, Washington, DC, USA. In: SERA '06: Proceedings of the Fourth International Conference on Software Engineering Research, Management and Applications.

Use of Design Patterns in

PHP-Based Web Application Frameworks

1 Introduction

2 Problems in the Use of Design Patterns

  • Design patterns
  • Properties of Design Patterns
  • The Specifics of Web Applications
  • Positioning the Problem
  • Benefits from Researching the Existing Situation
  • The Method for Studying Design Patterns

Therefore, an examination of several projects can lead to the discovery of general trends in the use of design patterns. Is the use of design patterns in the source code shown openly or is it hidden and therefore difficult to identify.

3 The Research Object

  • Design Patterns Used in the Research
  • Frameworks Used in the Research
  • The Results of the Study of Frameworks
  • Mention of Design Patterns in Documentation
  • Mention of Design Patterns in Source Code
  • The Timeframe of the Research and Evolution of Frameworks
  • alpha alpha
  • Conclusions on the Use of Design Patterns
  • Additional Observations

In other words, we evaluated the use of design patterns, not the frameworks within which the design patterns were used. Among frameworks in terms of using design patterns, Seagull Framework is the leader with 18 design patterns.

Table 1: Comparison of 10 different frameworks
Table 1: Comparison of 10 different frameworks

4 Conclusions

More accurate use of design patterns would make it easier for new participants to get involved in projects. Using design patterns is something like a production line, and the creativity of the software designer can only be applied to the details.

Appendix A: Design Patterns

Proxy "Provides access to an object through a surrogate object to enable delayed instantiation or protection of subject methods." Visitor "Defines an algorithm as an object that "visits" each member of an aggregate that performs an operation.

Appendix B: PHP Frameworks

Php On Trax (formerly Php On Rails) is a web application and persistence framework based on Ruby on Rails and includes everything needed to create database-backed web applications following the Model-View-Control separation pattern. The controller processes the incoming requests (such as Save New Account, Update Product, Show Post) by manipulating the model and sending data to the view.

MDA AND MODEL TRANSFORMATIONS

The Base Transformation Language L0+ and Its Implementation

1 Introduction

Most textual model transformation languages ​​are declarative languages ​​that also have some type of model definition facility. However, research in the field of model transformations and effective implementation of model transformation languages ​​is still current.

2 The Base Transformation Language L0

  • Basic Ideas
  • Precise Definition of L0
    • Object-Oriented L0 constructs
  • Example of an L0 Transformation
  • L0 and Higher Level Model Transformation Languages

If has no objects, becomes null and execution control passes to . If there are no such objects, 1 becomes null and execution control passes to .

Fig. 1.  Meta-metamodel
Fig. 1. Meta-metamodel

3 An Extension of the Base Transformation Language L0 – Metamodel Processing Constructs

Choosing Metamodel Processing Constructs

To obtain the value of an attribute of a previously unknown type, a special form (in which the attribute name is given as a String variable) of the get attribute value command must be used. Note that for Void pointers, this is the only way to receive the attribute value.

The Definition of Metamodel Processing Commands

  • Metamodel Building Commands
  • Meta-Model Element Scanning Commands

If these attributes are not present, The values ​​of lt;strVarClNameOut> and are not changed and execution control is transferred to . lt;strVarClNameIn>)... lt;strVarClNameIn>).().() else ;.

4 Implementation of L0+

Selection of the Runtime Environment

If there is a generalization relationship between the specified classes, execution control is passed to the next command, otherwise execution control is passed to . This means that the implementation of these commands will be quite simple and there will be no significant difference (at least in terms of performance) between the code written by hand and the code generated by the compiler.

Compilation Schema

The main advantage of using this repository is that there are close counterparts for a substantial portion of the L0 and L0+ commands in the repository API. The implementation of the L0_Var_2 class is based on model processing functions from the Repository API.

Elementary Tracing Facilities

Each L0+ command is mapped to a C++ function that relies on the metamodel processing functions from the Repository API. To implement this functionality, some code fragments are added to the generated C++ code to record the program's activities.

5 Conclusions

The implementation of MOLA to L3 compiler, Scientific Papers University of Latvia, "Computer Science and Information Technology", 2008. Communication of the 7th International Baltic Conference on Databases and Information Systems (Baltic DB&IS pp.

Model Transformation Languages L1, L2, L3 and Their Implementation

2 Model transformation language L0

  • Command of the Transformation Language L0
  • return – returns the control to the calling program;
  • DEBUG_ON – turns on the debugging mode;
  • DEBUG_OFF – turns off the debugging mode
    • The Metamodel of the Language L0
    • Model Transformation Example in the Language L0

If pointer to any instance of the class . If there are no instances of the given class, control is given to the label.

Fig 1. The metamodel of the language L0
Fig 1. The metamodel of the language L0

3 Model transformation languages L0’ until L3

Transformation Language L0’

The metamodel of L0' is created by taking the metamodel of L0 and supplementing it with some new classes and associations. The only difference is in those places where a binary expression could appear in the L0 language – now an expression of arbitrary length is allowed in the L0' language.

Table 1. The use of arithmetic operators with respect to data types
Table 1. The use of arithmetic operators with respect to data types

Transformation Language L1

If the set is found to be empty, control is assigned to the tag specified in the "other" branch (if any). 2) When you reach a "next" command with a pointer attached (the same pointer previously attached to some "first" command), any instance of that pointer's previously constructed set of values ​​is assigned to and then removed from the set. To find the next instance of the same class based on the same condition, "next".

Fig. 5. The metamodel of the transformation language L1
Fig. 5. The metamodel of the transformation language L1

The Comparison of L1 and a First-Order Logic

The equality symbol =s where sC and C – the set of all classes found in the metamodel used. For every formula of the predicate language P-, there exists an initial-final expression in the language L1 with the same truth value.

Table 2. Linking concepts of languages P -  and L1
Table 2. Linking concepts of languages P - and L1

Transformation Language L2

The semantics of the "suchthat" block is the same as in the case of the language L1. Since this block is optional, the semantics of the "foreach" command is as follows - every instance of the specified class that matches the given pattern (if such exists; . otherwise, every instance is considered to be taken) is traversed and all the commands of the "do" block are executed for it.

Transformation Language L3

Since the "else" part is optional, it is possible that no commands should be executed in case of false value of the condition. A complete syntax definition of the transformation language L3 based on Backus-Naur notation [12] is given in Appendix A.

Fig. 7. The metamodel of the transformation language L3
Fig. 7. The metamodel of the transformation language L3

The Main Principles of the Implementation of L0’ Until L3

The main question about the L0' to L0 compiler is whether it is possible to build an equivalent construction in L0 for every arithmetic expression from L0'. A label of the form “___L_i” is considered a new label that cannot be found in an L0' program written by the user.

Table 5. The principle of the implementation of a pattern definition block
Table 5. The principle of the implementation of a pattern definition block

Main Problems of the Implementation of L0’ Until L3

The answer is even more obvious in this case than in the previous ones - each branching construction can be simulated using "goto" and "label" commands in a standard way (Table 7). Moving on to the next step – the compilation of L1 – a problem arises – a compiler processes the first of two instance finder commands mentioned above and then deletes the pattern definition block from the metamodel (to make the model refer to the L0' program).

In the case of the L0 compilation, some new variables may appear which must be unique within the scope of the entire specific procedure/function. For example, it can be useful in cases where L3 is used as an intermediate language in the compilation of a higher-level language, as is done in the compilation of the graphical model transformation language MOLA [15] – there is no need to perform any initialization tasks, nor the “lexems for L3”.

5 Conclusions and future work

Proceedings of the 7th International Baltic Conference on Databases and Information Systems (Baltic DB&IS'2006), Vilnius, 2006, pp. Kalnins, The implementation of MOLA to L3 compiler, Scientific Papers, University of Latvia, “Computer Science and Information Technologies”, 2008.

Appendix

L3 syntax definition based on Backus-Naur notation

Note – the non-terminal character is considered to be a space character (the 32nd character in the ASCII code table).

The Implementation of MOLA to L3 Compiler

TLTL

Most of the model transformation languages ​​rely on an EMOF-compatible metalanguage to define metamodels. The general architecture of the MOLA compiler and a brief overview of model-driven compilation are given in chapter 5.

2 MOLA Language

Part of the actions also consists of class elements and bindings, but these are usually creation actions - the corresponding instances and bindings must be created. The loop head is a rule that contains one specially marked (with a bold border) element - the loop variable.

Fig. 3. The metamodel of the MOLA procedure elements
Fig. 3. The metamodel of the MOLA procedure elements

3 Previous Realizations of MOLA

A loop is executed while there are instances to iterate over, then the next construct is executed according to the control flow. The next step in the realization of the model transformation language MOLA was to search for a solution that meets the requirements mentioned above.

  • Lx Metamodelling Facilities
  • Language L0
  • Languages L0’ – L3
  • MOLA and L3

These operations can be mapped to attr inst. and var. Control flows in MOLA can be mapped to tag and Goto commands in the L3 language.

Fig. 5. The metamodel of L3 language
Fig. 5. The metamodel of L3 language

5 Architecture of MOLA Compiler

Implementation of the Lx Language Family

MOLA Compiler

Even less, only the actual code generator in the L0 compiler needs to be rewritten - the lexical and syntax analyzers can be reused. The final compiler (L0 for code) depends on the programming language that implements the model store API, but for most programming languages ​​it is already built and free or open source versions are available.

Model-Driven Compiling

Since graphical language programs are stored as models, the first step can be omitted—the model-to-model transformation that a compiler implements can be applied directly. In this case, a standard parser can be used to obtain the "coding" pattern.

Fig. 7. Model-driven compiling – general architecture
Fig. 7. Model-driven compiling – general architecture

6 Mapping from MOLA to L3

Mapping of Metamodelling Languages

The will block also contains a goto command for the label command of the code block that is generated by the MOLA statement associated with the output stream from the circuit header control. The last command in the main code block is a goto command in the label command of the code block that is generated by the MOLA statement bound by the loop's exit control flow.

Fig. 8. An example of MOLA to Lx metamodelling language  6.2   Mapping of the Procedure Headers
Fig. 8. An example of MOLA to Lx metamodelling language 6.2 Mapping of the Procedure Headers

Mapping of MOLA Statements

  • Call-Statement
  • Text-Statement
  • For-each loop

A loop condition is expressed using the loop header pattern, which contains a special class element - the loop variable. The loop condition is translated into a so-so foreach block.

Table 1. Correspondence of elements used in expressions in MOLA and L3
Table 1. Correspondence of elements used in expressions in MOLA and L3

7 The surrounding of the MOLA compiler

Error handling in MOLA

Structuring a program in MOLA

Debugging in MOLA

Some debuggers have the ability to change the state of the program while it is running. Since graphical languages ​​are usually represented in diagrams, an animation of the program execution is required.

8 Conclusions and Future Work

Proceedings of the 18th International Conference, OOPSLA'2003 (Workshop on Domain-Specific Modeling), Anaheim, California, USA, October 2003, pp In: Proceedings of the 1st ECOOPWorkshop on Domain-Specific Program Development (DSPD), 3 July. Nantes, France.

Technical Solutions for the Transformation-Driven Graphical Tool Building Platform METAclipse

In METAclipse, there are no restrictions on the correspondence between the domain and presentation metamodels. The emphasis of this paper is on the structure and functionality of the METAclipse framework itself.

2 Overall METAclipse Architecture

Basic Principles of the METAclipse Framework

Let's imagine that someone has right-clicked on the node called "menu" in the tree, and the project tree engine has written the ShowMenuCommand instance to the repository (step 1 in Fig. 1). 2 is the part of the presentation model, showing the cases involved in handling the right-click event.

Fig. 1. High-Level view of the METAclipse architecture
Fig. 1. High-Level view of the METAclipse architecture

Solutions Chosen for the METAclipse Implementation

The refactoring will detect that the ShowMenuCommand has been written to the repository and will create instances of the presentation metamodel (not shown in Figure 2) that contain the necessary context menu (step 3 in Figure 1). Finally, Eclipse will regain control and the rendering engines will be notified of the changed model elements.

3 Interaction with the Repository and Transformations

Repository Interface

MOLA transformations are currently compiled against the MIIREP repository, which was developed in C++ and released as a Windows DLL file. This implies that the implementation of the MIIREP repository interface currently used in METAclipse (see Figure 3) uses a JNI (Java Native Interface) wrapper for the repository operations (see [30] for information on JNI).

The Link Between Eclipse and the Repository: “Wise” Objects

To be able to read and write repository data, "smart" objects must have an opportunity to map classes, attributes, and associations to corresponding repository objects. However, tracking changes to existing objects had to be included in transformations.

Fig. 4. “Wise” object dependencies
Fig. 4. “Wise” object dependencies

4 Presentation Engines

  • Presentation Metamodel Structure
  • Interaction between the Transformations and Engines
  • Project Tree Engine
  • Menu Engine

This results in activation of the project tree engine (discussed in more detail in Section 4.3). When a METAclipse project is opened, the Project singleton is first used to find the ProjectNode instance, which is then interpreted as the root of the project tree.

Fig. 6. METAclipse presentation engines in action
Fig. 6. METAclipse presentation engines in action

Imagem

Fig. 3. Example of predictions by the Risk Barometer: for a threat
Fig. 1. Components of Smart Technology
Fig. 1. The Tool-Driven Process of Software Profile Generation it the Development Environ- Environ-ment and Use in Other EnvironEnviron-ments
Fig. 1.  Meta-metamodel
+7

Referências

Documentos relacionados

O humanitário supõe o humano como realidade comum que supera as visões tribais que separam os humanos dos não-humanos por razões sociais (distinções grupais), políticas