Domain-Specific Software Engineering Alex Adamec.

Slides:



Advertisements
Similar presentations
© Gerald Kotonya and Ian Sommerville Viewpoint-Oriented Requirements Methods.
Advertisements

Domain Engineering Silvio Romero de Lemos Meira
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
IT Requirements Capture Process. Motivation for this seminar Discovering system requirements is hard. Formally testing use case conformance is hard. We.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 8 Slide 1 System models.
Domain-Specific Software Engineering (DSSE). Software Engineering Concerns  There are many of them  “Classical” software architecture research has focused.
SE 555 Software Requirements & Specification1 Use-Case Modeling: Overview and Context.
Intro to Domain-Specific Software Engineering
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 8 Slide 1 System models.
©Ian Sommerville 2000Software Engineering, 6/e, Chapter 71 System models l Abstract descriptions of systems whose requirements are being analysed.
SWE Introduction to Software Engineering
UML CASE Tool. ABSTRACT Domain analysis enables identifying families of applications and capturing their terminology in order to assist and guide system.
Creating Architectural Descriptions. Outline Standardizing architectural descriptions: The IEEE has published, “Recommended Practice for Architectural.
Viewpoint-oriented requirements methods. Objectives To explain the notion of viewpoints in RE To explain the notion of viewpoints in structured analysis.
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 8 Slide 1 System models.
1 / 26 CS 425/625 Software Engineering Architectural Design Based on Chapter 11 of the textbook [SE-8] Ian Sommerville, Software Engineering, 8t h Ed.,
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Domain-Specific Software Architecture
Course Instructor: Aisha Azeem
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Domain Specific Software Engineering (DSSE) Software Engineering, just as other engineering disciplines, needs to take into account of the different domain.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 7 Slide 1 System models l Abstract descriptions of systems whose requirements are being.
What is Software Architecture?
Database System Development Lifecycle © Pearson Education Limited 1995, 2005.
UML - Development Process 1 Software Development Process Using UML (2)
Overview of the Database Development Process
Chapter 6 System Engineering - Computer-based system - System engineering process - “Business process” engineering - Product engineering (Source: Pressman,
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 7 Slide 1 System models l Abstract descriptions of systems whose requirements are being.
Chapter 4 System Models A description of the various models that can be used to specify software systems.
System models Abstract descriptions of systems whose requirements are being analysed Abstract descriptions of systems whose requirements are being analysed.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Chapter 10 Architectural Design.
An Introduction to Software Architecture
Software Engineering Chapter 8 Fall Analysis Extension of use cases, use cases are converted into a more formal description of the system.Extension.
Software Requirements Engineering CSE 305 Lecture-2.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
©Ian Sommerville 1995/2000 (Modified by Spiros Mancoridis 1999) Software Engineering, 6th edition. Chapter 7 Slide 1 System models l Abstract descriptions.
Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about.
Architectural Design lecture 10. Topics covered Architectural design decisions System organisation Control styles Reference architectures.
Chapter 7 System models.
Architectural Design Yonsei University 2 nd Semester, 2014 Sanghyun Park.
System models l Abstract descriptions of systems whose requirements are being analysed.
Pertemuan 19 PEMODELAN SISTEM Matakuliah: D0174/ Pemodelan Sistem dan Simulasi Tahun: Tahun 2009.
Modified by Juan M. Gomez Software Engineering, 6th edition. Chapter 7 Slide 1 Chapter 7 System Models.
Software Engineering, 8th edition Chapter 8 1 Courtesy: ©Ian Somerville 2006 April 06 th, 2009 Lecture # 13 System models.
Sommerville 2004,Mejia-Alvarez 2009Software Engineering, 7th edition. Chapter 8 Slide 1 System models.
1 Introduction to Software Engineering Lecture 1.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 7 Slide 1 Chapter 7 System Models.
Software Product Line Material based on slides and chapter by Linda M. Northrop, SEI.
CIS 112 Exam Review. Exam Content 100 questions valued at 1 point each 100 questions valued at 1 point each 100 points total 100 points total 10 each.
Chapter 6 – Architectural Design Lecture 1 1Chapter 6 Architectural design.
MODEL-BASED SOFTWARE ARCHITECTURES.  Models of software are used in an increasing number of projects to handle the complexity of application domains.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 8 Slide 1 System models.
1 / 26 CS 425/625 Software Engineering Architectural Design Based on Chapter 10 of the textbook [Somm00] Ian Sommerville, Software Engineering, 6 th Ed.,
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Basic Concepts and Definitions
21/1/ Analysis - Model of real-world situation - What ? System Design - Overall architecture (sub-systems) Object Design - Refinement of Design.
 To explain why the context of a system should be modelled as part of the RE process  To describe behavioural modelling, data modelling and object modelling.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 8 Slide 1 System models.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Engineering, 7th edition. Chapter 8 Slide 1 System models.
Abstract descriptions of systems whose requirements are being analysed
Object-Oriented Analysis
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
An Introduction to Software Architecture
Chapter 5 Architectural Design.
Presentation transcript:

Domain-Specific Software Engineering Alex Adamec

Overview Domain-Specific Software Engineering (DSSE) – An approach to software engineering that is characterized by extensively leveraging existing domain knowledge. Guided by the observation that certain problems belong to specific, well-defined problem classes, or domains

Advantages of DSSE The requirements for a system can be divided into those common across the application domain and those unique to the system. The common requirements can be tied to the existing canonical solutions, allowing developers to focus on the remaining subset. The system implementation, testing, and maintenance are simplified because of the already-existing reusable software “assets”. Engineering knowledge, design models, implemented subsystems, test suites, deployment scripts, etc. Development activities are simplified through software tools and environments that are specialized for the domain.

Advantages of DSSE Any concerns are more easily communicated among the system’s stakeholders because of the shared understanding, experience, and even terminology, which may have been developed incrementally and may be specific to the application domain.

Similar Problems, Similar Solutions The principal task of the software engineer is to find a way of taking the problem description, which exists in the problem space, and mapping it to a software system, which exists in the solution space. Is difficult in general because the two spaces are usually characterized by different concepts, with different terminologies and different properties Also difficult because, in general, there are often many possibilities for addressing a given software requirement

Traditional Software Engineering Any given software development problem can be solved in a large number of ways.

Architecture-Based Software Engineering Any given software development problem can be solved by a finite number of software architectures.

Domain-Specific Software Engineering Some software development problems belong to specific classes of problems for which known (partial) architectural and implementation solutions exist. Those partial architectures are then tailored to the specific problem at hand and implemented using well-understood techniques.

Similar Problems, Similar Solutions Within each domain, effective (partial) architectural solutions can be identified and documented. Known as reference architectures Instead of developing new architectures for each new problem in the domain, solutions can be derived by tailoring the reference architecture. Commonalities across the different problems in the same domain allow engineers to develop solid intuitions about a system before it is built, evaluate their solutions, and leverage a large number of powerful tools for generating and evaluating system implementations.

Three Principal Concerns of DSSE Domain – scopes the discourse, the problem space, and the solution space. Business Goals – motivate the work and help engineers decide why they are doing what they are doing. Technology – used to facilitate development and reuse of domain- and business-specific assets. Domain Scopes the Problem Space Core Competencies DSSE Product Lines Solutions and Tools Specialized for a Domain General Infrastructure Business Goals and Motivation Technology General Solutions and Tools

Domain Establishes a problem space Has defined characteristics, a vocabulary, a motivation (why this domain exists), and so on Must have a domain to constrain the problem space and focus development

Business Largely concerned with human goals: improving people’s quality of life through the creation of new products, attaining money, power, notoriety, and so on These goals motivate people to solve problems

Technology Comprises tools, applications, reusable components, infrastructure, and methods that can be applied generally. “Solutions without problems” Must have a variety of technological solutions to bring to bear on a domain

Domain + Business Expertise and core competencies Business organizations specialize their skills to optimize them for particular domains. E.g. building airplanes

Business + Technology Business organizations will acquire and develop technologies that are relevant to its overall goals but that can be applied to many domains. E.g. A software development company will have an infrastructure containing compilers, operating systems, networks, office applications, etc. that do not apply specifically to any domain

Domain + Technology Contains tools, methods, and architectures that are specifically applicable to a particular domain, but are independent of any particular business goal. E.g. A programming language and compiler that are specifically developed for building aircraft software would fall into this category.

Domain + Business + Technology Core of domain-specific software engineering: business goals motivating the identification and creation of a solution in the problem space of a domain, facilitated by the use of technology

Key Architecturally Relevant Areas of DSSE Domain-Specific Software Architecture Product Lines

Domain-Specific Software Architecture A domain-specific software architecture (DSSA) comprises: A reference architecture, which describes a general computational framework for a significant domain of applications A component library, which contains reusable chunks of domain expertise An application configuration method for selecting and configuring components within the architecture to meet particular application requirements

Domain Model A representation of what happens in an application domain Includes the functions being performed, the objects (entities) performing the functions and those on which the functions are performed, and the data and information flowing among the entities and/or functions The objective of a domain model is to Standardize the given problem domain’s ontology (its terminology and semantics) Provide the basis for standardized descriptions of problems to be solved in the domain Comprised of several pieces of information that together present a useful picture of the domain assets and their interrelationships Domain dictionary Information model Feature model Operational model

Domain Model Defines vocabulary for the domain Describes the entities and data in the domain Defines how entities and data combine to provide features Defines how data and control flow through entities

Domain Dictionary Represents the identification and definitions of terms used in the domain model

Information Model A result of context analysis and information analysis Ensures that the DSSA employs appropriate data abstractions and decompositions A collection of multiple models that may be used in different organizations and different DSSA’s Context Information Diagram Entity/Relationship (ER) Diagram Object Diagram

Context Information Diagram Defines high-level entities Defines what is considered inside and outside the domain (or subdomains) Defines relationships and high-level flows

Entity Relationship Diagram Defines entities and cardinal relationships between them

Object Diagram Defines attributes and operations on entities

Feature Model Results from feature analysis Considered to be the chief means of communication between the customers and the developers of new applications Explicitly delineates the commonalities and differences among systems in the domain A collection of several models Feature Relationship Diagram Use-Case Diagram Representational Model

Feature-Relationship Diagram Describes overall mission operations of a system Describes major features and decomposition

Use-Case Diagram Defines use cases within the domain

Representational Model Defines how information is presented to human users

Operational Model A result of operational analysis Foundation upon which the software designer begins the process of understanding How to provide the features for a particular system in the domain How to make use of the entities identified in the resulting domain model Identifies the key operations (functions) that occur within the domain, the data exchanged among those operations, and the commonly occurring sequences of those operations How applications within a domain work Three representative types of diagrams used within the operational model are Data-Flow Diagram Control-Flow Diagram State-Transition Diagram

Data-Flow Diagram Focuses on data flow between entities with no notion of control

Control Flow Diagram Focuses on control flow between entities separate from data flow

State-Transition Diagram Focuses on states of systems and transitions between them

Canonical (Reference) Requirements Requirements that apply across the entire domain captured by a DSSA Will be incomplete because they must be general enough to capture the variations that occur across individual systems and because individual systems also will introduce their own requirements Directly facilitate the mapping of the requirements for each system within a given domain to the canonical domain-specific solution Derived from the customer needs statement Contain Functional requirements – defining characteristics of the problem space Non-functional requirements – limiting characteristics (constraints) in the solution space Design requirements E.g. Architectural style, user interface style Implementation requirements E.g. Hardware platform, programming language

Canonical (Reference) Requirements Must distinguish among three types of requirements Mandatory requirements – applicable to all systems in the domain Operational requirements – applicable to a certain set of systems within the domain Variable requirements – application-specific and may be unknown at the time the DSSA is formulated

Reference Architecture The set of principal design decisions that are simultaneously applicable to multiple related systems, typically within an application domain, with explicitly defined points of variation Three classes of reference architectures Complete single-product architecture Relatively weak because they do not provide much engineering guidance as to how to use the reference architecture to create new systems and they do not explicitly call out variation points Incomplete invariant architecture Partial architecture that is complete and unchanging among all products Parts of the architecture that vary from product to product are left unspecified, although some design guidance might be provided Invariant architecture with explicit variation Can be used to simultaneously capture both the invariants and the variants in products in the domain For each variation point, permitted alternatives are specified in detail

Reference Architecture