I. What is a mature software?
Introduction
What is a mature software?
II. Basic Concepts
Version Control
Build
Build Process (Java)
Compilation
JAR Generation
What is Maven?
How Maven works?
Appendix: Maven with IDEs
Tests
Functional Testing
Non-Functional Testing
Overview: Functional Tests
Unit
Integration
System
Acceptance
Ideal Model
Overview: Non-Functional Tests
Load
Performance
Stress
What is TDD?
Benefits
Development Cycle
Appendix: Code Coverage
III. Software Architecture
Continuous Integration
Main Associated Practices
Key Concepts
Prerequisites to have Continuous Integration
Benefits
Disadvantages
ALM - Application Lifecycle Management
Why use ALM?
Beware ALM
Appendix: My ALM Suite
Database
Differences: SQL and NoSQL
– Divisions
– Focus
– Scalability
Which use and when to use?
Appendix: NewSQL
IV. Code Architecture
Clean Code
What is the importance of the Clean Code?
How to write a Clean Code?
Tips
Design Patterns
GoF Patterns
Types Of Design Patterns
Creational Patterns
Structural Patterns
Behavioral Patterns
My Favorite Design Patterns
When use
Why use
Programming Paradigms
Aspect-Oriented Programming (AOP)
Functional Programming
Reactive Programming
Domain-Driven Design (DDD)
Behavior-Driven Design (BDD)
Architectural Patterns
MVC (Model-View-Controller)
MVVM (Model-View-ViewModel)
MVP (Model-View-Presenter)
MVW (Model-View-Whatever)
Programming Principles
SOLID
Single Responsibility
Open-Close
Liskov substitution
Interface segregation
Dependency inversion
DRY
KISS
WYSIWYG
YAGNI
V. Systems Integration
Programming for Web
What is HTTP?
HTTP Methods
Status Codes
Headers
Authentication
Cookies
Web Services
SOAP
REST
Security
SQL Injection
Cross-Site Request Forgery (CSRF)
Cross-Site Scripting (XSS)
Appendix: Cloud Computing
Delivery Models
IaaS (Infrastructure as a Service)
PaaS (Platform as a Service)
SaaS (Software as a Service)
Others
Notes
About the Author