Skip to main content

Design and Architecture

Tutorials

MS A Swift Kickstart: Introducing the Swift Programming Language NEW
Daniel Steinberg, Dim Sum Thinking, Inc.
Mon, 11/10/2014 - 8:30am

If you are an experienced developer who hasn't had a chance to look at the new Swift Programming Language, this workshop is for you! Begin the day with a look at functions in Swift—standalone functions that are not part of a class or other Swift type. Examples will range from helloWorld() to functions that generate other functions and functions that take other functions as parameters. You will be introduced to functions with no parameters, one or more parameters, parameters with default values, and variadic parameters.

Read more
MN Essential Test-Driven Development
Rob Myers, Agile Institute
Mon, 11/10/2014 - 1:00pm

Test-driven development (TDD) is a powerful technique for combining software design, unit testing, and coding in a continuous process to increase reliability and produce better code design. Using the TDD approach, developers write programs in very short development cycles: first the developer writes a failing automated test case that defines a new function or improvement, then produces code to pass that test, and finally refactors the new code to acceptable standards. The developer repeats this process many times until the behavior is complete and fully tested.

Read more
MR Design Patterns Explained—from Analysis through Implementation
Ken Pugh, Net Objectives
Mon, 11/10/2014 - 1:00pm

Ken Pugh takes you beyond thinking of design patterns as “solutions to a problem in a context.” Patterns are really about handling variations in your problem domain while keeping code from becoming complex and difficult to maintain as the system evolves. Ken begins by describing the classic use of patterns. He shows how design patterns implement good coding practices and then explains key design patterns including Strategy, Bridge, Adapter, Façade, and Abstract Factory.

Read more
TG Software Design for Testability
Peter Zimmerer, Siemens AG
Tue, 11/11/2014 - 8:30am

Testability is the degree to which a system can be effectively and efficiently tested. This key software attribute indicates whether testing (and subsequent maintenance) will be easy and cheap—or difficult and expensive. In the worst case, a lack of testability means that some components of the system cannot be tested at all. Testability is not free; it must be explicitly designed into the system through adequate design for testability.

Read more
TT iOS 8 Quickstart: The Fundamental Pillars of iOS Development NEW
Daniel Steinberg, Dim Sum Thinking, Inc.
Tue, 11/11/2014 - 8:30am

This tutorial is a hands-on quick start to writing great apps for the iPad, iPhone, and iPod Touch and provides you with a solid foundation to get started. If you are an experienced developer who is new to iOS, this is the perfect workshop for you. Begin the day with an introduction to Xcode and Apple's suite of freely-available developer tools. Xcode provides visual tools for providing your apps’ GUI in a storyboard. Learn how to connect the visual elements to code and interact with them using outlets and actions. Xcode 6 introduces new features for easily customizing your storyboard.

Read more

Concurrent Sessions

BT2 Emergent Design: History, Concepts, and Principles
Rob Myers, Agile Institute
Thu, 11/13/2014 - 10:00am

Software design is about change. A good design facilitates adding features—and adding new developers to the team. Yet any change to the code impacts design and could damage existing functionality. Without design idioms and practices, the code can degrade into a "big ball of spaghetti” and a maintenance nightmare. Your team must know which decisions to make early in design and which to defer. Rob Myers reviews “families” of design attributes and practices, showing the common principles within each.

Read more
BT6 Avoiding Over Design and Under Design
Al Shalloway, Net Objectives
Thu, 11/13/2014 - 11:30am

The question of how much design to do up-front on a project is an engaging conundrum. Too much design often results in excess complexity and wasted effort. Too little design results in a poor architecture or insufficient system structures which require expensive rework and hurt more in the long run. So, how can we know the right balance of upfront design work and emerging design approaches? Al Shalloway shows how to use design patterns—coupled with agile’s attitude of “don’t build what you don’t need”—to guide your design efforts.

Read more
BT10 Service Virtualization: Speed Up Delivery and Improve Quality
Anne Hungate, DIRECTV
Robb Kelman, DIRECTV
Thu, 11/13/2014 - 1:30pm

“We could not test this because…” Every technology professional has experienced issues during system testing when unit testing was overlooked or cut short. Every project team has hit roadblocks during system testing when dependent systems or complicated data have been unavailable. Service virtualization is a tool that eliminates the waiting and the excuses, making thorough and complete unit and system testing realistic. Done well, service virtualization improves defect detection and resolution in every phase of a project—driving down cost while improving quality.

Read more