| |
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
Code Clarity: The code should be understandable which
implies meaningful variable and function names, indentation and
straight-line normal execution paths.
-
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.
-
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.
-
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.
-
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.
|