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 attributes that all professional software should have are acceptability, dependability and security, efficiency, and maintainability:
- Software that is acceptable must be acceptable to the type of users for which it is designed. This means that it must be understandable, usable and compatible with other systems that they use.
- Dependable and secure software is software that is reliable, safe, secure, etc. Dependable software should not cause physical or economic damage if it fails. It should also be secure so that malicious software cannot access or damage the system.
- Efficient software Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency therefore includes responsiveness, processing time, resource utilisation, etc.
- Maintainable software is written in such a way that it can adapt to the changing needs of customers.
Four other suggestions that might be important are:
- Accessibility: software should be accessible to its users who may have some sort of physical disability. It should also not seem excessively complicated to its users. This may not be applicable to all software systems, but it should always be a consideration.
- Portability: Software should be usable on more than one operating system, web browser, etc. unless intended for a specific purpose on a specific system.
- Documentation: Software should be sufficiently documented so that users can troubleshoot errors and determine how to use the software, and developers can properly implement and maintain the software. This is important to create maintainable software.
- Mobile Compatibility: Since smartphones are the only way some people can access the internet, web applications should consider mobile browsers during development, especially if the application is used by a wide variety of users.
1.8
Discuss whether professional engineers should be licensed in the same way as doctors or lawyers.Professional engineers should be licensed similar to doctors and lawyers, especially if they are working on large, widely used systems, or systems that could cause damage during failure. Unlicensed engineers could oversee systems without regard to certain areas of study, such as cybersecurity or computing ethics. A licensed would ensure that the engineer is proficient in each common area of study, regardless of education background.
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: Software engineers should not develop code that gives out personal user information without permission.
- Client: Software engineers should not have special access to software data for personal gain. A more specific example of this would be an engineer should not be able to temporarily alter product prices an online shopping system for personal discounts.
- Product: Software engineers should not skip any consumer requirements because they may be difficult to maintain.
- Judgement: Software engineers should not take credit for another engineer's work. They should also be able to contribute to the system they are working on, not just be present in meetings.
- Management: Management should ensure that software developers are ethically developing a system. A software engineer should hold all developers to the highest possible standard.
- Profession: A software engineer must keep up with ethical issues, advances in technology, changing business environments, and they must be able to work in these changing environments without sacrificing integrity.
- Colleagues: Software engineers should treat all colleagues as capable, and intelligent people. Biases must be avoided.
- Self: A software engineer should not stop learning once they get their degree.
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 a case of sacrificing some liberty for the sake of safety. Generally, mass invasion of privacy should be avoided, therefore before development of this project takes place, the benefits should be analyzed. Additionally, how the system tracks citizens' actions is an important consideration. If the system solely tracks the actions of citizens of Middle-Eastern descent, or who practice Islam, then the system is inherently discriminatory. Discriminatory systems should always be avoided, as they only worsen socioeconomic issues.