Lecture 6 from the IAG0040 Java course in TTÜ.
See the accompanying source code written during the lectures: https://github.com/angryziber/java-course
Gives an overview how a software developer should organize their daily work, apart from technical skills.
Introduces Agile software development practices from XP and Scrum.
Lecture 15 from the IAG0040 Java course in TTÜ.
See the accompanying source code written during the lectures: https://github.com/angryziber/java-course
Gives an overview of more advanced Java topics.
Lecture 3 from the IAG0040 Java course in TTÜ.
See the accompanying source code written during the lectures: https://github.com/angryziber/java-course
Discusses more Java basics and Object Oriented Programming.
Java Course 7: Text processing, Charsets & EncodingsAnton Keks
Lecture 7 from the IAG0040 Java course in TTÜ.
See the accompanying source code written during the lectures: https://github.com/angryziber/java-course
Do you know the difference between charset & encoding? Every programmer nowadays MUST understand these terms, how they work, and how to use them. Otherwise we constantly face broken software refusing to work with international characters properly.
Java Course 12: XML & XSL, Web & ServletsAnton Keks
Lecture 12 from the IAG0040 Java course in TTÜ.
See the accompanying source code written during the lectures: https://github.com/angryziber/java-course
Lecture 15 from the IAG0040 Java course in TTÜ.
See the accompanying source code written during the lectures: https://github.com/angryziber/java-course
Gives an overview of more advanced Java topics.
Lecture 3 from the IAG0040 Java course in TTÜ.
See the accompanying source code written during the lectures: https://github.com/angryziber/java-course
Discusses more Java basics and Object Oriented Programming.
Java Course 7: Text processing, Charsets & EncodingsAnton Keks
Lecture 7 from the IAG0040 Java course in TTÜ.
See the accompanying source code written during the lectures: https://github.com/angryziber/java-course
Do you know the difference between charset & encoding? Every programmer nowadays MUST understand these terms, how they work, and how to use them. Otherwise we constantly face broken software refusing to work with international characters properly.
Java Course 12: XML & XSL, Web & ServletsAnton Keks
Lecture 12 from the IAG0040 Java course in TTÜ.
See the accompanying source code written during the lectures: https://github.com/angryziber/java-course
Lecture 13 from the IAG0040 Java course in TTÜ.
See the accompanying source code written during the lectures: https://github.com/angryziber/java-course
Core Java introduction | Basics | free course Kernel Training
http://kerneltraining.com/core-java/
Learn the basics of Java and gain practical experience that is required to begin your career in java programming. Kernel Training has designed classroom and online course to upgrade your knowledge and skills in core Java.
Course Curriculum:
Introduction to Java
JDK and practical applications
Java Basic Data Types and Operators
Programming Constructs, Classes and Methods, constructor and Finalizer
Polymorphism
Inheritance
Method overriding and abstract classes
Packages and Interfaces
Strings and Arrays
Enums
Core Java Developer Certification helps demonstrate an individual's overall comprehension and expertise of Java programming language. VSkills Core Java Developer Certification holders have more than a working familiarity with Java programs—they are technically skilled to take advantage of the breadth of features efficiently and effectively.
http://www.vskills.in/certification/Certified-Core-Java-Developer
Core Java Tutorial. In case you want to get trained in Spring Framework you can refer here:
<a href="https://www.emexotechnologies.com/courses/java-development-training/core-java-training/">Java Training</a>
Java history, versions, types of errors and exception, quiz SAurabh PRajapati
this ppt contains history and basic facts of object oriented programming language java, difference between JIT, JVM, JRE and JDK. it also having information about different versions of java. advantages over other language, difference between error and exception with its types is also included. explanation of final variable and string to int conversation is also added. in the end some twisted question of it which sharpen the knowledge of its basic are added. beyond this some programming examples with output is there too. hope u find it useful...!! thanku..!!
What is Java Technology (An introduction with comparision of .net coding)Shaharyar khan
A introductory slides for those who want to learn and know some basics of Java.Also for those persons who want to compare coding difference between Java and .net
ava Introduction - What is Java? Where is Java being Used? types of Java applications, facts about Java, different editions of Java technology, what you will need to run Java and about popular Java Editors.
Java Class 6 | Java Class 6 |Threads in Java| Applets | Swing GUI | JDBC | Ac...Sagar Verma
16. Threads in Java
Non-Threaded Applications
Threaded Applications
Process based multitasking Vs Thread based multitasking
Thread API in Java
Creating Threads
States of a Thread
Synchronization for threads; static and non-static synchronized methods; blocks; concept of object and class locks
Coordination between threads - wait, notify and notifyAll methods for inter-thread communication
17. Applets
What are applets?
Need for Applets
Different ways of running an applet program
Applet API hierarchy
Life Cycle of an applet
Even Handlers for applets, mouse events, click events
18. Swing GUI
Introduction to AWT
Introduction to Swing GUI
Advantages of Swing over AWT
Swing API
Swing GUI Components
Event Handlers for Swing
Sample Calculator application using Swing GUI and Swing Event handling
19. JDBC
What is JDBC; introduction
JDBC features
JDBC Drivers
Setting up a database and creating a schema
Writing JDBC code to connect to DB
CRUD Operations with JDBC
Statement types in JDBC
Types of Rowset, ResultSet in JDBC
20. Access Modifiers in Java
What are access modifiers?
Default
Protected
Private
Public
In this presentation we introduce topic of core java that is required to learn if you want to be good java programmer. i provide all concept in detail.
Presented at International Institute of Business Analysis (IIBA) UK Chapter on 14 October 2010: http://www.selfishprogramming.com/2010/10/05/iiba-uk-chapter-event-14-october-2010/
Lecture 13 from the IAG0040 Java course in TTÜ.
See the accompanying source code written during the lectures: https://github.com/angryziber/java-course
Core Java introduction | Basics | free course Kernel Training
http://kerneltraining.com/core-java/
Learn the basics of Java and gain practical experience that is required to begin your career in java programming. Kernel Training has designed classroom and online course to upgrade your knowledge and skills in core Java.
Course Curriculum:
Introduction to Java
JDK and practical applications
Java Basic Data Types and Operators
Programming Constructs, Classes and Methods, constructor and Finalizer
Polymorphism
Inheritance
Method overriding and abstract classes
Packages and Interfaces
Strings and Arrays
Enums
Core Java Developer Certification helps demonstrate an individual's overall comprehension and expertise of Java programming language. VSkills Core Java Developer Certification holders have more than a working familiarity with Java programs—they are technically skilled to take advantage of the breadth of features efficiently and effectively.
http://www.vskills.in/certification/Certified-Core-Java-Developer
Core Java Tutorial. In case you want to get trained in Spring Framework you can refer here:
<a href="https://www.emexotechnologies.com/courses/java-development-training/core-java-training/">Java Training</a>
Java history, versions, types of errors and exception, quiz SAurabh PRajapati
this ppt contains history and basic facts of object oriented programming language java, difference between JIT, JVM, JRE and JDK. it also having information about different versions of java. advantages over other language, difference between error and exception with its types is also included. explanation of final variable and string to int conversation is also added. in the end some twisted question of it which sharpen the knowledge of its basic are added. beyond this some programming examples with output is there too. hope u find it useful...!! thanku..!!
What is Java Technology (An introduction with comparision of .net coding)Shaharyar khan
A introductory slides for those who want to learn and know some basics of Java.Also for those persons who want to compare coding difference between Java and .net
ava Introduction - What is Java? Where is Java being Used? types of Java applications, facts about Java, different editions of Java technology, what you will need to run Java and about popular Java Editors.
Java Class 6 | Java Class 6 |Threads in Java| Applets | Swing GUI | JDBC | Ac...Sagar Verma
16. Threads in Java
Non-Threaded Applications
Threaded Applications
Process based multitasking Vs Thread based multitasking
Thread API in Java
Creating Threads
States of a Thread
Synchronization for threads; static and non-static synchronized methods; blocks; concept of object and class locks
Coordination between threads - wait, notify and notifyAll methods for inter-thread communication
17. Applets
What are applets?
Need for Applets
Different ways of running an applet program
Applet API hierarchy
Life Cycle of an applet
Even Handlers for applets, mouse events, click events
18. Swing GUI
Introduction to AWT
Introduction to Swing GUI
Advantages of Swing over AWT
Swing API
Swing GUI Components
Event Handlers for Swing
Sample Calculator application using Swing GUI and Swing Event handling
19. JDBC
What is JDBC; introduction
JDBC features
JDBC Drivers
Setting up a database and creating a schema
Writing JDBC code to connect to DB
CRUD Operations with JDBC
Statement types in JDBC
Types of Rowset, ResultSet in JDBC
20. Access Modifiers in Java
What are access modifiers?
Default
Protected
Private
Public
In this presentation we introduce topic of core java that is required to learn if you want to be good java programmer. i provide all concept in detail.
Presented at International Institute of Business Analysis (IIBA) UK Chapter on 14 October 2010: http://www.selfishprogramming.com/2010/10/05/iiba-uk-chapter-event-14-october-2010/
A simple document emphasizing the reasons behind evolution of .Net technology and how it simplified the yester-decade's technology issues. This document is simplified and teaches a lame man as why & how .net framework gained importance and how it is ruling the roost.
Throwing complexity over the wall: Rapid development for enterprise Java (Jav...Dan Allen
For many, development of enterprise Java has long been an arduous undertaking. We're of the opinion that application programmers should be free to focus on their business logic only.
In this session, we'll cover:
• What makes us most productive?
• What tasks should we be programming; more importantly, what shouldn't we?
• What is a component model, and what does it buy us?
• How is this stuff usable in the real world?
We'll discuss how testing relates to the features of the Java EE 6 stack. By the end, we'll have introduced a pair of simple and powerful frameworks that render the testing of real enterprise components as natural as calling "add" on a CS101 Calculator.java.
Lecture 11 from the IAG0040 Java course in TTÜ.
See the accompanying source code written during the lectures: https://github.com/angryziber/java-course
Describes goods and bads of software architecture as well as common design patterns.
● What is Unit Testing?
● Benefits
● What is Test Driven Development?
● What is Behavior Driven Development?
● Categories of (Unit) Tests / Software Testing
Pyramid, Frameworks
● C++, Java, .NET, Perl, PHP frameworks
● Unit-testing Zend Framework application
Level Up Your Integration Testing With TestcontainersVMware Tanzu
Traditional approaches to integration testing—using shared, local, or in-memory databases—fall short for today's modern developer.
Developers today are building cloud native distributed microservices and taking advantage of a rich variety of backing services. This explosion of applications and backing services introduces new challenges in creating the necessary environments for integration testing. To be useful and effective, these environments must be easy to create and they must resemble production as closely as possible. New solutions are needed to make this need a reality.
Enter Testcontainers!
Testcontainers is a Java library that supports JUnit tests and makes it incredibly easy to create lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
In this talk, you will learn when and how to use Testcontainers. We will cover the fundamentals and walk through a step-by-step example using a Spring Boot application that we build from scratch. As a bonus, we'll highlight some new features in Spring Boot 3.0 along the way!
Test it! Unit, mocking and in-container Meet Arquillian!Ivan Ivanov
A gentle introduction into testing in Java. Begin with testing a single unit, continue with mocking dependency and end up with a full incontainer test capabilities.
JUnit: A unit testing framework that is extensively used to test the code written in Java.
Unit testing is a type of software testing.
Software testing: The process of examining whether the software and its components meet the specified requirements
Other types of software testing are as shown.
AOTB2014: Agile Testing on the Java PlatformPeter Pilgrim
Creative Commons 2.0 License
Attribution-NonCommercial-ShareAlike 2.0 UK: England & Wales (CC BY-NC-SA 2.0 UK)
https://creativecommons.org/licenses/by-nc-sa/2.0/uk/
Share — copy and redistribute the material in any medium or format
Adapt — remix, transform, and build upon the material
The licensor cannot revoke these freedoms as long as you follow the license terms.
This talk about the following:
* TDD
** Is TDD Dead?
** David Heinemeier-Hanson and the controversy
* Java Technology
** If only JUnit tests were this simple
** Java has a some great static analysis tools
** Unfortunatley, these do not work too well in Scala platform
** Guidelines to write tests
* Creative Development in Principle
** Design is a balance
** Inventing your own style
** Avoid lock-in with TDD, use it instead as a design tool
* Scala Technology
** Scala Option
** Function objects
** Pattern matching
** Avoid if and then else and null pointers
* Legacy
** Final advice
This talk was given by Peter Pilgrim, invited speaker to the Agile On The Beach conference on the 5th September, 2014 at Penryn Campus, University of Exeter, Cornwall
JUnit is a framework for Java, so the very first requirement is to have JDK installed in your machine.
An open source framework which is used for writing & running tests
Shows test progress in a bar that is green if test is going fine and it turns red when a test fails
Lecture 14 from the IAG0040 Java course in TTÜ.
See the accompanying source code written during the lectures: https://github.com/angryziber/java-course
Lecture 10 from the IAG0040 Java course in TTÜ.
See the accompanying source code written during the lectures: https://github.com/angryziber/java-course
Interactive technical talk for the Agile Saturday VI.
Accompanied with live coding. All code is available on github: https://github.com/angryziber/patterns
Talk from Agile Saturday 3 event in Estonia.
It is about being professional in general as well as following agile best practices, such as build automation and continuous integration.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
1. Java course - IAG0040
Unit testing &
Agile Software Development
Anton Keks 2011
2. Unit tests
●
How to be confident that your code works?
●
Why wait for somebody else to test your code?
●
How to provide up-to-date examples on using your API?
●
How to help yourself see your design better and therefore
improve it?
The answer: write Unit Tests!!!
● Unit tests are executable test cases for your modules (units),
expressed in code
●
Unit tests are executed automatically to ensure that your code
still works after changing it (regression testing)
Java course – IAG0040 Lecture 6
Anton Keks Slide 2
3. Benefits of unit tests
●
Unit testing isolates each module and shows that it is correct.
It provides a strict written contract that the code must satisfy
●
Facilitates change – unit tests provide regression testing,
make refactoring safer
● Simplifies integration – integration testing is easier, if
parts are already proven to work correctly
● Documentation – unit tests show how to use the API
● Separation of interface from implementation – unit tests
result in loosely coupled code
Java course – IAG0040 Lecture 6
Anton Keks Slide 3
4. A simple example
● public class Concatenator {
// this is a method under test
public String concat(String a, String b) {
return a + b;
}
// this is a simple test case
public static void main(String[] args) {
Concatenator c = new Concatenator();
assert “abc123”.equals(
c.concat(“abc”, “123”))
: “concat() failed!”;
}
}
Java course – IAG0040 Lecture 6
Anton Keks Slide 4
5. JUnit
●
JUnit is the first and most popular unit and regression
testing framework for Java
●
Is a 3rd-party jar file
– Obtainable from http://www.junit.org/
– Included and interfaced in IDEA, Eclipse, etc
● JUnit 3
– older but still very popular
● JUnit 4
– takes advantage of Java 5 features
Java course – IAG0040 Lecture 6
Anton Keks Slide 5
6. JUnit (cont)
● JUnit 3
– must extend the junit.framework.TestCase class
– TestCase provides a lot of assertXXX() methods
– setUp() method is run before each test
– tearDown() method is run after each test
● JUnit 4
– no extending is needed
– annotate test methods with @Test (from org.junit)
– assertXXX() methods may be statically imported
import static org.junit.Assert.*;
– @Before and @After annotations replace setUp() and tearDown()
Java course – IAG0040 Lecture 6
Anton Keks Slide 6
7. JUnit 3 example
● public class Concatenator {
// this is a method under test
public String concat(String a, String b) {
return a + b;
}
}
public class ConcatenatorTest extends TestCase{
// this is a simple test case
public void testConcat() {
Concatenator c = new Concatenator();
assertEquals(“concat() failed!”, “abc123”,
c.concat(“abc”, “123”));
}
}
Java course – IAG0040 Lecture 6
Anton Keks Slide 7
8. JUnit 4 example
● public class Concatenator {
// this is a method under test
public String concat(String a, String b) {
return a + b;
}
}
public class ConcatenatorTest {
// this is a simple test case
@Test
public void testConcat() {
Concatenator c = new Concatenator();
assertEquals(“concat() failed!”, “abc123”,
c.concat(“abc”, “123”));
}
}
Java course – IAG0040 Lecture 6
Anton Keks Slide 8
9. JUnit (cont)
●
Naming convention
– Create at least one test class for each class, test classes usually
have the Test suffix (e.g. DogTest)
– Generally, create one test method per method under test
(e.g. @Test public void dogHasAName())
– Put tests into the the test directory (same package as the class
under test, then you can access package local methods from
tests)
● JUnit runs all tests,
– defined in public void testXXX methods in classes extending
TestCase, or
– annotated with @Test (no 'test' prefix please)
Java course – IAG0040 Lecture 6
Anton Keks Slide 9
10. Mock objects in tests
● Unit tests must isolate the unit under test (avoid dependencies)
●
If an object under test uses other objects, they must be mocked
● A mock object has the same interface as the real object, but
different implementation (in many cases, it does nothing)
● Real objects being mocked should have their own separate unit tests
●
Possible implementations:
– Overriding: class MockDog extends Dog { ... }
– Anonymous classes: new Dog() { ... }
– Dynamic proxies: Proxy.newProxyInstance( ... )
(see javadoc of java.lang.reflect.Proxy)
– Frameworks: mockito, easymock, mockobjects, jmock, etc
Java course – IAG0040 Lecture 6
Anton Keks Slide 10
11. Unit test tasks
●
Write unit tests for these your classes using JUnit 4
(see previous lectures' slides if you don't have them):
– Fibonacci, Factorial
– DuplicateRemoverImpl
– WordFrequencyCalculatorImpl
– ShapeAggregatorImpl
● Use the above mentioned naming/coding convention
● You no longer need main() methods in these classes
which demonstrate that the code works – these were
actually a sort of unit tests, too
Java course – IAG0040 Lecture 6
Anton Keks Slide 11
12. Agile Software Development
●
Is a relatively new and more efficient software
development methodology (process)
●
Minimizes risks by splitting projects into small iterations
that look like separate projects
– Each iteration includes all tasks to release an increment in
functionality
●
planning
● requirements analysis
● design & coding & testing
● documentation
Java course – IAG0040 Lecture 6
Anton Keks Slide 12
13. Agile Manifesto
●
http://www.agilemanifesto.org/
● We are uncovering better ways of developing software by doing it
and helping others do it. Through this work we have come to value:
– Individuals and interactions over processes and tools
– Working software over comprehensive documentation
– Customer collaboration over contract negotiation
– Responding to change over following a plan
● That is, while there is value in the items on the right, we value the
items on the left more.
Java course – IAG0040 Lecture 6
Anton Keks Slide 13
14. So what is Agile?
● Way of creating software in lighter, faster, and people-centric way
●
Adaptable, not predictable
● Working software is the primary measure of success and is delivered
frequently
● Agile software development requires strict discipline
●
Project team sits together (face-to-face communication)
– programmers and customers at minimum
– testers, designers, technical writers, managers
● Changes in requirements are welcomed, not being afraid of
Java course – IAG0040 Lecture 6
Anton Keks Slide 14
15. Agile methodologies
●
There are many (some existed before the Agile
Manifesto)
– Scrum, Crystal Clear, Lean Software Development,
XP (Extreme Programming), etc
●
Bad (but often used) alternatives:
– Cowboy coding – no well-defined process
– Waterfall – most predictive, steps through
requirements capture, analysis, design, coding,
testing in a strict sequence
(see www.waterfall2006.com fake conference site)
Java course – IAG0040 Lecture 6
Anton Keks Slide 15
16. Agile/XP project cycle
●
Kick-off meeting
● Iterations:
– Iteration planning meeting (a few hours)
– Daily stand-up meetings (max 15 min)
– Designing, coding, testing, communicating
●
Fixed deadline ends (or customer decides to
finish the project)
Java course – IAG0040 Lecture 6
Anton Keks Slide 16
17. User stories and iterations
●
User stories are written on small paper chunks
● They are are added/removed/prioritized during iteration planning
meetings
● Each user story is estimated in abstract units
●
Team's velocity is calculated
after each iteration
● Next iteration plan must be
the same number of units
completed during the
previous iteration
●
After a few iterations,
velocity stabilizes
Java course – IAG0040 Lecture 6
Anton Keks Slide 17
18. TDD (Test Driven Development)
●
TDD is one of the main practices of XP (Extreme Programming)
● TDD = TFD + refactoring
●
TFD (Test First Development) means
– Write tests before the real (functional) code
– Write real code only to satisfy failing tests
– Eliminate duplication
● Refactoring means redesigning the code without changing or
braking existing functionality
– always ensure that you have the simplest design possible for the
functionality built to date
Java course – IAG0040 Lecture 6
Anton Keks Slide 18
19. TDD benefits
● Code is written in small steps
●
You design your API before writing code, which results in better and
loosely coupled object model
● You get 100% unit test coverage
● After each test-code iteration you get a working code, you can
virtually stop anytime
● You don't waste time designing beforehand; initial designs cannot
predict everything
●
You can change anything anytime (because requirements always
change)
●
Overengineering is eliminated
Java course – IAG0040 Lecture 6
Anton Keks Slide 19
20. Pair Programming
●
Pair Programming means there are two programmers sitting
and working together
● Pairs help stay on track with TDD
● Pairing helps to learn from each other
● Instant (extreme) code review
● Two people produce better ideas than any of them could alone
● “Ping-pong” allows to turn development into a game
– Implement failing test, write a new test, pass keyboard
Java course – IAG0040 Lecture 6
Anton Keks Slide 20
21. Continuous integration
● Regular automated builds of the software (e.g. after each commit)
– the whole program is recompiled
– automated (unit) tests are run
– documentation is generated
– software is packaged and therefore ready to run
●
Provides short feedback to developers
● Helps to find integration problems and failed tests early
●
The latest builds are always runnable and testable by e.g. customers
● Hudson is one of the tools used for this purpose
– see http://java.azib.net/hudson
Java course – IAG0040 Lecture 6
Anton Keks Slide 21
22. Hands-on: TDD Bowling
●
Rules/Requirements of 10-pin bowling:
– A game of 10 frames (2 shots per frame)
– Total score = sum of scores of all frames
– Spare – all 10 pins are hit with two shots (frame)
● Frame score += next shot (bonus)
– Strike – all 10 pins are hit with one shot
● Frame score += two next shots (bonus)
– If last frame hits all pins, extra shot is awarded
– Perfect game = 12 strikes = 300 points
Java course – IAG0040 Lecture 6
Anton Keks Slide 22