Chapter 8 - Trustworthy Services

advertisement
Chapter 1
Review Questions
1. List two definitions for software engineering.
- software engineering is the application of a disciplined approach for the development
and maintenance of computer software.
- software engineering deals with the establishment and use of sound engineering
principles to economically obtain software that is reliable and works efficiently on real
machines.
2. List the difference between software engineering and software development.
Software engineering encompasses the use of tools, techniques, and methods that are
useful during the execution of the steps needed for the development of the software and
its future maintenance. In other words, Development and maintenance are phases
during which software engineering tools, techniques and methods are used.
3. List five types of productivity software tools.
Productivity tools for the office worker: office package
For the engineer: AUTOCAD, Debugging tools, Software development tools like
Rational Rose, Data management tools, human resource management tools, ….
4. List the stages of software development and maintenance and their respective phases.
Definition stage: requirements and specification phases
Implementation stage: design, coding and testing phases
Maintenance stage
5. What is involved in the maintenance stage?
Maintenance activities for the adaptation, enhancement and correction in the software
product. All the phases of the software development stages may occur at one level or the
other during maintenance also.
6. List the names of three software pioneers and their main contributions to software
engineering.
Alan Kay is known for his pioneering work on window-based graphical user
interfaces. He is also known for coining the term object-oriented programming in
1966.
Barry Boehm contributed to software engineering economics and software metrics.
He also introduced the spiral model for software development.
David Parnas introduced the concepts of information hiding, software interfaces, and
software modularity. He also contributed to software engineering education and
the ethical responsibilities of a software engineer.
Donald Knuth is known for the design of many well-known computer algorithms and
the use of rigorous mathematical techniques for the formal analysis of the
complexity of algorithms.
1
Erich Gamma with Richard Helm, Ralph Johnson, and John Vlissides introduced
the concept of object-oriented design patterns to facilitate software design reuse.
Grady Booch is known for his method for object-oriented analysis and design and his
co-development of the unified modeling language (UML).
7. List the principles of the code of ethics that deal with the need to be up to date in the
software field.
Software engineers shall ensure that their products and related modifications meet the
highest professional standards possible.
Software engineers shall participate in lifelong learning regarding the practice of their
profession and shall promote an ethical approach to the practice of the profession.
8. Define three of the software capabilities that are more relevant to the software users.
Usability, user-friendliness, correctness, availability
9. List the possible stakeholders in chemical factory control software.
Software developers, testers, maintenance
Users, engineers
Government regulations on safety
Standards for chemical factories
Chemical engineering professional society
10. Discuss why architectural considerations are important in software products.
Architectural considerations deal with the future use of the software, expandibility,
robustness, and scalability. Developers should not only be concerned with the current
load on the system but also with future load and future adaptation and additions of
functionalities.
Exercises
1. Which of the principles of the code of ethics deals with user’s privacy concerns? How?
Software engineers shall act consistently with the public interest.
Software engineers shall act in a manner that is in the best interests of their client and
employer, consistent with the public interest.
Software engineers shall advance the integrity and reputation of the profession
consistent with the public interest.
2. Search on the internet for software faults that led to the loss of human lives. Discuss the
problem and how it could have been prevented.
3. Is a software fault the responsibility of one developer? Why? Discuss your arguments.
Software development is an extensive group exercise. A fault may originate by one
developer oversight but the fact that it remains in the software product is a group
2
responsibility. Reviews and testing should have detected this fault before it goes into an
operational software system.
4. List the categories of software security errors.
5. Provide an analogy between software behavior, structure and architecture, and bridge
behavior, structure, and architecture.
Behavior:
Software – reaction to different inputs from internal or external sources
Bridge – reaction to different environmental factors like wind, heat, flood/water, …
Structure:
Software – the static code in the software program
Bridge – the beams, columns, … that make the bridge
Architecture:
Software – multithreading, multiprocessing, resilience of the software to deal with load
Bridge – number of beams/columns, amount of steel and cement to make the bridge
resilient
6. List the areas of the CSDP certification.
Business Practices and Engineering Economics
Software Requirements
Software Design
Software Construction
Software Testing
Software Maintenance
Software Configuration Management
Software Engineering Management
Software Engineering Process
Software Engineering Tools and Methods
Software Quality
7. List the main areas of the software engineering body of knowledge.
Software Requirements
Software design
Software Construction
Software testing
Software maintenance
Software configuration management
Software Engineering management
Software Engineering Process
Software Engineering Tools and Methods
Software Processes and Product Quality
3
Download