In order to make the development process fit within the time constraints, we immediately chose to base all back-end integration on Flash Remoting. The development team hammered out exactly what the API on the back end would be. This meant mapping out each method, what it was expecting, and what it would return. At the end of the day we had a full specification of each method that would exist on the server as well as how the application would integrate into the Blackboard system (passing user IDs, etc.).
During that time we wireframed the application from start to finish. Our wireframes consisted of each screen of the application along with detailed information about what each interface element would do and how they would interact.
All the server-integration code was wrapped into its own ActionScript class. The advantage of placing the server connectivity code into its own class was that we could test each section independently from the rest of the application. This architecture allowed us to create a few FLAs that would automatically test all of the class's methods which proves valuable when debugging.
The application is based on using the frames of the main timeline as the states of the application. For example, frame 1 is the main screen and frame 10 handles the group editing screen.
From here we mocked up the interface for each state using components. Essentially, the app stayed in its "ugly" state until it was nearly complete; it was only then that we skinned the components and added the background artwork. Once each component was given an instance name and had the name of its callback defined, we looked at the customizations that were going to be needed for some of the components. In particular, there are a number of list boxes in the application that display multiple columns of data as well as provide certain functionality like sorting on columns and tooltips. All of this functionality was wrapped up in custom items for the list boxes (the listbox component supports this via its setItemSymbol method).
The next stage of development consisted of creating the callback methods for all the components. Finally, each "state" of the application had an initialize method defined in it that did the majority of the work; this is where all the business logic was defined.