This section describes tooling that Adobe Technical Services and Partners found important in order to enforce best practices described in Cairngorm Guidelines . Adobe Technical Services did not develop all of the tools described here and there may be unlisted tools that also support adherence to the Cairngorm Guidelines. The goal of this section is to summarize a working toolset for enterprise Flex development from the perspective of Adobe Technical Services, the Cairngorm Committee and our partners.
flexunit.org provides a publically editable wiki to list additional tooling in the domain of testing and continuous integration.
Flash Builder is an Integrated Development Environment build upon Eclipse that offers various features important for Flash Platform development such as an ActionScript and MXML editor with debugging and profiling support.
Our goal is to promote a kind of application development that is clear, consistent, testable and scalable. These aspirations can be achieved with a variety of application frameworks, so the choice a development team makes depends on their own background and the scale and type of application being built. We believe the success of a Flex project depends on the way an application framework is applied, rather than the specific framework chosen.
Before the transition to Cairngorm 3, Cairngorm was a specific MVC framework. The Cairngorm 2 framework remains as is and is not deprecated. It has been in use now for a decade and its simple, prescriptive nature allowed developers with a background in J2EE core patterns to apply it successfully. Popular extensions to Cairngorm 2 can be found at Universal Mind.
Most large-scale applications within Adobe Technical Services are now built by applying patterns and practices of Cairngorm using Inversion-of-Control (IoC) containers. Design patterns advocated with Cairngorm 2, such as encapsulating operations within command objects, declaring models and services externally, and separating presentation and domain concerns, can be applied with Inversion-of-Control containers to simplify development and testability.
Some frameworks that include Inversion-of-Control features are:
Automating the process of moving a Flex application from a development environment into a production environment can save time and help identify problems early. Maven and Ant are both recognized industry solutions to achieve build automation with the help of continuous integration software such as Hudson. All of them integrate well with Flex projects.
Combining development and testing into one process can be achieved by following agile testing practices. Cairngorm recommends using tools to streamline the creation and management of an automated unit test suite:
Agile Functional testing tests larger areas of Flex applications, often the complete application including the integration with a backend as a black box.
Code coverage allows analysing how much application code is covered during the execution of unit and/or functional tests.
FlexPMD allows to analyse the Flex application and suggests recognized but customizable improvements on software quality.
A consistent formatting, white spacing and indentation express care and quality of Flex applications. Tooling exists to automate the process:
The Flex Formatter Eclipse Plugin can be used to automate and batch-format MXML and ActionScript files. Attached is a properties file for the Formatter plugin that specifies further guidelines mainly around MXML, used to format Cairngorm libraries and samples.
Additionally, the following ANT utility "mxmlcleaner" can organize and clean MXML files.