Case Studie. Ing. Tomáš Černý M.S.C.S.

Podobné dokumenty
Key Word In Context. souborové FileIO a konzolové ConsoleIO. II. HLAVNÍ PROGRAM A PODPROGRAMY SE SDÍLENOU

1. Téma 12 - Textové soubory a výjimky

Principy objektově orientovaného programování

Abstraktní datové typy: zásobník

Programování v Javě I. Únor 2009

Algoritmizace a programování

Programování v Javě I. Leden 2008

Syntaxí řízený překlad

Datové struktury. alg12 1

Projekty pro výuku programování v jazyce Java

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Úvod do programování - Java. Cvičení č.4

Distribuované systémy a výpočty

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Java a XML. 10/26/09 1/7 Java a XML

KTE / ZPE Informační technologie

Iterator & for cyklus

5 Rekurze a zásobník. Rekurzivní volání metody

Vláknové programování část V

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

Algoritmizace a programování

PREPROCESOR POKRAČOVÁNÍ

KTE / ZPE Informační technologie

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

public class Karel { private int position; public boolean issmiling; public int getposition() { return position;

Řídicí struktury. alg3 1

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016

Konstruktory překladačů

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE STRUKTURA PŘEKLADAČE

Základní pojmy. Matice(řádky, sloupce) Matice(4,6) sloupce

Informace k novému vydání učebnice 2015 Manažerské účetnictví nástroje a metody (2. aktualizované a přepracované vydání) OBSAH 2015

Aplikační rozhraní pro geografickou datovou sadu židovských hřbitovů

Hiearchical MVC (Model-view-controller) vs. PAC (Presentation-abstraction-control)

Práce se soubory v Javě

6. PRÁCE S DATOVÝMI PROUDY

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

RMI Remote Method Invocation

InputStream. FilterInputStream

Datové struktury. Obsah přednášky: Definice pojmů. Abstraktní datové typy a jejich implementace. Algoritmizace (Y36ALG), Šumperk - 12.

PROGRAMOVÁNÍ V C++ CVIČENÍ

Semin aˇr Java V yjimky Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Unor 2008 Radek Koˇc ı Semin aˇr Java V yjimky 1/ 25

Zapouzdření. Tomáš Pitner, upravil Marek Šabo

Soubor jako posloupnost bytů

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

ANT. Aplikační programování v Javě (BI-APJ) - 1 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

NIO. Aplikační programování v Javě (BI-APJ) - 12 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Typický prvek kolekce pro české řazení

Podmínky na zápočet. Java, zimní semestr

1. Programování, typy programovacích jazyků, historie.

Třídy, polymorfismus. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Java - výjimky. private void vstup() throws IOException {... }

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 3.4.

Seminář Java II p.1/43

Textové soubory. alg9 1

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

VIII. Seminář Java VIII p.1/36

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Úvod do programovacích jazyků (Java)

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

3 KTE / ZPE Informační technologie

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

1. Programování proti rozhraní

Java Výjimky Java, zimní semestr

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

Umělá inteligence. Příklady využití umělé inteligence : I. konstrukce adaptivních systémů pro řízení technologických procesů

Chain of responsibility

SÁM O SOBĚ DOKÁŽE POČÍTAČ DĚLAT JEN O MÁLO VÍC NEŽ TO, ŽE PO ZAPNUTÍ, PODOBNĚ JAKO KOJENEC PO PROBUZENÍ, CHCE JÍST.

8. přednáška: Soubory a proudy

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Třídy a objekty -příklady

Technologie JavaBeans

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

Abstraktní třída a rozhraní

C# konzole Program emoce

ÚVODNÍ ZNALOSTI. datové struktury. správnost programů. analýza algoritmů

IRAE 07/08 Přednáška č. 1

Příkazy a řídicí struktury v Javě. Tomáš Pitner, upravil Marek Šabo

Vytváření a použití knihoven tříd

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Observer. Klasifikace. Alias. Smysl. Potřeba sledování změn objektu a notifikace. Obdoba systému událostí (C#, Java) vlastními prostředky

JAVA Unit testing Java, zimní semestr

Čipové karty Lekařská informatika

16. února 2015, Brno Připravil: David Procházka

MAGIS MES Monitoring výroby on-line. Sledování výroby v reálném čase v režimu Start - Stop

Programovací jazyk Java

Návrhové vzory OMO, LS 2014/2015

Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/

JAVA Unit testing Java, zimní semestr

součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:

Zápis programu v jazyce C#

Implementační rozdíly ve vývoji IS při použití bezschémové a relační databáze

10 Generické implementace

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

Transkript:

Case Studie Ing. Tomáš Černý M.S.C.S.

Studie Key Word in Context = KWIC Kompilátory Vícevrstvé systémy s různým druhem stylů a vrstev Registrační systém Media systém Social systém

Key Word in Context Vyhledávací systém Vstup: Seřazená množina řádků Řádek je seřazená množina slov Slovo je seřazená množina znaků Výstup: Seznam všech cyklicky posunutých řádků v abecedním pořadí

Key Word in Context Úloha je učební nástroj Umožňuje poukázat na efekty různých arch. stylů

Key Word in Context Vstup: GOPAS Architektury Soft. Systémů Key Word in Context Výstup: Architektury Soft. Systémů GOPAS Context Key Word in GOPAS Architektury Soft. Systémů in Context Key Word Key Word in Context Soft. Systémů GOPAS Architektury Systémů GOPAS Architektury Soft. Word in Context Key

Key Word in Context KWIC is an acronym for Key Word In Context,... page 1... Key Word In Context, the most common format for concordance lines. page 1... the most common format for concordance lines. page 1... is an acronym for Key Word In Context, the most common format... page 1 Wikipedia, The Free Encyclopedia page 0... In Context, the most common format for concordance lines. page 1 Wikipedia, The Free Encyclopedia page 0 KWIC is an acronym for Key Word In Context, the most... page 1 KWIC is an acronym for Key Word... page 1... common format for concordance lines. page 1... for Key Word In Context, the most common format for concordance... page 1 Wikipedia, The Free Encyclopedia page 0 KWIC is an acronym for Key Word In Context, the most common... page 1

Key Word in Context MAC Preview

Key Word in Context Kritéria: Změny v algoritmu jak posunujeme Změny v datové reprezentaci jak uloženy řádky Vylepšení funkcí interaktivní systém Výkonnost časová a paměťová Opětovné použití v jiných systémech Problém lze řešit například pomocí: Hlavního programu a podprogramů se sdílenou pamětí. Objektově-orientovaný styl Událostmi řízený systém Roury a filtry

Hlavního programu a podprogramy sdílená paměť

Hlavního programu a podprogramy sdílená paměť public class KWIC { private char[] chars_; private char[] shift_chars_; private int[] line_index_;.. public void input(string file) {..} public void circularshift() {..} public void alphabetizing() {..} public void output() {..}

Hlavního programu a podprogramy sdílená paměť.. public static void main(string[] args) { KWIC kwic = new KWIC(); if (args.length!= 1) { System.err.println( specify filename"); System.exit(1); } kwic.input(args[0]); kwic.circularshift(); kwic.alphabetizing(); kwic.output(); }

Key Word in Context Změny v algoritmu Změny v datové části Vylepšení funkcí Sdílená paměť??? Výkonnost? ADT Události Roury a filtry Re-use?

Key Word in Context Změny v algoritmu Změny v datové části Vylepšení funkcí Sdílená paměť - - Výkonnost + -(+) ADT Události Roury a filtry Re-use -

Abstraktní datový typ

Objektový styl Alphabetizer.java CircularShifter.java Input.java KWIC.java LineStorage.java Output.java

ADT public void execute(string file){ LineStorage lines = new LineStorage(); Input input = new Input(); CircularShifter shifter = new CircularShifter(); Alphabetizer alphabetizer = new Alphabetizer(); Output output = new Output(); } input.parse(file, lines); shifter.setup(lines); alphabetizer.alpha(shifter); output.print(alphabetizer);

Key Word in Context Změny v algoritmu Změny v datové části Vylepšení funkcí Sdílená paměť -? -? -(+)? Výkonnost +? Re-use -? ADT Události Roury a filtry

Key Word in Context Změny v algoritmu Změny v datové části Vylepšení funkcí Sdílená paměť - - - + -(+) - Výkonnost + + Re-use - + ADT Události Roury a filtry

Událostmi řízený systém

Události public class CircularShifter implements Observer {.. public class Alphabetizer implements Observer {.. public class LineStorageWrapper extends Observable{

Události public class LineStorageWrapper extends Observable{.. public synchronized void addobserver(observer o) { if (!obs.contains(o)) { obs.addelement(o); } }.. public void addline(string[] words){ lines_.addline(words); LineEvent event = new LineEvent(Event.ADD); setchanged(); notifyobservers(event); }

Události public void execute(string file) { LineStorageWrapper lines = new LineStorageWrapper(); LineStorageWrapper shifts = new LineStorageWrapper(); } Input input = new Input(); CircularShifter shifter = new CircularShifter(shifts); lines.addobserver(shifter); Alphabetizer alphabetizer = new Alphabetizer(); shifts.addobserver(alphabetizer); Output output = new Output(); input.parse(file, lines); output.print(shifts);

Key Word in Context Změny v algoritmu Změny v datové části Vylepšení funkcí Sdílená paměť ADT Události Roury a filtry - -? - +? -(+) -? Výkonnost + +? Re-use - +?

Key Word in Context Změny v algoritmu Změny v datové části Vylepšení funkcí Sdílená paměť ADT Události Roury a filtry - - + - + - -(+) - + Výkonnost + + - Re-use - + -(+)

Roury a Filtry

Roury a Filtry Alphabetizer.java CircularShifter.java Filter.java Input.java KWIC.java Output.java Pipe.java

Roury a Filtry public class Filter implements Runnable{ protected Pipe input; protected Pipe output;.. public class Pipe{ private PipedReader reader; private PipedWriter writer;

Roury a Filtry public void execute(string file){ Pipe incs = new Pipe(); Pipe csal = new Pipe(); Pipe alou = new Pipe(); FileInputStream in = new FileInputStream(file); Input input = new Input(in, incs); CircularShifter shifter =new CircularShifter(inCS,csAl); Alphabetizer alpha = new Alphabetizer(csAl, alou ); Output output = new Output(alOu ); } input.start();shifter.start(); alpha.start();output.start();

Key Word in Context Změny v algoritmu Změny v datové části Vylepšení funkcí Sdílená paměť ADT Události Roury a filtry - - +? - + -? -(+) - +? Výkonnost + + -? Re-use - + -(+)?

Key Word in Context Změny v algoritmu Změny v datové části Vylepšení funkcí Sdílená paměť ADT Události Roury a filtry - - + + - + - - -(+) - + + Výkonnost + + - - Re-use - + -(+) +

Software pro osciloskopy OO model o zmatek jak to vlastně patří dohromady Vícevrstvý systém o špatné hranice vrstev a funkční konflikty Roury a filtry o inženýrský pohled, ale špatný výkon Vylepšení pro roury a filtry o mnoho barevných rour, lepší výkon

Software pro osciloskopy

Software pro osciloskopy OO model o zmatek jak to vlastně patří dohromady

Software pro osciloskopy Vícevrstvý systém o špatné hranice vrstev a funkční konflikty

Software pro osciloskopy Roury a filtry o inženýrský pohled, ale špatný výkon

Software pro osciloskopy Vylepšení pro roury a filtry o mnoho barevných rour, lepší výkon

Kompilátory 1970 pipeline Lexikální analýza Syntaktická analýza Sémantická analýza Optimalizace Code

Kompilátory 1970 pipeline a tabulka symbolů

Kompilátory 1980 atributová gramatika a atributový rozkladový strom

Kompilátory Dnes Úložiště a tabule.

Vícevrstvé systémy s různým druhem stylů a vrstev Distribuované řízení pro chemické procesy. Kontrola cyklů, tlaku, toku, výšek, teploty a nabídka strategií pro cykly. Integrace s managementem továrny, informačním systémem a řízením strojů.

Vícevrstvé systémy s různým druhem stylů a vrstev

Vícevrstvé systémy s různým druhem stylů a vrstev 5 vrstev: Měření a řízení - OO model Monitorování a inspekce OO model Management procesu OO model Management továrny Úložiště Management organizce/firmy - Úložiště