Page 58 - The Art of Designing Embedded Systems
P. 58
Stop Writing Big Programs 45
Purtition by Features
Carpenters think in terms of studs and nails, hammers and saws.
Their vision is limited to throwing up a wall or a roof. An architect, on the
other hand, has a vision that encompasses the entire structure-but more
importantly, one that includes a focus on the customer. The only mean-
ingful measure of the architect’s success is his customer’s satisfaction.
We embedded folks too often distance ourselves from the customer’s
wants and needs. A focus on cranking schematics and code will thwart us
from making the thousands of little decisions that transcend even the most
detailed specification. The only view of the product that is meanin&l is
rhe customer’s. Unless we think like the customer, we’ll be unable to sat-
isfy him. A hundred lines of beautiful C or lOOk of assembly-it’s all in-
visible to the people who matter most.
Instead of analyzing a problem entirely in terms of functions and mod-
ules, look at the product in the feature domain, since features are the cus-
tomer’s view of the widget. Manage the software using a matrix of features.
Table 3-1 shows the feature matrix for a printer. Notice that the first
few items are not really features; they’re basic, low-level functions re-
quired just to get the thing to start up, as indicated by the “Importance” fac-
tor of “required.”
Beyond these, though, are things used to differentiate the product
from competitive offerings. Downloadable fonts might be important, but do
not affect the unit’s ability to just put ink on paper. Image rotation, listed as
the least important feature, sure is cool, but may not always be required.
Table 3-1
Feature Importance Priority Complexity
Shell Required 500
RTOS Required (purchased)
Keyboard handler Required 300
LED driver Required 500
Comm with host Required 4.000
Paper handling Required 2.000
Print engine Required I o.Oo0
Downloadable fonts Important I.000
Main 100 local fonts Important 6.000
Unusual local fonts Less important 10,000
Image rotation Less important 3,000

