Správa projektů a testování

Podobné dokumenty
Testování, ladění a dokumentace programů

Nástroje pro tvorbu programů

Nástroje pro tvorbu programů

Nástroje pro tvorbu programů

Ant aneb Ferda Mravenec, práce všeho druhu

Obsah přednášky. Vývoj aplikací řízený testy. Extrémní programování (XP) Požadavky na nástroje pro XP. Testování aplikací

Semin aˇr Java N astroje Radek Koˇc ı Fakulta informaˇcn ıch technologi ı VUT Bˇrezen 2012 Radek Koˇc ı Semin aˇr Java n astroje 1/ 42

Vývoj aplikací řízený testy. Miroslav Beneš

PROGRAMOVACÍ TECHNIKY

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

Softwarové komponenty a Internet

Principy objektově orientovaného programování

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

Komponenty v.net. Obsah přednášky

JAVA. Nástroje v JDK

Úvod. Únor Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 23

JAVA. Nástroje v JDK

9. Ladění a testování programů. booleovský výraz

3 KTE / ZPE Informační technologie

Algoritmizace a programování

JAVA V Anotace Java, zimní semestr ,2014 1

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

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

Správa paměti. doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 /

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

JAVA V Anotace Java, zimní semestr ,2016 1

Úvod. Leden Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 22

3. Základy programovacího jazyka Java

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Vývoj programů. ÚVOD DO OPERAČNÍCH SYSTÉMŮ

Základy programování Zdrojový kód, dokumentace, týmová práce

JAVA V Anotace Java, zimní semestr ,2015 1

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

ČÁST 1. Základy 32bitového programování ve Windows

Abstraktní datové typy: zásobník

1 Webový server, instalace PHP a MySQL 13

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

Příloha 6. Palety nástrojů

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

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

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

První kroky s METEL IEC IDE

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

Vývojové nástroje jazyka Java

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

12. Dokumentace a distribuce aplikací. speciálních dokumentačních komentářích vpisovaných před

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

Architektura COM. Historie Component Object Model (COM) Komunikace s komponentami Rozhraní komponent COM komponenty v.net.

8 Třídy, objekty, metody, předávání argumentů metod

Úvod Vývojová prostředí Štábní kultura Dokumentace Konec. Programování v C# Prostředí a doporučení 1 / 39

Operační systémy. Cvičení 3: Programování v C pod Unixem

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

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Úvod. Programovací paradigmata

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

Tvorba informačních systémů

TÉMATICKÝ OKRUH Softwarové inženýrství

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11

Základy programovaní 3 - Java. Unit testy. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 26.,27.

Testování. Zadání příkladu. Vytvoření kostry třídy. Obsah:

CPAN, tvorba a šíření softwaru v jazyce Perl. Petr Pajas Hejnice 2010

Programování v C++ 1, 1. cvičení

Programovací jazyk Java

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Seminář Java II p.1/43

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

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Testovací metoda. Testovací metoda. public class SimpleTest {

Skriptovací jazyky. Obsah

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Algoritmy I. Cvičení č.1 ALGI 2015/16

Obsah. Předmluva Začínáme: překlad, spuštění a ladění 27

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

1. Webový server, instalace PHP a MySQL 13

Úvod do programovacích jazyků (Java)

Programátorská příručka

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování. Předmět: Programování

Tvorba informačních systémů

WPA - Konfigurace Java EE aplikace (Maven, struktura war arch. kontejnerem Tomcat 8

KIV/ASWI 2007/2008 Konfigurační management

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Vývoj multiplatformní aplikace v Qt

Programování v Javě I. Leden 2008

11. Přehled prog. jazyků

Matematika v programovacích

Project management. Příprava projektu Zahájení High level plánování. Vykonávání Detailní plánování Vykonávání Řízení a monitorování

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

1 Návod na instalaci prostředí LeJOS-NXJ a přehrání firmwaru NXT kostky

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

Ing. Petr Ferschmann SoftEU s.r.o. Ing. Jindřich Vimr HSF s.r.o.

Systémy pro tvorbu digitálních knihoven

KTE / ZPE Informační technologie

Program. Organizace semináře Základní principy OOP Úvod do programovacího jazyka Java Distribuce

Aplikace s grafickým uživatelským rozhraním

RMI Remote Method Invocation

Doxygen. Jakub Břečka

JAVA Unit testing Java, zimní semestr

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Transkript:

Správa projektů a testování doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Programátorské nástroje Příprava zdrojových textů Překlad a sestavení programů Údržba verzí Řízení postupu při sestavování projektu Ladění programů Testování funkcí Testování výkonnosti Generování dokumentace Lokalizace Správa projektů 2 Integrovaná vývojový prostředí (IDE) Poskytují většinu uvedených funkcí současně Univerzální nebo specializovaná na konkrétní programovací jazyk y: Borland Pascal JBuilder, Eclipse, NetBeans, JCreator, Sun ONE MS Visual Studio, KDeveloper, SharpDevelop Správa projektů 3 Správa projektů 4 1

Příprava zdrojových textů Textové editory zvýraznění syntaxe (syntax highlighting) kontrola závorek vyhledávání a nahrazování soubor, projekt šablony a makra sbalení textu (folding) spolupráce se správou verzí : gvim, jedit Správa projektů 5 Správa projektů 6 Překlad a sestavení programů Překladače generování binárních modulů kontrola syntaxe sémantické kontroly upozornění na možné problémy inkrementální překlad podpora ladění Sestavovací programy spojení binárních modulů do spustitelného programu knihovny modulů Údržba verzí Vývoj v týmu sdílení zdrojových textů ochrana před současnými modifikacemi Vývoj různých verzí Verze pro různá cílová prostředí Vývojové verze 0.1, 1.1beta, 1.2RC3,... Archivace Možnost návratu po nevhodných změnách Zjišťení rozdílů ve verzích Správa projektů 7 Správa projektů 8 2

Údržba verzí Repository originální soubory změnové soubory + komentáře (diff) může být na sdíleném serveru nebo v síti Postup získání souborů ze serveru (checkout) práce v lokálním prostředí aktualizace změněných souborů (commit) Správa projektů 9 Správa projektů 10 Správa projektů Nezávislost na prostředí umístění knihoven, programů verze a varianty nástrojů (např. javac/jikes) Udržení konzistence sledování závislostí Optimalizace budování projektu vyhledání nejkratší cesty zpracování pouze změněných a na nich závisejících souborů Správa projektů Typické činnosti inicializace prostředí (adresáře, parametry,...) překlad a sestavení programů systematické testování generování dokumentace odstranění pracovních souborů vytváření archivů a distribucí instalace Správa projektů 11 Správa projektů 12 3

Správa projektů Nástroje dávky (.bat,.sh) nevhodné make řízení pomocí skriptu Makefile Ant řízení pomocí XML souboru (build.xml) možnost rozšiřování plugins (Java) Dávkové zpracování preloz.sh yacc o synt.cpp d synt.y lex o lex.cpp lex.l gcc o prekl synt.cpp lex.cpp main.cpp opakovaný překlad nezměněných souborů obtížná údržba při rozšiřování projektu Správa projektů 13 Správa projektů 14 Program make Sestavení cílových objektů na základě předpokladů Využití implicitních pravidel prog.cpp -> prog.o -> prog Makrodefinice SRCS = prog.cpp lex.cpp synt.cpp prog: $(SRCS) gcc o prog $(SRCS) LFLAGS = -l all: p4 par.o: par.c lex.c p4: par.o $(CC) -o p4 par.o clean: $(RM) par.c par.o lex.c allclean: clean $(RM) p4 dist: tar -czf p4.tgz Makefile lex.l par.y Správa projektů 15 Správa projektů 16 4

Program Ant Implementován v prostředí Java Možnost rozšiřování definované programátorské rozhraní přidávání dalších akcí Činnost se řídí souborem v XML build.xml Integrován do mnoha vývojových prostředí jedit, Eclipse,... <?xml version="1.0"?> <project name="p3" basedir="." default="compile"> <property name="build.compiler" value="jikes"/> <target name="compile"> <javac srcdir="." destdir="classes debug="true" deprecation="true" /> <target name="jar" depends="compile"> <jar jarfile="uloha3.jar" manifest="uloha3.mf compress="true" basedir="classes"/> Správa projektů 17 Správa projektů 18 <target name="all" depends="compile description="build everything."> <echo message="application built."/> <target name= run" depends="all"> <java classname="test" fork="true failonerror="true"> <classpath> <pathelement location="classes"/> </classpath> <arg file="g1.txt"/> </java> <target name="javadoc" description="building documentation."> <mkdir dir="apidoc"/> <javadoc packagenames="grammar.*" destdir="apidoc"> <sourcepath> <pathelement location="."/> </sourcepath> </javadoc> <target name="clean" description="clean all build products."> <delete> <fileset dir="."> <include name="**/*.class,**/*.java~"/> </fileset> </delete> <delete file="uloha3.jar"/> <delete dir="apidoc"/> </project> Správa projektů 19 Správa projektů 20 5

Ladění programů Ladicí výpisy Tisk do souboru Logování (log4j,...) možnost konfigurace Sledování stopy programu (trace) Analýza obsahu paměti po chybě Ladění programů Ladění běžícího programu na zdrojové / binární úrovni prohlížení a změna obsahu proměnných body zastavení (breakpoint) krokování výpočtu (step into / step over) podmíněné zastavení programu Ladění s inkrementálním překladem lokální změna programu a pokračování v ladění Správa projektů 21 Správa projektů 22 Testování programů Ruční testování náročné není opakovatelné snadno se přehlédnou chyby Automatické testování sada jednotkových testů (unit tests) systematické testování rozšiřování testů o reklamace generování testů Testování programů JUnit prostředí Java programátorské rozhraní pro tvorbu testů nástroje pro automatické provádění testů grafické rozhraní příkazový řádek, akce pro Ant využití reflexe pro vyhledání testů uvnitř tříd rozšíření pro testování webových aplikací, servletů,... Správa projektů 23 Správa projektů 24 6

JUnit import junit.framework.testcase; public class TestXYZ extends TestCase { } void setup() { } inicializace void teardown() { } finalizace void testx() { } krok testu asserttrue(podmínka), assertfalse( ) assertequals(x,y), assertnotnull(x) package cviceni3; import junit.framework.testcase; public class TestZlomek extends TestCase { protected Zlomek z1 = new Zlomek(1, 3); protected Zlomek z2 = new Zlomek(2, 6); protected Zlomek z3 = new Zlomek(2, 3); protected void setup() { } protected void teardown() { } public void testequals() { assertequals(z1, z1); assertequals(z1, z2); } public void testadd() { Zlomek result = Zlomek.plus(z1, z2); assertequals(result, z3); } } Správa projektů 25 Správa projektů 26 Testování výkonnosti Sledování počtu volání určitých funkcí Sledování času stráveného výpočtem různých částí programu podklad pro optimalizaci změnou algoritmu Nástroje: profilers gprof součást vývojových prostředí Generování dokumentace Oddělená dokumentace problémy s aktualizací nutnost uvádět kompletní specifikace Dokumentace jako součást zdrojového textu snadnější údržba (např. včetně verzování) literární programování (D. Knuth) dokumentační značky - javadoc Správa projektů 27 Správa projektů 28 7

Program javadoc Dokumentace ve speciálních poznámkách /** * Dokumentační poznámka */ Dokumentační značky + HTML @author <a href=mailto:joe@mit.edu>joe</a> @param x Popis parametru x Rozšíření generování zdrojových textů pomocí šablon - XDoclet /** * Konstruktor zlomku. * Naplní čitatele a jmenovatele a převede * zlomek do normalizovaného tvaru. * @param citatel Čitatel zlomku. * @param jmenovatel Jmenovatel zlomku. */ public Zlomek(int citatel, int jmenovatel) { this.citatel = citatel; this.jmenovatel = jmenovatel; normalizuj(); } Správa projektů 29 Správa projektů 30 Lokalizace úprava programů pro mezinárodní prostředí překlad textových řetězců extrakce textů překlad vložení zpět oddělení textů od programu např. soubory.properties v různých jazykových verzích knihovny tříd pro formátování přizpůsobení prostředí uživatele (Locale) Správa projektů 31 8