Java/A Taking Components into Java

Size: px
Start display at page:

Download "Java/A Taking Components into Java"

Transcription

1 Java/A Taking Components into Java Florian Hacklinger Institut für Informatik Ludwig-Maximilians-Universität München Oettingenstraße 67, München, Germany Abstract Component-based software-engineering and software architecture gain importance in software engineering. It is a well known fact that high level architectures and modular composition help constructing large-scale software systems. Today, programming languages support software architecture insufficiently. This leads to a number of problems, e.g. reduced reusability and architectural erosion. In this paper, the Java/A programming language is introduced. Java/A integrates notions like components and connectors into Java. Furthermore, Java/A provides mechanisms to verify component configurations. 1 Introduction In the last decade, the notions of component-based systems and software architecture have been established in the software engineering community. A high-level model of a software system allows software engineers or software architects to reason on the systems feasibility [6]. This helps to anticipate complications in an early phase of the development process. A vast number of languages to express architectures of software systems have been proposed and tools to analyse these architectures have been developed. Yet, there is a lack of support for software architectures in programming languages. This insufficiency leads to an architecture almost invisible once implemented using a programming language [11]. As a consequence, software maintenance can cause architectural erosion [10]. Programmers adding new functionality to a software system are in danger of altering or even damaging the underlying architecture by mistake. The entire architectural design proves to be useless if the software no longer corresponds to the architecture. The reuse of software components, another ambitious goal of software architecture, is inhibited as programming languages do not support the specification of run-time behaviour to an adequate extent. Unfortunately, it is not obvious whether two or more components are compatible with each other. Software development through the connecting of components without any knowledge of their dynamic behaviour is almost unachievable [5]. To ensure compatibility, tool support like compile-time verification of configurations is indispensable. The basic idea of Java/A is to integrate architectural concepts, such as components, ports and connectors, as fundamental parts into Java. The underlying component model is compatible to the UML 2.0 component model [14]. This compatibility and the one-to-one mapping of the aforementioned concepts allow software designers to easily implement UML 2.0 component diagrams. They can express the notions present in these diagrams using builtin language constructs of Java. Furthermore, the visibility of architectural elements in the Java/A source code prevents architectural erosion. Programmers actually see the architecture. Therefore, the chances of accidental damage to the architecture are reduced. By capturing the dynamic behaviour of components in port protocols, the reusability of components is improved. The soundness of component compositions can be checked at compile time. As a consequence, composition is type-safe. Another advantage of capturing dynamic behaviour is that replacing one single component of a configuration is facilitated. 2 The Java/A programming language 2.1 The Java/A component model The basic concepts of the Java/A component model are components, ports, connectors and configurations. The model in its essence is taken from ROOM [12]. The component model of Java/A is shown in Fig. 1. The correspondence of the Java/A component model to the UML 2.0 component model is outlined in Tab. 1. Any communication between Java/A components is performed by sending messages to ports. If a component needs to interact with its environment, it simply sends a message to a port. Of course, this message must be an element of the required interface of the respective port. The

2 1 Configuration * Connector * Component * 2 Port 0..1 Protocol required 1 1 provided CompositeComponent AtomicComponent Interface Figure 1: The Java/A component model Java/A UML 2.0 Component no analogy AtomicComponent Component (from Basic- Components) CompositeComponent Component (from PackagingComponents) Port Port (from Ports) Interface Interface (from Communications, specialised) Protocol ProtocolStateMachine (from ProtocolStatemachines) Connector Connector (from Internal- Structures) Configuration component diagram Table 1: Correspondence of the Java/A component model to UML 2.0 components port will then pass on the message to the attached connector, which itself will delegate the message to the port at its other end. Each port may contain a protocol. These protocols describe the order of messages that are allowed to be sent from and to the respective port. Any incoming and outgoing communication must conform to the protocol. Otherwise, the port will throw an error. If no protocol is specified, a standard protocol that allows all messages at any time is assumed. Protocols are realised by UML state machines. More information on protocols can be found in Sect Java/A components can be atoms or composites. A composite contains connected components, more precisely a configuration. Atomic components provide functionality by implementing it. Any functionality that composites offer is being accomplished by inner components. Composites themselves do not contain real code. Figure 2 shows a composite component. The component A contains a configuration of two components, namely B and C. The port P4 of A is linked to the port P3 of C. Any message sent to P4 will be delegated to P3. The port P4 acts as a relay. In the current version of Java/A, the ports P3 and P4 must have identical provided and required interfaces as well as a compatible protocol. A B C P1 P2 P3 P4 Figure 2: A composite component 2.2 Java/A language features Encapsulation The encapsulation of Java/A components ensures modular development, self-containedness and reusability. The encapsulation is being achieved by restricting any component communication to ports. Required interfaces of ports specify the demands that components make on their environment. Thus, reusability is being improved with the documentation of dependencies between components and their environment. Hierarchical composition The hierarchical composition mechanism of Java/A allows component designers to generate a composite by connecting existing components to a configuration. Ports of composites are linked (by the same connection mechanism used to connect external ports) to free ports of inner components. Configurations are only valid inside a composite component. As a consequence, any Java/A program is a composite with no ports. Compositional connectors Connectors in Java/A are used to link components. They provide means to overcoming syntactic differences of messages in required and provided interfaces. Connectors can map operation names and

3 permute parameter orders. This feature is helpful to compose independently developed components without having to write wrappers. An example of connectors and their compositional features is being presented in Sect Loose coupling The coupling mechanism of Java/A is based on reflection. Components do not have knowledge, neither at design time nor at runtime, about their environment. They rely on the soundness of their configuration. Methods specified in a port s required interfaces must be provided by the connected port. This loose coupling mechanism enhances reusability as it allows for a component to be designed and implemented on its own. Protocols Port protocols ensure the soundness of a configuration at compile-time. The Java/A compiler uses a model checker to verify the validity of a connection. The compiler ensures type-safety of configurations. Protocols are specified by UTE [7], a textual notation of UML state machines. Instantiable components and connectors Components and connectors in Java/A are instantiable, like classes are in Java. Several components or connectors of one type can be used in the same Java/A program. Java language features Java/A preserves all Java language features. Programmers do not need to learn a new language to use Java/A. The new features of Java/A concern only the high-level structure of a program. 2.3 Tools Currently, the Java/A language is supported by a compiler and a graphical design workbench. The compiler jaac translates Java/A components to Java source code. This Java source code can be compiled into Java byte code as it is. Furthermore, the compiler can check the soundness of configurations using a model checker on the port protocols. The Component Composition Platform (CCP) is built to be a platform that enables the software engineer to design a component-based system from scratch as well as to compose a system by simply connecting existing components. Components can be created, edited, loaded and saved to a repository. As the compiler, the CCP makes use of a model checker to validate the soundness of component connections. 2.4 Example: Bank and ATM We illustrate Java/A by means of a simple example. Figure 3 shows a (naive) structural diagram of a system consisting of a bank connected to an ATM. The ATM is used to withdraw money from an account. Therefore, it sends an account number and the PIN of the account to the bank. If the identification is successful, money can be withdrawn from the account. BankATM Bank BankToATM ATM ATMToBank Figure 3: Java/A program BankATM The components Bank and ATM are atomic components, whereas the component BankATM is a composite. The composite component BankATM has no ports. It is a complete Java/A program independent from its environment, except any used class libraries. As can be seen in Fig. 4, the Java/A implementation of the component Bank is relatively simple. simple component Bank { port BankToATM { provided { void verify(int pin, int accountnr); void withdraw(int amount, int accountnr); required { void pinok(); void pinnok(); void withdrawok(); void withdrawnok(); protocol <!!> public void withdraw(int amount, int accnr) implements BankToATM.withdraw(int, int) { Account a = getaccount(accnr); if (amount <= a.getbalance()) { a.withdraw(amount); BankToATM.withdrawOk(); else { BankToATM.withdrawNok(); Figure 4: The source code for the component Bank It is assumed that the component Bank has a collection of Account objects and an operation to retrieve one Account object through its account number. The bank has a single port BankToATM with a provided and a required

4 interface. In case of an unidirectional communication, one of these interfaces may be omitted. The protocol is disregarded here; see Sect. 2.5 for more details on protocols. If a message withdraw is sent to the port BankToATM, the port delegates the message to the respective implementation inside the component. In the example, the bank will reply with a signal withdrawok if the balance of the respective account allows for withdrawing the given amount. The ATM can now dispense the money. The response is done by invoking the operation withdrawok at the port BankToATM. As already mentioned earlier, the programmer of the component Bank can implement the component without having to know anything about the bank s environment. He can rely on the fact that any component attached to BankToATM understands the messages pinok, pinnok, withdrawok and withdrawnok. simple component ATM { port ATMToBank { provided { void pinnok(); void pinok(); void withdrawok(); void withdrawnok(); required { void verifypin(int accnr, int pin); void withdraw(int amount, int accnr); protocol <!!> Figure 5: The source code for the component ATM The implementation of the component ATM is presented in Fig. 5. The comparison of the ports BankToATM and ATMToBank shows some problems. First, there is no method verifypin in the provided interface of the port BankToATM. Nevertheless, there is a method that will do the same job with the name verify. Second, the parameter orders of these methods differ. Both have parameters for the account number and the pin but they are not at the same position in the parameter list. The implementation of the composite BankATM in Fig. 6 shows how Java/A connectors deal with these syntactical problems. 2.5 Protocols A connection of two ports is sound if every operation in the required interface of one port has a mapping to an operation of the provided interface of the other port. Additionally, the protocols of the ports have to match each other composite component BankATM { configuration { component Bank bank = new Bank(); component ATM atm = new ATM(); connector Connector cn = new Connector(); cn.connect(bank.banktoatm, atm.atmtobank) { verify(int,int) -> verifypin(int,int)[2,1]; ; Figure 6: Source code for the component BankATM such that there exists no trace of operation calls that leads to a deadlock. An operation of a required interface has a mapping to an operation in a provided interface if they have the same name and parameter list, or if the respective connector contains a mapping statement for the operation. Recall the running example from Sect. 2.4: The protocol of the port BankToATM can be formalised as a UML state machine as shown in Fig. 7(a). The state diagram describes the behaviour of the bank. Any outbound message is marked by a prefixed ˆ. In the example, the parameters are omitted. After initialising, the bank waits for the ATM to send a verify operation. This operation call can be responded to by either pinok or pinnok. If the answer is pinok, the ATM can enter the amount to be withdrawn. If the answer to withdraw is withdrawok, the transaction is complete. The bank then waits for the ATM to initiate the next transaction. We now assume, that the port ATMToBank has the protocol shown in Fig. 7(b). This protocol allows only for one withdraw operation per transaction. If the ports BankToATM and ATMToBank are connected, the resulting configuration will eventually deadlock. The first withdraw that is responded to with a withdrawnok will have the effect that the bank will stay in the state Q3 and wait for other withdraw messages, while the ATM will abort the transaction and proceed to state Q1. The model checker HUGO will detect this deadlock at compile time. The advantages of protocols being checked by a model checker at compile time are obvious. Type-safety of configurations can be ensured. The software designer benefits from increased certainty when composing components. At the very least, he can be sure that the connection is sound. Of course, the problem of semantic differences is not addressed by this approach.

5 Q1 Q4 ^withdrawok verify ^pinnok withdraw ^withdrawnok Q2 Q3 (a) The protocol of the port BankToATM Q1 withdrawok Q4 ^verify pinnok withdrawnok ^withdraw Q2 Q3 (b) The protocol of the port ATMToBank ^pinok pinok Figure 7: Protocols of the ATM-Bank example. 3 Related Work ArchJava, SOFA and Fractal ArchJava [1] is an approach similar to Java/A. ArchJava also integrates components and connectors into Java. ArchJava components have ports with required and provided interfaces. However, ports in ArchJava do not have protocols. As a result, the dynamic behaviour of ports is not captured in ArchJava. ArchJava, as well as Java/A, allows for hierarchical component composition. In Java/A, there is no possibility of communicating with components other than sending messages to its ports, whereas in ArchJava outer components can invoke methods of inner components directly, which breaks the encapsulation. SOFA [13] and Fractal [4] are both frameworks that support component-oriented programming. Fractal is an abstract framework providing a reference implementation in Java, SOFA is a concrete framework. Neither approach introduces new concepts into a programming language. Their approach is based on a set of programming techniques combined with enhancements like a component description language (in case of SOFA). SOFA supports protocols and their verification, whereas Fractal does not. SOFA protocols are described as traces. There is no tool support available to generate these traces. See Tab. 2 for a comparison of the key features of ArchJava, SOFA, Fractal and Java/A. Other component models There are various frameworks to implement components like JavaBeans, J2EE, CORBA, COM+, and others. Nevertheless, these are not sufficient to overcome the aforementioned problems. Neither in JavaBeans nor in J2EE are there required interfaces or protocols. CORBA components have provided interfaces but they lack protocols to describe dynamic behaviour. All in all, CORBA is a composition language not a programming language. COM+ components are more comparable to libraries than to components in an architectural sense [3]. Their design does not allow for the composition of software systems. Architecture description languages Within the last decade, many architecture description languages (ADL) have been designed [9]. A common feature of these languages is the focus on high level structure and behaviour of software systems. Java/A does not aim at replacing ADLs. Java/A uses ideas presented in ADLs, for example, capturing the dynamic behaviour as in Wright [2] and brings them down to the implementation level of software systems. Furthermore, by implementing the UML 2.0 component model and using UML statecharts to specify protocols, Java/A is easy to use by programmers as the UML is wide-spread among them. In some sense, Java/A and ADLs complement each other. The implementation of an ADL model using Java/A is straight-forward as most notions of ADLs are language constructs of Java/A. Additionally, ADLs and Java/A have different goals. Whereas ADLs have a strong focus on the analysis of architectures, Java/A focuses on implementing component-based systems with additional support for the architectural level of these systems. The best fitting ADL for Java/A is the UML. 4 Conclusion The Java/A language supports software engineers in implementing component-based systems. The extension of Java with concepts like components and connectors simplifies the realisation of architectural models and, at the same time, prevents architectural erosion. Java/A provides for software component reuse. Strict encapsulation, ports with required interfaces and port protocols ensure safe composition of previously developed components. The compiler jaac and the CCP are tools that prove the concept to be applicable. As the presented concepts are compatible to the UML, Java/A is easily usable for software designers and programmers with the UML being well known among them. Currently, we work on further improvements for jaac and CCP. As for the language itself, we investigate dynamic ports and dynamic reconfigurations. The ATM-Bank

6 ArchJava SOFA Fractal 2.1 Java/A 0.3 provided interfaces required interfaces ports protocols & verification strict encapsulation dynamic architectures Table 2: Comparison of ArchJava, SOFA, Fractal and Java/A example demonstrates the necessity of dynamic ports. In the real world, there are usually more than one ATM connected to a bank. Furthermore, these connections are only used from time to time. In the current version of Java/A, connections that are established when necessary and terminated after usage are not expressible. As all ATMs will be connected to ports with identical interfaces and protocols, a construct that supports port instantiation is necessary. To a certain degree, reconfiguration at run-time is established by dynamic ports. A more ambitious goal is to introduce a hot swap mechanism into Java/A. Such a mechanism would allow for updating components at run-time. Acknowledgments I would like to thank Angelika März for proof-reading and Alexander Knapp for helpful suggestions. References [1] J. Aldrich. (2004, April 27). ArchJava: Home. Retrieved from (5/2/04) [2] R. Allen, R. Douence and D. Garlan. Specifying and Analyzing Dynamic Software Architectures. Proc. Fundamental Approaches to Software Engineering 1998, [3] G. Eddon and H. Eddon. Inside COM+. Microsoft Press, [7] A. Knapp. (2004, April 24). HUGO/RT. Retrieved from (4/28/04) [8] A. Knapp, S. Merz and T. Schäfer. Model checking UML State Machines and Collaborations. Proc. Wsh. Software Model Checking. Electronic Notes in Theoretical Computer Science, 55(3), [9] N. Medvidovic and R. Taylor. A Framework for Classifying and Comparing Architecture Description Languages. Proc 6th European Software Engineering Conference, Lecture Notes in Computer Science 1301, 1997, pages [10] D. Perry and A. Wolf. Foundations for the Study of Software Architecture. ACM SIGSOFT, Software Engineering Notes, 17(4), pp , [11] B. Selic. Reflections on Software Architectures. Lecture notes, Software Architecture Summer School, Turku, Finland [12] B. Selic, G. Gullekson and P. Ward. Real Time Object Oriented Modeling. John Wiley & Sons, [13] SOFA: Software Appliances. Retrieved from (5/2/04) [14] Object Management Group.: UML 2.0 Superstructure Specification. Technical report ptc/ OMG, [4] ObjectWeb Consortium. (2004, March 29). The Fractal Project. Retrieved from (5/2/04) [5] D. Garlan, R. Allen and J. Ockerbloom. Architectural Mismatch or Why It s Hard to Build Systems Out Of Existing Parts. International Conference on Software Engineering, pp , [6] D. Garlan and M. Shaw. Software Architecture, Perspectives of an Emerging Discipline. Prentice Hall, 1996.

An Approach to Software Component Specification

An Approach to Software Component Specification Page 1 of 5 An Approach to Software Component Specification Jun Han Peninsula School of Computing and Information Technology Monash University, Melbourne, Australia Abstract. Current models for software

More information

Hierarchical vs. Flat Component Models

Hierarchical vs. Flat Component Models Hierarchical vs. Flat Component Models František Plášil, Petr Hnětynka DISTRIBUTED SYSTEMS RESEARCH GROUP http://nenya.ms.mff.cuni.cz Outline Component models (CM) Desired Features Flat vers. hierarchical

More information

Why Consider Implementation-Level Decisions in Software Architectures?

Why Consider Implementation-Level Decisions in Software Architectures? 1. Abstract Why Consider Implementation-Level Decisions in Software Architectures? Nikunj Mehta Nenad Medvidović Marija Rakić {mehta, neno, marija}@sunset.usc.edu Department of Computer Science University

More information

Using Architectural Models at Runtime: Research Challenges

Using Architectural Models at Runtime: Research Challenges Proceedings of the European Workshop on Software Architectures, St. Andrews, Scotland, May 2004. Using Architectural Models at Runtime: Research Challenges David Garlan and Bradley Schmerl Department of

More information

02291: System Integration

02291: System Integration 02291: System Integration Week 6 Hubert Baumeister huba@dtu.dk DTU Compute Technical University of Denmark Spring 2018 Contents UML State Machines Components (part II) UML Behaviour Diagrams Activity Diagrams

More information

Software Architecture and Design I

Software Architecture and Design I Software Architecture and Design I Instructor: Yongjie Zheng February 23, 2017 CS 490MT/5555 Software Methods and Tools Outline What is software architecture? Why do we need software architecture? How

More information

Software Architectures

Software Architectures Software Architectures Richard N. Taylor Information and Computer Science University of California, Irvine Irvine, California 92697-3425 taylor@ics.uci.edu http://www.ics.uci.edu/~taylor +1-949-824-6429

More information

Modelling the CoCoME with the Java/A Component Model

Modelling the CoCoME with the Java/A Component Model Modelling the CoCoME with the Java/A Component Model Rolf Hennicker, Alexander Knapp Ludwig-Maximilians-Universität München August 2007 The Java/A Team Ludwig-Maximilians-Universität München UML modelling,

More information

02291: System Integration

02291: System Integration 02291: System Integration Week 4 Hubert Baumeister huba@dtu.dk DTU Compute Technical University of Denmark Spring 2018 Contents From Requirements to Design CRC Cards Components (part Ia) Object-orientation:

More information

21) Functional and Modular Design

21) Functional and Modular Design Fakultät Informatik - Institut Software- und Multimediatechnik - Softwaretechnologie Prof. Aßmann - 21) Functional and Modular Design Prof. Dr. U. Aßmann Technische Universität Dresden Institut für Software-

More information

An Information Model for High-Integrity Real Time Systems

An Information Model for High-Integrity Real Time Systems An Information Model for High-Integrity Real Time Systems Alek Radjenovic, Richard Paige, Philippa Conmy, Malcolm Wallace, and John McDermid High-Integrity Systems Group, Department of Computer Science,

More information

SoberIT Software Business and Engineering Institute. SoberIT Software Business and Engineering Institute. Contents

SoberIT Software Business and Engineering Institute. SoberIT Software Business and Engineering Institute. Contents Architecture Description Languages (ADLs): Introduction, Koala, UML as an ADL T-76.150 Software Architecture Timo Asikainen Contents Brief motivation for ADLs General features of ADLs Koala UML as an ADL

More information

Towards Software Architecture at Runtime

Towards Software Architecture at Runtime Towards Software Architecture at Runtime Authors Names Department of Computer Science and Technology Peking University, Beijing, PRC, 100871 +86 10 62757801-1 { @ cs.pku.edu.cn 1. Introduction Abstract

More information

Managing test suites for services

Managing test suites for services Managing test suites for services Kathrin Kaschner Universität Rostock, Institut für Informatik, 18051 Rostock, Germany kathrin.kaschner@uni-rostock.de Abstract. When developing an existing service further,

More information

21) Functional and Modular Design

21) Functional and Modular Design Fakultät Informatik - Institut Software- und Multimediatechnik - Softwaretechnologie Prof. Aßmann - 21) Functional and Modular Design Prof. Dr. U. Aßmann Technische Universität Dresden Institut für Software-

More information

IN software engineering, component-based development

IN software engineering, component-based development IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 33, NO. 10, OCTOBER 2007 709 Software Component Models Kung-Kiu Lau and Zheng Wang Abstract Component-based development (CBD) is an important emerging topic

More information

Meta Architecting: Towered a New Generation of Architecture Description Languages

Meta Architecting: Towered a New Generation of Architecture Description Languages Journal of Computer Science 1 (4): 454-460, 2005 ISSN 1549-3636 Science Publications, 2005 Meta Architecting: Towered a New Generation of Architecture Description Languages Adel Smeda, Tahar Khammaci and

More information

Components Based Design and Development. Unit 3: Software Design Quick Overview

Components Based Design and Development. Unit 3: Software Design Quick Overview Components Based Design and Development Computer Engineering Studies Universidad Carlos III de Madrid Unit 3: Software Design Quick Overview Juan Llorens Högskolan på Åland Finland / Universidad Carlos

More information

A SIMULATION ARCHITECTURE DESCRIPTION LANGUAGE FOR HARDWARE-IN-LOOP SIMULATION OF SAFETY CRITICAL SYSTEMS

A SIMULATION ARCHITECTURE DESCRIPTION LANGUAGE FOR HARDWARE-IN-LOOP SIMULATION OF SAFETY CRITICAL SYSTEMS A SIMULATION ARCHITECTURE DESCRIPTION LANGUAGE FOR HARDWARE-IN-LOOP SIMULATION OF SAFETY CRITICAL SYSTEMS YUJUN ZHU, ZHONGWEI XU, MENG MEI School of Electronics & Information Engineering, Tongji University,

More information

Outline of UML and Unified Process. Object Oriented Analysis/Design/Programming UML1.5. Koichiro Ochimizu, JAIST. UML&UP outline 1.

Outline of UML and Unified Process. Object Oriented Analysis/Design/Programming UML1.5. Koichiro Ochimizu, JAIST. UML&UP outline 1. Outline of UML and Unified Process Koichiro OCHIMIZU School of Information Science JAIST Schedule Feb. 27th 13:00 Scope and Goal 14:30 Basic Concepts on Representing the World (object, class, association,

More information

The Method for Verifying Software Architecture with FSP Model

The Method for Verifying Software Architecture with FSP Model The Method for Verifying Software Architecture with FSP Model Kim, Jungho SKC&C Inc., SK u-tower 25-1, Jeongja-dong, Bundang-gu, Seongnam-si, Gyeonggi-do 463-844, Korea kimjh@skcc.com Abstract C&C view

More information

Engr. M. Fahad Khan Lecturer Software Engineering Department University Of Engineering & Technology Taxila

Engr. M. Fahad Khan Lecturer Software Engineering Department University Of Engineering & Technology Taxila Engr. M. Fahad Khan Lecturer Software Engineering Department University Of Engineering & Technology Taxila Software Design and Architecture Software Design Software design is a process of problem-solving

More information

Model Driven Development of Component Centric Applications

Model Driven Development of Component Centric Applications Model Driven Development of Component Centric Applications Andreas Heberle (entory AG), Rainer Neumann (PTV AG) Abstract. The development of applications has to be as efficient as possible. The Model Driven

More information

Concurrent Object-Oriented Development with Behavioral Design Patterns

Concurrent Object-Oriented Development with Behavioral Design Patterns Concurrent Object-Oriented Development with Behavioral Design Patterns Benjamin Morandi 1, Scott West 1, Sebastian Nanz 1, and Hassan Gomaa 2 1 ETH Zurich, Switzerland 2 George Mason University, USA firstname.lastname@inf.ethz.ch

More information

Architectural Design Rewriting as Architectural Description Language

Architectural Design Rewriting as Architectural Description Language Architectural Design Rewriting as Architectural Description Language R. Bruni A. LLuch-Lafuente U. Montanari E. Tuosto Plan 2 Architecture & SOC (our view) ADR main features ADR as ADL (through simple

More information

A Comprehensive Interface Definition Framework for Software Components

A Comprehensive Interface Definition Framework for Software Components A Comprehensive Interface Definition Framework for Software Components Jun Han Peninsula School of Computing and Information Technology Monash University, McMahons Road, Frankston, Vic 3199, Australia

More information

Pattern-Based Architectural Design Process Model

Pattern-Based Architectural Design Process Model Pattern-Based Architectural Design Process Model N. Lévy, F. Losavio Abstract: The identification of quality requirements is crucial to develop modern software systems, especially when their underlying

More information

CS 6110 S11 Lecture 25 Typed λ-calculus 6 April 2011

CS 6110 S11 Lecture 25 Typed λ-calculus 6 April 2011 CS 6110 S11 Lecture 25 Typed λ-calculus 6 April 2011 1 Introduction Type checking is a lightweight technique for proving simple properties of programs. Unlike theorem-proving techniques based on axiomatic

More information

Appendix A - Glossary(of OO software term s)

Appendix A - Glossary(of OO software term s) Appendix A - Glossary(of OO software term s) Abstract Class A class that does not supply an implementation for its entire interface, and so consequently, cannot be instantiated. ActiveX Microsoft s component

More information

09. Component-Level Design

09. Component-Level Design 09. Component-Level Design Division of Computer Science, College of Computing Hanyang University ERICA Campus 1 st Semester 2017 What is Component OMG UML Specification defines a component as OO view a

More information

Domain Engineering And Variability In The Reuse-Driven Software Engineering Business.

Domain Engineering And Variability In The Reuse-Driven Software Engineering Business. OBM 7 -draft 09/02/00 1 Domain Engineering And Variability In The Reuse-Driven Software Engineering Business. Martin L. Griss, Laboratory Scientist, Hewlett-Packard Laboratories, Palo Alto, CA. Effective

More information

Incorporating applications to a Service Oriented Architecture

Incorporating applications to a Service Oriented Architecture Proceedings of the 5th WSEAS Int. Conf. on System Science and Simulation in Engineering, Tenerife, Canary Islands, Spain, December 16-18, 2006 401 Incorporating applications to a Service Oriented Architecture

More information

5/9/2014. Recall the design process. Lecture 1. Establishing the overall structureof a software system. Topics covered

5/9/2014. Recall the design process. Lecture 1. Establishing the overall structureof a software system. Topics covered Topics covered Chapter 6 Architectural Design Architectural design decisions Architectural views Architectural patterns Application architectures Lecture 1 1 2 Software architecture The design process

More information

On Implementing MOF 2.0 New Features for Modelling Language Abstractions

On Implementing MOF 2.0 New Features for Modelling Language Abstractions On Implementing MOF 2.0 New Features for Modelling Language Abstractions Markus Scheidgen Humboldt Universität zu Berlin Institut für Informatik Unter den Linden 6 10099 Berlin, Germany scheidge@informatik.hu-berlin.de

More information

Restricted Use Case Modeling Approach

Restricted Use Case Modeling Approach RUCM TAO YUE tao@simula.no Simula Research Laboratory Restricted Use Case Modeling Approach User Manual April 2010 Preface Use case modeling is commonly applied to document requirements. Restricted Use

More information

Quality-Driven Architecture Design Method

Quality-Driven Architecture Design Method Quality-Driven Architecture Design Method Matinlassi Mari, Niemelä Eila P.O. Box 1100, 90571 Oulu Tel. +358 8 551 2111 Fax +358 8 551 2320 {Mari.Matinlassi, Eila.Niemela}@vtt.fi Abstract: In this paper

More information

An evaluation of Papyrus-RT for solving the leader-follower challenge problem

An evaluation of Papyrus-RT for solving the leader-follower challenge problem An evaluation of Papyrus-RT for solving the leader-follower challenge problem Karim Jahed Queen s University, Kingston, ON jahed@cs.queensu.ca Abstract. We discuss and evaluate the use of Papyrus-RT modeling

More information

Describing the architecture: Creating and Using Architectural Description Languages (ADLs): What are the attributes and R-forms?

Describing the architecture: Creating and Using Architectural Description Languages (ADLs): What are the attributes and R-forms? Describing the architecture: Creating and Using Architectural Description Languages (ADLs): What are the attributes and R-forms? CIS 8690 Enterprise Architectures Duane Truex, 2013 Cognitive Map of 8090

More information

Coordination Patterns

Coordination Patterns Coordination Patterns 1. Coordination Patterns Design Patterns and their relevance for Coordination Oscar Nierstrasz Software Composition Group Institut für Informatik (IAM) Universität Bern oscar@iam.unibe.ch

More information

1 Introduction. 3 Syntax

1 Introduction. 3 Syntax CS 6110 S18 Lecture 19 Typed λ-calculus 1 Introduction Type checking is a lightweight technique for proving simple properties of programs. Unlike theorem-proving techniques based on axiomatic semantics,

More information

FAKULTÄT FÜR INFORMATIK

FAKULTÄT FÜR INFORMATIK FAKULTÄT FÜR INFORMATIK DER TECHNISCHEN UNIVERSITÄT MÜNCHEN Master-Seminar Software Verification Author: Lukas Erlacher Advisor: Prof. Andrey Rybalchenko, Dr. Corneliu Popeea Submission: April, 2013 Contents

More information

A Lightweight Language for Software Product Lines Architecture Description

A Lightweight Language for Software Product Lines Architecture Description A Lightweight Language for Software Product Lines Architecture Description Eduardo Silva, Ana Luisa Medeiros, Everton Cavalcante, Thais Batista DIMAp Department of Informatics and Applied Mathematics UFRN

More information

Com S/Geron 415X Gerontechnology in Smart Home Environments Lecture 9 Intro to Service Computing. Dr. Hen-I Yang ComS Dept., ISU

Com S/Geron 415X Gerontechnology in Smart Home Environments Lecture 9 Intro to Service Computing. Dr. Hen-I Yang ComS Dept., ISU Com S/Geron 415X Gerontechnology in Smart Home Environments Lecture 9 Intro to Service Computing Dr. Hen-I Yang ComS Dept., ISU Feb. 22, 2011 Reflection Peeking Ahead Today (2/22) Introduction to Service

More information

Quality-Driven Conformance Checking in Product Line Architectures

Quality-Driven Conformance Checking in Product Line Architectures Quality-Driven Conformance Checking in Product Line Architectures Femi G. Olumofin and Vojislav B. Mišić University of Manitoba, Winnipeg, Manitoba, Canada Abstract Software product line are often developed

More information

GSAW Software Architectures: What are we Building? March 1999

GSAW Software Architectures: What are we Building? March 1999 GSAW 1999 Software Architectures: What are we Building? March 1999 Roger J. Dziegiel, Jr AFRL/IFTD 525 Brooks Rd Rome, NY 13441-4505 (315)330-2185 dziegielr@rl.af.mil Arch1 Architecture & Generation Parameterized

More information

Aspect-Orientation from Design to Code

Aspect-Orientation from Design to Code Aspect-Orientation from Design to Code Iris Groher Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739 Munich, Germany groher@informatik.tu-darmstadt.de Thomas Baumgarth Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739

More information

Configuration Management for Component-based Systems

Configuration Management for Component-based Systems Configuration Management for Component-based Systems Magnus Larsson Ivica Crnkovic Development and Research Department of Computer Science ABB Automation Products AB Mälardalen University 721 59 Västerås,

More information

Modularizing Web Services Management with AOP

Modularizing Web Services Management with AOP Modularizing Web Services Management with AOP María Agustina Cibrán, Bart Verheecke { Maria.Cibran, Bart.Verheecke@vub.ac.be System and Software Engineering Lab Vrije Universiteit Brussel 1. Introduction

More information

Class Inheritance and OLE Integration (Formerly the Common Object Model)

Class Inheritance and OLE Integration (Formerly the Common Object Model) TM Class Inheritance and OLE Integration (Formerly the Common Object Model) Technical Overview Shawn Woods, Mike Vogl, and John Parodi August 1995 Digital Equipment Corporation Introduction This paper

More information

Describing Computer Languages

Describing Computer Languages Markus Scheidgen Describing Computer Languages Meta-languages to describe languages, and meta-tools to automatically create language tools Doctoral Thesis August 10, 2008 Humboldt-Universität zu Berlin

More information

Inheritance (Chapter 7)

Inheritance (Chapter 7) Inheritance (Chapter 7) Prof. Dr. Wolfgang Pree Department of Computer Science University of Salzburg cs.uni-salzburg.at Inheritance the soup of the day?! Inheritance combines three aspects: inheritance

More information

University of Groningen. Architectural design decisions Jansen, Antonius Gradus Johannes

University of Groningen. Architectural design decisions Jansen, Antonius Gradus Johannes University of Groningen Architectural design decisions Jansen, Antonius Gradus Johannes IMPORTANT NOTE: You are advised to consult the publisher's version (publisher's PDF) if you wish to cite from it.

More information

Component-Based Applications: A Dynamic Reconfiguration Approach with Fault Tolerance Support

Component-Based Applications: A Dynamic Reconfiguration Approach with Fault Tolerance Support Electronic Notes in Theoretical Computer Science 65 No. 4 (2002) URL: http://www.elsevier.nl/locate/entcs/volume65.html 9 pages Component-Based Applications: A Dynamic Reconfiguration Approach with Fault

More information

Style-specific techniques to design product-line architectures

Style-specific techniques to design product-line architectures Style-specific techniques to design product-line architectures Philippe Lalanda Thomson-CSF Corporate Research Laboratory Phone: 33 1 69 33 92 90 Email: lalanda@thomson-lcr.fr Domaine de Corbeville 91404

More information

Applying Idioms for Synchronization Mechanisms Synchronizing communication components for the One-dimensional Heat Equation

Applying Idioms for Synchronization Mechanisms Synchronizing communication components for the One-dimensional Heat Equation Applying Idioms for Synchronization Mechanisms Synchronizing communication components for the One-dimensional Heat Equation Jorge L. Ortega Arjona 1 Departamento de Matemáticas Facultad de Ciencias, UNAM

More information

Object-Oriented Design. Module UFC016QM. and Programming. Objects and Classes. O-O Design Unit 2: Faculty of Computing, Engineering

Object-Oriented Design. Module UFC016QM. and Programming. Objects and Classes. O-O Design Unit 2: Faculty of Computing, Engineering Module UFC016QM Object-Oriented Design and Programming O-O Design Unit 2: Objects and Classes Faculty of Computing, Engineering and Mathematical Sciences Schedule Quick recap on Use Case diagrams UWE Flix

More information

02291: System Integration

02291: System Integration 02291: System Integration Week 5 Hubert Baumeister huba@dtu.dk DTU Compute Technical University of Denmark Spring 2018 Contents Components (part Ia) Class Diagrams Important Concepts Class Diagrams Software

More information

Cover Page. The handle holds various files of this Leiden University dissertation

Cover Page. The handle   holds various files of this Leiden University dissertation Cover Page The handle http://hdl.handle.net/1887/22891 holds various files of this Leiden University dissertation Author: Gouw, Stijn de Title: Combining monitoring with run-time assertion checking Issue

More information

On the Role of Architectural Styles in Improving the Adaptation Support of Middleware Platforms

On the Role of Architectural Styles in Improving the Adaptation Support of Middleware Platforms On the Role of Architectural Styles in Improving the Adaptation Support of Middleware Platforms Naeem Esfahani and Sam Malek Department of Computer Science George Mason University {nesfaha2, smalek}@gmu.edu

More information

Runtime Software Architecture Based Software Evolution And Adaptation

Runtime Software Architecture Based Software Evolution And Adaptation Runtime Software Architecture Based Software Evolution And Adaptation Qianxiang Wang, Gang Huang, Junrong Shen, Hong Mei, Fuqing Yang Department of Computer Science and Technology, Peking University 100871

More information

Compositional Model Based Software Development

Compositional Model Based Software Development Compositional Model Based Software Development Prof. Dr. Bernhard Rumpe http://www.se-rwth.de/ Seite 2 Our Working Groups and Topics Automotive / Robotics Autonomous driving Functional architecture Variability

More information

Separating Product Variance and Domain Concepts in the Specification of Software Product Lines

Separating Product Variance and Domain Concepts in the Specification of Software Product Lines Separating Product Variance and Domain Concepts in the Specification of Software Product Lines Pertti Kellomäki Software Systems Laboratory, Tampere University of Technology P.O. Box 553, FIN-33101 Tampere,

More information

LECTURE 3: SOFTWARE DESIGN. Software Engineering Mike Wooldridge

LECTURE 3: SOFTWARE DESIGN. Software Engineering Mike Wooldridge LECTURE 3: SOFTWARE DESIGN Mike Wooldridge 1 Design Computer systems are not monolithic: they are usually composed of multiple, interacting modules. Modularity has long been seen as a key to cheap, high

More information

L02.1 Introduction... 2

L02.1 Introduction... 2 Department of Computer Science COS121 Lecture Notes: L02 Introduction to UML and DP 25 July 2014 Copyright c 2012 by Linda Marshall and Vreda Pieterse. All rights reserved. Contents L02.1 Introduction.................................

More information

Summary of the course lectures

Summary of the course lectures Summary of the course lectures 1 Components and Interfaces Components: Compile-time: Packages, Classes, Methods, Run-time: Objects, Invocations, Interfaces: What the client needs to know: Syntactic and

More information

Architectures in Context

Architectures in Context Architectures in Context Software Architecture Lecture 2 Copyright Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Learning Objectives Understand architecture in its relation

More information

USE CASE BASED REQUIREMENTS VERIFICATION

USE CASE BASED REQUIREMENTS VERIFICATION USE CASE BASED REQUIREMENTS VERIFICATION Verifying the consistency between use cases and assertions Stéphane S. Somé, Divya K. Nair School of Information Technology and Engineering (SITE), University of

More information

Outline of Unified Process

Outline of Unified Process Outline of Unified Process Koichiro OCHIMIZU School of Information Science JAIST Schedule(3/3) March 12 13:00 Unified Process and COMET 14:30 Case Study of Elevator Control System (problem definition,

More information

Component-Based Software Engineering TIP

Component-Based Software Engineering TIP Component-Based Software Engineering TIP X LIU, School of Computing, Napier University This chapter will present a complete picture of how to develop software systems with components and system integration.

More information

Current Issues and Future Trends. Architectural Interchange

Current Issues and Future Trends. Architectural Interchange Current Issues and Future Trends 1 Current Issues and Future Trends Architectural interchange Architectural toolkit Architectural refinement Architectural view integration Bringing architectures to the

More information

Model-based Run-Time Software Adaptation for Distributed Hierarchical Service Coordination

Model-based Run-Time Software Adaptation for Distributed Hierarchical Service Coordination Model-based Run-Time Software Adaptation for Distributed Hierarchical Service Coordination Hassan Gomaa, Koji Hashimoto Department of Computer Science George Mason University Fairfax, VA, USA hgomaa@gmu.edu,

More information

Applying UML Modeling and MDA to Real-Time Software Development

Applying UML Modeling and MDA to Real-Time Software Development Michael Benkel Aonix GmbH www.aonix.de michael.benkel@aonix.de Applying UML Modeling and MDA to Real-Time Software Development The growing complexity of embedded real-time applications requires presentation

More information

Towards The Adoption of Modern Software Development Approach: Component Based Software Engineering

Towards The Adoption of Modern Software Development Approach: Component Based Software Engineering Indian Journal of Science and Technology, Vol 9(32), DOI: 10.17485/ijst/2016/v9i32/100187, August 2016 ISSN (Print) : 0974-6846 ISSN (Online) : 0974-5645 Towards The Adoption of Modern Software Development

More information

CS 575: Software Design

CS 575: Software Design CS 575: Software Design Introduction 1 Software Design A software design is a precise description of a system, using a variety of different perspectives Structural Behavioral Packaging Requirements, Test/Validation

More information

Component-Level Design. Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman. For non-profit educational use only

Component-Level Design. Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman. For non-profit educational use only Chapter 10 Component-Level Design Slide Set to accompany Software Engineering: A Practitioner s Approach, 7/e by Roger S. Pressman Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman For non-profit

More information

Ch 1: The Architecture Business Cycle

Ch 1: The Architecture Business Cycle Ch 1: The Architecture Business Cycle For decades, software designers have been taught to build systems based exclusively on the technical requirements. Software architecture encompasses the structures

More information

Introduction to Modeling

Introduction to Modeling Introduction to Modeling Software Architecture Lecture 9 Copyright Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Objectives Concepts What is modeling? How do we choose

More information

Software Architectural Modeling of the CORBA Object Transaction Service

Software Architectural Modeling of the CORBA Object Transaction Service Software Architectural Modeling of the CORBA Transaction Service Susanne Busse Fraunhofer ISST Mollstr. 1 D-10178 Berlin, Germany Susanne.Busse@isst.fhg.de Stefan Tai Technische Universität Berlin Sekr.

More information

Information Hiding and Aspect-Oriented Modeling

Information Hiding and Aspect-Oriented Modeling Information Hiding and Aspect-Oriented Modeling Wisam Al Abed and Jörg Kienzle School of Computer Science, McGill University Montreal, QC H3A2A7, Canada Wisam.Alabed@mail.mcgill.ca, Joerg.Kienzle@mcgill.ca

More information

An Approach to Evaluate and Enhance the Retrieval of Web Services Based on Semantic Information

An Approach to Evaluate and Enhance the Retrieval of Web Services Based on Semantic Information An Approach to Evaluate and Enhance the Retrieval of Web Services Based on Semantic Information Stefan Schulte Multimedia Communications Lab (KOM) Technische Universität Darmstadt, Germany schulte@kom.tu-darmstadt.de

More information

Software Components and Distributed Systems

Software Components and Distributed Systems Software Components and Distributed Systems INF5040/9040 Autumn 2017 Lecturer: Eli Gjørven (ifi/uio) September 12, 2017 Outline Recap distributed objects and RMI Introduction to Components Basic Design

More information

Static analysis and testing of executable DSL specification

Static analysis and testing of executable DSL specification Static analysis and testing of executable DSL specification Qinan Lai 1, Andy Carpenter 1 1 School of Computer Science, the University of Manchester, Manchester, UK {laiq,afc}@cs.man.ac.uk Keywords: Abstract:

More information

SOFTWARE ARCHITECTURE & DESIGN INTRODUCTION

SOFTWARE ARCHITECTURE & DESIGN INTRODUCTION SOFTWARE ARCHITECTURE & DESIGN INTRODUCTION http://www.tutorialspoint.com/software_architecture_design/introduction.htm Copyright tutorialspoint.com The architecture of a system describes its major components,

More information

Component-Based Platform for a Virtual University Information System

Component-Based Platform for a Virtual University Information System Component-Based Platform for a Virtual University Information System Dr. IVAN GANCHEV, Dr. MAIRTIN O DROMA, FERGAL McDONNELL Department of Electronics and Computer Engineering University of Limerick National

More information

2 The Supervisor-Worker Pattern

2 The Supervisor-Worker Pattern The Supervisor-Worker Pattern Sebastian Fischmeister and Wolfgang Lugmayr Distributed Systems Group Argentinierstr. 8/184-1, A-1040 Vienna Technical University of Vienna, Austria {fischmeister,lugmayr}@infosys.tuwien.ac.at

More information

Towards Better Support for Pattern-Oriented Software Development

Towards Better Support for Pattern-Oriented Software Development Towards Better Support for Pattern-Oriented Software Development Dietrich Travkin Software Engineering Research Group, Heinz Nixdorf Institute & Department of Computer Science, University of Paderborn,

More information

Metamodeling. Janos Sztipanovits ISIS, Vanderbilt University

Metamodeling. Janos Sztipanovits ISIS, Vanderbilt University Metamodeling Janos ISIS, Vanderbilt University janos.sztipanovits@vanderbilt.edusztipanovits@vanderbilt edu Content Overview of Metamodeling Abstract Syntax Metamodeling Concepts Metamodeling languages

More information

Operational Semantics. One-Slide Summary. Lecture Outline

Operational Semantics. One-Slide Summary. Lecture Outline Operational Semantics #1 One-Slide Summary Operational semantics are a precise way of specifying how to evaluate a program. A formal semantics tells you what each expression means. Meaning depends on context:

More information

UML Specification and Correction of Object-Oriented Anti-patterns

UML Specification and Correction of Object-Oriented Anti-patterns UML Specification and Correction of Object-Oriented Anti-patterns Maria Teresa Llano and Rob Pooley School of Mathematical and Computer Sciences Heriot-Watt University Edinburgh, United Kingdom {mtl4,rjpooley}@hwacuk

More information

compute event display

compute event display Programming Connectors In an Open Language Uwe Amann, Andreas Ludwig, Daniel Pfeifer Institut fur Programmstrukturen und Datenorganisation Universitat Karlsruhe Postfach 6980, Zirkel 2, 76128 Karlsruhe,

More information

Transforming UML Collaborating Statecharts for Verification and Simulation

Transforming UML Collaborating Statecharts for Verification and Simulation Transforming UML Collaborating Statecharts for Verification and Simulation Patrick O. Bobbie, Yiming Ji, and Lusheng Liang School of Computing and Software Engineering Southern Polytechnic State University

More information

Comparative Analysis of Architectural Views Based on UML

Comparative Analysis of Architectural Views Based on UML Electronic Notes in Theoretical Computer Science 65 No. 4 (2002) URL: http://www.elsevier.nl/locate/entcs/volume65.html 12 pages Comparative Analysis of Architectural Views Based on UML Lyrene Fernandes

More information

2.5.1: Reforms in Continuous Internal Evaluation (CIE) System at the Institutional Level

2.5.1: Reforms in Continuous Internal Evaluation (CIE) System at the Institutional Level D Y Patil Institute of Engineering and Technology, Ambi, Pune Address:Sr.No.124 & 126, A/p- Ambi, Tal-Maval, MIDC Road, TalegaonDabhade, Pune-410506, Maharashtra, India Tel: 02114306229, E-mail : info@dyptc.edu.in

More information

Review Software Engineering October, 7, Adrian Iftene

Review Software Engineering October, 7, Adrian Iftene Review Software Engineering October, 7, 2013 Adrian Iftene adiftene@info.uaic.ro Software engineering Basics Definition Development models Development activities Requirement analysis Modeling (UML Diagrams)

More information

System Assistance in Structured Domain Model Development*

System Assistance in Structured Domain Model Development* System Assistance in Structured Domain Model Development* Susanne Biundo and Werner Stephan German Research Center for Artificial Intelligence (DFKI) Stuhlsatzenhausweg 3 D-66123 Saarbriicken, Germany

More information

Spemmet - A Tool for Modeling Software Processes with SPEM

Spemmet - A Tool for Modeling Software Processes with SPEM Spemmet - A Tool for Modeling Software Processes with SPEM Tuomas Mäkilä tuomas.makila@it.utu.fi Antero Järvi antero.jarvi@it.utu.fi Abstract: The software development process has many unique attributes

More information

CSCD 330 Network Programming

CSCD 330 Network Programming CSCD 330 Network Programming Lecture 12 More Client-Server Programming Winter 2019 Reading: References at end of Lecture 1 Introduction So far, Looked at client-server programs with Java Sockets TCP and

More information

Models in Conflict Towards a Semantically Enhanced Version Control System for Models

Models in Conflict Towards a Semantically Enhanced Version Control System for Models Models in Conflict Towards a Semantically Enhanced ersion Control System for Models Kerstin Altmanninger Department of Telecooperation, Johannes Kepler University Linz, Austria kerstin.altmanninger@jku.at

More information

Modeling Crisis Management System With the Restricted Use Case Modeling Approach

Modeling Crisis Management System With the Restricted Use Case Modeling Approach Modeling Crisis Management System With the Restricted Use Case Modeling Approach Gong Zhang 1, Tao Yue 2, and Shaukat Ali 3 1 School of Computer Science and Engineering, Beihang University, Beijing, China

More information

Recalling the definition of design as set of models let's consider the modeling of some real software.

Recalling the definition of design as set of models let's consider the modeling of some real software. Software Design and Architectures SE-2 / SE426 / CS446 / ECE426 Lecture 3 : Modeling Software Software uniquely combines abstract, purely mathematical stuff with physical representation. There are numerous

More information