Software Deodorant

 

By Pattie G. Dickerson

CS 451 FS 2001

Professor: Dr. Ken Blundell 

The most obvious solution to the problem of late, expensive, unreliable, and unsatisfactory software – as discussed in Charles Connell’s article Most Software Stinks! – is planning. This requires management techniques and is dependent on a readiness on the part of the software engineer to exercise discipline. The lack of management skills in people who do software supervision may be a significant factor in many aspects of “lousy” software design.  

Most software engineers graduate from computer science (CS) departments in which they receive extensive technical training but practically no management training. They certainly did not choose to be a CS major hoping to become managers, and most would disclaim any desire to be a good manager. However, somebody must manage the software development effort – we must plan for quality.  

Quality cannot be added to a software product at the end of its development. From the beginning, we have to establish set procedures for activities that will lead to excellence. We must then systematically enforce those procedures throughout the entire development cycle. In doing so, we must decide: 

what attributes of the product and the process manifest quality

how we are to measure quality

 when we should evaluate the product to guarantee quality

who is responsible for carrying out the process 

Because ultimate, direct measures of quality may not be available until after the product is complete, criteria that are measurable and available during development and that predict eventual quality need continual monitoring. We will appoint one member of our group to be our quality control monitor. Mr. Connell’s article describes how to measure excellence and what attributes exhibit quality. 

Mr. Connell uses building a structure as an analogy to software development. In construction, the first product that a customer sees is usually the architect’s rendering of the building. It is a pretty picture and usually includes clouds, trees, people, and cars, usually portrayed in deep, full colors. The purpose of the rendering is to give the customer a feel for what the building will look like from the outside – how it will interact with its physical surroundings. This drawing complies with the specifications and expresses ideas gathered from the customer’s experience, taste, and special needs. It may also require some alteration or amplification as the customer thinks about its implications. 

The architect’s rendering has its counterpart in the external design of the software, which describes how the software will interact with its environment – what Mr. Connell describes as “cooperation.” In our project, we will need to fashion our software to work with the server operating software, previously designed databases that we will be interacting with, the computer hardware located at the UMKC home base, and the security system that is in place (or that we will design). It would be disastrous for us to write our site using, say, FrontPage, ASP, and Oracle, then discover that the server software runs far more efficiently and securely on ColdFusion, PHP, and mySQL.  

Mr. Connell states, “Good building design places related items together.” We must design the Center for the City web site in this same manner. We need to create an overall web site that makes sense to the user, and to all future webmasters. For the user, this entails grouping features that apply to rental properties together, items that relate to home purchases on a different site, and material that deals with safe and healthy matters on yet another.

Novice Web users depend on an unambiguous structure and easy access to overviews that illustrate how information is arranged. For our project, users will benefit from overview pages, hierarchical maps, and design graphics and icons that will trigger their memory about where information is stored within the site.

To facilitate modifications by webmasters, "functional locality" means designing a structure that allows easy access to items that will need to be updated in the future. For example, instead of having one single folder that contains every image on the site, we need to comply with Mr. Connell's "levels of abstraction" idea by placing the images relating to each hierarchical level of the site in one location. That way, when it becomes desirable to modify an image, the webmaster will not have to search through hundreds of images to find the one to change.

To be an architect, a builder must understand not only the parts of the structure, but the way those parts work together in order that the building functions smoothly. The same is true for Web design. As designers, it is important to not only understand the parts - HTML, computer programming, upload and download times - but also the way those parts integrate with the whole. And, in this case, that whole involves technology, art, and the way those entities will interact with the complex people at the other end of the data stream. The foundation of a great Web site lies with the designers' ability to bridge art and technology.

Ten Most Important Software Improving Ideas:

  1. Design software as if the client can see and understand its internal structure.

  2. Creating software that is aesthetically pleasing is the key to better, less expensive software.

  3. Design software that works in cooperation with the environment in which it exists.

  4. Match the software's form with its function - make the design appropriate for the external features of the system.

  5. Don't reinvent the software wheel - use whatever tried and true computing components that are available.

  6. Work together with other group members to ensure that effort is not duplicated.

  7. Design a structure that makes sense by grouping related items together - use a modular approach.

  8. Write the code in a manner that is easily understandable and include comments that explain what you are trying to accomplish and why you chose the particular method you used.

  9. Beautiful software is simple which makes it smaller, easier to debug, and allows for faster execution.

  10. A well designed software solution meets the needs of the client both internally and externally by:

    ensuring less down time (more reliable),

    allowing for easier maintenance, and

    facilitating extension and modification.

 

Home | CS 451 Homework Page | CS 451 Page | CCTR Page | My Resume | BIT VU Home

 

Email: pgd5ab@umkc.edu