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
   53   54   55   56   57   58   59   60   61   62   63