Friday 19 October 2012
The following workshops run for a full day (from 09.30 to 17.30), with a short break in the morning and afternoon, and a lunch break at 13.00.
||Agile/OO design from start to finish
WORKSHOP REF: SA07
Many people who think they’re doing OO aren’t. For example, the dynamic model (which shows how run-time objects interact) should drive the design process; the class diagram is an artifact you build while doing dynamic modelling. Fixating on the class diagram renders your program at best unwieldy, at worst non-functional.
Similarly, basic OO architectural goals (like eliminating getter/setter functions) seem impossible to do unless you understand how the design process actually works. It turns out that the process you use influences both the quality and the basic structure of the design.
This class covers an Agile version of the OO design process, with an emphasis on how to arrive at an optimal design. We’ll provide a quick overview of the process, then spend much of the class working through one (or more if we have time) real-world examples that show you the entire process, from front to back: requirements gathering and problem-statement definition, use-case analysis (story development), and the simultaneous construction of the dynamic and static models using UML.
||Structuring XAML-based applications using DI, M-V-VM and Prism
WORKSHOP REF: SA08
XAML underpins three main technologies: Windows Presentation Foundation (WPF), Silverlight, and Windows 8 Metro-style applications. And the use of XAML leads to well-known patterns of development and architecture that are often misunderstood and misapplied.
This intensive workshop will deliver an in-depth analysis of how to structure your application, by examining the following core areas amongst others:
1. A detailed examination of the Model-View-ViewModel (M-V-VM) UI pattern, and how to make it actually work in practice
2. Managing complex user and ViewModel interactions: messaging, interaction requests and loose coupling
3. The true purpose of the Visual State Manager
4. How to really maximize the use of the designer / developer split through the concept of “developing for designers„ and the role of TDD
5. Practical guidance on using Prism to deliver real business benefit, and examining ways that it can be adapted, extended and improved
6. Really exploiting MEF to improve the structure, testability and extensibility of your applications
7. An analysis of M-V-VM frameworks such as M-V-VM Light and Jounce, and whether you should roll your own
8. A detailed review of techniques for validation of input and the model
9. Future-proofing your user interfaces
M-V-VM in particular is often misunderstood and perceived as being over-complicated; this workshop will definitely clarify the pattern and explain why this is not the case.
So if you are responsible for the architecture and design of a modern Windows application, this workshop is for you.
||Effective architecture sketches
WORKSHOP REF: SA09
Collaboration and “moving fast„ aren’t terms that many people associate with the software architecture role, yet they’re both essential. Why? Because collaborating on the software design process provides a basis for coming up with a better solution and it paves the way for collective code ownership. And moving fast requires “just enough„ up front design to avoid costly rework, which sits conveniently in that vague area between big design up front and foolishly hoping for the best. Costly rework can be caused by a number of things, ranging from not mitigating the key technical risks through to the team not understanding the high-level structure and therefore being able to work towards the same vision. This, as with agile in general, requires good communication skills and not being able to effectively communicate your software architecture will slow you down at best.
Most people don’t get to practice the software design process all that often and fewer get to hone their communication skills. Join us if you want to practice collaborative software design and learn about how to communicate it through a collection of simple, effective architecture sketches.
||Designing and building ASP.NET MVC applications
WORKSHOP REF: SA10
MVC as a style of web development has been around forever, but ASP.NET MVC only for a relatively short time.
Creating your first MVC application is easy, but how do you ensure that the application is maintainable and extensible? How do you use the latest .NET tools and frameworks within MVC? How do you make sure the application is testable? How do you use routes and route constraints? What external tools are there to help you test and debug the application? How do you manage database access from within an MVC application? What’s the difference between a model and a view model?
During the day we will start from scratch and build a testable ASP.NET MVC application. During the course of the day we’ll cover MVC, testing, using IoC to create a more testable application, Entity Framework 4 and the Repository pattern.
At the end of the day you will come away with a solid understanding of how to use various patterns and techniques to create a working ASP.NET MVC application.
||Pattern-oriented software architecture
WORKSHOP REF: SA11
Patterns offer a successful way of exploring, reasoning about, describing and proposing design ideas. There are many valuable aspects of pattern-based thinking that are overlooked in the common perception of design patterns. The original vision of patterns embodies a notion of incremental, feedback-based design – something that may come as a revelation to anyone who had mentally pigeonholed patterns together with heavier-weight design approaches. They are also somewhat broader in application than just OO framework design – something that may come as a surprise to anyone who had restricted their view of patterns to the handful of initial patterns documented by the Gang-of-Four.
This session will start off with basic pattern concepts and practices, with examples, and work through a number of more sophisticated ideas, such as the relationship between pattern-oriented thinking and incremental development, patterns and architectural styles, and how you can mine patterns in your own systems.
||A programmatic introduction to the Neo4j graph database
WORKSHOP REF: SA12
Jim Webber & Ian Robinson
Neo4j is a JVM-based graph database. Its graph data model is intuitive and expressive, mapping closely to your whiteboard domain model. For highly connected data, Neo4j is thousands of times faster than relational databases, making it ideal for managing complex data across many domains, from finance to social, telecoms to geospatial.
This tutorial covers the core functionality of the Neo4j graph database. With a mixture of theory and entertaining hands-on coding sessions, you’ll quickly learn how easy it is to develop a Neo4j-backed application. Sessions include:
• NOSQL and Graph Database overview
• Neo4j Fundamentals and Architecture
• The Neo4j Core API
• Neo4j Traverser APIs
• Declarative querying with Cypher
• Graph algorithms
• Solutions architecture: using Neo4j in large systems
Each session (apart from the fundamentals and architecture) comprises a set of practical exercises designed to introduce and reinforce an aspect of the Neo4j stack. The practical parts of the tutorial consist of Koan-style lessons where a specific aspect of the Neo4j stack is presented as a set of failing unit tests that participants will work to fix. The exercises gradually become more challenging until the attendees are capable of implementing sophisticated graph operations against Neo4j.
Attendees won’t need any previous experience with Neo4j or NoSQL databases, but will require some fluency in Java, a little familiarity with a modern IDE, and a basic understanding of JUnit to help complete the lab tasks.
Return to Sessions introduction
Don’t miss it!
Software Architect Thursday: Simon Brown
on The code doesn’t tell the whole story
Don’t miss it!
Software Architect Wednesday: David Wheeler
on Understanding Windows 8
Don’t miss it!
Software Architect Thursday: Nathaniel T. Schutta
on The mobile app smackdown: native apps vs. the mobile web
Don’t miss it!
Software Architect Friday: Kevin Jones
on Designing and building ASP.NET MVC applications
Details of the conference are now available on Lanyrd.com, the social conference directory.
Find out more!