Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
course-material
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
IT1901
course-material
Commits
61bdbd83
Commit
61bdbd83
authored
8 months ago
by
George Adrian Stoica
Browse files
Options
Downloads
Patches
Plain Diff
doc: add slides for the 4th lecture
parent
b4b5fdd0
No related branches found
No related tags found
No related merge requests found
Pipeline
#292115
passed
8 months ago
Stage: build
Stage: test
Stage: deploy
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
lectures/revealjs/04-build-tools.adoc
+374
-0
374 additions, 0 deletions
lectures/revealjs/04-build-tools.adoc
lectures/revealjs/images/lecture04/overview.png
+0
-0
0 additions, 0 deletions
lectures/revealjs/images/lecture04/overview.png
with
374 additions
and
0 deletions
lectures/revealjs/04-build-tools.adoc
0 → 100644
+
374
−
0
View file @
61bdbd83
= Build tools
:customcss: slides.css
:icons: font
:includedir: includes/
:LECTURE_TOPIC: Build tools
:LECTURE_NO: 4th lecture
include::{includedir}header.adoc[]
[.smaller-80][.center-paragraph]
IT1901 Fall 2024 - {LECTURE_NO}
== Agenda
[%step]
- Administrative issues
- 1st Group Exercise
- Build tools
- More on development environment
** VSCode extensions
** Eclipse Che
- Agile Practices
- Summary
[background-color = "#124990"]
[color = "#fff6d5"]
== Administrative issues
== Groups
- groups have been established
- each student team got a BlackBoard group and a GitLab group
- the GitLab group contains the "standard" repository
- check if you are properly assigned to your group
== Approaching Deadlines
- Torsdag, 12. september / 23:59
** 1st individual deliverable
- Torsdag, 19. september / 23:59
** 1st group deliverable
- Torsdag, 19. september / 23:59
** group contract
== Getting help
- ask your group TA
- Q and A sessions every Thursday starting week 37
- some lectures will also Q and A sections
- technical help - helpdesk on teams starting next week
== !
image::../images/lecture04/overview.png[canvas, size=contain]
[background-color = "#124990"]
[color = "#fff6d5"]
== 1st Group Exercise
== Start group work
- finish and deliver the group contract
- discuss and select domain / aplication for group project
- discuss and agree on workflow, meetings etc
- set up your gitlab workspace and repository
- plan the sprint / iteration for the first deliverable
== About domain selection
- choose an app / service that you know well and select a couple of features to implement during the semester
- point is to learn by implementing these using the required architectures
- we are not looking for quantity but for quality, so just few core features will suffice
== About domain selection (2)
- the chosen app needs to be suitable for a cloud based service
- there must therefore be some dynamic data per user managed by the server.
- eg. a (currency) calculation will NOT fit such a project.
- one good starting point are the cases from the HCI course (MMI)
== 3 step release plan
- Minimal application
- Application with more features / improved quality
- Final technical – client server / REST API / more features / alternative client
== Minimal application
- a simple app is created with JavaFX and FXML, with relatively minimal functionality
- can save data to a file and start up again where it left off
- divided into separate modules
- good point to start could be the modules-template (from the individual exercise)
** one can also use the todo list example as inspiration
== Requirements (1)
- project must be in the group repo in gitlab
- documentation for each release is placed in a separate folder
** 1st deliverable (release)- `...groups-2024/gr24nn/gr24nn/docs/release1`
- a milestone in Gitlab should refer to the corresponding documentation and issues
== Requirements (2)
- project must build with Maven
- one root level README.md in the repo to describe the content
- another README.md file (use links) must describe expected application functionality (use at least a screen mockup / screenshot)
- there must also be at least one user story
- there must be corresponding issues in Gitlab
== Requirements (3)
- you must reference the issues in the commits
- configure Maven so that
** application runs with `mvn javafx:run`
** test can run using `mvn test`
- the build must report test coverage ( > 0% )
== Requirements (4)
- there must be at least something in each of the three architecture layers
** domain logic, user interface (JavaFX-GUI) and persistence
- project should be configured to open and run in eclipse che (link in README.md)
== Requirements (5)
- Readme.md file should include a section where requirements are specified - versions for Java, Maven, dependencies etc.
- Document usage of AI-tools. Why and what / why not
** (...groups-2024/gr24nn/gr24nn/docs/release1/ai-tools.md).
- any code taken / generated needs to reference the source in a comment
== Application description
- General description included in readme.md file
- user stories supported by additional design documents such as:
** conceptual model,
** personas,
** scenarios,
** UI mockups,
** UI protoypes
- User stories get broken down into issues and tasks
- Lead to a functional application
[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/
[background-color = "#124990"]
[color = "#fff6d5"]
== More on Maven
== Maven (3)
* manages builds, dependencies, versions
* configuration file is `pom.xml`
* has good IDE support
* central repository(ies) for dependencies
== Maven - pom.xml
* modelVersion (4.0.0) config file format version
* groupId - ID of group owning the project
* artifactId - name of the final output
* version - version of the created artifact
== Maven - pom.xml (cont.)
* dependencies - list of artifacts we depend upon
* packaging - e.g. .jar (Java archive)
* description
https://maven.apache.org/pom.html#Quick_Overview
== Maven dependencies
* list of dependencies
* each dependecy has specified
** groupId
** artifactId
** version (optional, good to have)
** scope (default is `compile`)
== Maven build lifecycles
[.smaller-60]
* clean
* site
* default
** validate
** compile
** test
** package
** verify
** install
** deploy
== Maven plugins
* add functionality
* connected to a certain lifecycle phase
* provide additional goals
[background-color = "#124990"]
[color = "#fff6d5"]
== More on development environment
[background-color = "#124990"]
[color = "#fff6d5"]
== VSCode extensions
[background-color = "#124990"]
[color = "#fff6d5"]
== Eclipse Che
[background-color = "#124990"]
[color = "#fff6d5"]
== Agile Practices - Scrum
== User stories
[.smaller-80]
- short, simple descriptions for application features
- formulated from the stand point of the user / customer
- template:
** As a **< type of user >**, I want **< some goal >** so that **< some reason >**.
- they are not replacing design documents / requirements specification
- they need to be developed into specific tasks and connected to constraints and other meaningful documentation.
== Sprints
- meaningful iterations of comparable length
- they should have a clear goal
== Planning releases
- 3 deliverables - map to releases
- a release should produce a minimum viable product (MVP)
** a MVP is a version of an application with just enough features to be usable in getting feedback to guide the development process
== Meetings
- regular stand-up meetings (synchronize and commit, remove hindrances)
- retrospectives (reflect on your group work)
- sprint reviews / demos (invite TA, prepare deliverables)
[background-color = "#124990"]
[color = "#fff6d5"]
== Summary
include::{includedir}footer.adoc[]
\ No newline at end of file
This diff is collapsed.
Click to expand it.
lectures/revealjs/images/lecture04/overview.png
0 → 100644
+
0
−
0
View file @
61bdbd83
86.7 KiB
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment