Introduction to Software Engineering
Use the following to guide your reading from Chapter 1: Introduction to Software Engineering in Software Engineering:
-
What are the reasons for most software failures and the ways in which they manifest?
Software failures are usually a consequence of two factors: increasing system complexity due to larger systems being built more quickly and failure to use software engineering methods causing software to be more expensive and less reliable than it should be.
-
How must personal software development change to software engineering when the program will be used by others, developed by teams, and maintained through its lifetime?
-
Define the essential attributes of acceptability; dependability, security, and safety; efficiency, and maintainability.
- Acceptability
- Software must be acceptable to the type of users for which it is designed. It must be understandable, usable, and compatible with other systems that they use.
- Dependability and Security
- Software dependability includes a range of characteristics including reliability, security, and safety. Dependable software should not cause physical harm or economic damage in the event of system failure. Software must be secure so that malicious users cannot access or damage the system.
- Efficiency
- Software should not make wasteful use of system resources such as memory and processor cycles. It includes responsiveness, processing time, resource utilization, etc.
- Maintainability
- Software should be written in such a way that it can evolve to meet the changing needs of customers. Software change is inevitable due to evolving business environments.
-
How are quality, schedule, and budget balanced by the software engineers?
-
What varying degrees of software engineering are needed based upon the type of software being developed?
-
What are the four fundamental activities common to all software development processes?
- Specification
- Customers and engineers define the software that is to be produced and the constraints on its operation
- Development
- The software is designed and programmed
- Validation
- The software is checked to ensure that it is what the customer requires
- Evolution
- The software is modified to reflect changing customer and market requirements
-
What is the difference between software engineering and computer science and software engineering and systems engineering?
Computer science is concerned with the theories and methods that underlie computers and software systems whereas software engineering is concerned with the practical problems of producing software.
Systems engineering is concerned with all aspects of the development and evolution of complex systems where software plays a major role. It is concerned with the hardware development, process and policy design, and system deployment, and software engineering.
-
How do heterogeneity, business and social change, security and trust, and scale affect different types of software?
- Heterogeneity
- Systems operate in distributed environments that include different types of devices. New software must integrate with legacy software written in different languages.
- Business and social change
- Businesses and society change rapidly; therefore, they need to change their software and rapidly develop new software.
- Security and trust
- It is essential we can trust the software that is intertwined in our lives. We must ensure that malicious actors cannot compromise our software and that information security is maintained.
- Scale
- Software is developed for small embedded systems (e.g., portable devices) and cloud-based systems with global reach.
-
What are the eight principles of the Software Engineering Code of Ethics and Professional Practice.
- Public
- Software engineers shall act consistently with the public interest.
- Client and Employer
- Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest.
- Product
- Software engineers shall ensure that their products and related modifications meet the highest professional standards possible.
- Judgment
- Software engineers shall maintain integrity and independence in their professional judgment.
- Management
- Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.
- Profession
- Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.
- Colleagues
- Software engineers shall be fair to and supportive of their colleagues.
- Self
- 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.