Wednesday, August 21, 2013

Homework #1

1.3  What are the four important attributes that all professional software should have?  Suggest four other attributes that may sometimes be significant.

#1  Maintainability:  software is written in a way that can evolve with new needs of the customer
#2  Dependability and security:  If a system fails, there is no physical or economic damage left in it's wake- also hackers and death eaters are not able to access or damage the system
#3  Efficiency:  Waste not, want not.  Software should not waste system resources.  Efficiency refers to responsiveness, processing time, memory utilization, etc.
#4  Acceptability:  Users must accept the software to the point that they understand and are able to use the software and that it is compatible with other systems that said user...uses and does not create ugly side effects.

So here goes my input:

#1  Fixability:  I'm fully aware that this is not a real word.  It's not even defined on urbandictionary.com - I checked.  So what I mean by "fixability" is the ability to fix - How easy is it to understand what went wrong - does the software handle errors well and how do we find the problem.  In short- fixability.
#2  User Friendliness:  I guess this can technically go under Acceptability up above, but I think it is extremely important that the user not only understand how to use the software and is able to, but that they enjoy it.  As a user, I'm not likely to use software that annoys me or I simply do not like.  After all, the customer is always right.
#3  Affordability:  Again- I'm going back to the user- ultimately it's important and if you follow the four important attributes of professional software, the cost should be kept down since the maintaining software is the costliest.
#4  Flexibility:  I have just entered the computer science world, so I do have have a lot of real life working knowledge, but I keep hearing my friends (who are in the real world working) complain about how inflexible their companies existing software is.  So therefore, I'm going to go with them on this one and say flexibility- meaning that changing/adjusting the software is relatively easy.

1.8  Discuss whether professional engineers should be certified in the same way as doctors or lawyers.

I see a lot of gray areas when thinking about this.  Ultimately I think the general certifications we have in place now are good enough, but when you get into software that affects someone's life/health- that's when I feel we need more certifications in place.

1.9  For each of the clauses in the ACM/IEEE Code of Ethics shown in Figure 1.3, suggest an appropriate example that illustrates that clause.

#1 PUBLIC:  software engineers shall act consistently with the public interest.

Sophie the software engineer volunteers her time and skills to good causes, ideally education related.

#2  CLIENT AND EMPLOYER:  Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest.

Sophie the software engineer does not gossip about confidential information, that she has learned at work, out in public.

#3  PRODUCT:  Software engineers shall ensure that their products and related modifications meet the highest professional standards possible

Sophie the software engineer properly tests, debugs, and reviews projects that she works on.

#4  JUDGMENT:  Software engineers shall maintain integrity and independence in their professional judgment

Sophie the software engineer does not bribe, double bill, or do anything else that is financially distasteful.

#5  MANAGEMENT:  Software engineering managers and leaders shall maintain integrity and independence in their professional judgment

Sophie the software engineer's boss will not punish her if she raises ethical questions about a project.

#6  PROFESSION:  Software engineers shall advance the integrity and reputation of the profession consistent with the public interest

Sophie the software engineer gets involved by participating in professional organizations and always supports others in her field.

#7  COLLEAGUES:  Software engineers shall be fair to and supportive of their colleagues

Sophie the software engineer takes a new coworker "under her wing" and aids this coworker in his/her professional development.

#8  SELF:  Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of he profession.

Sophie the software engineer would never violate this Software Engineering Code of Ethics and Professional Practice- "uphold the code" she chants.

1.10  To help counter terrorism, many countries are planning or have developed computer systems that track large numbers of their citizens and their actions.  Clearly this has privacy implications.  Discuss the ethics of working on the development of this type of system.

This is invasion of privacy.  This system goes against some of the Software Engineering Code of Ethics, especially the first one- PUBLIC.  I would report to the appropriate authorities...but...wait.


No comments:

Post a Comment