Welcome to best-practices pattern-based development for the Flash Platform!
One of the biggest problems facing Rich Internet Application (RIA) developers today is how to architect their applications so that they are maintainable, scalable and can be efficiently developed in a team team-environment. Using the Ariaware RIA Platform (ARP) and the ARP methodology you applications will immediately benefit from the lightweight, pattern-based best-practices architecture provided by ARP. In essence, ARP answers the most difficult questions for you and provides you with a solid, tested foundation to build your applications upon.
Modern RIA teams contain an eclectic mix of developers, including UI designers, Flash and Flex developers, J2EE (or PHP, ASP.NET, .etc.) developers, database developers, etc. In such teams, communication is a key factor in determining project success. Many Flash developers know only how to communicate in Flash-centric concepts such as the timeline and code scattered on movie clips. This makes it difficult for other members of the team, who have more traditional OOP knowledge in languages such as Java or C# to communicate with the client-side developers. The pattern-based structure of ARP makes it easy to talk about the client in standard patterns that are instantly recognizable to seasoned software engineers familiar in other OOP environments.
The pattern-based architecture of ARP also makes it possible for large teams to work effectively on the same project, allowing for the clear delegation of responsibilities and communication through familiar patterns. It even allows server-side developers to help with certain parts of the clients (for example to create the Value Objects and Business Delegates.)
Badly structured, unmaintainable and unscalable Flash clients and lack of communication and understanding in development teams raises development risk and the risk of user rejection of your product. Implementing ARP following the guidelines in this manual, combined with adherence to an Agile development methodology such as eXtreme Programming (XP), combined with elements of a User-Centered Product Development (UCPD) process will help you lower these risks and thus lower the overall risk of your project.
We have taken great pains to ensure that ARP is lightweight and does not impose unnecessary constraints upon the developer. Although intuitive and non-intrusive, ARP is a structural framework and proper use of ARP will ensure that the foundations of your application are solid. Built upon solid foundations, your application will be easy to maintain and scale.
ARP Version 2.0 is a fifth generation framework, having its roots the framework originally created in Flash 5 following work on the world’s first virtual school in the year 2000. With each release, we were happy to be able to simplify ARP further, many times replacing functionality which we had built into an earlier version with built-in functionality introduced by Macromedia with each new release of Flash. Subsequently, ARP has actually become less complex with each release – a trend that we hope will continue in the future.
ARP tries to capture a delicate balance in adapting current best practices to Flash in a performant manner that suits the limits of Flash while guaranteeing maintainability and scalability of the application.
ARP also supports Flex. In fact, all that is necessary to port a Flash application using ARP to Flex is to re-do your forms as Flex forms. More documentation on using ARP with Flex will be made available shortly.
This manual will take you through ARP, from a general overview to each specific component and pattern and will show you how to implement ARP in your own projects using various examples and sample applications.
ARP is a lightweight, pattern-based structural framework for Flash. Proper use will result in maintainable and scalable RIAs that can be efficiently developed in a team environment.
ARP is not primarily meant to be a component or utility library. It is a structural framework and methodology. Using ARP will not guarantee that you will create usable user interfaces or even usable applications (for that you must follow User-Centered Product Development guidelines and implement Usability Testing throughout your development cycle.)