Research

Architectural Styles

The design of software architectures for dependable and adaptable software systems remains an area of active research. Ideally, it should be possible for an architect to put together a recipe for the construction of a software system, relying on past experience and well-known architectural principles, using compositional techniques and notations. One approach to reduce the difficulty of designing and constructing software architectures is aimed at achieving high-level reuse through the use of an architectural style for designing the architecture of a family of similar software systems. Architectural styles are coordinated constraints on similar architectures and embody high-level reuse, support stylistic analysis of architectural properties, and guarantee these across style-based architectures.

Compliance & Recovery

A software system’s architecture is supposed to be an effective reification of the system’s technical requirements and to be faithfully reflected in the system’s implementation. Furthermore, the architecture is meant to guide system evolution, while also being updated in the process. However, in reality developers frequently deviate from the architecture, causing architectural erosion, a phenomenon in which the initial, “as documented” architecture of an application is (arbitrarily) modified to the point where its key properties no longer hold. Architectural recovery is a process frequently used to cope with architectural erosion whereby the current, “as implemented” architecture of a software system is extracted from the system’s implementation. Compliance checking technologies are used to map the “as documented” architecture onto the system’s implementation and to report architectural differences and violations. Consequently, continuous compliance monitoring can help to prevent architectural erosion.

Dependability

The ability to predict the dependability of a software system early in its development, e.g., during architectural design, can help to improve the system’s quality in a cost-effective manner. Existing architecture- level dependability prediction approaches focus on system-level dependability and assume that the reliabilities of individual components are known. In general, this assumption is unreasonable. Consequently, component dependability prediction is an important missing ingredient in the current architecture-level dependability prediction literature. Early prediction of component dependability is a challenging problem because of many uncertainties associated with components under development.

Energy Consumption

Modern software systems are predominantly distributed, dynamic, and mobile. They increasingly execute on heterogeneous platforms, many of which are characterized by limited resources, and are also implemented in Java more and more because of its platform independence and intended use in network-based applications. One of the key resources, especially in long-lived systems, is battery power. Unlike the traditional desktop platforms, which have uninterrupted, reliable power sources, a newly emerging class of computing platforms have finite battery lives. For example, a space exploration system may comprise satellites, probes, rovers, gateways, sensors, and so on. Many of these are “single use” devices that are not rechargeable. In such settings, minimizing the system’s energy consumption, and thus increasing its lifetime, becomes as important as the more traditional quality-of-service concerns, such as reliability, security, fault-tolerance, availability, communication latency and so forth.

Middleware

In order for architectural models and stylistic guidelines to be truly useful in any development setting, they must be accompanied by support for their implementation. This is particularly important for highly distributed, decentralized, mobile, and long-lived systems, in which the the risk of architectural drift is increased unless there is a clear relationship between the architecture and its implementation. Middleware developed to support the implementation of software architectures must provide programming language-level constructs for implementing software architecture-level concepts such as component, connector, configuration, and event.

Modeling & Analysis

Software architecture modeling and analysis encompasses a family of strategies for improving the software development process. The intent of a software model is to embody a specification of the system that is easier to understand, analyze, maintain, and evolve than a code-based specification. Model-based analysis techniques enable the prediction of the functional and non-functional properties of software architectures, allowing architects to weigh design alternatives and determine whether a software system will meet overall end-user operational goals.

Product Line Architectures

As with any other artifact produced as part of the software life cycle, software architectures evolve and this evolution must be managed. One approach to doing so would be to apply any of a host of existing configuration management systems, which have long been used successfully at the level of source code. Unfortunately, such an approach leads to many problems that prevent effective management of architectural evolution. To overcome these problems, we have developed an alternative approach centered on the use of an integrated architectural and configuration management system model. Because the system model combines architectural and configuration management concepts in a single representation, it has the distinct benefit that all architectural changes can be precisely captured and clearly related to each other; both at the fine-grained level of individual architectural elements and at the coarse-grained level of architectural configurations.

Software Connectors

The terabyte- and petabyte-scale volumes of data generated by modern data providers pose a significant challenge in terms of selecting appropriate interconnection/distribution mechanisms (i.e., software connectors) for data delivery. The ideal software connector must deliver data from providers in a consistent, efficient, scalable, and dependable fashion. In general, end users of large scale distribution systems expect (near) real-time access to data once it has been generated, processed sufficiently, and packaged for distribution.LRP-614 >> C2010-508 >> PEGACSA71V1 >> HP2-Z34 >> NS0-506 >> 9L0-521 >> N10-006 >> 1Z0-507 >> HP0-S42 >> 9A0-142 >> CISSP-ISSMP >> 300-320 >> 070-457 >> 1Z0-808 >> C_TB1200_90 >> 70-347 >> 352-001 >> HP2-N46 >> OMG-OCUP-100 >> 1Z0-117 >> NSE4 >> C2060-220 >> GCIH >> 210-060 >> M70-201 >> C2180-401 >> 101-400 >> 70-461 >> 1Z0-533 >> JN0-690 >> M2090-626 >> JN0-322 >> OG0-092 >> 010-151 >> JN0-100 >> MB2-708 >> CSSGB >> 400-101 >> MB6-700 >> M70-301 >> BH0-006 >> C2090-311 >> OG0-093 >> 70-487 >> EX0-117 >> SSCP >> 1Z1-060 >> 70-534 >> JN0-694 >> 200-125 200-125 200-125 200-125 200-125JN0-63370-464250-319MB2-707M2090-733C_TPLM30_661Z0-2281Z1-5071Z0-2419L0-0121Z0-051210-4511Z0-05870-494200-120HD0-100210-065C9510-317EX200HP0-M101220-802

300-320  
220-902  
NS0-157  
70-532  
101-400  
70-413  
70-461  
400-101  
300-208  
CCA-500  
EX300  
1Z0-804  
200-125  ,
102-400  
AWS-SYSOPS  
EX300  
200-101  
300-115  
220-801  
100-105  ,
CCA-500  
70-410  
9L0-066  
70-178  
2V0-621D  
100-101  
JK0-022  
ITILFND  
70-417  
NS0-157  
220-802  
AWS-SYSOPS  
70-462  
350-030  
300-135  
ITILFND  
HP0-S42  
101  
210-060  
350-001  
70-246  
300-320  
220-802  
200-310  
2V0-621D  
1Z0-060  
350-029  
101-400  
MB2-704  
70-417  
70-534  
MB6-703  
200-125   ,
220-902   ,
100-105   ,
220-902   ,
300-101   ,
220-902   ,
810-403   ,
200-105   ,
642-996   ,
300-075   ,
300-070   ,
642-996   ,
300-115   ,
642-996   ,
MB2-712   ,
642-997   ,
300-115   ,
300-208   ,
300-365   ,
300-365   ,
SY0-401   ,
SY0-401   ,