HW3: Chapter 10

10.6 > Explain why it is reasonable to assume that the use of dependable processes will lead to the creation of dependable software.

By using known working solutions to a problem, software gains dependability and therefore validates the software field and reduces distrust in the community against it. Dependable processes that promote availability, reliability, safety, security, and resilience in software are essential to maintaining the industry and the practice of software development. If, for example, the automobile industry had lost user support due to faulty processes, crashing, easily being stolen, breaking too easily, and being hard to find, then it would not have been such a successful industry. Software engineering's future relies on being dependable and wanted by the community.

10.10 > It has been suggested that the need for regulation inhibits innovation and that regulators force the use of older methods of systems development that have been used on other systems. Discuss whether you think this is true and the desirability of regulators imposing their views on what methods should be used.

Being from a design background, I would like to say that restrictions on innovation and regulation of methods inhibit an industry's ability to progress. However, I agree that some regulations are necessary - understanding the history of proven methods of system development is crucial for progress. Under the ACM's SE Code of Ethics's Principle 6 with regards to obligations in one's Profession, a software engineer who is not using proven, dependable solutions would be violating this code. It states:

6.07. Be accurate in stating the characteristics of software on which they work, avoiding not only false claims but also claims that might reasonably be supposed to be speculative, vacuous, deceptive, misleading, or doubtful.

Anyone practicing software development of engineering who uses methods that are not dependable risks the wrath of the public against the industry in general. This builds a lack of faith in the ability of software engineers and it is obvious why the ACM wishes to regulate these practices, regardless of opinions about inhibiting innovation. It would be nice if it was a free world of no consequences, but when mistakes are made to the detriment of many engineers' careers (including possibly my own one day!), it seems like having regulations in place is not too horrible of a precaution. 

HW1: Chapter 1

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.

Figure 1.1 > Helpful table with some commonly asked questions about software engineering.

 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.