SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
Training Offerings
Ganesh Samarthyam
(CodOps Technologies LLP)
About the Trainer
Ganesh Samarthyam is co-founder of CodeOps Technologies. Earlier, he worked for Siemens
(Corporate Research and Technologies, Bangalore) in “Software Architecture and Development"
team for the last 6+ years. Before Siemens, he worked in Hewlett-Packard’s C++ compiler team,
Bangalore for 4.5 years. He also served as member of ANSI/ISO C++ standardization committee
(JTC1/SC22/WG21) from 2005 to 2007 representing HP. He has Software Engineering Certified
Instructor(SECI) and Professional Software Engineering Master (PSEM) certifications from IEEE.
His recent book is “Refactoring for Software Design Smells: Managing Technical Debt” (Morgan
Kaufmann/Elsevier; November 2014). For more information, visit his websites: http://
www.designsmells.com, http://www.codeops.tech or his LinkedIn page: http://bit.ly/sgganesh.
Trainings Offered
Clean Code Training 2
Advanced Core Java Training 4
Effective Object Oriented Programming and Design 6
SOLID Principles and Design Patterns 8
Refactoring in Practice 10
Refactoring to Java 8 12
Software Architecture and Design 15
CodeOps Technologies LLP 1
Clean Code Training
Most	software	projects	suffer	from	schedule	slippages	and	cost	overruns	(sometimes	they	
even	get	cancelled)	because	of	poor	software	quality.	Research	shows	that	defect	introduction	
rates	can	be	reduced	up	to	75%	by	following	disciplined	personal	practices!	This	course	
precisely	covers	these	practices	–	it	discusses	proven	programming	practices	for	creating	clean	
(i.e.,	robust,	stable	&	maintainable,	and	secure)	code.	
Prerequisite	Entry	Criteria		
Developers	with	working	knowledge	in	one	of	the	following	languages:	C,	C++,	Java,	or	C#.	
Please	let	us	know	the	preferred	language	so	that	the	examples	will	be	given	in	that	specific	
language	(one	of	C,	C++,	Java,	or	C#).		
Comprehensive	Training:	
• Discusses	60	specific	programming	best	practices	for	writing	reliable,	stable	&	
maintainable,	and	secure	code;	useful	for	developers	working	in	both	development	and	
maintenance	projects	
• Essential	training	for	programmers	working	in	development	projects		
• Example-driven	approach	makes	the	techniques	easy	to	understand	and	apply		
Training	Features:	
• Introduces	important	proven	best	practices	for	writing	dependable	code	to	developers	
• Introduces	systematic	code	reviews	and	apply	static	analysis	tools	to	understand	how	to	
effectively	find	problems	in	source	code	early	in	the	development	lifecycle			
• Hands-on	exercises	to	help	developers	internalize	the	key	practices	as	well	as	keep	
them	engaged	in	the	training	(participants	are	expected	to	bring	their	own	laptops	or	
use	the	machines	available	in	the	training	room).		
Course	Contents:	
• Day	1:		
• Introduction	to	writing	dependable	(bullet-proof)	code	with	real-world	case-
studies	and	examples	(1	hour)	
• 20	specific	techniques	for	writing	stable,	maintainable,	and	testable	code	with	
coding	examples	(6	hours)	
• Day	2:		
• 20	specific	techniques	for	writing	secure	code	with	coding	examples	(3.5	hours)		
• 20	specific	techniques	for	writing	reliable	code	with	coding	examples	(3.25	
hours)		
• Wrap-up	and	key	takeaways	(0.25	hours)		
CodeOps Technologies LLP 2
Key	Benefits:	
• Creates	awareness	on	the	cost	of	defects	and	the	value	of	high	quality	software	
• Empowers	the	developers	with	knowledge	on	specific	techniques	that	can	be	
immediately	applied	in	their	regular	work	
• Following	these	techniques	will	result	in	lesser	defects	in	the	software	–	benefit	can	be	
perceived	through	reduced	cost	and	more	customer	satisfaction	
• Hands-on	coding	exercises	enhance	the	understanding	and	helps	participants	apply	the	
learning	in	their	day-to-day	work.		
CodeOps Technologies LLP 3
Advanced Core Java Training
Java	is	used	in	more	than	3	billion	devices	today;	its	use	range	from	web	applications	to	lunar	
landers.	Excellent	skills	in	core	Java	is	a	must	for	writing	high-quality	code	within	tight	
deadlines.	This	training	covers	advanced	features	of	Java	(such	as	lambda	expressions	and	
generics)	in	detail	as	well	as	best	practices	for	writing	high-quality	code	using	these	features.		
Prerequisite	Entry	Criteria		
Developers	with	at	least	3	years	of	working	experience	programming	in	Java.		
Comprehensive	Training:	
• Discusses	all	major	core	Java	topics;	useful	for	developers	working	in	both	development	
and	maintenance	projects	
• Example-driven	approach	makes	the	techniques	easy	to	understand	and	apply		
• 3	days	training	that	covers	Core	Java	topics	in	considerable	depth	and	breadth;	includes	
best	practices	for	effectively	using	the	advanced	Java	features	in	practice		
Training	Features:	
• Introduces	important	proven	best	practices	for	writing	dependable	code	to	developers	
• Hands-on	exercises	to	help	developers	internalize	the	key	practices	as	well	as	keep	
them	engaged	in	the	training	(participants	are	expected	to	bring	their	own	laptops	or	
use	the	machines	available	in	the	training	room).		
Curriculum	for	Advanced	Core	Java	Training		
This	course	covers	the	following	advanced	Core	Java	topics	in	considerable	depth.		
• Generics	and	Collections	
• Lambda	Built-in	Functional	Interfaces	
• Java	Stream	API	
• Use	Java	SE	8	Date/Time	API	
• Java	File	I/O	(NIO.2)	
• Java	Concurrency	
• Persistence/Serialization		
• Internationalization		
• Design	Patterns	in	Java	(examples	from	JDK)		
• Advanced	Java	Best	Practices		
CodeOps Technologies LLP 4
Key	Benefits:	
• Trains	developers	on	advanced	core	Java	features;	developers	can	immediately	start	
applying	the	learning	from	the	training	in	their	projects.			
• Covers	language	and	library	features	added	in	Java	versions	7	and	8.		
CodeOps Technologies LLP 5
Effective Object Oriented
Programming and Design
Expertise	in	software	design	is	key	for	designing	and	implementing	high-quality	enterprise	
software	systems.	Object	oriented	programming	is	the	mainstream	programming	paradigm	
followed	today	and	is	used	extensively	for	creating	industrial-strength	software.	This	course	
covers	how	to	apply	design	principles	and	practices	of	effective	software	design	creating	high-
quality	enterprise	systems.		
Prerequisite	Entry	Criteria		
Developers	with	working	knowledge	of	Java;	knowledge	of	UML	desired	(but	not	mandatory)			
Comprehensive	Training:	
• Covers	20	specific	design	principles;	covers	30	specific	techniques	and	best	practices	for	
effective	software	design.		
• Essential	training	for	designers	working	in	development	projects		
• Example-driven	approach	makes	the	techniques	easy	to	understand	and	apply		
• Case-study	approach	in	which	the	participants	will	be	asked	to	create	design	for	
supporting	a	small	feature	requirement;	the	design	will	be	analyzed	for	code	smells	and	
violation	of	design	principles.			
Training	Features:	
• 3	days	of	classroom	training	led	by	experienced	instructor	
• Hard-copy	of	course	material;	course	material	is	based	on	the	books	Oracle	Certified	
Professional	Java	Programmer	Exam	(Apress,	2013),	and	“60	Tips	on	Object	Oriented	
Programming”	(Tata-McGraw	Hill,	2007)	both	(co-)authored	by	the	trainer.		
• Interactive,	example-driven	learning	that	gives	a	practical	exposure	on	how	to	create	or	
improve	high-quality	designs	
Course	Contents:	
• Day	1:		
• Introduction	to	Object	Oriented	Programming	and	Design	(2	hours)	
• Fundamental	OO	principles	(4	hours)	
• Exercises	(1	hour)			
• Day	2:		
• Introduction	to	code	smells	and	refactoring	(1	hour)		
• Refactoring	for	Fowler’s	code	smells	(3	hours)		
CodeOps Technologies LLP 6
• Best	practices	and	heuristics	for	effective	OO	design	(2	hours)	
• Exercises	(1	hour)	
• Day	3	(case	study):		
• Creating	design	for	a	small	feature	requirement	from	the	participant’s	project	
(1.5	hours)	
• Analysis	of	the	designs	created	by	each	of	the	participants	for	potential	code	
smells	and	violations	of	design	principles;	includes	suggestions	for	improvement	
(5.5	hours).				
Key	Benefits:	
• Developers	will	know	fundamental	software	engineering	principles	and	how	to	apply	
them		
• Developers	will	know	OO	best	practices	and	how	to	apply	them	in	practice			
• Developers	will	know	about	common	code	smells	and	strategies	for	refactoring	the	
smells		
• Developers	will	be	better	equipped	for	creating	effective	design	solutions	(that	
provides	the	basis	for	high-quality	software)	
CodeOps Technologies LLP 7
SOLID Principles and Design Patterns
When	you	learn	how	to	apply	SOLID	principles	and	design	patterns	by	“discovering”	them	
through	real-world	examples	and	case	studies,	you’ll	remember	them	forever!	By	solving	
programming	problems,	you’ll	apply	principles	and	patterns	in	practice	by	identifying	bad	
smells	and	refactor	them.			
Creating	high-quality	designs	by	applying	relevant	principles	and	patterns	is	a	key	skill	of	leads	
and	architects.	If	you	have	3+	years	of	development	experience	and	want	to	learn	key	patterns,	
this	workshop	is	certainly	for	you.	
Prerequisites		
• Developers	with	working	knowledge	of	C#/Java;	knowledge	of	UML	desired	(but	not	
mandatory).	Programming	examples	and	exercises	will	be	provided	in	C#/Java.		
• This	is	a	hands-on	session,	so	please	bring	your	laptops	to	the	session.	(If	you	don't	have	
a	laptop,	you	can	do	pair	programming	with	other	participants).		
• Ensure	that	Visual	Studio	(any	version	that	supports	C#)	or	Eclipse	(preferably	Java	8)	is	
installed	in	your	machine	for	solving	the	problems.		
Objectives:	
• Help	participants	understand	how	to	apply	SOLID	design	principles	in	practice		
• Help	participants	understand	how	to	apply	key	design	patterns	in	practice		
• Help	participants	understand	how	principles,	patterns,	smells,	refactoring	and	technical	
debt	are	related		
• Help	understand	how	to	identify	smells	and	refactor	them;	also	use	relevant	tools	for	
refactoring	as	needed	proactively.			
Training	Features:	
• 1	day	classroom	session	led	by	experienced	instructor	
• Interactive,	example-driven	learning	that	gives	a	practical	exposure	on	how	to	create	or	
improve	high-quality	designs;	extensive	hands-on	sessions.		
Course	Contents:	
• Warm-up	exercise	on	SOLID	principles	and	design	patterns	(10:00am	to	10.30am)		
• Introduction	to	SOLID	design	principles,	patterns,	technical	debt,	smells,	and	refactoring	
(10:00am	-	10.30am)		
• Applying	SOLID	principles	(10:30am	to	01:00pm	with	15	minutes	tea	break)	
Lunch	break	(1	hour)			
CodeOps Technologies LLP 8
• Discovering	creational	patterns	(Factory	Method,	Abstract	Factory,	Builder,	…)	through	
exercises	and	refactoring		(2.00pm	to	3:15pm)	
• Discovering	structural	patterns	(Bridge,	Composite,	Decorator,	Flyweight,	…)	through	
exercises	and	refactoring		(3:15pm	to	4:15pm	followed	by	a	tea	break)	
• Discovering	behavioural	patterns	(Command,	Iterator,	State,	Strategy,	Template	Method,	
Visitor,	…)	through	exercises	and	refactoring	(4:30pm	to	5.45pm)				
Key	Benefits:	
• Developers	will	know	fundamental	software	engineering	principles	and	how	to	apply	
them		
• Developers	will	know	key	design	patterns	and	how	to	apply	them	in	practice			
• Developers	will	know	about	common	code	smells	and	strategies	for	refactoring	the	
smells		
• Developers	will	be	better	equipped	for	creating	effective	design	solutions	(that	
provides	the	basis	for	high-quality	software)	
CodeOps Technologies LLP 9
Refactoring in Practice
Introduction	
Refactoring	is	an	important	practice	for	teams	to	follow	for	creating	high-quality	software.	
Refactoring	process	is	integral	to	Agile	practices	and	has	received	considerable	focus	in	the	
last	few	years.	This	training	on	refactoring	focuses	on	application	of	refactoring	concepts	in	
practice	in	real	world	projects.	This	is	an	intermediate-level	training	meant	only	for	team	
leads	and	senior	developers	with	>4	years	of	experience.	
Details	of	the	Training	Program	
• The	training	will	be	conducted	by	Ganesh	Samarthyam,	an	experienced	trainer	
and	author.		
• The	training	will	be	for	two	(2)	days	and	will	cover	the	topics	mentioned	below.	
• The	training	will	be	for	8	hours	per	day	(excluding	time	for	breaks,	actual	training	
hours	would	be	6.5	hours)	for	these	two	days	on	the	dates	and	time	convenient	
to	the	client.	
• A	maximum	of	25	participants	can	take	part	in	this	training.	(Limited	number	of	
participants	because	this	training	involves	hands-on	programming	exercises	for	
refactoring	smells,	numerous	exercises	with	extensive	discussions	with	
participants).				
• Training	materials/	handouts	will	be	provided	to	all	the	participants.	
• Training	will	be	conducted	at	client	premises	or	at	a	facility	arranged	by	the	
client.	
• The	client	should	provide	the	infrastructure	to	conduct	the	training.	The	
infrastructure	would	include	the	training	room	with	projector	and	white	board.	
PCs/laptops	are	NOT	required	for	conducting	this	training.	
Prerequisite	Entry	Criteria		
• Only	for	senior	developers	or	team	leads	with	minimum	4	years	of	experience.		
• Participants	are	assumed	to	have	working	knowledge	in	one	of	C++/Java/C#;	
knowledge	of	UML	desired	(but	not	mandatory).	Coding	examples	are	mostly	in	
Java	with	some	examples	in	C++.		
Training	Features	
• 2	days	of	classroom	training	led	by	two	experienced	instructors
• Hard-copy	of	the	course	material		
CodeOps Technologies LLP 10
• Interactive,	hands-on,	practical	and	example-driven	training
Key	Benefits		
• Participants	will	be	armed	with	in-depth	knowledge	on	code/design	smells	and	
how	to	refactor	them	in	practice.	
• The	participants	will	know	specific	tools	and	techniques	for	detecting	design	
smells	and	for	refactoring	them.		
Detailed	Course	Contents	
• Day	1	–	First	Half	(3	hours):		
• Introduction	to	smells	and	refactoring	(0.5	hours)	
• An	exercise	on	finding	smells	from	examples	(1.0	hour)	
• Code-level	refactoring	(0.3	hours)	
• Introduction	to	design-level	refactoring	(0.2	hours)		
• Applying	the	abstraction	principle	(1	hour)		
• Assigning	unique	responsibilities	
• Creating	coherent	abstractions	
• Day	1	–	Second	Half	(3.5	hours):		
• Tools	for	design	smells	detection	and	refactoring	(0.5	hours)
• Group	hands-on	exercise	on	running	tools	on	sample	code	base	(1	hour)	
• Presentation	of	results	from	groups	(1	hour)	
• Applying	encapsulation	principle	(1	hour)		
• Hiding	implementation	details		
• Hiding	variations		
• Day	2	–	First	Half	(3	hours):
• Applying	modularization	principle	(1	hour)		
• Moving	features	between	objects		
• Organizing	data		
• Making	method	calls	simpler
• Group	exercise	(4	groups)	on	refactoring	smells	(1	hour)		
• Applying	hierarchy	principle	(1	hour)		
• Exercise	on	refactoring	hierarchy	smells	(15	minutes)	
• Dealing	with	generalization	
• Ensuring	substitutability	
• Creating	harmonious	hierarchies		
• Day	2	–	Second	Half	(3.5	hours):	
• Presentation	from	groups	on	results	on	refactoring	exercise	(1.5	hours)	
• Open	discussion	on	exercise	results	(0.5	hours)	
• Big	(i.e.,	large	scale)	refactoring	(0.5	hours)	
• Communication	and	high	level	refactoring	(0.5	hours)
• Summary,	key	takeaways	and	wrap-up	(0.5	hours)	
CodeOps Technologies LLP 11
Refactoring to Java 8
Why	this	training?		
The	Java	8	release	has	some	of	the	most	important	feature	addimons	to	the	Java	language	
and	the	library.	Key	features	added	in	Java	8	include	lambda	funcmons,	stream	API	and	date	
and	mme	API.	The	main	benefit	of	Java	8	features	is	produc[ve	programming:	genng	work	
done	more	efficiently	and	effecmvely.	The	underlying	approach	is	a	paradigm	shiq	from	
object	oriented	programming	view	supported	from	the	early	versions	of	Java:	Java	8	
encourages	func[onal	thinking	(i.e.,	programming	in	funcmonal	programming	style).	This	2-
day	training	introduces	all	the	important	concepts	and	features	important	for	leveraging	Java	
8	features	for	regular	work	and	improve	producmvity.	What	is	more,	this	training	also	covers	
best	pracmces	in	using	Java	8	features.		
In	this	completely	hands-on	session	(extensive	set	of	sample	programs	will	be	shared	to	all	
parmcipants),	this	training	introduces	all	the	important	concepts	and	features	important	for	
refactoring	Java	wriren	in	earlier	versions	to	exploit	Java	8	features.	Special	feature:	Live	
demo	of	refactoring	open	source	legacy	code	base	to	show	how	lambdas	and	streams	can	
result	in	shorter	and	effecmve	code.	
Pre-requisites		
Developers/leads	with	working	knowledge	in	Java	programming.	No	prior	exposure	to	Java	8	
features	required.		
Training	room	setup		
Access	to	lab	machines	installed	with	JDK	8.0	version	or	later.		
Training	room	equipped	with	projector	and	whiteboard	with	marker	pens.		
Course	Outline	–	2	days		
(This	course	contents	also	have	a	mapping	to	OCP	Java	SE	8	cermficamon	objecmves).		
• Introduc[on	to	Java	8	and	Func[onal	Thinking		
• Lambda	Expressions	and	Built-in	Func[onal	Interfaces	
o Use	the	built-in	interfaces	included	in	the	java.uml.funcmon	package	such	as	
Predicate,	Consumer,	Funcmon,	and	Supplier	
o Develop	code	that	uses	primimve	versions	of	funcmonal	interfaces	
o Develop	code	that	uses	binary	versions	of	funcmonal	interfaces	
o Develop	code	that	uses	the	UnaryOperator	interface	
• Collec[ons	with	Java	8		
o Collecmons	Streams	and	Filters	
o Iterate	using	forEach	methods	of	Streams	and	List	
CodeOps Technologies LLP 12
o Use	Stream	API	with	NIO.2	
o Filter	a	collecmon	by	using	lambda	expressions	
o Develop	code	that	uses	the	Opmonal	class	
• Describe	Stream	Interface	and	Stream	Pipeline	
o Use	method	references	with	Streams	
o Develop	code	to	extract	data	from	an	object	using	peek()	and	map()	methods	
including	primimve	versions	of	the	map()	method	
o Search	for	data	by	using	search	methods	of	the	Stream	classes	including	
findFirst,	findAny,	anyMatch,	allMatch,	noneMatch	
o Develop	code	that	uses	Stream	data	methods	and	calculamon	methods	
o Sort	a	collecmon	using	Stream	API	
o Save	results	to	a	collecmon	using	the	collect	method	and	group/parmmon	data	
using	the	Collectors	class	
o Use	of	merge()	and	flatMap()	methods	of	the	Stream	API	
• Use	Java	SE	8	Date/Time	API	
o Create	and	manage	date-based	and	mme-based	events	including	a	combinamon	
of	date	and	mme	into	a	single	object	using	LocalDate,	LocalTime,	LocalDateTime,	
Instant,	Period,	and	Duramon	
o Work	with	dates	and	mmes	across	mmezones	and	manage	changes	resulmng	from	
daylight	savings	including	Format	date	and	mmes	values	
o Define	and	create	and	manage	date-based	and	mme-based	events	using	Instant,	
Period,	Duramon,	and	TemporalUnit	
• Java	Concurrency	
o Use	parallel	Fork/Join	Framework	
o Use	parallel	Streams	including	reducmon,	decomposimon,	merging	processes,	
pipelines	and	performance.	
• Java	8	Best	Prac[ces		
o Leveraging	Java	8	features	through	funcmonal	thinking		
o Wrimng	concurrent	code	with	parallel	streams		
o Using	Java	8	date/mme	API	by	migramng	from	legacy	Date	and	Calendar	classes		
o Design	parerns	for	funcmonal	programming		
CodeOps Technologies LLP 13
• Refactoring	to	Java	8		
o Refactoring	to	Java	8	lambdas		
o Refactoring	to	streams		
o Refactoring	in	the	context	of	funcmonal	interfaces		
o Dealing	with	backward	compambility	issues		
o Refactoring	to	exploit	parallel	streams	for	performance		
o Concurrency	aspects	to	keep	in	mind	when	refactoring	
o Tools	for	automamc	refactoring	to	Java	8		
• Effec[ve	Refactoring	to	Java	8		
o Debugging	funcmonal	programs	during	refactoring	
o Wrimng	unit	tests	for	lambda	funcmons	&	streams	in	the	context	of	refactoring		
CodeOps Technologies LLP 14
Software Architecture and Design
Through Case Studies, Real-world Examples and
Exercises
Training	Overview		
Software	architecture	knowledge	and	expertise	is	a	key	enabler	for	business	success.	This	
training	will	cover	all	the	key	and	foundational	topics	that	every	architect	should	know	
including	architectural	principles,	architectural	styles,	design	patterns,	Non-Functional	
Requirements	(NFRs)	and	constraints,	architecture	process,	and	tools	for	software	
architecture.		
This	practical	training	covers	software	architecture	through	real-world	examples	and	
exercises.	Case	studies	covered	are	from	both	industrial	and	open	source	projects.	
Details	of	the	Training	Program	
• The	training	will	be	conducted	by	Ganesh	Samarthyam,	an	experienced	trainer	
and	author.		
• The	training	will	be	for	two	(2)	days	and	will	cover	the	topics	mentioned	below.	
• The	training	will	be	for	8	hours	per	day	(excluding	time	for	breaks,	actual	training	
hours	would	be	6.5	hours)	for	these	2	days	on	the	dates	and	time	convenient	to	
the	client.	
• A	maximum	of	25	participants	can	take	part	in	this	training.	(Limited	number	of	
participants	because	this	training	involves	numerous	exercises	with	extensive	
discussions	with	participants).				
• Training	materials/	handouts	will	be	provided	to	all	the	participants.	
• Training	will	be	conducted	at	client	premises	or	at	a	facility	arranged	by	the	
client.	
• The	client	should	provide	the	infrastructure	to	conduct	the	training.	The	
infrastructure	would	include	the	training	room	with	projector	and	white	board.	
No	PCs/laptops	are	required	for	conducting	this	training	(exercises	are	paper-
and-pen	based).	
Prerequisite	Entry	Criteria		
CodeOps Technologies LLP 15
• Only	for	senior	developers	or	team	leads	with	minimum	4	years	of	experience.	
(This	training	is	not	meant	for	those	who	are	already	working	as	an	architect	–	
rather,	this	training	is	for	those	who	are	aspiring	to	become	architects).		
• Participants	are	assumed	to	have	experience	in	software	development	or	
maintenance.	Having	experience	only	in	QA/testing,	configuration	management,	
DBA	etc.	is	insufficient	for	participating	in	this	training	on	software	architecture.		
Key	Benefits		
• Participants	will	get	a	grounded	introduced	to	software	architecture	and	design,	
which	will	enable	to	perform	well	as	an	architect.	
• Participants	will	know	specific	tools,	techniques,	and	best	practices	for	creating	
effective	designs.		
Outline	of	Course	Contents	
Day	1	
• Introduction	to	software	architecture	and	design	(0.5	hours)	
• What	is	software	architecture?	
• Types	of	architectures	
• The	role	of	architecture	in	project	and	business	success			
• Introduction	to	design	principles,	design	patterns,	and	architecture	styles	
• Design	principles	and	design	patterns	through	exercises	(4	hours)	
• Introduction	to	SOLID	principles	and	design	patterns	(1	hour)		
• Creational	patterns	through	exercises	(1	hour)	
• Structural	patterns	through	exercises	(1	hour)	
• Behavioural	patterns		through	exercises	(1	hour)		
• Architecture	styles	through	case	studies	(2	hours)
• Guiding	principles	of	software	architecture	and	design
• Understanding	important	architectural	styles	(such	as	layered,	pipe-and-
filter,	client-server,	N-tier,	MVC,	and	State-Compute-Control)		
• Exercise	on	understanding	architectural	styles		
• Case	study	on	reference	architecture	(OpenSAR)	for	applying	
architectural	styles		
Day	2	
• Creating	an	architecture	(2.5	hours)
• Understanding	what	influences	architectures
• The	process	of	architecting	in	the	real-world		
• Exercise	on	creating	an	architecture		
• Realising	NFRs	(Non	Functional	Requirements)	using	Attribute	Driven	
Design	approach		
• Exercise	on	tactics	for	NFRs		
• Quantifying	NFRs		
• Exercise	on	quantifying	NFRs		
CodeOps Technologies LLP 16
• Role	of	constraints		
• Reference	architectures		
• Documenting	architectures	(viewpoints	and	perspectives)		
• Validating	your	architectural	designs		
• Case	study	&	exercise	on	realizing	security	requirements	(1	hour)		
• Evolving	architectures	(1.5	hours)		
• Understanding	technical	debt	
• Refactoring	for	architectural	smells		
• Tools	for	architectural	refactoring	
• Living	as	an	architect	(1	hour)
• Skills	required	for	an	architect	
• Best	practices	for	living	effectively	as	an	architect		
• Wrap-up,	key	take-aways,	and	Q	&	A		(0.	5	hours)	
CodeOps Technologies LLP 17

Weitere ähnliche Inhalte

Mehr von CodeOps Technologies LLP

BUILD, TEST & DEPLOY .NET CORE APPS IN AZURE DEVOPS
BUILD, TEST & DEPLOY .NET CORE APPS IN AZURE DEVOPSBUILD, TEST & DEPLOY .NET CORE APPS IN AZURE DEVOPS
BUILD, TEST & DEPLOY .NET CORE APPS IN AZURE DEVOPSCodeOps Technologies LLP
 
CREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNER
CREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNERCREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNER
CREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNERCodeOps Technologies LLP
 
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...CodeOps Technologies LLP
 
WRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESS
WRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESSWRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESS
WRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESSCodeOps Technologies LLP
 
Training And Serving ML Model Using Kubeflow by Jayesh Sharma
Training And Serving ML Model Using Kubeflow by Jayesh SharmaTraining And Serving ML Model Using Kubeflow by Jayesh Sharma
Training And Serving ML Model Using Kubeflow by Jayesh SharmaCodeOps Technologies LLP
 
Deploy Microservices To Kubernetes Without Secrets by Reenu Saluja
Deploy Microservices To Kubernetes Without Secrets by Reenu SalujaDeploy Microservices To Kubernetes Without Secrets by Reenu Saluja
Deploy Microservices To Kubernetes Without Secrets by Reenu SalujaCodeOps Technologies LLP
 
Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...
Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...
Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...CodeOps Technologies LLP
 
YAML Tips For Kubernetes by Neependra Khare
YAML Tips For Kubernetes by Neependra KhareYAML Tips For Kubernetes by Neependra Khare
YAML Tips For Kubernetes by Neependra KhareCodeOps Technologies LLP
 
Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...
Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...
Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...CodeOps Technologies LLP
 
Monitor Azure Kubernetes Cluster With Prometheus by Mamta Jha
Monitor Azure Kubernetes Cluster With Prometheus by Mamta JhaMonitor Azure Kubernetes Cluster With Prometheus by Mamta Jha
Monitor Azure Kubernetes Cluster With Prometheus by Mamta JhaCodeOps Technologies LLP
 
Functional Programming in Java 8 - Lambdas and Streams
Functional Programming in Java 8 - Lambdas and StreamsFunctional Programming in Java 8 - Lambdas and Streams
Functional Programming in Java 8 - Lambdas and StreamsCodeOps Technologies LLP
 
Distributed Tracing: New DevOps Foundation
Distributed Tracing: New DevOps FoundationDistributed Tracing: New DevOps Foundation
Distributed Tracing: New DevOps FoundationCodeOps Technologies LLP
 
"Distributed Tracing: New DevOps Foundation" by Jayesh Ahire
"Distributed Tracing: New DevOps Foundation" by Jayesh Ahire  "Distributed Tracing: New DevOps Foundation" by Jayesh Ahire
"Distributed Tracing: New DevOps Foundation" by Jayesh Ahire CodeOps Technologies LLP
 
Improve customer engagement and productivity with conversational ai
Improve customer engagement and productivity with conversational aiImprove customer engagement and productivity with conversational ai
Improve customer engagement and productivity with conversational aiCodeOps Technologies LLP
 
Text semantics with azure text analytics cognitive services
Text semantics with azure text analytics cognitive servicesText semantics with azure text analytics cognitive services
Text semantics with azure text analytics cognitive servicesCodeOps Technologies LLP
 
Build your model using azure custom vision and deploy it in a webapp
Build your model using azure custom vision and deploy it in a webappBuild your model using azure custom vision and deploy it in a webapp
Build your model using azure custom vision and deploy it in a webappCodeOps Technologies LLP
 
Quantum machine learning with microsoft q# at AI Dev Day
Quantum machine learning with microsoft q# at AI Dev DayQuantum machine learning with microsoft q# at AI Dev Day
Quantum machine learning with microsoft q# at AI Dev DayCodeOps Technologies LLP
 
Understanding Azure Face API at AI Dev Day Conference
Understanding Azure Face API at AI Dev Day ConferenceUnderstanding Azure Face API at AI Dev Day Conference
Understanding Azure Face API at AI Dev Day ConferenceCodeOps Technologies LLP
 

Mehr von CodeOps Technologies LLP (20)

BUILD, TEST & DEPLOY .NET CORE APPS IN AZURE DEVOPS
BUILD, TEST & DEPLOY .NET CORE APPS IN AZURE DEVOPSBUILD, TEST & DEPLOY .NET CORE APPS IN AZURE DEVOPS
BUILD, TEST & DEPLOY .NET CORE APPS IN AZURE DEVOPS
 
CREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNER
CREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNERCREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNER
CREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNER
 
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
 
WRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESS
WRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESSWRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESS
WRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESS
 
Training And Serving ML Model Using Kubeflow by Jayesh Sharma
Training And Serving ML Model Using Kubeflow by Jayesh SharmaTraining And Serving ML Model Using Kubeflow by Jayesh Sharma
Training And Serving ML Model Using Kubeflow by Jayesh Sharma
 
Deploy Microservices To Kubernetes Without Secrets by Reenu Saluja
Deploy Microservices To Kubernetes Without Secrets by Reenu SalujaDeploy Microservices To Kubernetes Without Secrets by Reenu Saluja
Deploy Microservices To Kubernetes Without Secrets by Reenu Saluja
 
Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...
Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...
Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...
 
YAML Tips For Kubernetes by Neependra Khare
YAML Tips For Kubernetes by Neependra KhareYAML Tips For Kubernetes by Neependra Khare
YAML Tips For Kubernetes by Neependra Khare
 
Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...
Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...
Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...
 
Monitor Azure Kubernetes Cluster With Prometheus by Mamta Jha
Monitor Azure Kubernetes Cluster With Prometheus by Mamta JhaMonitor Azure Kubernetes Cluster With Prometheus by Mamta Jha
Monitor Azure Kubernetes Cluster With Prometheus by Mamta Jha
 
Jet brains space intro presentation
Jet brains space intro presentationJet brains space intro presentation
Jet brains space intro presentation
 
Functional Programming in Java 8 - Lambdas and Streams
Functional Programming in Java 8 - Lambdas and StreamsFunctional Programming in Java 8 - Lambdas and Streams
Functional Programming in Java 8 - Lambdas and Streams
 
Distributed Tracing: New DevOps Foundation
Distributed Tracing: New DevOps FoundationDistributed Tracing: New DevOps Foundation
Distributed Tracing: New DevOps Foundation
 
"Distributed Tracing: New DevOps Foundation" by Jayesh Ahire
"Distributed Tracing: New DevOps Foundation" by Jayesh Ahire  "Distributed Tracing: New DevOps Foundation" by Jayesh Ahire
"Distributed Tracing: New DevOps Foundation" by Jayesh Ahire
 
Improve customer engagement and productivity with conversational ai
Improve customer engagement and productivity with conversational aiImprove customer engagement and productivity with conversational ai
Improve customer engagement and productivity with conversational ai
 
Text semantics with azure text analytics cognitive services
Text semantics with azure text analytics cognitive servicesText semantics with azure text analytics cognitive services
Text semantics with azure text analytics cognitive services
 
Build your model using azure custom vision and deploy it in a webapp
Build your model using azure custom vision and deploy it in a webappBuild your model using azure custom vision and deploy it in a webapp
Build your model using azure custom vision and deploy it in a webapp
 
Quantum machine learning with microsoft q# at AI Dev Day
Quantum machine learning with microsoft q# at AI Dev DayQuantum machine learning with microsoft q# at AI Dev Day
Quantum machine learning with microsoft q# at AI Dev Day
 
Understanding Azure Face API at AI Dev Day Conference
Understanding Azure Face API at AI Dev Day ConferenceUnderstanding Azure Face API at AI Dev Day Conference
Understanding Azure Face API at AI Dev Day Conference
 
Java & Microservices in Azure
Java & Microservices in AzureJava & Microservices in Azure
Java & Microservices in Azure
 

Trainings Offered - Ganesh Samarthyam - CodeOps Technologies

  • 1. Training Offerings Ganesh Samarthyam (CodOps Technologies LLP) About the Trainer Ganesh Samarthyam is co-founder of CodeOps Technologies. Earlier, he worked for Siemens (Corporate Research and Technologies, Bangalore) in “Software Architecture and Development" team for the last 6+ years. Before Siemens, he worked in Hewlett-Packard’s C++ compiler team, Bangalore for 4.5 years. He also served as member of ANSI/ISO C++ standardization committee (JTC1/SC22/WG21) from 2005 to 2007 representing HP. He has Software Engineering Certified Instructor(SECI) and Professional Software Engineering Master (PSEM) certifications from IEEE. His recent book is “Refactoring for Software Design Smells: Managing Technical Debt” (Morgan Kaufmann/Elsevier; November 2014). For more information, visit his websites: http:// www.designsmells.com, http://www.codeops.tech or his LinkedIn page: http://bit.ly/sgganesh. Trainings Offered Clean Code Training 2 Advanced Core Java Training 4 Effective Object Oriented Programming and Design 6 SOLID Principles and Design Patterns 8 Refactoring in Practice 10 Refactoring to Java 8 12 Software Architecture and Design 15 CodeOps Technologies LLP 1
  • 2. Clean Code Training Most software projects suffer from schedule slippages and cost overruns (sometimes they even get cancelled) because of poor software quality. Research shows that defect introduction rates can be reduced up to 75% by following disciplined personal practices! This course precisely covers these practices – it discusses proven programming practices for creating clean (i.e., robust, stable & maintainable, and secure) code. Prerequisite Entry Criteria Developers with working knowledge in one of the following languages: C, C++, Java, or C#. Please let us know the preferred language so that the examples will be given in that specific language (one of C, C++, Java, or C#). Comprehensive Training: • Discusses 60 specific programming best practices for writing reliable, stable & maintainable, and secure code; useful for developers working in both development and maintenance projects • Essential training for programmers working in development projects • Example-driven approach makes the techniques easy to understand and apply Training Features: • Introduces important proven best practices for writing dependable code to developers • Introduces systematic code reviews and apply static analysis tools to understand how to effectively find problems in source code early in the development lifecycle • Hands-on exercises to help developers internalize the key practices as well as keep them engaged in the training (participants are expected to bring their own laptops or use the machines available in the training room). Course Contents: • Day 1: • Introduction to writing dependable (bullet-proof) code with real-world case- studies and examples (1 hour) • 20 specific techniques for writing stable, maintainable, and testable code with coding examples (6 hours) • Day 2: • 20 specific techniques for writing secure code with coding examples (3.5 hours) • 20 specific techniques for writing reliable code with coding examples (3.25 hours) • Wrap-up and key takeaways (0.25 hours) CodeOps Technologies LLP 2
  • 3. Key Benefits: • Creates awareness on the cost of defects and the value of high quality software • Empowers the developers with knowledge on specific techniques that can be immediately applied in their regular work • Following these techniques will result in lesser defects in the software – benefit can be perceived through reduced cost and more customer satisfaction • Hands-on coding exercises enhance the understanding and helps participants apply the learning in their day-to-day work. CodeOps Technologies LLP 3
  • 4. Advanced Core Java Training Java is used in more than 3 billion devices today; its use range from web applications to lunar landers. Excellent skills in core Java is a must for writing high-quality code within tight deadlines. This training covers advanced features of Java (such as lambda expressions and generics) in detail as well as best practices for writing high-quality code using these features. Prerequisite Entry Criteria Developers with at least 3 years of working experience programming in Java. Comprehensive Training: • Discusses all major core Java topics; useful for developers working in both development and maintenance projects • Example-driven approach makes the techniques easy to understand and apply • 3 days training that covers Core Java topics in considerable depth and breadth; includes best practices for effectively using the advanced Java features in practice Training Features: • Introduces important proven best practices for writing dependable code to developers • Hands-on exercises to help developers internalize the key practices as well as keep them engaged in the training (participants are expected to bring their own laptops or use the machines available in the training room). Curriculum for Advanced Core Java Training This course covers the following advanced Core Java topics in considerable depth. • Generics and Collections • Lambda Built-in Functional Interfaces • Java Stream API • Use Java SE 8 Date/Time API • Java File I/O (NIO.2) • Java Concurrency • Persistence/Serialization • Internationalization • Design Patterns in Java (examples from JDK) • Advanced Java Best Practices CodeOps Technologies LLP 4
  • 6. Effective Object Oriented Programming and Design Expertise in software design is key for designing and implementing high-quality enterprise software systems. Object oriented programming is the mainstream programming paradigm followed today and is used extensively for creating industrial-strength software. This course covers how to apply design principles and practices of effective software design creating high- quality enterprise systems. Prerequisite Entry Criteria Developers with working knowledge of Java; knowledge of UML desired (but not mandatory) Comprehensive Training: • Covers 20 specific design principles; covers 30 specific techniques and best practices for effective software design. • Essential training for designers working in development projects • Example-driven approach makes the techniques easy to understand and apply • Case-study approach in which the participants will be asked to create design for supporting a small feature requirement; the design will be analyzed for code smells and violation of design principles. Training Features: • 3 days of classroom training led by experienced instructor • Hard-copy of course material; course material is based on the books Oracle Certified Professional Java Programmer Exam (Apress, 2013), and “60 Tips on Object Oriented Programming” (Tata-McGraw Hill, 2007) both (co-)authored by the trainer. • Interactive, example-driven learning that gives a practical exposure on how to create or improve high-quality designs Course Contents: • Day 1: • Introduction to Object Oriented Programming and Design (2 hours) • Fundamental OO principles (4 hours) • Exercises (1 hour) • Day 2: • Introduction to code smells and refactoring (1 hour) • Refactoring for Fowler’s code smells (3 hours) CodeOps Technologies LLP 6
  • 7. • Best practices and heuristics for effective OO design (2 hours) • Exercises (1 hour) • Day 3 (case study): • Creating design for a small feature requirement from the participant’s project (1.5 hours) • Analysis of the designs created by each of the participants for potential code smells and violations of design principles; includes suggestions for improvement (5.5 hours). Key Benefits: • Developers will know fundamental software engineering principles and how to apply them • Developers will know OO best practices and how to apply them in practice • Developers will know about common code smells and strategies for refactoring the smells • Developers will be better equipped for creating effective design solutions (that provides the basis for high-quality software) CodeOps Technologies LLP 7
  • 8. SOLID Principles and Design Patterns When you learn how to apply SOLID principles and design patterns by “discovering” them through real-world examples and case studies, you’ll remember them forever! By solving programming problems, you’ll apply principles and patterns in practice by identifying bad smells and refactor them. Creating high-quality designs by applying relevant principles and patterns is a key skill of leads and architects. If you have 3+ years of development experience and want to learn key patterns, this workshop is certainly for you. Prerequisites • Developers with working knowledge of C#/Java; knowledge of UML desired (but not mandatory). Programming examples and exercises will be provided in C#/Java. • This is a hands-on session, so please bring your laptops to the session. (If you don't have a laptop, you can do pair programming with other participants). • Ensure that Visual Studio (any version that supports C#) or Eclipse (preferably Java 8) is installed in your machine for solving the problems. Objectives: • Help participants understand how to apply SOLID design principles in practice • Help participants understand how to apply key design patterns in practice • Help participants understand how principles, patterns, smells, refactoring and technical debt are related • Help understand how to identify smells and refactor them; also use relevant tools for refactoring as needed proactively. Training Features: • 1 day classroom session led by experienced instructor • Interactive, example-driven learning that gives a practical exposure on how to create or improve high-quality designs; extensive hands-on sessions. Course Contents: • Warm-up exercise on SOLID principles and design patterns (10:00am to 10.30am) • Introduction to SOLID design principles, patterns, technical debt, smells, and refactoring (10:00am - 10.30am) • Applying SOLID principles (10:30am to 01:00pm with 15 minutes tea break) Lunch break (1 hour) CodeOps Technologies LLP 8
  • 9. • Discovering creational patterns (Factory Method, Abstract Factory, Builder, …) through exercises and refactoring (2.00pm to 3:15pm) • Discovering structural patterns (Bridge, Composite, Decorator, Flyweight, …) through exercises and refactoring (3:15pm to 4:15pm followed by a tea break) • Discovering behavioural patterns (Command, Iterator, State, Strategy, Template Method, Visitor, …) through exercises and refactoring (4:30pm to 5.45pm) Key Benefits: • Developers will know fundamental software engineering principles and how to apply them • Developers will know key design patterns and how to apply them in practice • Developers will know about common code smells and strategies for refactoring the smells • Developers will be better equipped for creating effective design solutions (that provides the basis for high-quality software) CodeOps Technologies LLP 9
  • 10. Refactoring in Practice Introduction Refactoring is an important practice for teams to follow for creating high-quality software. Refactoring process is integral to Agile practices and has received considerable focus in the last few years. This training on refactoring focuses on application of refactoring concepts in practice in real world projects. This is an intermediate-level training meant only for team leads and senior developers with >4 years of experience. Details of the Training Program • The training will be conducted by Ganesh Samarthyam, an experienced trainer and author. • The training will be for two (2) days and will cover the topics mentioned below. • The training will be for 8 hours per day (excluding time for breaks, actual training hours would be 6.5 hours) for these two days on the dates and time convenient to the client. • A maximum of 25 participants can take part in this training. (Limited number of participants because this training involves hands-on programming exercises for refactoring smells, numerous exercises with extensive discussions with participants). • Training materials/ handouts will be provided to all the participants. • Training will be conducted at client premises or at a facility arranged by the client. • The client should provide the infrastructure to conduct the training. The infrastructure would include the training room with projector and white board. PCs/laptops are NOT required for conducting this training. Prerequisite Entry Criteria • Only for senior developers or team leads with minimum 4 years of experience. • Participants are assumed to have working knowledge in one of C++/Java/C#; knowledge of UML desired (but not mandatory). Coding examples are mostly in Java with some examples in C++. Training Features • 2 days of classroom training led by two experienced instructors • Hard-copy of the course material CodeOps Technologies LLP 10
  • 11. • Interactive, hands-on, practical and example-driven training Key Benefits • Participants will be armed with in-depth knowledge on code/design smells and how to refactor them in practice. • The participants will know specific tools and techniques for detecting design smells and for refactoring them. Detailed Course Contents • Day 1 – First Half (3 hours): • Introduction to smells and refactoring (0.5 hours) • An exercise on finding smells from examples (1.0 hour) • Code-level refactoring (0.3 hours) • Introduction to design-level refactoring (0.2 hours) • Applying the abstraction principle (1 hour) • Assigning unique responsibilities • Creating coherent abstractions • Day 1 – Second Half (3.5 hours): • Tools for design smells detection and refactoring (0.5 hours) • Group hands-on exercise on running tools on sample code base (1 hour) • Presentation of results from groups (1 hour) • Applying encapsulation principle (1 hour) • Hiding implementation details • Hiding variations • Day 2 – First Half (3 hours): • Applying modularization principle (1 hour) • Moving features between objects • Organizing data • Making method calls simpler • Group exercise (4 groups) on refactoring smells (1 hour) • Applying hierarchy principle (1 hour) • Exercise on refactoring hierarchy smells (15 minutes) • Dealing with generalization • Ensuring substitutability • Creating harmonious hierarchies • Day 2 – Second Half (3.5 hours): • Presentation from groups on results on refactoring exercise (1.5 hours) • Open discussion on exercise results (0.5 hours) • Big (i.e., large scale) refactoring (0.5 hours) • Communication and high level refactoring (0.5 hours) • Summary, key takeaways and wrap-up (0.5 hours) CodeOps Technologies LLP 11
  • 12. Refactoring to Java 8 Why this training? The Java 8 release has some of the most important feature addimons to the Java language and the library. Key features added in Java 8 include lambda funcmons, stream API and date and mme API. The main benefit of Java 8 features is produc[ve programming: genng work done more efficiently and effecmvely. The underlying approach is a paradigm shiq from object oriented programming view supported from the early versions of Java: Java 8 encourages func[onal thinking (i.e., programming in funcmonal programming style). This 2- day training introduces all the important concepts and features important for leveraging Java 8 features for regular work and improve producmvity. What is more, this training also covers best pracmces in using Java 8 features. In this completely hands-on session (extensive set of sample programs will be shared to all parmcipants), this training introduces all the important concepts and features important for refactoring Java wriren in earlier versions to exploit Java 8 features. Special feature: Live demo of refactoring open source legacy code base to show how lambdas and streams can result in shorter and effecmve code. Pre-requisites Developers/leads with working knowledge in Java programming. No prior exposure to Java 8 features required. Training room setup Access to lab machines installed with JDK 8.0 version or later. Training room equipped with projector and whiteboard with marker pens. Course Outline – 2 days (This course contents also have a mapping to OCP Java SE 8 cermficamon objecmves). • Introduc[on to Java 8 and Func[onal Thinking • Lambda Expressions and Built-in Func[onal Interfaces o Use the built-in interfaces included in the java.uml.funcmon package such as Predicate, Consumer, Funcmon, and Supplier o Develop code that uses primimve versions of funcmonal interfaces o Develop code that uses binary versions of funcmonal interfaces o Develop code that uses the UnaryOperator interface • Collec[ons with Java 8 o Collecmons Streams and Filters o Iterate using forEach methods of Streams and List CodeOps Technologies LLP 12
  • 13. o Use Stream API with NIO.2 o Filter a collecmon by using lambda expressions o Develop code that uses the Opmonal class • Describe Stream Interface and Stream Pipeline o Use method references with Streams o Develop code to extract data from an object using peek() and map() methods including primimve versions of the map() method o Search for data by using search methods of the Stream classes including findFirst, findAny, anyMatch, allMatch, noneMatch o Develop code that uses Stream data methods and calculamon methods o Sort a collecmon using Stream API o Save results to a collecmon using the collect method and group/parmmon data using the Collectors class o Use of merge() and flatMap() methods of the Stream API • Use Java SE 8 Date/Time API o Create and manage date-based and mme-based events including a combinamon of date and mme into a single object using LocalDate, LocalTime, LocalDateTime, Instant, Period, and Duramon o Work with dates and mmes across mmezones and manage changes resulmng from daylight savings including Format date and mmes values o Define and create and manage date-based and mme-based events using Instant, Period, Duramon, and TemporalUnit • Java Concurrency o Use parallel Fork/Join Framework o Use parallel Streams including reducmon, decomposimon, merging processes, pipelines and performance. • Java 8 Best Prac[ces o Leveraging Java 8 features through funcmonal thinking o Wrimng concurrent code with parallel streams o Using Java 8 date/mme API by migramng from legacy Date and Calendar classes o Design parerns for funcmonal programming CodeOps Technologies LLP 13
  • 14. • Refactoring to Java 8 o Refactoring to Java 8 lambdas o Refactoring to streams o Refactoring in the context of funcmonal interfaces o Dealing with backward compambility issues o Refactoring to exploit parallel streams for performance o Concurrency aspects to keep in mind when refactoring o Tools for automamc refactoring to Java 8 • Effec[ve Refactoring to Java 8 o Debugging funcmonal programs during refactoring o Wrimng unit tests for lambda funcmons & streams in the context of refactoring CodeOps Technologies LLP 14
  • 15. Software Architecture and Design Through Case Studies, Real-world Examples and Exercises Training Overview Software architecture knowledge and expertise is a key enabler for business success. This training will cover all the key and foundational topics that every architect should know including architectural principles, architectural styles, design patterns, Non-Functional Requirements (NFRs) and constraints, architecture process, and tools for software architecture. This practical training covers software architecture through real-world examples and exercises. Case studies covered are from both industrial and open source projects. Details of the Training Program • The training will be conducted by Ganesh Samarthyam, an experienced trainer and author. • The training will be for two (2) days and will cover the topics mentioned below. • The training will be for 8 hours per day (excluding time for breaks, actual training hours would be 6.5 hours) for these 2 days on the dates and time convenient to the client. • A maximum of 25 participants can take part in this training. (Limited number of participants because this training involves numerous exercises with extensive discussions with participants). • Training materials/ handouts will be provided to all the participants. • Training will be conducted at client premises or at a facility arranged by the client. • The client should provide the infrastructure to conduct the training. The infrastructure would include the training room with projector and white board. No PCs/laptops are required for conducting this training (exercises are paper- and-pen based). Prerequisite Entry Criteria CodeOps Technologies LLP 15
  • 16. • Only for senior developers or team leads with minimum 4 years of experience. (This training is not meant for those who are already working as an architect – rather, this training is for those who are aspiring to become architects). • Participants are assumed to have experience in software development or maintenance. Having experience only in QA/testing, configuration management, DBA etc. is insufficient for participating in this training on software architecture. Key Benefits • Participants will get a grounded introduced to software architecture and design, which will enable to perform well as an architect. • Participants will know specific tools, techniques, and best practices for creating effective designs. Outline of Course Contents Day 1 • Introduction to software architecture and design (0.5 hours) • What is software architecture? • Types of architectures • The role of architecture in project and business success • Introduction to design principles, design patterns, and architecture styles • Design principles and design patterns through exercises (4 hours) • Introduction to SOLID principles and design patterns (1 hour) • Creational patterns through exercises (1 hour) • Structural patterns through exercises (1 hour) • Behavioural patterns through exercises (1 hour) • Architecture styles through case studies (2 hours) • Guiding principles of software architecture and design • Understanding important architectural styles (such as layered, pipe-and- filter, client-server, N-tier, MVC, and State-Compute-Control) • Exercise on understanding architectural styles • Case study on reference architecture (OpenSAR) for applying architectural styles Day 2 • Creating an architecture (2.5 hours) • Understanding what influences architectures • The process of architecting in the real-world • Exercise on creating an architecture • Realising NFRs (Non Functional Requirements) using Attribute Driven Design approach • Exercise on tactics for NFRs • Quantifying NFRs • Exercise on quantifying NFRs CodeOps Technologies LLP 16
  • 17. • Role of constraints • Reference architectures • Documenting architectures (viewpoints and perspectives) • Validating your architectural designs • Case study & exercise on realizing security requirements (1 hour) • Evolving architectures (1.5 hours) • Understanding technical debt • Refactoring for architectural smells • Tools for architectural refactoring • Living as an architect (1 hour) • Skills required for an architect • Best practices for living effectively as an architect • Wrap-up, key take-aways, and Q & A (0. 5 hours) CodeOps Technologies LLP 17