Model Driven Software Engineering for Web Applications

Total Page:16

File Type:pdf, Size:1020Kb

Model Driven Software Engineering for Web Applications Model Driven Software Engineering for Web Applications Andreas Kraus Dissertation zur Erlangung des akademischen Grades des Doktors der Naturwissenschaften an der Fakultät für Mathematik, Informatik und Statistik der Ludwig-Maximilians-Universität München vorgelegt am 23.04.2007 Model Driven Software Engineering for Web Applications Tag der Einreichung: 23.04.2007 Tag des Rigorosums: 04.07.2007 Berichterstatter Prof. Dr. Rolf Hennicker (Ludwig-Maximilians-Universität, München) Prof. Dr. Antonio Vallecillo (Universidad de Malaga, Spanien) 2 Model Driven Software Engineering for Web Applications Summary Model driven software engineering (MDSE) is becoming a widely accepted approach for developing complex applications and it is on its way to be one of the most promising para- digms in software engineering. MDSE advocates the use of models as the key artifacts in all phases of the development process, from analysis to design, implementation and testing. The most promising approach to model driven engineering is the Model Driven Architec- ture (MDA) defined by the Object Management Group (OMG). Applications are modeled at a platform independent level and are transformed to (possibly several) platform specific implementations. Model driven Web engineering (MDWE) is the application of model driven engineering to the domain of Web application development where it might be par- ticularly helpful because of the continuous evolution of Web technologies and platforms. However, most current approaches for MDWE provide only a partial application of the MDA pattern. Further, metamodels and transformations are not always made explicit and metamodels are often too general or do not contain sufficient information for the automatic code generation. Thus, the main goal of this work is the complete application of the MDA pattern to the Web application domain from analysis to the generated implementation, with transformations playing an important role at every stage of the development process. Ex- plicit metamodels are defined for the platform independent analysis and design and for the platform specific implementation of dynamic Web applications. Explicit transformations allow the automatic generation of executable code for a broad range of technologies. For pursuing this goal, the following approach was chosen. A metamodel is defined for the platform independent analysis and for the design of the content, navigation, process and presentation concerns of Web applications as a conserva- tive extension of the UML (Unified Modeling Language) metamodel, together with a cor- responding UML profile as notation. OCL constraints ensure the well-formedness of mod- els and are checked by transformations. Transformations implement the systematic evolu- tion of analysis and design models. A generic platform for Web applications built on an open-source Web platform and a generic runtime environment is proposed that represents a family of platforms supporting the combination of a broad range of technologies. The transformation to the platform specific models for this generic platform is decomposed along the concerns of Web applications to cope in a fine-grained way with technology changes. For each of the concerns a metamodel for the corresponding technology is de- fined together with the corresponding transformations from the platform independent de- sign models. The resulting models are serialized to code by means of serialization trans- formations. 3 Model Driven Software Engineering for Web Applications 4 Model Driven Software Engineering for Web Applications Zusammenfassung Die modellgetriebene Softwareentwicklung (MDSE) entwickelt sich zu einem der vielver- sprechendsten Paradigmen für die Entwicklung komplexer Anwendungen. Modelle spielen dabei die zentrale Rolle in allen Phasen des Entwicklungsprozesses, von Analyse und Ent- wurf bis zur Implementierung. Die Model Driven Architecture (MDA) ist der derzeit er- folgversprechendste Ansatz zur modellgetriebenen Softwareentwicklung. Anwendungen werden dabei auf einer plattformunabhängigen Ebene modelliert und durch Transformatio- nen in eine plattformspezifische Implementierung überführt. Die modellgetriebene Web- Anwendungsentwicklung (MDWE) wendet das Prinzip der modellgetriebenen Software- entwicklung auf den Bereich der Web-Anwendungen an, wo sich dieser Ansatz als beson- ders nützlich erweist, gegeben durch die andauernde Weiterentwicklung von Web- Technologien und –Plattformen. Die meisten aktuellen MDWE-Ansätze setzen den MDA-Ansatz allerdings nur teilweise um. Ferner werden die verwendeten Metamodelle und Transformationen oft nicht explizit definiert, und die Metamodelle sind oft zu allgemein oder enthalten nicht ausreichend In- formationen zur automatischen Code-Generierung. Daher ist das Hauptziel dieser Disserta- tion die umfassende Übertragung des MDA-Ansatzes auf den Bereich der Web- Anwendungsentwicklung, von der Analyse bis zur Implementierung, wobei Transformati- onen eine entscheidende Rolle in jeder Phase des Entwicklungsprozesses spielen. Explizite Metamodelle werden definiert für die Analyse, den plattformunabhängigen Entwurf und die plattformspezifische Implementierung. Eindeutig definierte Transformationen ermögli- chen die automatische Code-Generierung für ein Vielzahl von Web-Technologien. Um dieses Ziel zu erreichen wurde der folgende Ansatz gewählt. Für die Analyse und für den plattformunabhängigen Entwurf der Inhalts-, Navigations-, Prozess- und Präsentationsebenen einer Web-Anwendung wird ein Metamodell als eine konservative Erweiterung des UML-Metamodells (Unified Modeling Language) definiert. Ein entsprechendes UML-Profil dient dabei als Notation. OCL-Constraints, die durch Transformationen überprüft werden, stellen die Wohlgeformtheit der Modelle sicher. Transformationen implementieren auch die systematische Entwicklung der Analyse- und Entwurfsmodelle. Eine generische Plattform ermöglicht eine Aufspaltung der Transforma- tion plattformunabhängiger Modelle in einzelne Transformationen für die verschiedenen Ebenen einer Web-Anwendung. Für jede Ebene wird dazu ein Metamodell für die entspre- chende Implementierungstechnologie und eine entsprechende Transformation definiert, wodurch eine Vielzahl von Technologien kombiniert werden kann. Die resultierenden Mo- delle werden dann durch Serialisierungstransformationen in Code umgewandelt. 5 Model Driven Software Engineering for Web Applications Acknowledgments First of all, I would like to thank my two supervisors Rolf Hennicker and Antonio Vallecillo, and Martin Wirsing. Then, thanks go to my colleagues, especially Nora Koch and Alexander Knapp for the fruitful discussions on Web engineering topics, and to Mat- thias Ludwig and Stephan Janisch for the time working together in the GLOWA-Danube project. Finally, I thank all of my students and all the people from abroad I have been working together over the last years. My special thanks go to Sabine, our families and friends for their support and patience. This work has been supported by the German BMBF-project GLOWA-Danube. 6 CONTENT 1 Introduction ________________________________________________________ 13 1.1 Problem Statement ______________________________________________ 14 1.2 Approach ______________________________________________________ 14 1.3 Introduction to the DANUBIA Case Study __________________________ 19 1.4 Organization of the Work ________________________________________ 20 2 Model Driven Software Engineering ____________________________________ 21 2.1 Model Driven Architecture (MDA)_________________________________ 23 2.1.1 Model Types________________________________________________ 24 2.1.1.1 Computation Independent Models (CIM) _______________________ 25 2.1.1.2 Platform Independent Models (PIM) ___________________________ 25 2.1.1.3 Platform Specific Models (PSM) ______________________________ 25 2.1.1.4 Platform Models (PM) ______________________________________ 26 2.1.2 Transformation Types_________________________________________ 26 2.1.2.1 Model Type Transformations_________________________________ 26 2.1.2.2 Model Instance Transformations ______________________________ 27 2.2 Object Management Group Meta Architecture ______________________ 27 2.2.1 Metamodel Layering _________________________________________ 28 2.2.2 Meta Object Facility (MOF)____________________________________ 29 2.2.3 Unified Modeling Language (UML) _____________________________ 30 2.2.4 UML Extensions_____________________________________________ 31 2.3 Transformation Approaches ______________________________________ 32 2.3.1 Classification _______________________________________________ 32 2.3.1.1 Hard-Coded Transformations_________________________________ 33 2.3.1.2 Model-To-Code Approaches _________________________________ 33 2.3.1.3 Direct-Manipulation Approaches ______________________________ 34 2.3.1.4 Relational Approaches ______________________________________ 35 2.3.1.5 Graph-Transformation-Based Approaches_______________________ 36 2.3.1.6 Structure-Driven Approaches_________________________________ 37 2.3.1.7 Hybrid Approaches_________________________________________ 37 2.3.1.8 Other Model-To-Model Approaches ___________________________ 37 Model Driven Software Engineering for Web Applications 2.3.1.9 Discussion _______________________________________________ 38 2.3.2 Query/Views/Transformations (QVT) ___________________________ 38 2.3.2.1 Declarative Rules (Relations) ________________________________ 40 2.3.2.2 Imperative Rules (Operational Mappings) ______________________
Recommended publications
  • The Model Transformation Language of the VIATRA2 Framework
    View metadata, citation and similar papers at core.ac.uk brought to you by CORE provided by Elsevier - Publisher Connector Science of Computer Programming 68 (2007) 214–234 www.elsevier.com/locate/scico The model transformation language of the VIATRA2 framework Daniel´ Varro´ ∗, Andras´ Balogh Budapest University of Technology and Economics, Department of Measurement and Information Systems, H-1117, Magyar tudosok krt. 2., Budapest, Hungary OptXware Research and Development LLC, Budapest, Hungary Received 15 August 2006; received in revised form 17 April 2007; accepted 14 May 2007 Available online 5 July 2007 Abstract We present the model transformation language of the VIATRA2 framework, which provides a rule- and pattern-based transformation language for manipulating graph models by combining graph transformation and abstract state machines into a single specification paradigm. This language offers advanced constructs for querying (e.g. recursive graph patterns) and manipulating models (e.g. generic transformation and meta-transformation rules) in unidirectional model transformations frequently used in formal model analysis to carry out powerful abstractions. c 2007 Elsevier B.V. All rights reserved. Keywords: Model transformation; Graph transformation; Abstract state machines 1. Introduction The crucial role of model transformation (MT) languages and tools for the overall success of model-driven system development has been revealed in many surveys and papers during the recent years. To provide a standardized support for capturing queries, views and transformations between modeling languages defined by their standard MOF metamodels, the Object Management Group (OMG) has recently issued the QVT standard. QVT provides an intuitive, pattern-based, bidirectional model transformation language, which is especially useful for synchronization kind of transformations between semantically equivalent modeling languages.
    [Show full text]
  • Domain-Specific Programming Systems
    Lecture 22: Domain-Specific Programming Systems Parallel Computer Architecture and Programming CMU 15-418/15-618, Spring 2020 Slide acknowledgments: Pat Hanrahan, Zach Devito (Stanford University) Jonathan Ragan-Kelley (MIT, Berkeley) Course themes: Designing computer systems that scale (running faster given more resources) Designing computer systems that are efficient (running faster under constraints on resources) Techniques discussed: Exploiting parallelism in applications Exploiting locality in applications Leveraging hardware specialization (earlier lecture) CMU 15-418/618, Spring 2020 Claim: most software uses modern hardware resources inefficiently ▪ Consider a piece of sequential C code - Call the performance of this code our “baseline performance” ▪ Well-written sequential C code: ~ 5-10x faster ▪ Assembly language program: maybe another small constant factor faster ▪ Java, Python, PHP, etc. ?? Credit: Pat Hanrahan CMU 15-418/618, Spring 2020 Code performance: relative to C (single core) GCC -O3 (no manual vector optimizations) 51 40/57/53 47 44/114x 40 = NBody 35 = Mandlebrot = Tree Alloc/Delloc 30 = Power method (compute eigenvalue) 25 20 15 10 5 Slowdown (Compared to C++) Slowdown (Compared no data no 0 data no Java Scala C# Haskell Go Javascript Lua PHP Python 3 Ruby (Mono) (V8) (JRuby) Data from: The Computer Language Benchmarks Game: CMU 15-418/618, http://shootout.alioth.debian.org Spring 2020 Even good C code is inefficient Recall Assignment 1’s Mandelbrot program Consider execution on a high-end laptop: quad-core, Intel Core i7, AVX instructions... Single core, with AVX vector instructions: 5.8x speedup over C implementation Multi-core + hyper-threading + AVX instructions: 21.7x speedup Conclusion: basic C implementation compiled with -O3 leaves a lot of performance on the table CMU 15-418/618, Spring 2020 Making efficient use of modern machines is challenging (proof by assignments 2, 3, and 4) In our assignments, you only programmed homogeneous parallel computers.
    [Show full text]
  • Lessons Learned from Building Model-Driven Development Tools
    Noname manuscript No. (will be inserted by the editor) Lessons Learned from Building Model-Driven Development Tools Richard F. Paige1 and D´anielVarr´o2 Department of Computer Science, University of York, UK. e-mail: [email protected] Department of Measurement and Information Systems Budapest University of Technology and Economics, Hungary. e-mail: [email protected] The date of receipt and acceptance will be inserted by the editor Abstract Tools to support modelling in system and of MDD tools. The principles will be distilled from an software engineering are widespread, and have reached analysis of the development of two MDD tools that are a degree of maturity where their use and availability used in practice: VIATRA and Epsilon. These tools are are accepted. Tools to support Model-Driven Develop- used in industry, on real projects, and have developed ment (MDD) { where models are manipulated and man- in very different ways. Arguably, some of the lessons aged throughout the system/software engineering lifecy- learned from the development of these tools can inform cle { have, over the last ten years, seen much research the development of new MDD tools, and can also be and development attention. Over the last ten years, we used to support the evolution of existing tools. Our ob- have had significant experience in the design, develop- jective is not to propose the \ideal" MDD tool; such a ment and deployment of MDD tools in practical settings. tool is unlikely to exist. However, the principles under- In this paper, we distill some of the important lessons pinning the development of MDD tools that are widely we have learned in developing and deploying two MDD used in practice can help in assessing existing tools, and tools: Epsilon and VIATRA.
    [Show full text]
  • Model-Driven Engineering, the System Under Development Is Described and Analyzed Using Models
    X perf =1.00 X loss =0.01 SDSoftware Design and Quality A Declarative Language for Bidirectional Model Consistency Master’s Thesis of Dominik Werle at the Department of Informatics Institute for Program Structures and Data Organization (IPD) Reviewer: Prof. Dr. Ralf H. Reussner Second reviewer: Jun.-Prof. Dr.-Ing. Anne Koziolek Advisor: Dipl.-Inform. Max E. Kramer Second advisor: M.Sc. Michael Langhammer 09. October 2015 – 08. April 2016 Karlsruher Institut für Technologie Fakultät für Informatik Postfach 6980 76128 Karlsruhe I declare that I have developed and written the enclosed thesis completely by myself, and have not used sources or means without declaration in the text. Karlsruhe, 08. April 2016 .................................... (Dominik Werle) Abstract In model-driven engineering, the system under development is described and analyzed using models. Dierent models provide dierent abstractions of the system for dierent purposes. If multiple modeling languages are used, their models can contain overlapping informa- tion about the system. Then, they can become inconsistent after changes and need to be synchronized. The complexity of synchronizing models can be reduced by specifying consistency relationships in specialized languages and by automating the synchronization based on this specication. The languages can hide complexity that is not specic to the domain of the modeling languages, for example by deriving the operations needed for propagating changes from a model to another model for all pairs of models instead of requiring explicit specication for each pair and direction. In the course of this thesis, we designed the mapping language for specifying these consistency relationships and implemented a framework that maintains consistency based on the specication.
    [Show full text]
  • Research Report
    RZ 3621 (# 99631) 07/18/2005 Computer Science 10 pages Research Report A Systematic Approach to Designing Model Transformations Jochen M. Kuster,¨ Ksenia Ryndina and Rainer Hauser IBM Research GmbH Zurich Research Laboratory 8803 Ruschlikon¨ Switzerland {jku,ryn,rfh}@zurich.ibm.com LIMITED DISTRIBUTION NOTICE This report will be distributed outside of IBM up to one year after the IBM publication date. Some reports are available at http://domino.watson.ibm.com/library/Cyberdig.nsf/home. Research IBM Almaden · Austin · Beijing · Delhi · Haifa · T.J. Watson · Tokyo · Zurich A Systematic Approach to Designing Model Transformations Jochen M. Kuster¨ , Ksenia Ryndina and Rainer Hauser IBM Zurich Research Laboratory 8803 R¨uschlikon Switzerland jku,ryn,rfh ¡ @zurich.ibm.com Abstract forming them into a formal language [9]. Currently, a great deal of research is focused on the expression of model transformation Design and implementation of model transformations is one designs and appropriate tool support for model transformation de- key prerequisite for the vision of model driven development to be- velopers. This has led to the Query/Views/Transformation (QVT) come true. However, model transformations are quite different proposal by the Object Management Group (OMG) [21], which from other software artifacts since a model transformation design aims to provide a standardized framework for model transforma- typically consists of a set of transformation rules instead of object- tion development. oriented models such as class diagrams and statecharts. There- fore traditional software engineering approaches are not directly Many existing model transformation approaches favor that applicable for the development of model transformations. Never- transformations are captured in a rule-based way by a set of trans- theless, in the line of existing software engineering practice, model formation rules (see VIATRA [5], GReAT [13], UMLX [26], transformations must be developed in a systematic way in order to BOTL [4] and work by Milicev [17]).
    [Show full text]
  • Devpartner Java Edition Getting Started Guide
    DevPartner Java Edition Getting Started Guide Release 4.5 Copyright © 2001–2009 Micro Focus (IP) Ltd. All rights reserved. Micro Focus (IP) Ltd. has made every effort to ensure that this book is correct and accurate, but reserves the right to make changes without notice at its sole discretion at any time. The software described in this document is supplied under a license and may be used or copied only in accordance with the terms of such license, and in particular any warranty of fitness of Micro Focus software products for any particular purpose is expressly excluded and in no event will Micro Focus be liable for any consequential loss. Animator®, COBOLWorkbench®, EnterpriseLink®, Mainframe Express®, Micro Focus®, Net Express®, REQL® and Revolve® are registered trademarks, and AAI™, Analyzer™, Application Quality Workbench™, Application Server™, Application to Application Interface™, AddPack™, AppTrack™, AssetMiner™, BoundsChecker™, CARS™, CCI™, DataConnect™, DevPartner™, DevPartnerDB™, DevPartner Fault Simulator™, DevPartner SecurityChecker™,Dialog System™, Driver:Studio™, Enterprise Server™, Enterprise View™, EuroSmart™, FixPack™, LEVEL II COBOL™, License Server™, Mainframe Access™, Mainframe Manager™, Micro Focus COBOL™, Micro Focus Studio™, Micro Focus Server™, Object COBOL™, OpenESQL™, Optimal Trace™,Personal COBOL™, Professional COBOL™, QACenter™, QADirector™, QALoad™, QARun™, Quality Maturity Model™, Server Express™, SmartFind™, SmartFind Plus™, SmartFix™, SoftICE™, SourceConnect™, SupportLine™, TestPartner™, Toolbox™, TrackRecord™, WebCheck™, WebSync™, and Xilerator™ are trademarks of Micro Focus (IP) Ltd. All other trademarks are the property of their respective owners. No part of this publication, with the exception of the software product user documentation contained on a CD-ROM, may be copied, photocopied, reproduced, transmitted, transcribed, or reduced to any electronic medium or machine-readable form without prior written consent of Micro Focus (IP) Ltd.
    [Show full text]
  • Eagle: Tcl Implementation in C
    Eagle: Tcl Implementation in C# Joe Mistachkin <[email protected]> 1. Abstract Eagle [1], Extensible Adaptable Generalized Logic Engine, is an implementation of the Tcl [2] scripting language for the Microsoft Common Language Runtime (CLR) [3]. It is designed to be a universal scripting solution for any CLR based language, and is written completely in C# [4]. Su- perficially, it is similar to Jacl [5], but it was written from scratch based on the design and imple- mentation of Tcl 8.4 [6]. It provides most of the functionality of the Tcl 8.4 interpreter while bor- rowing selected features from Tcl 8.5 [7] and the upcoming Tcl 8.6 [8] in addition to adding en- tirely new features. This paper explains how Eagle adds value to both Tcl/Tk and CLR-based applications and how it differs from other “dynamic languages” hosted by the CLR and its cousin, the Microsoft Dy- namic Language Runtime (DLR) [9]. It then describes how to use, integrate with, and extend Ea- gle effectively. It also covers some important implementation details and the overall design phi- losophy behind them. 2. Introduction This paper presents Eagle, which is an open-source [10] implementation of Tcl for the Microsoft CLR written entirely in C#. The goal of this project was to create a dynamic scripting language that could be used to automate any host application running on the CLR. 3. Rationale and Motivation Tcl makes it relatively easy to script applications written in C [11] and/or C++ [12] and so can also script applications written in many other languages (e.g.
    [Show full text]
  • Starting up an Application Domain
    04_596985 ch01.qxp 12/14/05 7:46 PM Page 1 Initial Phases of a Web Request Before the first line of code you write for an .aspx page executes, both Internet Information Services (IIS) and ASP.NET have performed a fair amount of logic to establish the execution context for a HyperText Transfer Protocol (HTTP) request. IIS may have negotiated security credentials with your browser. IIS will have determined that ASP.NET should process the request and will perform a hand- off of the request to ASP.NET. At that point, ASP.NET performs various one-time initializations as well as per-request initializations. This chapter will describe the initial phases of a Web request and will drill into the various security operations that occur during these phases. In this chapter, you will learn about the following steps that IIS carries out for a request: ❑ The initial request handling and processing performed both by the operating system layer and the ASP.NET Internet Server Application Programming Interface (ISAPI) filter ❑ How IIS handles static content requests versus dynamic ASP.NET content requests ❑ How the ASP.NET ISAPI filter transitions the request from the world of IIS into the ASP.NET world Having an understandingCOPYRIGHTED of the more granular portions MATERIAL of request processing also sets the stage for future chapters that expand on some of the more important security processing that occurs during an ASP.NET request as well as the extensibility points available to you for modifying ASP.NET’s security behavior. This book describes security behavior primarily for Windows Server 2003 running IIS6 and ASP.NET.
    [Show full text]
  • Using a Validation Model to Measure the Agility of Software Development in a Large Software Development Organization
    Using a Validation Model to Measure the Agility of Software Development in a Large Software Development Organization Mikio Ikoma1 Masayuki Ooshima1 Takahiro Tanida1 Michiko Oba1 Sanshiro Sakai2 1 Software Division, Hitachi, Ltd. 2 Dept. of Computer Science, Shizuoka University [email protected] [email protected] [email protected] [email protected] [email protected] Abstract extensive data on various aspects of software development and products (for example, relating to the This paper provides a metric for evaluating the cost, quantity, and quality of projects) and have used agility of software development projects and this data to improve their productivity. organizations. The metric is based on a validation The metric of productivity (the amount of production model derived from the V&V model. In this metric, divided by cost) is an important metric even now. In agility is defined as minimizing the time between the recent years, however, software development production of intermediate deliverables and the organizations have had to face an increasingly validation of those deliverables. The major competitive market and run projects under a variety of distinguishing feature of this metric is that it is environment conditions. In this situation, the independent of any particular software development organizations confront the following issues: process model, such as agile software development In addition to increasing the productivity of software methods or the waterfall model. Therefore, this metric development, organizations also need to improve can be used for software development organizations efficiency and quality in response to reduced that have a wide variety of software development development periods and constantly changing projects with varying kinds of development processes.
    [Show full text]
  • Arquitectura .NET
    Distribution and Integration Technologies .NET Architecture Traditional Architectures Web Local Distributed Other applications applications applications applications GUI Network Scripts Data Other Services Services Web Access Services Libraries Execution environment (Posix, Win32, ...) Operating System .NET Architecture 2 Java Architecture Web Local Distributed Other applications applications applications applications Swing Enterprise Java Server JDBC Others Java Beans Pages Standard Java Packages Java Virtual Machine (JVM) Operating System .NET Architecture 3 .NET Architecture Web Local Distributed Other applications applications applications applications Windows Enterprise ASP.NET ADO.NET Others Forms Services .NET Framework Class Library (FCL) Common Language Runtime (CLR) Operating System .NET Architecture 4 Common Language Runtime (CLR) All .NET applications use the CLR The CLR is OO It is independent from high level languages The CLR supports: . A common set of data types for all languages (CTS) . An intermediate language independent from the native code (CIL) . A common format for compiled code files (assemblies) All the software developed using the CLR is known as managed code .NET Architecture 5 Common Type System (CTS) All the languages able to generate code for the CLR make use of the CTS (the CLR implements the CTS) heap There is 2 type categories: string . Value “abcdef” • Simple types stack • Allocated in the stack top class A 41 String: . Reference Double: 271.6 • Complex types • Allocated in the heap • Destroyed automatically
    [Show full text]
  • Programming with Windows Forms
    A P P E N D I X A ■ ■ ■ Programming with Windows Forms Since the release of the .NET platform (circa 2001), the base class libraries have included a particular API named Windows Forms, represented primarily by the System.Windows.Forms.dll assembly. The Windows Forms toolkit provides the types necessary to build desktop graphical user interfaces (GUIs), create custom controls, manage resources (e.g., string tables and icons), and perform other desktop- centric programming tasks. In addition, a separate API named GDI+ (represented by the System.Drawing.dll assembly) provides additional types that allow programmers to generate 2D graphics, interact with networked printers, and manipulate image data. The Windows Forms (and GDI+) APIs remain alive and well within the .NET 4.0 platform, and they will exist within the base class library for quite some time (arguably forever). However, Microsoft has shipped a brand new GUI toolkit called Windows Presentation Foundation (WPF) since the release of .NET 3.0. As you saw in Chapters 27-31, WPF provides a massive amount of horsepower that you can use to build bleeding-edge user interfaces, and it has become the preferred desktop API for today’s .NET graphical user interfaces. The point of this appendix, however, is to provide a tour of the traditional Windows Forms API. One reason it is helpful to understand the original programming model: you can find many existing Windows Forms applications out there that will need to be maintained for some time to come. Also, many desktop GUIs simply might not require the horsepower offered by WPF.
    [Show full text]
  • A Scorecard Framework Proposal for Improving Software Factories’ Sustainability: a Case Study of a Spanish Firm in the Financial Sector
    Article A Scorecard Framework Proposal for Improving Software Factories’ Sustainability: A Case Study of a Spanish Firm in the Financial Sector César Álvarez †, Vicente Rodríguez †,*, Francisco Ortega † and Joaquín Villanueva † Received: 15 September 2015; Accepted: 23 November 2015; Published: 2 December 2015 Academic Editor: Marc A. Rosen Department of Project Engineering, University of Oviedo, C/Independencia 3, 33004 Oviedo, Spain; [email protected] (C.Á.); [email protected] (F.O.); [email protected] (J.V.) * Correspondence: [email protected]; Tel.: +34-985-104-272 † These authors contributed equally to this work. Abstract: Financial institutions and especially banks have always been at the forefront of innovation in management policies in order to improve their performance, and banking is probably one of the sectors that more effectively measures productivity and efficiency in virtually all aspects of its business. However, there is one area that still fails: the productivity of its software development projects. For years banking institutions have chosen to outsource their software projects using software firms created by them for this purpose, but up until a few years ago, the deadline for the delivery of the projects was more important than the efficiency with which they were developed. The last economic crisis has forced financial institutions to review and improve the software development efficiency related to their software factories to achieve a sustainable and feasible model. The sustainability of these software factories can be achieved by improving their strategic management, and the Balanced Scorecard (BSC) framework can be very useful in order to obtain this. Based on the concepts and practices of the BSC, this paper proposes a specific model to establish this kind of software factory as a way of improving their sustainability and applies it to a large Spanish firm specializing in financial sector software.
    [Show full text]