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