Difference between revisions of "Applying Object Design with Programming: Thinking in Objects, Agile Modeling, and TDD"

Line 6: Line 6:
 
<br>
 
<br>
 
<br>
 
<br>
This hands-on course is based on OO-industry leader Craig Larman’s extensive experience coaching and applying agile modeling and development (both objected-oriented and non-OO)  for decades; Craig is the author of the world's most popular text on OO analysis and design, an industry and university standard text translated to 17 languages, used worldwide.
+
'''Who is the author of this course, and their experience?''' This hands-on course is based on OO-industry leader Craig Larman’s extensive experience coaching and applying agile modeling and development (both objected-oriented and non-OO)  for decades; Craig is the author of the world's most popular text on OO analysis and design, an industry and university standard text translated to 17 languages, used worldwide.
 
<br>
 
<br>
 
<br>
 
<br>

Revision as of 02:35, 24 July 2011

Overview

5 days.

Developing in Java, C#, or C++ is not really about a new object-oriented (OO) programming language; it is about thinking in objects -- a different way to design software. This high-impact and hands-on course on skillful software analysis, design, and development is aimed at developers looking for solid OO programming skills and the ability to "think in objects".

Who is the author of this course, and their experience? This hands-on course is based on OO-industry leader Craig Larman’s extensive experience coaching and applying agile modeling and development (both objected-oriented and non-OO) for decades; Craig is the author of the world's most popular text on OO analysis and design, an industry and university standard text translated to 17 languages, used worldwide.

Is programming good and modeling bad? Or vice versa? This course goes beyond unsophisticated false dichotomies and shows developers how to apply both agile modeling and OO programming, combined with test-driven development (TDD) into a useful, efficient set of techniques.

What are the key, core principles of object design or thinking in objects? How to apply them? In this course, developers will have

How can we effectively apply modeling in an agile value-adding practical approach, and how can it be integrated with programming and automated tests to create great software? And how to can we design software with technical agility to enable business agility? Finally, what are the overarching principles to the design of elegant, understandable, and extensible systems?

In this intensive hands-on seminar you will find the answer these questions. There is a little lecture time, but the majority of the time is spent in high-value-education small modeling teams at the whiteboards while the coach rotates and works with each team, coaching the case studies while applying agile modeling, principles and patterns. And time programming in Java while the coach helps you implement your systems, while you learn the powerful practice of test-driven development (TDD) with refactoring.

The course involves multiple iterations of several case studies, in which the teams go through repeating cycles of agile modeling and development in Java combined with unit TDD. On each cycle, the coach gradually introduces more principles and techniques to build software with agility.

We apply a variety of education techniques established over 20 years of coaching and mentoring to maximize the learning, value, and fun, including buzz groups, multi-modal learning, pair work, and lots of hands-on practice.


Methods of Education

Discussion, presentation, Q&A, workshop exercises


Audience

Developers

Level

Intermediate: This course introduces concepts and techniques that the attendee will apply during the workshop.


Prerequisites

Familiarity with a programming language


Objectives

Upon completion of this course, students should be able to:

  • think and design with high-cohesion low-coupled objects
  • implement solid object designs in well-crafted Java
  • apply core Java libraries
  • apply frequently used Java idioms
  • design with core principles and patterns that enable software with agility
  • do agile modeling
  • do unit test-driven development
  • apply basic refactorings and refactoring tools in Java
  • transform agile models into code and tests
  • take a problem through requirements analysis, design, automated tests, and well-crafted software in the context of an iterative and agile process


Related Courses

After:


Maximum Participants

16


Environment - Room, Tools, Texts

Course Environment - Workshop Style2