Unit 1: Introduction to Software Engineering
When dependency on software and computers became more important, software grew in size and became a necessity for businesses and users all over the world. In the last 30 years, we have seen an unparalleled explosion in the amount of software produced and used by our modern society. There is now a need to set concrete objectives (or functional requirements), predict necessary resources (like cost estimates) to attain those objectives, and manage customers' expectations.
As you review the material in this unit, compare and contrast software engineering with computer science. These two disciplines are closely related, but they have some differences. As you work through this unit, spend some time reviewing the three commonly used methodologies in software engineering: data-oriented, process-oriented, and object-oriented. You will the central theme of these three methodologies repeated in software requirements and analysis as well as software design.
Completing this unit should take you approximately 5 hours.
Upon successful completion of this unit, you will be able to:
- explain and define software engineering;
- identify the differences between software engineering and computer science;
- categorize software by characteristics, responsiveness, and type;
- describe the attributes of good software;
- interpret the three major methodologies in software engineering; and
- show an understanding of software engineering code of ethics in professional practice.
1.1: Software Engineering Overview
Watch this video of the first day in a software engineering course at Harvard University. The instructor spends the first half of the video exploring a haphazard way to develop a system for putting the class syllabi online. He then discusses the systematic process to complete a course similar to this one, especially the SDLC projects (Unit 10). The video mentions a number of software tools for software development. Do not be overwhelmed, as this is not a programming course. You may find the 30-day free versions of software modeling useful if you have time to use them in Unit 3.
Read the "Introduction" and "Software Engineering" sections in Chapter 1 (pages 1–4). You will use this text throughout the course, so you may want to save a copy of the PDF to easily access it as you move through each unit. This text positions software engineering as a multi-trillion dollar investment in typical Fortune 1000 companies. It discusses what software engineering is and defines basic software engineering terms.
1.1.1: What Is Software Engineering?
As you read this article, pay attention to the trends section. As you proceed through this course, these items will appear as controversies and opportunities to evaluate other alternatives.
Read the article and consider Table I. As you examine the timeline, compare the categories with your own life. You may want to ask older individuals you know to tell you about their experiences with the earliest stages in the timeline.
This article separates computer science into five other categories, with software engineering being one of them. How is software engineering like computer science? How is is software engineering different?
1.1.2: Software Applications
Read the "Applications" section in Chapter 1 (pages 5–23). This covers the topics of software characteristics, software responsiveness, types of applications, and applications in business.
In the "Application Characteristics" section (pages 5–13), review Figure 1-1 on page 6 for an overview of software characteristics.
In the "Application Responsiveness" section (pages 13–17), review Figure 1-12 on page 14 for an overview of two types of software responsiveness.
In the "Applications in Business" section (pages 22–23), review Figure 1-17 on page 22 for an overview of application in business.
1.1.3: Software Quality
Read this article. In general, software quality is crucial in software engineering. In this article, Fitzpatrick explores the various definitions of quality and the quality models by McCall, Richards, and Walters in 1977 and Boehm in 1978. The author prioritizes quality factors and mentions how to measure software quality.
1.2: Software Engineering Methodologies
Read "Methodologies" (pages 34–39) and "User Involvement in Application Development" (pages 39–40).
A methodology is a body of practices within a discipline, like software engineering. It can contain procedures, techniques, and processes. According to Conger, there are five classes of software engineering methodologies. For the purpose of this course, you will look at the more commonly used data-oriented, process-oriented, and object-oriented (OO) methodologies. This course places special emphasis on the OO methodology. The OO perspective is compliant with ACM/IEEE's Software Engineering curriculum.
1.3: Software Engineering Code of Ethics and Professional Practices
This is a summary of the ACM's code of ethics for computer professionals. You might want to follow the ACM link to read the entire code to see if you agree with this summary. What has the author left out?
Read "Chapter 4: Professionalism and Ethics" (pages 102–107). According to the Association of Computing Machinery (ACM) and Data Processing Management Association (DPMA), professionalism is acting in accordance with the highest expectations of a professional group. As you read the ACM Code of Ethics, think about ethics and professionalism as going hand in hand.
Unit 1 Assessment
Take this assessment to see how well you understood this unit.
- This assessment does not count towards your grade. It is just for practice!
- You will see the correct answers when you submit your answers. Use this to help you study for the final exam!
- You can take this assessment as many times as you want, whenever you want.