SDLC
Build Automation Tools
Gradle
Dependency Management
- Dependency scope or Gradle Configuration
- compile
- testCompile
- runtime
- testRuntime
- archives
- default
New scopes/configurations could be introduced by plug-ins. E.g, ‘groovy’ plugin introduces ‘groovy’ configuration.
Task Management
task myTask //declaration only without configuration or action
task myTask { configure closure }
task myType << { task action }
task myTask(type: SomeType)
task myTask(type: SomeType) { configure closure }
- How to create a simple task?
task task1 << { println 'I'm a simple task}
Executing gradle task1
prints Hello, world
- How to create a simple task with additive blocks
1 2 3 |
|
Executing gradle -q task2
prints Hello, world
- How to create a simple task with configuration?
1 2 3 4 |
|
Executing: gradle -q task4
prints
1 2 3 |
|
- How to create a simple task with additive configuration blocks?
1 2 3 4 5 |
|
Executing gradle task4
prints
1 2 3 4 5 |
|
Task dependencies
- If doFirst() and doLast() methods are defined in a task, then it is executed before and after the task execution.
1 2 3 4 5 6 |
|
Result:
1 2 3 4 5 |
|
- Calling doFirst() and doLast() methods from configuration block
1 2 3 4 5 6 7 8 9 10 11 |
|
Result:
1 2 3 4 5 |
|
- How to disable a task? -
task4.enabled = false
- How to find the path of a task?
task mytask << { println "Path of this task is ${path}" }
Results:Prints Path of this task is :mytask
Continuous Integration
- Hudson / Jenkins
- TeamCity
- CruiseControl
- Ivy
Code Analysis
- Emma
- Corbetura/Clover
- Fortify
- JDepend
- FindBugs
- SONAR
Code Metrics
- Novel way to visualize whole project, package structure & lines of code - http://redotheweb.com/CodeFlower/
- Cyclomatic Complexity -
- http://www.onjava.com/lpt/a/4917
- http://c2.com/cgi/wiki?CyclomaticComplexityMetric
- http://www.guru99.com/cyclomatic-complexity.html
Development Methodologies
http://en.wikipedia.org/wiki/List_of_software_development_philosophies
Agile
XP
Scrum
- Product Backlogs
- Spring Backlogs
- 2 week sprints
- Meetings
- Biweekly Sprint Planning
- Daily Scrum calls (max 15 mins)
- Sprint review meeting
- Retrospectives (at the end of the sprint)
- Backlog refinement (when needed)
- Roles
- Product Owner
- Scrum Master
- Scrum Team
- Charts
- Burndown chart @ sprint-level
- Burndown chart @ release and product-level