HW1: Chapter 1
Enjoy.
Section 1.2 is devoted to software engineering ethics and placing an emphasis on this topic seems warranted considering the larger and larger impact that software has on the day to day lives of the majority of the world.
2. Client and Employer - If a software developer created software with known flaws but failed to identify these flaws, due to money or time constraints, to their client or employer that would fail to meet the code of ethics.
3. Product - Creating a product that cut corners to meet deadlines that fails to meet the standards set forth by the agreed upon design specifications is an example that would violate the code of ethics.
4. Judgment - If a developer knows there is a major flaw with the product they are working on and their management tries to prevent them from fixing it to meet a deadline.
5. Management - Forcing engineers to work in extreme conditions to meet deadlines would violate the code.
6. Profession - Putting forth the best work they are capable of and standing by their work and conducting themselves appropriately, ie., avoid isms.
7. Colleagues - If an engineer working on a team disparaged a fellow team members work simply because they did not like the person would violate the code of ethics.
8. Self - If a new standard is put out in a developers area of expertise then they should work to learn and understand this new standard.
Four Important Attributes
Four important attributed identified by Sommerville are Acceptability, Dependability and Security, Efficiency, and Maintainability. These are broadly defined to provide the framework in which software development should work within. Four additions I'd consider making to the list are a bit more specific but important in their own right.Ethically Designed and Used
Software should be designed in a way that takes into consideration its future use and what the initial developers understood its use would be. For example, if a software engineer designs a facial recognition product to allow users to better sort photographs for users. It is unethical for their work to be used in a nefarious manner without explicit permission.Section 1.2 is devoted to software engineering ethics and placing an emphasis on this topic seems warranted considering the larger and larger impact that software has on the day to day lives of the majority of the world.
Understood
Software should be understood by the developers and companies developing said software. This may seem self-evident and covered by the other important attributes identified by Sommerville but as software becomes larger, more expensive, and more difficult to understand companies have increasingly used contractors to reduce liability and this may increase the likelihood of future incidents. For example, after multiple 737 crashes, it was reported that Boeing had been outsourcing some of the programming for the 737 Max's software. Boeing stated that the software these programmers were working on was not related to the malfunctioning software but it provides a glimpse into how companies try to cut development costs.Thoroughly Documented
Software should be thoroughly documented to ensure that the other steps, namely Maintainability, can meet their intent. Due to the increasing complexity of software, it is in turn increasingly important for thorough documentation to ensure the process of evolution is as seamless as possible.Up to Standards
Software should meet specific relatively concrete standards set out prior to development. Whether these standards are specific to the company developing the software or a more widely used and adhered to standard, these standards should be known by the user of the software as well as adhered to by the developer.Licensing
I don't believe that licensing all developers similar to doctors and lawyers would have a positive impact on software development as a whole. While there may be a case to be made by requiring licensing or certifications when dealing with certain types of systems such as safety systems in airlines or vehicles, but requiring the developer of the Ultimate Fart Button app to be licensed is unnecessary. Additionally, I'm not sure the likely method of licensing, through college, would be good for the software development world.ACM/IEEE Code of Ethics Examples
1. Public - Developing software for storing personal information requires that that information be adequately secured.2. Client and Employer - If a software developer created software with known flaws but failed to identify these flaws, due to money or time constraints, to their client or employer that would fail to meet the code of ethics.
3. Product - Creating a product that cut corners to meet deadlines that fails to meet the standards set forth by the agreed upon design specifications is an example that would violate the code of ethics.
4. Judgment - If a developer knows there is a major flaw with the product they are working on and their management tries to prevent them from fixing it to meet a deadline.
5. Management - Forcing engineers to work in extreme conditions to meet deadlines would violate the code.
6. Profession - Putting forth the best work they are capable of and standing by their work and conducting themselves appropriately, ie., avoid isms.
7. Colleagues - If an engineer working on a team disparaged a fellow team members work simply because they did not like the person would violate the code of ethics.
8. Self - If a new standard is put out in a developers area of expertise then they should work to learn and understand this new standard.
Comments
Post a Comment