Spring planning: design, create sprint backlog, estimate
Sprint review: demo work, informal (no slides, 2-hour prep time rule), whole team, invite the world
Sprint retrospective: 15-30mins, after every sprint, whole team, what is and what is not working (what to start/stop/vontinue doing)
Daily scrum meeting: Daily, 15min, stand-up, not for problem solving, whole world invited - only scrum team talks, commitments to peers but not statuses for the scrum master
What did you do yesterday?
What will you do today?
Is anything in your way?
Artifacts
Product backlog: requirements, items with value to customer of product, managed by product owner
Spring backlog: Sprint works, team members pick - add, delete or change
Burndown chart: indicator for how well sprint is progressing
Task board:
Not checked out: Nobody working on today
Checked out: Work in progress today
Done: Not worked on anymore
Definitions
Definition of Done (DoD):
Agreed by the scrum team
Evolves sprint by sprint
e.g.:
Unit tests pass, sufficient negative tests, coverage
Code is reviewed
Coding standards are met
Continuous integration implemented
Code is refactored
UAT tests pass
Non-functional tests pass
Necessary documentaiton is completed
on sprint level: all stories met DoD, product increment was accepted by product owner
Definition of Ready:
User story defined
Acceptance criteria defined
Dependencies identified
Story sized by delivery team
Scrum team accepts user experience artefacts
Performance criteria identified
Sign-off/accept person identified
Team knows what it means to demo the story
on sprint level: backlog prioritized, no hidden work, user stories are “ready”, capacity calculated
Self-organization:
Select work to complete
Determine how to meet requirements
Get help with impediments
Select own scrum master
Kotter’s 8-Step Change Model
Establish a sense of urgency
Create a guiding coalition
Develop a vision and strategy
Communicate and share the vision
Create and agile implementaiton backlog
Empower broad-based action
Generate short-term wins
Anchor the new approaches into the culture
Anti-Patterns
Poor use of retrospectives: Rant sessions without commitments
Reverting to bad behavior: Excuses for ignoring principles
The hero developer: One who is needed to get some things done and almost always ignores principles
Absent product owner (APOP): No product owner around creates wait time and waste and decisions made by non-PO’s
Architecture
JPA
O/R-Mismatch
Conceptional differences of underlying technologies.
Lazy (FetchType.LAZY), default on one-to-many, many-to-many
Lazy large objects (+@Lob)
Eager (FetchType.EAGER), default on one-to-one, many-to-one
Enumareation variants:
Ordinal (EnumType.ORDINAL)
String (EnumType.STRING)
Temporal type:
java.sql (no types needed)
java.util: TemporalType.DATE/TIME/TIMESTAMP
Primary key:
All allowed datatypes (@Id)
Floating point types allowed (beware of rounding errors!)
Generation strategies: Identity, Table, Sequence, Auto
Mappings:
One-to-one (1:1, @OneToOne)
Many-to-one (n:1, @ManyToOne, field is type)
One-to-many (1:n, @OneToMany, field is Set, with @JoinColumn or ‘mappedBy’)
Many-to-many (n:m, @ManyToMany, field is Set, with ‘mappedBy’)
Cascade type:
Propagate persistence on assoziated entities: ALL, PERSIST, MERGE, REMOVE, REFRESH, DETACH
CasadeType.ALL: Persisting parent also persists children
Skip serialization / exclude from transfer with @Transient (or transient)
Querying
JPQL (Java Persistence Query Language)
Criteria API
REST
Layers of an information system:
Presentation layer: communication interface to external entities
Application logic layer: operations requested through presentaiton layer
Resource management layer: deals with data sources
Distributed system types:
Request/response or call and return
Call oriented
Synchronous in nature
Input parameters -> output values
Focus on invoked opetations with in/out values
Message passing or document passing
Data oriented
Asynchronous
Messages constructed and sent
Focus on message construction and dispatching
No focus on what happends after dispatching
Architectural style:
Client/Server
Component-based
Domain driven design
Layered
Message-bus
N-Tier / 3-Tier
for call-based systems
Object-oriented: stateful communication with object instances
Resource-oriented: stateless requests / operations for resource management
Service-oriented: stateless communication via self-described service endpoints
Webservice: A web service is a software system designed to support interoperable machine-to-machine interaction over a network (with an interface describe in a machine-processable format).
Using UDDI (Universal Description Discovery and Integration)
REST (Representational State Transfer)
Resource identitief by URI’s
Manipulations through HTTP operations
Set of architectural principles
Six constraints
Uniform interface: through HTTP methods
Stateless: does not hold client state
Cacheable: responses are cacheable
Cient-Server: disconnected system
Layered: client can’t assume direct connection
Code on demand (optional): execute logic on client
Standard HTTP error codes
SOA (Service Oriented Architectures)
Abstract pattern for webservices
Loosely-coupled architecture
Shared, reusable services
Publish, Find, Bind
JAX-RS: Java API for RESTful Web Services
SOLID
KISS: Keep It Simple and Stupid
SOLID:
Single Responsibility Principle (SRP): each module/class has only one responsibility
Open Close Principle (OCP): Open for extension, closed for change
Liskov Substitution Principle (LSP): replacing a class with another one derived from it should not change behaviour (if it does do not use inheritance)
Interface Segregation Principle (ISP): only depend on interfaces you actually use
Dependency Inversion Principle (DIP): interfaces over concrete classes
DRY: Don’t Repeat Yourself
Simon Anliker Someone has to write all this stuff.