|
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. |