Unit 1 Study Guide and Review: Introduction to Software Engineering
This study guide is intended to help reinforce key concepts in each unit in preparation for the final exam. Each unit study guide aligns with course outcomes and provides a summary of the core competencies and a list of vocabulary terms. This study guide is not meant to replace the readings and videos that make up the course.
The vocabulary lists include (1) some terms that might help you answer some of the review items and (2) some terms you should be familiar with to be successful in completing the final exam for the course.
1a. Explain and define software engineering
- Why study software engineering?
- Are software engineering, computer science and other related disciplines, such as information systems or information technology names for the same topics?
We want to study software so that we will be able to write software programs to solve problems or perform useful tasks. Computer Science helps us understand software, while software engineering applies that understanding to the development of software systems to solve useful problems or perform useful tasks. The Introduction to Software Engineering video illustrates the development of software solution for a useful task.
Information technology and software engineering share techniques, methods, tools, and processes. Software engineering uses project management to plan, monitor, and control projects for software lifecycle activities. Software engineering is engineering and computer science oriented, whereas information technology is project management and technology oriented.
1b. Identify the differences between software engineering and computer science
- Are software engineering and computer science the same?
Computer Science and Software Engineering overlap topically, but differ in emphasis. In software engineering, the emphasis is on the application of computer science for solving useful problems. This assumes we have background knowledge of software. In software engineering, we study the processes for creating software to solve specific problems, the characteristics of software that contribute to a good solution, the description of problems, and software methodologies that provide guidance to the efficient and effective development of quality software. Review pages 1-4 of The New Software Engineering, which discusses these applications: problem spaces, solution spaces, and processes for transitioning from problem to solution.
1c. Categorize software by characteristics, responsiveness, and type
- Is software engineering just another term for software development?
- Why categorize software?
Software engineering includes software development, as well as other parts of the software life-cycle: defining the problem or task, organizing and managing the resources for efficient and effective software development, and maintaining software products over the life-cycle. It also includes integrating organizational, business, project, and personnel goals; working in teams; communicating with stakeholders; and building and using software tools to support software processes. Many of these activities were motivated by the issues of the Software Crisis, from 1965-1985. Review The History of Software and items 1-3 in Milestones in Software Engineering. These give a glimpse of the past, current, and future of software engineering.
Software categories are defined to address efficiency and effectiveness by helping us understand the problems and tasks that need to be solved or performed (the problem space). In general, problems can be familiar or unfamiliar; and/or unprecedented; solvable or unsolvable by software; or involve significant risk or not. Pages 5-20 in The New Software Engineering discuss software characteristics, application responsiveness, and four types of business functions.
1d. Describe the attributes of good software
- How is the quality of software determined?
In Software Engineering, we emphasize 'the solution'. We seek good solutions that have high quality, commensurate with the importance of the problem or task. Quality is defined as satisfaction of the needs of significant stakeholders. Software Quality describes the factors that contribute to the satisfaction of stakeholder expectations.
1e. Interpret the three major methodologies in software engineering
- What is a methodology?
- What is a method?
- Why is the period from 1965 to 1985 in the history of computing called the Software Crisis?
- Why do we have methods and methodologies?
The terms method and methodology are often used as synonyms. However, a method is a tool for performing the steps of a process, while methodology refers to the reasons or justification for the use of the method. In software engineering, methodology often implies the availability of related methods and tools. For example, object-oriented methodologies integrate object-oriented requirements, design, and programming tools.
Software engineering was born during the "software crisis" of 1965-1985, as referenced in The History of Software. Software methods were one response to the issues of that period. Review item 3 in Milestones in Software Engineering.
Methods and methodologies provide guidance that helps support the transition from the problem to an effective and efficient software solution. What methodologies are used for developing software systems? For a description of several widely used methodologies, read pages 34-39 in The New Software Engineering.
1f. Show an understanding of software engineering code of ethics in professional practice
- Why does software engineering have a code of ethics of professional practice?
Software engineering activities involve interaction with other members of a project team, with other internal groups, and with external organizations. Privacy, confidentiality, and ownership rights of others must be safeguarded, and interactions must be conducted in a professional manner to build and maintain productive and pleasant working relationships. Read about professional responsibilities and organizational imperatives in the ACM Code of Ethics.
Unit 1 Vocabulary
This vocabulary list includes terms that might help you with the review items above and some terms you should be familiar with to be successful in completing the final exam for the course.
Try to think of the reason why each term is included.
- Computer Science
- Software Engineering
- Software Crisis
- Application characteristics
- Types of applications
- Attributes of quality software
- Code of Ethics
- Life-cycle
- Data-orientation
- Process-orientation
- Object-orientation