Homework 1
Home Up Work My Stuff UMKC

 

    In his article "Most Software Stinks!Charles Connell discusses the relevance of software engineering, and its effects on software quality, costs, ease of maintenance, and customer satisfaction. All of those factors are crucial for any software designer, but they are especially important for this semester's project for the Friendship House of Kansas City . Being a non-profit agency with limited resources, the Friendship House needs reliable, cost-effective, scalable and easy to maintain software solution that will satisfy its needs to keep track of clients, employees, donors, inventory and integrate accounting and web capabilities. The article by Mr. Connell  points out several properties of the "beautiful" software and suggests that incorporating those in the design process is a worthwhile effort, which will result and a better quality product. It only makes sense if the principles described by Mr. Connell will serve as cornerstone of this semester's project. 

  1. Cooperation: Software should cooperate with its environment. Non-profit agency may not have state-of-the-art hardware and latest versions of commercial software. Our customer still maintains hard copies of records. This will be taken into account when we design our product.

  2. Appropriate Form: An internal Structure should acknowledge external features. The project will incorporate several distinct features such as accounting, database, website integration, contact management, etc. Some commercial software products will be use for different functions. Therefore, our design will be reflective of the external requirements. 

  3. System Minimality: Software should be as small as possible and take full advantage of available resources. The project will rely heavily on existing software, with changes necessary to fulfill customer requirements. This will minimize amount of external code needed.

  4. Component Singularity: Software should rely on code reusability, rather than redundancy. This requires code to be generic, so it can be used in the variety of ways. Preventing redundancy is especially important in the project, since it will be created by several groups, which should not redo each others' work.

  5. Functional Locality: Related items should be placed together. In the project this should be easy enough to accomplish, since each group will work on a separate functional block.

  6.  Code Clarity: The code should be understandable which implies meaningful variable and function names, indentation and straight-line normal execution paths.

  7. Annotations: Software should have enough comments and information for easy follow-up and maintenance. If we learned anything in school it would be the importance of comments. 

  8. Simplicity: Software should be simple. It is easier to fix, runs faster and is less expensive to create. The project will be as simple as possible, although we realize that finding simple solution is not easy.

  9. Putting it Together: All pieces should fit together to produce desired product. When all the parts of the project will be submitted by the workgroups, the final product should be more than compilation of separate modules.

  10. Internal Beauty: Although our client will probably never look at our code, we will strive to create a beautiful piece of software. Knowing all of the points listed above will make our work easier and our product better.

 

e-mail Mikhail Viron

Write to Your Representative