“Flash Engineering” – A book about software engineering with the Flash Platform
September 14, 2009
Recently, the book “Flash Engineering” by Sven Busse (2009) has been published. While it is currently only available in German, English speakers might still want to read on, since it is quite unique compared to other books relating to that technology. I don’t know if an English version is being planned (if not, it would certainly be a good idea).
The title “Flash Engineering” is well-chosen as this is what the book is really about: Software engineering, targeted at the Flash Platform. There have been books about Flash in general, Flex, AIR, ActionScript Animation, Object-Oriented Programming and Design Patterns but – to the best of my knowledge – none that discuss Flash development from a real software engineering perspective. It could be argued that such a book couldn’t have come out much earlier since the technology is still in the process of maturing as a software development platform – the topic was previously just not most important and relevant. Further, it could only be written by a person that has both a solid background in software development and profound experience with the Flash Platform.
What are the contents? After a general introduction, the first chapters mainly discuss requirements analysis, object-oriented analysis and -design. The author talks about what software engineering means, ways of analysing and documenting software requirements, software architecture and OOP principles. The middle part is concerned with UML diagrams, architectural and design patterns, and frameworks. Finally, the last two chapters deal with refactoring, testing, agile development practices and project management. Software engineering in a nutshell. However, the book is not just a short summary of the most important software literature. Some aspects are critically discussed in terms of practicability and the examples are geared towards real-world use cases for Flash development. I particularly liked the sections about UML diagrams and IOC / Dependency Injection as they discuss these topics very straightforwardly and without information you’d hardly ever need. The fact that almost no specific frameworks or libraries are used and advocated also makes the book more timeless and neutral.
A few points of criticism are: I’m not really sure about who exactly the target audience for the book is supposed to be. Experienced developers probably won’t find much new information in the book (especially if they have read standard literature on the subject) and for inexperienced developers, it could be hard to understand without prior knowledge in some areas. Although the examples are specific to ActionScript, they might be too abstract and simple to show the specifics of engineering for the Flash platform – especially for people with different technological backgrounds. So, maybe the real target audience lies somewhere in between. Another (only minor) point is that English and German terms are mixed to describe certain concepts. I would have preferred reading the English standard terms consistently throughout the book.
All in all, “Flash Engineering” is definitely a recommended reading for everybody serious about developing applications with the Flash Platform (or even with other technologies as much of the information in the book is more general in nature). With its 330 pages, some parts could certainly be described in more detail. However, the book provides a good overview, discusses all major parts of the software engineering process, and gives examples using ActionScript. If you’re interested in OOA/OOD and iterative development, a popular and comprehensive reading is “Applying UML and Patterns” by Craig Larman (2004), which uses Java to demonstrate the discussed concepts.