Model Engineering - The Role of Models in Software
Dave Thomas, cofounder/chairman of Bedarra Research Labs & Adjunct Research Professor at Carleton University and University of Queensland
Monday, June 13, 12:30pm – 1:30pm
It has taken decades to get consensus that software engineering is really a modeling activity in which models are successively refined from requirements. Unfortunately it appears at times that the software press wants to divide the world into MDD believers - UML 2, MDA, Software Factory and disbelievers – Agile, DSL instead of hearing the real message – software is about models, lots of different kinds expressed in different ways.

The recent emphasis on model engineering builds on numerous best practices from different software engineering communities. Research progress in meta-modeling and model transformation promises powerful tool support for model definition and refinement.

In this keynote we discuss our experiences using MDD to build a wide variety of software from embedded systems to OLTP applications. We also discuss our experience building and using MDD tools to support development. We focus on the role of models in software engineering and discuss the benefits as well as limitations of different models, modeling languages and tools.

Model-Driven Development: Its Essence and Opportunities
Bran Selic, IBM Distinguished Engineer, IBM Rational
Tuesday, June 14, 12:30pm - 1:30pm
In its essence, model-driven development (MDD) represents a straightforward continuation of the traditional trend in software technology towards ever-increasing levels of abstraction and automation. However, the path along this technological continuum is marked by certain thresholds beyond which qualitatively new and powerful capabilities open up. Based on this perspective, we first extricate the essence of the MDD idea from the confusing mixture of market-babble, point technologies, and politics in which it is currently embroiled. Next, we explore some of the dramatic new opportunities created by the progression towards MDD. Finally, we close with a discussion of the pragmatic issues and hurdles that need to be overcome to achieve the full potential that lies ahead.

The Value of Modeling--Looking Forward
Gary Cernosek, Market Manager, IBM Rational Design and Construction products
Wednesday, June 15, 12:30pm - 1:30pm
Many software professionals already understand and embrace the value of modeling software. It is those very individuals that must carry this message forward to others in their organizations. How do they do that? The need for communicating the fundamental reasons for modeling software is now more critical than ever. This presentation reminds us why modeling is important to software development and reinforces the business case by taking a forward-looking view based on a number of trends taking place in our industry. The goal is to cast a new light on the value of modeling and create an even stronger case for why its practice can and must play a stronger role in mainstream software development.


Beyond Agile: Smart

Ivar Jacobson, co-founder of UML & the Rational Unified Process
Thursday, June 16, 9:00am – 10:00am
A resounding yes to agile methods, but agility is not enough. Agile methods rely on tacit knowledge, whereas Unified Process stands on explicit knowledge. This difference takes us beyond being agile to being smart, a necessity in the increasingly complex software world of tomorrow.

 

Software Factories: Assembling Applications with Models, Patterns, Frameworks and Tools
Jack Greenfield, Architect, Enterprise Tools, Microsoft
Wednesday, June 15, 6:45pm-7:45pm
Increasingly complex and rapidly changing requirements and technologies are making application development increasingly difficult. This keynote examines this phenomenon, and presents a pattern for automating software development tasks using patterns, frameworks, languages, and tools for specific domains, such as user interface construction or database design. Software Factories integrate critical innovations in adaptive assembly, software product lines, and model driven development to reduce the cost of implementing this pattern, making it feasible for narrower and more specialized domains, such as B2B commerce and employee self service portals.

In a nutshell, a software factory is a development environment configured to support the rapid development of a specific type of application. At the heart of the methodology is the software factory schema, a network of viewpoints describing the artifacts that comprise the members of a family of software products, and the languages, patterns, frameworks and tools used to build them. Mappings between viewpoints support traceability, validation, assisted development and complete or partial transformation. They also support a style of agile development called constraint based scheduling, which scales up to large, geographically distributed and long running projects.

While Software Factories are just a logical next step in the continuing evolution of software development methods and practices, building on lessons learned about patterns, frameworks, languages, and tools, and extending the forms of automation provided by Rapid Application Development (RAD) environments to new domains, they promise to change the character of the software industry by moving it closer to industrialization. By automating development tasks, and creating contracts that support separations of concerns, Software Factories promote outsourcing and the formation of software supply chains, paving the way for mass customization.