diff --git a/lectures/revealjs/03-build-tools-and-some-testing.adoc b/lectures/revealjs/03-build-tools-and-some-testing.adoc index 777b5df5be7e6d8bbad65b6059a2e2873ed8b73d..2fc35f1cf5103d496ac3575b8749a51846946984 100644 --- a/lectures/revealjs/03-build-tools-and-some-testing.adoc +++ b/lectures/revealjs/03-build-tools-and-some-testing.adoc @@ -12,12 +12,239 @@ IT1901 Fall 2019 - 3rd Lecture [background-color = "#124990"] [color = "#fff6d5"] == Overview - +- Feedback from last lecture - Build tools - Gradle -- Unit testing +- Testing - JUnit -- Testfx +- TestFX + +[background-color = "#124990"] +[color = "#fff6d5"] +== Feedback from last lecture + + +== ! + +[.center-paragraph] +image::../images/lecture03/q1.png[width=700] + + +== ! + +[.center-paragraph] +image::../images/lecture03/q2.png[width=700] + + +== ! + +[.center-paragraph] +image::../images/lecture03/q3.png[width=700] + + +== Feedback +[.left] +Go to: + +app.one2act.no + +Session: + +KIPAT + + +[.right] +image::../images/lecture02/qr-app-one2act-no.svg[width=400] + +== Example code on gitlab + +Have you managed to build and run the example? + +- A) Yes +- B) No + +== Deliverable 1 + +Have you selected the domain for your project? + +- A) Yes +- B) No + + +=== Deliverable 1 + +programmering av en enkel app, bruk av gradle til bygging, og git og gitlab til kodehåndtering +Krav til innleveringen: + +- Kodingsprosjektet skal ligge i repoet på gitlab +- Prosjektet skal være konfigurert til å bygge med gradle + +=== Deliverable 1 + +- En README.md-fil på rotnivå i repoet skal beskrive repo-innholdet, spesielt hvilken mappe inni repoet som utgjør kodingsprosjektet. +- En README.md-fil (evt. en fil som README.md lenker til) inni prosjektet skal beskrive hva appen handler om og er ment å gjøre (når den er mer eller mindre ferdig). Ha med et illustrerende skjermbilde, så det er lettere å forstå. Det må også være minst én brukerhistorie for funksjonaliteten dere starter med. + +=== Deliverable 1 + +- Det må ligge inne (i gitlab) utviklingsoppgaver (issues) tilsvarende brukerhistorien, hvor hver utviklingsoppgave må være egnet til å utføres som en egen enhet. De som er påbegynt må være tilordnet det gruppemedlemmet som har ansvaret. + +=== Deliverable 1 + +- Vi stiller ikke krav om at dere er kommet så langt, men det må i hvert fall være noe i hvert av de tre arkitekturlagene, domenelogikk, brukergrensesnitt (JavaFX-GUI) og persistens (fillagring, men ikke nødvendigvis JSON), slik at appen kan kjøres og vise frem "noe". For at det skal være overkommelig, er det viktig at domenet er veldig enkelt i første omgang. Det er viktigere at det som er kodet er ordentlig gjort. Koden som er sjekket inn bør være knyttet til tilsvarende utviklingsoppgave. + +=== Deliverable 1 +- Gradle skal være konfigurert så en kan kjøre app-en vha. gradle-oppgaven run. +- Det må finnes minst én test som kan kjøres med gradle. Bygget skal være rigget til å rapportere testdekningsgrad, som derfor skal være over 0%. +- Bruk simpleexample-prosjektet som inspirasjon, men ikke kopier kode direkte. + + +== What is the biggest impediment preventing you to move forward with the project? + +Write keywords or a short sentence. use "none" if you have no impediments. + + +[background-color = "#124990"] +[color = "#fff6d5"] +== Build tools + +== Build tools (1) + +[%step] +- Automate the process of building executable programs from source files +- Packaging binaries required for deployment / distribution +- Run automated tests + +== Build tools (2) + +[%step] +- Build automation is a necessity to enable CI/CD +- Remove the need to do redundant tasks +- Improve quality of the software + ** the software builds are prepared in a consistent and predictable manner + ** possible to have data to analyze issues and improve + +== Make (1) + +[%step] +- Designed by Stuart Feldman +- Released in 1976 +- Uses makefiles to describe the actions required to produce the build +- Manages dependencies + +[.smaller-40] +https://en.wikipedia.org/wiki/Make_(software) + +== Make (2) + +[%step] +- Has been rewriten a number of times +- Standard modern implementation is GNU Make +- Used in Linux and Mac OS + +== Java world build tools + +- Ant with Ivy +- Maven +- Gradle + +== Apache ANT + +[%step] +- modern build system +- released in 2000 +- build files use XML + ** tends to get unmanageable even for small projects +- Apache Ivy for managing dependencies (added later) + ** download over network + +[.smaller-40] +http://ant.apache.org + +== Apache Maven (1) + +[%step] +- released in 2004 +- improves on ANT +- build files use also XML but the structure is radically different +- dependency management with automatic downloading over the network is available from release + +[.smaller-40] +http://maven.apache.org + +== Apache Maven (2) + +[%step] +- hides complexity in build files through plugins +- customizing is hard +- dependency management has issues with conflicting versions of same library + + +[background-color = "#124990"] +[color = "#fff6d5"] +== Gradle + + +== Gradle (1) + +[%step] +- released in 2012 +- build scripts are written in a domain specific language based on Groovy + ** Groovy ( http://www.groovy-lang.org/ ) +- the build script is named `build.gradle` +- build steps are called "tasks" + +[.smaller-40] +https://gradle.org + + +== Gradle (2) + +[%step] +- easy to create own tasks +- uses plugins to hide complexity +- applying plugins allows access to additional tasks + + +== Gradle (3) + +[.center-paragraph] +image::../images/lecture03/gradle-tree.png[width=700] + +[.smaller-40] +https://guides.gradle.org/creating-new-gradle-builds/ + + +== Exercise + +Work with the colleague next to you. +Go to gradle.org and create a "hello world" gradle build using the available documentation. +Time 15' + +== Exercise feedback + +Have you succeeded to create the required gradle build? + +- A) Yes +- B) No + + +[background-color = "#124990"] +[color = "#fff6d5"] +== Gradle demo + + +[background-color = "#124990"] +[color = "#fff6d5"] +== Testing + + +[background-color = "#124990"] +[color = "#fff6d5"] +== JUnit + + +[background-color = "#124990"] +[color = "#fff6d5"] +== TestFX + + + ++++ diff --git a/lectures/revealjs/feedback.adoc b/lectures/revealjs/feedback.adoc new file mode 100644 index 0000000000000000000000000000000000000000..754c1ad568ce86102772db8d5f81ba4abaf584de --- /dev/null +++ b/lectures/revealjs/feedback.adoc @@ -0,0 +1,55 @@ +[%notitle] += Feedback +:customcss: slides.css +:icons: font + +++++ + <img id="main-logo" class="main-logo" src="images/template/main_logo_eng_no_text.png" width="300" alt="ntnu logo"/> +++++ + +[.left] +Go to: + +app.one2act.no + +Session: + +KIPAT + + +[.right] +image::../images/lecture02/qr-app-one2act-no.svg[width=400] + + +++++ + <div id="footer" class="footer"> + <div style="display:table-row;"> + <span class="element" style="width:150px;"> + <a href="https://www.ntnu.no" target="_blank"> + <img id="footer-logo" class="footer-logo" + src="images/template/logo_ntnu.png" + alt="ntnu logo" height="28"/> + </a> + </span> + <span class="element" style="width:300px;">| IT1901 - 3rd lecture </span> + <span class="element">| Build tools. Introduction to testing </span> + <span class="element"> </span> + </div> + </div> + + <div id="vertical-ntnu-name" class="vertical-ntnu-name"> + <span class="helper"></span> + <img src="images/template/vertical-ntnu-name.png" alt="Norwegian University of Science and Technology" /> + </div> + + <script type="text/javascript"> + window.addEventListener("load", function() { + revealDiv = document.querySelector("body div.reveal") + footer = document.getElementById("footer"); + revealDiv.appendChild(footer); + + titleSlideDiv = document.querySelector("div.slides section.title") + mainLogo = document.getElementById("main-logo"); + titleSlideDiv.prepend(mainLogo); + + vertName = document.getElementById("vertical-ntnu-name"); + revealDiv.appendChild(vertName); + } ); + </script> +++++ \ No newline at end of file