Вы находитесь на странице: 1из 8

Module 3

Hardware and Software Detailed Design


Author: Geoffrey Messier
Design Styles that Suit Hardware Projects
The process often used to design hardware projects is known as the waterfall process
and it looks like this.

Requirements
Analysis
Design
Implementation
Testing
Note that the six steps are conducted sequentially. An important and implicit assumption in this kind of project flow is that the results of each stage in the process remain
valid and constant for the remainder of the process. For example:
Once the customer is engaged at the start of the project to determine the project
requirements, those requirements wont change.
The result of each design stage are sound and do not need revising.
In reality, iterations do occur. In particular, more than one prototype is often built
with an alpha build being the first one, a beta build being the second one and so
on. The results of these prototype builds often require changes to the design so some
iterations occur. There are relatively few of these iterations (gamma builds are rare).

ENEL 300 Module 3: Detailed Design Techniques


c Geoffrey Messier, 2014

Page 1/8

Problem Definition
Conceptual Design
Detailed Design
Prototyping
Test & Verification
Manufacturing

Of course, the customer can always come in and change requirements. However, putting
a contract in place at the end of the conceptual design stage may prevent this from
occuring.
Design Styles that Suit Software Projects
Modern software development and project management is different from hardware
development and project management in several important ways. However, there are
similarities as well.
Software development is commonly divided into the following steps:
Requirements Workflow
This is basically identical to the problem definition or requirements specification stage.
Analysis Workflow
This is translating the output of the requirements workflow into technical
terms that can be accurately translated into software.
Example: A requirements document might say The software will manage
parallel account updates. and the specification will say A maximum of 3
parallel accesses will be made to the account and will all be resolved in less
than 3 seconds.
The output of this workflow is a specification that can be used for the basis
of the software design and can be used as the basis for software testing.
This isnt really a design document yet since we havent yet got into how
were going to implement the specification.
Design Workflow
This is specifying how the software will meet the specification.
For object oriented software, this workflow involves dividing the software into
modules and specifying what each module will do. These modules correspond
more or less to classes.
ENEL 300 Module 3: Detailed Design Techniques
c Geoffrey Messier, 2014

Page 2/8

This phase defines the software architecture.


You can consider a software architecture definition as similar to a system
requirements spec since it defines the design at a block diagram level with a
clear definition of inputs and outputs.
Implementation Workflow
This is the actual programming part.
Implementation can be performed by one programmer or a team of many
programmers.
This is similar to the detailed design phase since this is where the blocks in
the software architecture actually get implemented.
Test Workflow
Testing is done both by the designer and by an independent software testing
or quality assurance group.
Testing doesnt just check for program crashes, it also confirms that the requirements and analysis specifications are implemented correctly. Even if the
code works correctly, its no good if its not what the customer wants.
So far, we see some similarities with our hardware design process. However, this is
where the similarity ends. One of the fundamental characteristics that makes software
development unique is the use of incremental or iterative development.
Iterative software development is not a new concept and has been traced back as
far as 1957. However, the waterfall style of development was still applied to software
development until the relatively recently with the widespread adoption of Agile software
development methods.
Iterative Development
In order for iterative development to occur, the customer requirements (also
known as features or user stories) must be prioritized.
The development effort is then divided into increments or iterations which are
essentially a series of sequential mini-projects.
Each increment contains all 5 workflows (requirements, analysis, design, implementation and test).

Features:
Text appears as you type.
Able to save text.
Spell checking.
Formatting.
Printer compatibility.

Increment A

Increment B

Increment C

Requirements

Requirements

Requirements

Analysis

Analysis

Analysis

Design

Design

Design

Implementation

Implementation

Implementation

Testing

Testing

Testing

Text appears as you type. Spell checking.


Formatting.
Able to save text.

Printer compatibility.

ENEL 300 Module 3: Detailed Design Techniques


c Geoffrey Messier, 2014

Page 3/8

The idea is that the first iteration should implement only the most important
feature and ignore all the others for now. Since each iteration contains all 5
workflows, a completely working piece of software should be ready at the end of
an iteration.
Iterations can be extremely short with Extreme Programming (XP) (one realization of an Agile programming process) recommending 1 week at the optimal
duration.
Sometimes, each increment decides to emphasize different workflows to quickly
establish whether a project is feasible and to provide the customer with a rapid
working prototype.

There are several advantages to iterative software development.


1. The customer remains engaged for the entire development process through
the very frequent releases of working software.
2. Since only a small subset of the feature list is implemented in each increment,
the customer is able to change and re-prioritize the features. This process
can naturally refine the software requirements (if a feature continually gets
bumped to a future iteration, is it even required?).
3. Each iteration involves a testing step so theres lots of opportunities to make
sure the product is correct.
4. Establishes early on whether the software design (architecture) is feasible.
(i.e. If the keeps getting rewritten for each increment, theres something
wrong.)
Agile Development Methods
Agile methods are a very popular software development strategy. If you are
involved in any form of serious software development or are working with or
subcontracting some software development, you will hear of them.
Agile software development is a philosophy based on the Agile Manifesto written
in 2001. It is

ENEL 300 Module 3: Detailed Design Techniques


c Geoffrey Messier, 2014

Page 4/8

We are uncovering better ways of developing software by doing it and helping


others do it. Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the
left more.
There are several realizations of the Agile software philosophy with a very popular
one being Extreme Programming (XP).
At their heart, Agile development processes use iterative software development.
The emphasis is very short increments. Each iteration is considered a heart
beat with the heart beat only being strong if working software is produced at
the end of each iteration.
Continuous engagement of the customer in defining and prioritizing features is
considered essential.
Agile development goes beyond incremental development to define how software
teams should be defined and managed:
Leadership from all members of the team is strongly encouraged (If you can
see the need for leadership, you know enough to lead).
Team empowerment is seen as very crucial. This is a very liberating philosophy for a technical person since it makes everyone feel they have a say and
can use their skills to make a difference.
Rather than having a single project manager making all the decisions, decisions are made by the team (The only way to guarantee bad decisions is to
make them all yourself.)
Rather than using code reviews, which are seen as overly critical, Agile methods promote pair programming where two developers actually sit at the same
computer to write code. This is seen as a much more collaborative way to
provide sufficient oversight. No one should be working alone.
There are many interesting tools that have come out of this Agile philosophy.
For example, the emphasis on working software rather than comprehensive documentation favours making the code itself the document with the use of descriptive
variable/class names and good comments. In fact, tools such as doxygen can parse
code and translate the object names and comments into a browsable webpage that
clearly shows the structure of the code.
What Design Style is Best?
The rapid and radical evolution of design and project management for software often gives the impression that software development uses more modern or progressive
ENEL 300 Module 3: Detailed Design Techniques
c Geoffrey Messier, 2014

Page 5/8

techniques.
A saying on one Agile website is Measure twice and cut once saves wood but software
isnt made of wood. This saying really captures the essence of the difference between
software and hardware projects:
Software is fundamentally cheap and easy to change. The only thing involved in
the change is programmer effort and this allows for new techniques to be introduced to manage that effort.
Hardware is often much more difficult and expensive to change. A digital or radio
board prototype from a manufacturer can take weeks or months to deliver. This
reduces the feasibility of having multiple iterations and makes it more important
to fix customer requirements and make extra sure the design is correct the first
time around.
As a result, if you are working on a hardware project that is managed in a more
traditional waterfall style, its not necessarily a bad thing.
At the same time, hardware developers should be open to looking at software processes
and adopting some of their best practices. Utilizing pair development and improving
team dynamics are both obvious examples of things that could be used for hardware
products.
Advances in custom and agile manufacturing techniques may also decrease the cost and
duration of performing hardware iterations. Utilizing software configurable hardware,
such as FPGAs and DSP cores, can also turn traditional hardware design exercises
into a software exercise more amenable to iterations.
Design Styles for Mega-Projects
Mega-projects are defined as projects that are going to cost several 100s of millions to
a few billion dollars. These typically involve the construction of large facilities like oil
sands plants, bridges, etc.
Unlike software, the cost of doing iterations on projects like this is so high that it is
essentially impossible. As a result, there is a tremendous amount of engineering effort
(sometimes spanning several years) producing a preliminary design before funds are
committed to going ahead with the project.
The period before the project is sanctioned is known as the front end loading (FEL) or
sometimes the front end engineering design (FEED). The FEL exercise is divided into
several stages with gates at the end of each stage that are a series of decision points
that must be satisfied before the next stage can begin.
FEL-1
Known as the appraise stage in oil and gas since this is where the team appraises
the opportunity of the business plan.
ENEL 300 Module 3: Detailed Design Techniques
c Geoffrey Messier, 2014

Page 6/8

Focuses mainly on the business case and the feasibility of the capital investment
(ie. do we have the money).
The number of possible projects are narrowed down here somewhat.
Cost estimates at this stage are basically educated guesses since the physical scope
of the project has not yet been defined.
The gate at the end of FEL-1 is mainly intended to scrutinize the health of the
business case for the project. This gate needs to be robust, otherwise too many
projects proceed to FEL-2 which creates a burden on technical staff.
FEL-2
Known as the select phase in oil and gas since this is where the final project is
selected.
The core technical team is formed and the scope is defined for the project.
Translates the project description in the business plan to one with physical attributes (albeit on paper).
Every aspect of the design must be accounted for at this stage (major equipment,
all design efforts, construction details, etc.)
This is the first time a reliable cost estimate can be created but only if the scope
is complete.
The gate at the end of FEL-2 is really where the decision is made whether or not
the project will proceed.
FEL-3
Sometimes also known as the front end engineering design (FEED) stage in oil
and gas and is where the project is actually defined.
The engineering design is advanced to a point where detailed design can begin
and execution planning is advanced to the point where execution can proceed
with very few or no changes.
The execution planning involves the development of a very detailed and high
quality schedule.
The engineering work can proceed well into what may be considered detailed
design. The distinction is somewhat blurry here and is really determined by how
much money is available.
You can consider the end of this stage as being equivalent to the end of the
conceptual design phase for hardware projects.
This is a very expensive and major engineering effort so a company proceeding
to FEL-3 is usually very confident that the project will go ahead.
The gate process at the end of FEL-3 is to determine whether the company is
ready to proceed or if more work is required. The decision on whether or not the
project will ultimately go ahead was really made back at FEL-2.
ENEL 300 Module 3: Detailed Design Techniques
c Geoffrey Messier, 2014

Page 7/8

Once FEL-3 is concluded, the company commits the necessary resources to proceed
and the Execute phase begins. At this point, detailed design exercises are performed
and the construction begins. Within this execute phase, many small design projects
may start and finish. However, the overall facility design will not change in any major
way.
There will literally be 10s to hundreds of different documents generated by the time the
FEL-2 gate is cleared. Many of these will vary with company so its not too meaningful
to try and cover them here.
There are a couple of different ways an electrical engineer could be involved in this
type of mega-project:
As a project manager. Many major oil and gas companies hire engineers from
all disciplines and then move them around inside the company. So, an electrical
engineer could become a mega-project manager by following these tracks.
As a detailed designer. Once the FEL-3 and/or Execute stage begins, most
mega projects will have many different electrical engineering components (controls, communications, electrical machines, power, etc.). You may be working as
a contractor on one of these aspects. However, in this role, the company managing
the mega-project will simply give you the project requirements and you will us a
design process more appropriate for a smaller project.

ENEL 300 Module 3: Detailed Design Techniques


c Geoffrey Messier, 2014

Page 8/8