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