Ah! I am a little late posting this homework - curse the postal system and its late textbooks. Anyway, our textbook is the 10th Edition of Ian Sommerville's Software Engineering publication.
Here are answers to our homework exercises on page 26:
1.3 > What are the four important attributes that all professional software should possess? Suggest four other attributes that may sometimes be significant?
The four most important characteristics of professional software are Acceptability, Dependability and Security, Efficiency, and Maintainability. Other examples of quality attributes are the software's Performance, Scalability, Reuseability, Testability, Reliability, and Availability.
1.8 > Discuss whether professional engineers should be licensed in the same way as doctors or lawyers.
I do not believe professional engineers should be licensed in the way that doctors and lawyers are. The years that doctors and lawyers spend being educated have a greater importance in their ability to practice because they build their knowledge gradually. In order to be a doctor or a lawyer, one has to make decisions quickly in tough situations and be able to call on those years of experience working towards their license. For professional engineers, software is a time consuming, designed process that is not released to the public unless it is completed, tested, and tested again. And it is available to update as time goes on, unlike the practices of lawyers and doctors. Requiring engineers to be licensed would ensure less professional software engineers in the world and we do not have that leisure - software is in demand now.
1.9 > For each of the clauses in the ACM / IEEE Code of Ethics shown in Figure 1.4, propose an appropriate example that illustrates that clause.
- Public > An example of acting in the public's interest is not to share any private information that the software engineer is privy to while working on a project.
- Client and Employer > A good software engineer will not let the needs of the client or the wants of the employer harm the public.
- Product > A good software engineer would not allow software to be released that they know is faulty and will crash.
- Judgement > An example of using good judgement is, if a software engineer is approached by a client that wants them to build software that causes airplanes to crash, the software engineer knows that they must decline since although that may be in the client's interest, it is not in the public's.
- Management > For example, Software engineering managers and leaders will not encourage employees to slack off when they are aware there is a deadline coming up.
- Profession > For example, software engineers will not accept payment for inadequate software that they have admitted will not work as intended. This would reflect badly on other software engineers.
- Colleagues > An example of following this clause would be a software engineer not stealing their coworkers code without permission.
- Self > For example, a good software engineer will keep up with changes in technology and encourage others to do the same.
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.
Let's say you are a software engineer that has been assigned to work on this kind of system - you have been told that although it may seem like it's not in the public's interest because it invades the public's privacy, it actually is in their interest because it will keep them safe.
If you are wholeheartedly against implementing software that invades the privacy of others, then hopefully you can opt out of the project without losing your job. Maybe your employer can convince you that the pros outweigh the cons for this type of system and show you why they are acting in the public's best interest and are not violating the Code of Ethics. Because of extreme variations in opinion, it is hard to engineer software that everyone is going to agree with. For a doctor, the ethics are a little simpler: do whatever you can to make a patient healthy. For software engineers, there is a little more debate when it comes to ethics.