Linguistic Architecture

Similar documents
Webdev: Building Django Apps. Ryan Fox Andrew Glassman MKE Python

MIT AITI Python Software Development Lab DJ1:

Graphene Documentation

Python. Django. (Web Application Framework - WAF) PyCharm. (Integration Development Environment - IDE)

Technology modeling. Ralf Lämmel Software Languages Team University of Koblenz-Landau

Building a Django Twilio Programmable Chat Application

Django starting guide

Django: Views, Templates, and Sessions

Building APIs with Django and Django Rest Framework

Quoting Wikipedia, software

Django urls Django Girls Tutorial

Technology modeling with MegaL in software development

Django Phantom Theme Documentation

DJOAuth2 Documentation

Technology modeling. Ralf Lämmel Software Languages Team University of Koblenz-Landau

Djam Documentation. Release Participatory Culture Foundation

MapEntity Documentation

Gunnery Documentation

Programming Technologies for Web Resource Mining

django-dajax Documentation

Django File Picker Documentation

The Django Web Framework Part II. Hamid Zarrabi-Zadeh Web Programming Fall 2013

Tangent MicroServices Documentation

django SHOP Release dev0

Django Web Framework: A Comprehensive Introduction and Step by Step Installation

django-allauth-2fa Documentation

open-helpdesk Documentation

First Django Admin Documentation

django-baton Documentation

Django File Picker Documentation

django-templation Documentation

django-dajaxice Documentation

Accelerating Information Technology Innovation

Django by errors. Release 0.2. Sigurd Gartmann

django-model-report Documentation

Bricks Documentation. Release 1.0. Germano Guerrini

Collaboration in Teams: Simulink Projects Demonstration

Trunk Player Documentation

Django Admin Sortable Documentation

Reminders. Full Django products are due next Thursday! CS370, Günay (Emory) Spring / 6

django-auditlog Documentation

Mock exam Prof. Dr. Ralf Lämmel University of Koblenz-Landau Faculty of Computer Science Software Languages Team

CE419 Web Programming. Session 15: Django Web Framework

django cms Documentation

neo4django Documentation

Django Map Widgets Documentation

Back-end development. Outline. Example API: Chatter. 1. Design an example API for Chatter. Tiberiu Vilcu.

Python Schema Generator Documentation

wagtailtrans Documentation

Tomasz Szumlak WFiIS AGH 23/10/2017, Kraków

web frameworks design comparison draft - please help me improve it focus on Model-View-Controller frameworks

Tablo Documentation. Release Conservation Biology Institute

Megamodels of software systems (Models of the linguistic architecture)

django-users2 Documentation

Django QR Code Documentation

django-autocomplete-light Documentation

7401ICT eservice Technology. (Some of) the actual examination questions will be more precise than these.

django-baton Documentation

정재성

Runtime Dynamic Models Documentation Release 1.0

SagePay payment gateway package for django-oscar Documentation

Awl Documentation. Release Christopher Trudeau

Django-danceschool Documentation

django-oscar-paypal Documentation

Contents. 1. What is otree? 2. The Shell and Python. 3. Example: simple questionnaire. 4. Example: public goods game. 5. Test bots.

Django Test Utils Documentation

django-sticky-uploads Documentation

django-avatar Documentation

django-push Documentation

BriCS. University of Bristol Cloud Service Simulation Runner. User & Developer Guide. 1 October John Cartlidge & M.

django-avatar Documentation

django-rest-framework-datatables Documentation

Lightweight. Django USING REST, WEBSOCKETS & BACKBONE. Julia Elman & Mark Lavin

Django OAuth Toolkit Documentation

<Insert Picture Here> Oracle SQL Developer: PL/SQL Support and Unit Testing

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer

Rapid Development with Django and App Engine. Guido van Rossum May 28, 2008

Bambu API Documentation

django-intranet Documentation

django-embed-video Documentation

django-cron Documentation

django-telegram-bot Documentation

Django MFA Documentation

The Design of Short Message Server with Linux Machine

django-scaffold Documentation

webkitpony Documentation

django-jenkins Documentation

django-teamwork Documentation

django-embed-video Documentation

django-cms-search Documentation

django-image-cropping Documentation

Diving into Big Data Workshop

Spade Documentation. Release 0.1. Sam Liu

Lotus IT Hub. Module-1: Python Foundation (Mandatory)

Django IPRestrict Documentation

Migrating traditional Java EE applications to mobile

Python & Spark PTT18/19

Real Application Security Administration

Moving to a Sustainable Web Development Environment for Library Web Applications

Django Standalone Apps

Transcription:

Linguistic Architecture Modeling Software Knowledge SoftLang Team, University of Koblenz-Landau Prof. Dr. Ralf Lämmel Msc. Johannes Härtel Msc. Marcel Heinz

Outline Motivating Software Documentation Classic Software Documentation Megamodel-based Documentation Introducing MegaL JAXB Sketch Megamodel

Motivation Brainstorming Why do I need to document? Joe, the programmer

Motivation Problems with a lack of documentation. Why do I need to document? Missing Expertise. High costs for introducing new technologies. Exhaustion. Job Security? Vendor lock in (dependency on a software vendor). Joe, the programmer

Motivation Brainstorming How should I document software? Joe, the programmer

Modeling Software Viewpoints The notion of viewpoints: A viewpoint describes the types of entities and relationships that are used to model a system. Different viewpoints are necessary for distinct stakeholders. A viewpoint is described in a metamodel.

Modeling Software Viewpoints Architecture Descriptions contain different views. https://commons.wikimedia.org/wiki/file%3a4% 2B1_Architectural_View_Model.svg By mpan [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0 )], via Wikimedia Commons

Modeling Software Viewpoints Structure Usage Process

Modeling Software Viewpoints Structure Usage Process Von Gubaer aus der deutschsprachigen Wikipedia, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?cu rid=4725029

Modeling Software Viewpoints Structure Usage Process https://de.wikipedia.org/wiki/business_process_ Model_and_Notation#/media/File:BPMN-1.svg By Stkl [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0 )], via Wikimedia Commons

Software Documentation Elucidative Programming Literate Programming Tutorials https://docs.oracle.com/javase/8/docs/api/java /util/stream/stream.html

NoWeb - https://en.wikipedia.org/wiki/noweb Software Documentation Elucidative Programming Literate Programming Tutorials

s official Tutorials https://docs.djangoproject.com/en/1.11/intro/tutorial01/ Software Documentation Elucidative Programming Literate Programming Tutorials

Modeling Software Knowledge Problem What is <Technology> used for? How do I use <Technology> in the intended way? How does <Technology> work internally? What technologies are used by <Project> and how? Joe, the programmer

Modeling Software Knowledge Problem

Modeling Software Knowledge Problem Prescriptive vs. Descriptive Prescriptive models describe the properties holding for software that exists in the future. Specification purpose Target of code generation Descriptive models describe properties of existing software. Documentation purpose

Modeling Software Knowledge Big Picture @Softlang

MegaL Definitions: Megamodels describe models and their relationships. Linguistic Architecture describes software from a conceptual perspective based on megamodels. MegaL is short for Megamodeling Language and is used to code such conceptual knowledge. Implementations: MegaL-Text aims at tool support for modeling linguistic architecture of technologies and their usage in systems while emphasizing simplicity, modularity and well-formedness checking. Other: MegaL/Xtext aims at validating facts in an actual system through custom plugins. QegaL aims at processing and inferring facts from actual systems.

MegaL A Model for JAXB

Megamodel Brainstorming Task: Let us assume that we are supposed to write a web application using as a framework. What do we have to know to get started (Workflows, Facts)?

Agenda Megamodel 1. 2. 3. Conceptual Overview a. What are general concepts for web applications? b. Is there some usable documentation resource, where we can learn facts about? c. Based on which concepts does facilitate such principles? Project Overview a. What are the roles of artifacts in a project? b. What is the manifestation type of artifacts in a project? c. What languages are used? Scenarios a. Initialization b. Request to Response

Principle Architecture of Web Applications

s Documentation https://docs.djangoproject.com/en/2.0/ Tutorials Your first steps with Reference Guides Technical references for APIs, etc. Topic Guides Key concepts and topics How to Guides Recipes on key problems and use cases.

- Concepts Facilitated

- Concepts Facilitated

Agenda Megamodel 1. 2. 3. Conceptual Overview Project Overview a. What are the roles of artifacts in a project? b. What is the manifestation type of artifacts in a project? c. What languages are used? Scenarios a. Initialization b. Request to Response

We need a Demo!

- Initialization > pip install > python >> import django >> print (django.get_version()) 2.0 Install Initialize Project Initialize App Run Server

> django-admin startproject poll_analysis - Initialization Install Initialize Project Initialize App Run Server Below current folder. Below poll_analysis. Project vs. App: The project holds configuration while the app is the actual program executed on the web. One project can have multiple apps.

> python manage.py startapp poll_analysis_app - Initialization Below poll_analysis_app: Install Initialize Project Initialize App Run Server Project vs. App: The project holds configuration while the app is the actual program executed on the web. One project can have multiple apps.

- Initialization Install Initialize Project Initialize App Run Server Project and App can be initialized at once using IDEs like PyCharm.

> cd poll_analysis > python manage.py runserver - Initialization See http://127.0.0.1:8000/ Install Initialize Project Initialize App Run Server

Concepts behind Python scripts

Concepts behind Python scripts Where is the Controller?

Concepts behind Python scripts Where is the Controller? Model - Template - View Design Pattern (see FAQ)

Manifestation Types

Languages

MegaL

Agenda Megamodel 1. 2. 3. Conceptual Overview Project Overview Scenarios a. Initialization b. Request to Response

MegaL Initialization

MegaL Initialization

-The Polls App View I. Routing I. Model Setup Model API Admin View II. Routing II. from django.http import HttpResponse def index(request): return HttpResponse("Hello world!") poll_analysis_app/views.py

-The Polls App View I. Routing I. Model Setup Model API Admin View II. Routing II. from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('poll/', include('poll_analysis_app.urls')) ] Design the URL fragments at poll_analysis/urls.py. Dispatch the route to the app s routing.

Create poll_analysis_app/urls.py. -The Polls App from django.urls import path View I. Routing I. Model Setup Model API Admin View II. Routing II. from. import views urlpatterns = [ path('', views.index, name='index'), ]

from django.db import models -The Polls App View I. Routing I. Model Setup Model API Admin View II. Routing II. class Question(models.Model): question_text = models.charfield(max_length=200) pub_date = models.datetimefield('date_published') class Choice(models.Model): question = models.foreignkey(question, on_delete=models.cascade) choice_text = models.charfield(max_length=200) votes = models.integerfield(default=0) Edit poll_analysis_app/model.py.

-The Polls App View I. Routing I. Model Setup Model API Admin View II. Routing II. Project Setting Possibilities in <project>/settings.py a. ENGINE: i. default: django.db.backends.sqlite3 ii. django.db.backends.postgresql iii. django.db.backends.mysql iv. django.db.backends.oracle v. etc. b. NAME: i. default: NAME = os.path.join(base_dir, db.sqlite3 ) c. INSTALLED_APPS: i. django.contrib.admin ii. django.contrib.auth iii. django.contrib.contenttypes iv. django.contrib.sessions v. django.contrib.messages vi. django.contrib.staticfiles

Edit poll_analysis/settings.py -The Polls App View I. Routing I. Model Setup Model API Admin View II. Routing II.

-The Polls App > python manage.py migrate Initialize the database according to poll_analysis/settings.py View I. Routing I. Model Setup Model API Admin View II. Routing II.

-The Polls App View I. Routing I. Model Setup Model API Admin View II. Routing II. Migrations are committed to the version control system and shipped with applications to aid other developers and in production. > python manage.py makemigrations poll_analysis_app Create database migration for changes to the model. > python manage.py migrate Execute database migration. > python manage.py check Check for problems without actually modifying your database. > python manage.py sqlmigrate poll_analysis_app 0001 Print SQL Statements: Which tables are created? Which fields are added to tables? etc.

Model and Database - Correspondence

DB schema - A Transient > python manage.py sql polls

> python manage.py shell -The Polls App View I. Routing I. Model Setup Model API Admin View II. Routing II. >>> from poll_analysis_app.models import Question, Choice >>> Question.objects.all() <QuerySet [<Question: Question object (1)>]> >>> from django.utils import timezone >>> q = Question(question_text="What's the best programming language?", pub_date=timezone.now()) >>> q.save() >>> Question.objects.all() <QuerySet [<Question: Question object (1)>, <Question: Question object (2)>]> >>> q.question_text = "What is the best language?" >>> q.save() >>> quit() Interactive Model API

> python manage.py createsuperuser -The Polls App Add a superuser after entering name, email and password. > python manage.py runserver View I. Routing I. Model Setup Model API Admin View II. Routing II. Run the server to inspect administration at http://127.0.0.1:8000/admin/

-The Polls App View I. Routing I. Model Setup Model API Admin View II. Routing II.

Add a generic list view for displaying questions on the index page by adding this snippet to poll_analysis_app/views.py -The Polls App View I. Routing I. Model Setup Model API Admin View II. Routing II. Constrain the displayed list of questions.

-The Polls App HTML template templates/poll_analysis/index.html for the list view at the index page. View I. Routing I. Model Setup Model API Admin View II. Routing II.

-The Polls App View I. Routing I. Model Setup Model API Admin View II. Routing II. Python-like statements embedded into HTML.

-The Polls App View I. Routing I. Model Setup Model API Admin View II. Routing II. Embedding String expressions that are evaluated at runtime.

-The Polls App View I. Routing I. Model Setup Model API Admin View II. Routing II. Linking to defined routes, e.g., to the details view.

Add a generic detail view for poll results of a single question at poll_analysis_app/views.py -The Polls App View I. Routing I. Model Setup Model API Admin View II. Routing II. Add a template at templates/poll_analysis/results.html

-The Polls App View I. Routing I. Model Setup Model API Admin View II. Routing II. A question object is the input.

-The Polls App Add a form template for voting to templates/poll_analysis/detail.html View I. Routing I. Model Setup Model API Admin View II. Routing II.

Add a custom function for voting to poll_analysis_app/views.py -The Polls App View I. Routing I. Model Setup Model API Admin View II. Routing II.

A post request with the vote and the question s ID are input. -The Polls App View I. Routing I. Model Setup Model API Admin View II. Routing II.

provides shortcuts for error handling. -The Polls App View I. Routing I. Model Setup Model API Admin View II. Routing II.

-The Polls App View I. Routing I. Model Setup Model API Admin View II. Routing II.

-The Polls App Edit the routes for the app at poll_analysis_app/urls.py View I. Routing I. Model Setup Model API Admin View II. Routing II.

-The Polls App View I. Routing I. Model Setup Model API Admin View II. Routing II. Every route is given a URL fragment and a view operation.

Reference resolution to routes based on names. -The Polls App View I. Routing I. Model Setup Model API Admin View II. Routing II. Pretty references in templates. Pretty references at views.

- View Namespaces There may be more than one application per website. Add namespaces by adding, e.g. app_name = poll_analysis to poll_analysis_app/urls.py Refer to namespaces as follows: <li><a href="{% url 'poll_analysis:detail' question.id %}">{{ question.question_text }}</a></li>

MegaL

MegaL

MegaL

-Beyond Integrate static web content. Prettify the content using CSS. Test model and view code. Customize Administration pages.

MegaL Actually writing megamodels is complex. The modularization assumes the following structure: -Beyond

Summary MegaL can be used to share knowledge on technologies. The root entity types are Technologies, Languages, Artifacts and Concepts. Such knowledge on artifacts can be derived from projects. Visualized megamodels can enhance IDEs. See http://softlang.wikidot.com/mega for papers and ongoing work.