HOME PRODUCTS TUTORIALS COMMENTARY CONTACT
articles
blogs
testimonials
FSMs for Project Managers
As a project manager or engineer, you probably have already demonstrated your ability to manage the resources you have been assigned to get your project completed successfully, on-time within your allotted budget. Sounds straight forward, but reality often presents many diverse challenges that makes your job difficult and stressful, and hopefully rewarding.

You likely use some project management software to assist you in building and maintaining schedules so that you may accurately report progress and problems to management. In building your schedule of activities, you no doubt identified specific tasks needed to accomplish your mission. You also identified the sequence of states each task must progress through and how the set of tasks must be synchronized to efficiently coordinate all task activities. This entire process is similar to architecting an embedded software system, to the extent that tasks must be identified (partitioning) and coordinated to achieve the stated objective. In this sense, the entire project could be considered in a particular defined state at any point in time. Also, individual tasks likely proceed through a standard sequence (state machine) and result in some 'output' that contributes to the overall project. If this is an adequate description of how you manage your projects, than you already know some basic concepts of state machines.

If you've managed many projects, you have likely realized that people and their respective skill sets are your most important resources. This often is the most difficult part of project management, as the people that make up your team are dynamic individuals. Nonetheless, with good communications among team members, and realistic objectives and performance expectations,  project success is likely as long as motivation can be maintained. Your ability, as a manager, to react effectively to both favorable and unfavorable conditions and events is expected to keep the project on course.

For embedded systems project managers, selecting the hardware and software technology and their respective tools and suppliers is very much part of the initial state process that has to be performed. These decisions will naturally impact development and fabrication costs, but often are based on aggressive marketing by vendors or whatever the current trend is driving the market. Care should be taken when deciding upon technologies, when considering the current skills of your team, and the time and cost to ramp up the learning curve to apply a new technology. Project managers should consider an ongoing training plan for each team member to ensure that new skills can be learned and used effectively on a project.

As you probably know, embedded systems software technology usually lags enterprise software technology, but eventually does adopt some mainstream concepts. Some of these technologies would include real-time operating systems (RTOS) and object-oriented concepts and programming languages. A savvy project manager will likely recognize that software methods suitable for enterprise applications may not be the best solution for their embedded system project. Even though enterprise solutions now include the Statecharts with the UML, this may signify that the enterprise world has finally recognized the usefulness of Finite State machine logic for their applications; but their FSM solution may not be optimal for your embedded system project. Your hardware engineers are probably very skilled at using Finite State Machines for their digital hardware design activities. It may be more appropriate, therefore, to consider architecting your embedded software system entirely as a system of Finite State Machines as this approach is more coupled to underlying hardware instead of object-oriented FSM techniques used for modeling enterprise systems. If this seems like reasonable logic, then consider using Staccato™ FSMs as the architecture for your embedded system software. Consider how effective the activities of design, documentation, validation and verification, test and debug would be if your entire team had a consistent set of skills in Finite State Machine design methods.

© 2010 Mapletech Productions LLC, All Rights Reserved