A survey on the practical use of UML for different software architecture viewpoints Abstract   Context  Software architecture viewpoints modularize the software architectures in terms of different viewpoints that each address a different concern. Unified Modeling Language (UML) is so popular among practitioners for modeling software architectures from different viewpoints.    Objective  In this paper, we aimed at understanding the practitionersxe2x80x99 UML usage for the modeling of software architectures from different viewpoints.    Method  To this end, 109 practitioners with diverse profiles have been surveyed to understand practitionersxe2x80x99 UML usage for six different viewpoints: functional, information, concurrency, development, deployment, and operational. Each viewpoint has been considered in terms of a set of software models that can be created in that viewpoint.    Results  The survey includes 35 questions for different viewpoint models, and the results lead to interesting findings. While the top popular viewpoints for the UMLbased software architecture modeling are the functional (96%) and information (99%) viewpoints, the least popular one is the operational viewpoint that is considered by 26% of the practitioners. The top popular UML modeling tool is Enterprise Architect regardless of the viewpoints considered. Concerning the software models that can be created in each viewpoint, UMLxe2x80x99s class diagram is practitionersxe2x80x99 top choice for the functional structure (71%), data structure (85%), concurrency structure (75%), software code structure (34%), and system installation (39%), and system support (16%) models; UMLxe2x80x99s sequence diagram is the top choice for the data lifecycle models (47%); UMLxe2x80x99s deployment diagram for the physical structure (71%), mapping between the functional and physical components (53%), and system migration (21%) models; UMLxe2x80x99s activity diagram for the data flow (65%), software build and release processes (20xe2x80x9322%), and system administration (36%) models; UMLxe2x80x99s component diagram for the mapping between the functional and concurrent components (35%), software module structure (47%), and system configuration (21%) models; and UMLxe2x80x99s package diagram for the software module structure (47%) models.

CodeFirst ModelDriven Engineering: On the Agile Adoption of MDE Tooling Domain models are the most important asset in widely accepted software development approaches, like DomainDriven Design (DDD), yet those models are still implicitly represented in programs. ModelDriven Engineering (MDE) regards those models as representable entities that are amenable to automated analysis and processing, facilitating quality assurance while increasing productivity in software development processes. Although this connection is not new, very few approaches facilitate adoption of MDE tooling without compromising existing value, their data. Moreover, switching to MDE tooling usually involves reengineering core parts of an application, hindering backward compatibility and, thereby, continuous integration, while requiring an upfront investment in training in specialized modeling frameworks. In those approaches that overcome the previous problem, there is no clear indication  from a quantitative point of view  of the extent to which adopting stateoftheart MDE practices and tooling is feasible or advantageous. In this work, we advocate a codefirst approach to modeling through an approach for applying MDE techniques and tools to existing objectoriented software applications that fully preserves the semantics of the original application, which need not be modified. Our approach consists both of a semiautomated method for specifying explicit view models out of existing objectoriented applications and of a conservative extension mechanism that enables the use of such view models at run time, where view model queries are resolved on demand and view model updates are propagated incrementally to the original application. This mechanism enables an iterative, flexible application of MDE tooling to software applications, where metamodels and models do not exist explicitly. An evaluation of this extension mechanism, implemented for Java applications and for view models atop the Eclipse Modeling Framework (EMF), has been conducted with an industrytargeted benchmark for decision support systems, analyzing performance and scalability of the synchronization mechanism. Backward propagation of large updates over very large views is instant.