In continuation of my latest post regarding easily maintainable systems, I will start by writing about the benefits of Functional Design.
A functional design assures that each modular part of a computer program has only one responsibility and performs that responsibility with the minimum of side effects on other parts. Functionally-designed modules tend to have low coupling as concrete side-effect and more importantly, they scale much better than other types of designs.
The advantage for implementation is that if a software module has a single purpose, it will be simpler, and therefore easier and less expensive, to design and implement.
Systems with functionally-designed parts are easier to modify because each part does only what it claims to do.
Since maintenance is more than 3/4 of a successful system's life, this feature is a crucial advantage. It also makes the system easier to understand and document, which simplifies training. The result is that the practical lifetime of a functional system is longer.
In a system of programs, a functional module will be easier to reuse because it is less likely to have side effects that appear in other parts of the system.
The Standard way to assure functional design is to review the description of a module. If the description includes conjunctions such as "and" or "or", then the design has more than one responsibility, and is therefore likely to have side effects. The responsibilities need to be divided into several modules in order to achieve a functional design.
To perform Functional Design is quite easy, you can start by defining packages/namespaces based on Use Cases as can be illustrated by the following package definition:
com.hello.usermanagement.createUser
The package above would then contain all the classes which makes up the concrete use case implementation. In the case of a Flex application it would contain at least the Command and Event, but depending of the lines drawn in architecture - possibly the forms and UI objects as well.
This should be seen in contrast to having the Command in a namespace called Commands and the Event in a namespace called Events.
Functional Design has one limitation, and that is that you need an underlying set of baseclasses which implement all your Boilerplate code and thus faciliate that your concrete namespaces dont need to be to highly coupled to other parts of the system on the same level.
Idealism is what precedes experience; cynicism is what follows...
Subscribe to:
Post Comments (Atom)
Blog Archive
-
▼
2008
(123)
-
▼
June
(55)
- "Is it Flex ?" Online Service (by James Ward)
- DFUG meeting in Aarhus - Indian Summer Knowledge
- Remembering the pre-AJAX days ?
- 3D Charts Using PaperVision3D (by Andrew Trice)
- Workaholics United : The Two Minute Rule
- Synergy working with Microsoft Windows Vista
- PureMVC : Lazily Instantiated Components
- Adobe Flex : Flex 3 Compiler Design Document
- Adobe Flex : Custom ToolTip Implementation Sample
- Adobe Flex : There is a bug in the Adobe Flex Fram...
- Adobe Flex Resources Tool Suite
- HelloGroup is proud to announce their new website !?
- Xoopit turns your Gmail into a multimedia heaven
- Google Social Graph API
- dotNet : Other New Technologies
- StateMachines : Implementation of WF in AS3
- MyHome Benchmarks with YSlow
- Configuring Flex Builder to use the HellFire compiler
- AIR 1.1 : Now with Localization !
- Google Browser Sync Discontinued in FF 3
- Introducing acrobat.com
- Adobe Flex : Cross-versioning
- The benefits of Functional Design
- Maintenance is more than 3/4 of a successful syste...
- Low Coupling
- Mock Frameworks, not for everyone and everytime
- Adobe Flex : Linkreports
- Silverlight Tour Workshop
- Flex AIR and ActionScript Posters
- Adobe Flex : Flex community-powered Search
- Be your own toolsmith and instrument your applicat...
- HTML Code Formatter
- MSDN : TechEd 2008 in Barcelona
- Adobe Flex : Coding Standards
- Adobe Flex : Remember that the MXML inherits from ...
- Adobe Flex : Never try to manipulate the children ...
- Adobe Flex : Coding Conventions
- Adobe Flex : Never try to removeChildren() that ar...
- Adobe Flex : Event/Action binding in MXML and AS
- Adobe Flex : The Code-Behind Pattern
- Adobe MAX 2008
- ItDepends : A tool for visually exploring the depe...
- FlexCover : A code coverage tool for Flex, AIR and...
- Adobe Flex 4
- Thunderbolt : A logger extension for ActionScript ...
- SVN : Frequency of Update&Commit cycles
- HCI : Morphable Interfaces - The Initial Inspiration
- PureMVC & Cairngorm : Introducing Tech Per
- State Machines : The C in PureMVC
- State Machines : Windows Workflow Foundation
- State Machines : Basic Thoughts
- State Machines : A Powerfull Programming Tool
- Adobe OnAIR Tour Stockholm (2)
- Adobe OnAIR Tour Stockholm (1)
- PureMVC : Pipes : Demo
-
▼
June
(55)
My Network
-
-
Stop dragging me into board meetings - Dear Reader : This might be a bit more NEGATIVE than you’re used to. Apologies about that. I love to chair startups and companies, but I hate 95% board m...9 years ago
-
Design practice makes perfect - Evidence gained from research is powerful. It can persuade the most stubborn board members if presented in a way where decisions can be made based on facts...10 years ago
-
-
dutch vs danish politics - First reaction: glad I don’t live there. And then I made this comparison. It doesn’t differ that much actually. CDA 14% – Konservative 10% VVD 21% – Venstr...14 years ago
-
The Next Web – Timothy Ferriss - First speaker on the last day of The Next Web was Timothy Ferriss, author of the ”4-Hour workweek”. I don’t know what I was really expecting from a guy who ...14 years ago
-
Links for Motorcycle enthusiasts - MC travel-blogs: Must see: http://www.kccd.no/ http://4qconditioning.blogspot.com/ Danish blogs: http://www.ossianbuilds.blogspot.com http://wrenchmonkees....14 years ago
-
New Arduino project - I found myself a new Arduino project – an automated car! Well how to go about this. My best approach was to get a cheap RC toy car from the local toy store...15 years ago
-
Unrecognized selector sent to instance - As you may or may not know, I do iPhone/Cocoa touch now... While playing around with something this evening I stumbled across something I thought I'd share...15 years ago
-
-
-
-
-
-
-
About Me
- Peter Andreas Molgaard
- Copenhagen, Denmark
Labels
- Adobe Flex (62)
- Events (28)
- Best Practices (27)
- ActionScript 3.0 (16)
- Adobe AIR (15)
- Tools (15)
- Workaholics United (14)
- PV3D (10)
- Arbitrary Thoughts (9)
- PureMVC (7)
- Adobe Flex SDK (6)
- Adobe Max (6)
- Methodology (6)
- RIA (6)
- State Machines (6)
- .NET (5)
- Adobe Flex Builder (5)
- DFUG (5)
- Google (5)
- WebORB (5)
- Data Visualization (4)
- Flash Platform (4)
- Independent Thinking (4)
- Process (4)
- SEO (4)
- Silverlight (4)
- Adobe Flash Player (3)
- Code Design (3)
- Flash Player (3)
- HCI (3)
- MAC vs. PC (3)
- Microsoft (3)
- Performance Optimization (3)
- Stockholm (3)
- Undocumentation (3)
- Visual Studio (3)
- Windows Workflow Foundation (3)
- ACE (2)
- AUG (2)
- Adobe Thermo (2)
- Ajax (2)
- Bug Report (2)
- Cairngorm (2)
- Commerciel (2)
- Documentation (2)
- Estimation (2)
- Firefox (2)
- Google Gears (2)
- London (2)
- Morphable Interfaces (2)
- SVN (2)
- SoftwareEngineering (2)
- Test (2)
- Admin (1)
- Adobe Flex Adobe Flex Builder (1)
- Facebook (1)
- Graphics (1)
- Hardware (1)
- HelloGroup (1)
- IEEE (1)
- Outsourcing (1)
- Training (1)
- XAML (1)
No comments:
Post a Comment