1.3 What are the four important attributes that all professional software should have? Suggest four other attributes that may sometimes be significant.
The four important attributes are Maintainability, Dependability and security, efficiency and acceptability. I would say some other important attributes would be as follows:
Documentation: It's important for software maintainability to have good and clear documentation. If the software is well documented, future developers will have an easier time keeping the software updated. It is also significant for third party developers who may want to utilize the software.
Availability: The software must follow up time guidelines defined by both the developers and the users.
Reliability: The system must react to inputs in a reliable and consistent manner. For any given input at any given time the output must be the expected output. For example, if there was an arithmetic system with two numerical inputs, they should always give a reliable and correct output. 1+1 should always equal 2.
Resilience: A system is robust if all errors are taken care of and accounted for. There should be no instance in which a user is presented with a failure in the system and given no explanation.
Discussed these answers with Paul Shahid.
1.8 Discuss whether professional engineers should be certified in the same way as doctors or lawyers.
Putting professional engineers under the same certifications as doctors and lawyers could be beneficial. As of now engineers are expected to follow certain professional guidelines and responsibilities that are not set in stone or enforced by law. These include confidentiality, competence, respect of intellectual property, etc. Doctors and lawyers are not only expected to follow these professional guidelines, but they are required to. If these responsibilities are not upheld then they will lose their certification and right to practice. Some might argue against additional regulations for software engineers or that a certification should only be obtained by someone working on a safety critical system; but these are (for most) basic ethical obligations that should be fulfilled by all.
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. Don't be the NSA.
2. For example, RSA Security provides VPN two-factor key authentication. There have been allegations that the NSA has a backdoor into these devices that would allow them to bypass strong encryption. This is against the interests of their client and the public as it completely undermines the security of communications utilizing this authentication.
3. Example: Windows OS. They are constantly updating everything on the OS, providing important security updates and regularly releasing new versions.
4. The overabundance of download buttons on any site. It is a deceptive practice.
5. Don't rush deadlines in safety critical systems. As a manager or leader you are responsible for upholding ethical approaches with your employees.
6. A software engineer is a representative of their profession, and their actions will have an impact on how the public views that profession. For example, a lot of chiropractors gained a reputation of being crazy and overpriced thus casting the entire practice in a poor light.
7. Don't be jerk.
8. A software engineer should not stop learning just because they have left school. Since technology is a field forever evolving and moving forward, software engineers have an obligation to keep up with it (or risk violating all the other clauses).
1.10 To help counter terrorism, many countries are planning or have developed computer systems that track large numbers of their actions. Clearly this has privacy implications. Discuss the ethics of working on the development of this type of system.
By contributing to a system of this type you are throwing away several ethical obligations, many of which were previously discussed. Some may justify it as a way to keep the people safe. However, you are essentially destroying individual freedom for their supposed safety. In addition, you are working on a safety critical system. That is to say, a system whose use could put people at risk if it had any malfunctions, or if it was abused by the users.
Thursday, August 21, 2014
Subscribe to:
Post Comments (Atom)
Powered by Blogger.



0 comments:
Post a Comment