Date post: | 14-Sep-2014 |
Category: |
Education |
View: | 235 times |
Download: | 1 times |
Development practicesat Inventive Designers
Tars Joris – Development Manager 3 December 2013
www.inventivedesigners.com
Who am I?
Tars Joris
• 1997-2001: Master in Computer Science: University of Antwerp
• 2001-2006: Developer at eVision bvba: Software for the furniture industry
• 2006-2008: Developer at Inventive Designers
• 2008-now : Development Manager at Inventive Designers
3 December 2013
www.inventivedesigners.com
2
Agenda
General
• About Inventive
Designers
• The team
• The software
products
Tools
• IDE
• VCS
• Bug tracking
• Continuous
integration
Processes
• Planning
• Meetings
• Code reviews
• Testing
• New features
3 December 2013
www.inventivedesigners.com
3
About Inventive Designers nv
• Software Product Company: all in-house development
• Services around these products: Integration + Customization
• Focus on innovation
• Participate in and organize meetings for working groups and communities
• W3C: XSL-FO, XForms, Web Crypto
• Other: AFP Color Consortium, Belgian Eclipse User Group, Scala, Big data, …
3 December 2013
www.inventivedesigners.com
4
Organization
3 December 2013
www.inventivedesigners.com
5
Development
Services
Support
Sales
Marketing
HR/Legal/…
The development team
4 team leads
• 2 Research & Development Managers
• 1 Release / Quality Assurance Manager
• 1 Development Manager / SCRUM Master
3 December 2013
www.inventivedesigners.com
6
Products
Working actively on the last 2
products
3 December 2013
www.inventivedesigners.com
7
Scriptura Engage
IntelliStamp
Some metrics on Scriptura Engage
• Working on 8th major release
• 6 major platforms
• 87133 automated tests running across 24 builds on 18 servers for combinations of 5 java versions, 9 OSes, 3 CPU architectures, 5 browser versions and 5 databases
• 3.7 Gb codebase in 289.811 files and 86.007 folders
• 2 million lines of code
• 1564 libraries
• 12 years of development
• 200+ releases
3 December 2013
www.inventivedesigners.com
8
Without processes / tools
3 December 2013
www.inventivedesigners.com
9
When will that feature be available?
When it’s ready.
Will it work?
It might.
Can we get a new version?
Sure, in 5 minutes.
But it broke last week’s fix.
Oh yeah, oops. What was the problem again?
3 December 2013
www.inventivedesigners.com
10
Development
Tools
Tools
IDE - Eclipse
3 December 2013
www.inventivedesigners.com
11
IDE - Eclipse
• Integrated Development
Environment
• Most of the code is Java
• Also XSLT, XForms,
Javascript, SQL, XQuery,
Xcode, …
3 December 2013
www.inventivedesigners.com
12
Tools
Version Control System - Git
3 December 2013
www.inventivedesigners.com
13
VCS - Git: What?
• Version Control System
• Distributed
• Eclipse plug-in /
Powerful command-line
3 December 2013
www.inventivedesigners.com
14
VCS - Git: What?
Atlassian Stash
• On own hardware
• Central repository
• Single point of truth (not required by Git)
• Web interface
3 December 2013
www.inventivedesigners.com
15
VCS - Git: Why?
• Code sharing and collaboration
• History: when was this changed? By who? Why?
• Backup: Change/delete code as much as you
want
• Tagging: what exactly was in a certain release?
• Branching: work on different versions of a
product at the same time
3 December 2013
www.inventivedesigners.com
16
VCS - Git: Nice features
• Local commits
• Local history
• Light-weight branching
• work on several issues at the same
time (commit what you have and
switch to another branch)
• No manual management of patches
3 December 2013
www.inventivedesigners.com
17
Tools
Bug Tracking - Jira
3 December 2013
www.inventivedesigners.com
18
Bug Tracking - Jira: What?
System for tracking
• Bugs
• Filed by customers (external)
• Filed by services/development (internal)
• Tasks
• Changes to test-infrastructure
• Small enhancements
• Actual parts of a new feature implementation
• New features
• Requests filed by customers
• Strategic features
3 December 2013
www.inventivedesigners.com
19
Bug Tracking - Jira: What?
• Link with support cases
• Comments by developers
• Code changes automatically linked
• Time tracking
• To do list (assigned issues)
• Bugs/tasks
• Review subtasks
• Test subtasks
• Describe subtasks
3 December 2013
www.inventivedesigners.com
20
3 December 2013
www.inventivedesigners.com
21
Bug Tracking - Jira: Why?
• Trail/history of a code-change
• Link from code-change to
• Jira issue
• Comments
• wiki-pages
• support case
• customer e-mails
• Mark issues related / duplicate
• Estimate work / plan sprint / assign work
• Workflow: review / test / research / describe
3 December 2013
www.inventivedesigners.com
22
Tools
Continuous Integration - Hudson
3 December 2013
www.inventivedesigners.com
23
Continuous Integration – Hudson: What?
• Runs automated builds
• at scheduled times
• manual
• triggered by another build (chain)
• Compiles all code when there’s a change (throughout the day)
• Runs automated tests with different combinations of OS, JDK, database, …
• Unit tests: verify result of a Java-method
• End-to-end tests: verify files written on disk or interrogate public APIs of the system
• Browser tests: Automatically launch a browser and interact (type text, click buttons, verify HTML)
• GUI tests: Launch eclipse, …
3 December 2013
www.inventivedesigners.com
24
3 December 2013
www.inventivedesigners.com
25
Continuous Integration – Hudson: Why?
• Controlled environment for running tests: consistency
• History of test results
• Statistics: code coverage, …
• Produces nightly builds
• Useful for beta testing
• Closer to an actual release then a development
environment
• Use it to test against, to catch build-problems early
(obfuscation, …)
3 December 2013
www.inventivedesigners.com
26
3 December 2013
www.inventivedesigners.com
27
Development
Processes
Processes
Planning
3 December 2013
www.inventivedesigners.com
28
Planning
Sprints of 4 weeks (20 days)
• 17 days of development
• 3 days of manual testing
• 5 days later: release x
3 December 2013
www.inventivedesigners.com
29
R Testing R
Sprint x Sprint x + 1
Week 1 Week 2 Week 3 Week 4 Week 1
Development Testing Development
Code freeze
Planning
How do we decide what to do next?
• Bugs
• Backlog (input from customers, services, development)
• New features
• Roadmap
• Input from stakeholders
• Customers
• Other departments (services, …)
• Strategic (management)
3 December 2013
www.inventivedesigners.com
30
Processes
Meetings
3 December 2013
www.inventivedesigners.com
31
Meetings
3 December 2013
www.inventivedesigners.com
32
R Testing R
Sprint x Sprint x + 1
Week 1 Week 2 Week 3 Week 4 Week 1
Development Testing Development
Sprint review• 1st day of sprint• developers + stakeholders• demo’s last sprint
Technical meeting• 1st day of sprint• team leaders• planning/priorities/…
Sign-Off• last day of sprint• developers• knowledge sharing• explain next sprint
Stand-up• every day• developers• yesterday/today/impediments
Processes
Code Reviews
3 December 2013
www.inventivedesigners.com
33
Code Reviews: What?
Before a code change makes it into the product, reviewed by another
developer
• All bug-fixes are reviewed
• New features are not formally reviewed, but behavior and design is
discussed with team leads (another process)
3 December 2013
www.inventivedesigners.com
34
Code Reviews: Why?
• 4 eyes see more than 2
• Trace down mistakes (typos, oversights,
reasoning errors) early on
• A fresh look on the problem
• Guard coding guidelines and best
practices
• Helps when coaching junior developers
3 December 2013
www.inventivedesigners.com
35
Code Reviews: How?
• New branch in Git
• Commit until your code is ready
• Push to stash
• Open a “pull request” (request for pulling my branch in the main branch)
• Reviewer gives remarks and ultimately accepts patch
• Pull request is merged in main branch
3 December 2013
www.inventivedesigners.com
36
3 December 2013
www.inventivedesigners.com
37
Processes
Testing
3 December 2013
www.inventivedesigners.com
38
Testing: Automated tests
• Hudson builds
• Add automated tests while developing
New Features
• Add automated tests when fixing a bug
(regression tests)
3 December 2013
www.inventivedesigners.com
39
Testing: Manual testsAt the end of each sprint, every issue (bug, task, new feature) is tested by another developer
• Again, a fresh look on the problem (like review)
• Was the customer’s problem actually fixed?
3 December 2013
www.inventivedesigners.com
40
R Testing R
Sprint x Sprint x + 1
Week 1 Week 2 Week 3 Week 4 Week 1
Development Testing Development
Beta testing
• Scenarios that are tested manually, just before a major release
• User can see other problems that are not captured in testsR Testing
Sprint x
Week 1 Week 2 Week 3 Week 4
Development Testing
R Testing R
Sprint x Sprint x + 1
Week 1 Week 2 Week 3 Week 4 Week 1
Development Testing Development
R Testing
Sprint x
Week 1 Week 2 Week 3 Week 4
Development Testing
Processes
New features
3 December 2013
www.inventivedesigners.com
41
New features
4 phases
• Research
• Describe
• Estimate
• Implement (+ write tests and documentation)
Resembles “Waterfall”, but no “Big Design Up Front” because we split
features and deliver increments.
3 December 2013
www.inventivedesigners.com
42
New features
“Definition of Done” (SCRUM-principle)
We saw a shift:
• Works in developer’s workspace
• Builds and the automated tests succeed
• Documentation is available
• Is deployed on a live instance (cloud)
3 December 2013
www.inventivedesigners.com
43
With processes / tools
3 December 2013
www.inventivedesigners.com
44
When will that feature be available?
The first 2 sub-features in 3 weeks.
Will it work?
The discussed scenarios are tested every night, your output with sample data is still the same.
Can we get a new version?
Sure, in 3 weeks.
But it introduced a bug.
We’re sorry. It’s a corner case we didn’t think of. We’ll add an automatic test to make sure it
won’t break again.
Questions?
3 December 2013
www.inventivedesigners.com
45
More info? Contact us:EU phone: +32 3 425 40 00
US phone: 011 32 3 425 40 00
email: [email protected]
3 December 2013
www.inventivedesigners.com
Comics were taken from Geek & Poke and are licensed under Create Commons 3.0