Topic Name Description
Course Introduction Page Course Syllabus
Page Course Terms of Use
1.1: Software Engineering Overview Page Harvard University: David Malan's "Introduction to Software Engineering"

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.

1.1.1: What Is Software Engineering? File Sue Conger's "The New Software Engineering"

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. Take your time in reading and jot down any ideas or notes that stand out to you as particularly useful (or, conversely, confusing).

1.1.1.1: History of Software Engineering Page Jared King's "The History of Software"

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.

URL The Scientific World Journal: Isabel M. del Águila, José Palma, and Samuel Túnez's "Milestones in Software Engineering and Knowledge Engineering History: A Comparative Review"

Read the article and take notes. Consider Table I in this paper. As you examine the timeline, compare the categories with your own life. In addition to the reading material, you may want to ask a parent or grandparent to tell you about their experiences with the earliest stages in the timeline.

1.1.1.2: Differences between Software Engineering and Computer Science URL Tony Targonski's "6 Degrees of Computer Science"

This reading 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 File Sue Conger's "The New Software Engineering"

Read the "Applications" section in Chapter 1 (pages 5-23). This reading assignment covers the topics of software characteristics, software responsiveness, types of applications, and applications in business. Take your time in reading and jot down any ideas or notes that stand out to you as particularly useful (or, conversely, confusing).

In the "Application Characteristics" section (pages 5-13), make sure to carefully review Figure 1-1 on page 6 for an overview of software characteristics.

In the "Application Responsiveness" section (pages 13-17), make sure to carefully 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), make sure to carefully review Figure 1-17 on page 22 for an overview of application in business.

1.1.3: Software Quality URL Dublin Institute of Technology: Ronan Fitzpatrick's "Software Quality: Definitions and Strategic Issues"

Read the chapter (pages 5-22). 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 article further prioritizes quality factors as well as mentions how to measure software quality.

1.2: Software Engineering Methodologies File Sue Conger's "The New Software Engineering"

Read the following sections in Chapter 1: "Methodologies" (pages 34-39) and "User Involvement in Application Development" (pages 39-40). Take your time in reading and jot down any ideas or notes that stand out to you as particularly useful (or, conversely, confusing).

A methodology is a body of practices within a discipline (e.g. 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 URL Xosé Manuel Carreira Rodríguez's "Ethics Matters"

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?

File Sue Conger's "The New Software Engineering"

Read the following sections in 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.

Take your time in reading and jot down any ideas or notes that stand out to you as particularly useful (or, conversely, confusing).

2.1: Software Development Life Cycle (SDLC) Page Predicate Solutions: "Software Development Life Cycle Methodologies"

This video contains a lot of good information, so take notes and/or find the time to watch and listen more than once.

URL Boundless: Business: "Chapter 10, Section 2: Quality Management: Quality Inspections and Standards"

Locate and read this short description of standards in business. How did the SDLC video you just watched reference standards for software development?

2.2: Sequential Life Cycle Model File Sue Conger's "The New Software Engineering"

Read the "Project Life Cycles" and "Sequential Project Life Cycle" sections in Chapter 1 on pages 23-28. The sequential life cycle model, also known as a waterfall approach, has a work breakdown structure where the stages of work are executed in sequence, and the output of each stage becomes input to the next stage.

2.3: Iterative Life Cycle Model File Sue Conger's "The New Software Engineering"

Read the "Iterative Project Life Cycle" section in Chapter 1 on pages 29-31. The sequential life cycle model has an inherent limitation that it does not recognize the iterative or nonlinear nature of certain types of application development. Under certain conditions, the iterative life cycle may be more appropriate. For example, if requirements are not fully known, it may be appropriate to jointly discover the requirements of an application by applying the iterative life cycle model.

After you read, review the SDLC video in subunit 2.1 to compare agile with the waterfall method. What are the advantages of each method in quality software development? What are the disadvantages of each? If you were to develop a new app, which method would you follow?

3.1: Object-Oriented Concepts Page Brian Will's "Object-Oriented Programming"

This is a very complete overview of object-oriented programming with references to a number of different object languages. As you watch the video be sure to list each component of an object-oriented language as well as a brief descriptive statement. As you complete the subunits on UML, note how each component is diagrammed.

File Sue Conger's "The New Software Engineering"

Read the "Definition of Object-Oriented Terms" section in Chapter 11 (pages 461-463). This section will cover basic object-oriented terms including classes/objects, abstract data type (ADT)/encapsulation, whole/part and generalization/specification classes, inheritance/polymorphism, and messages. Take your time in reading and jot down any ideas or notes that stand out to you as particularly useful (or, conversely, confusing).

3.2: An Overview of UML Page Mike Murphy's "Introduction to UML"

Watch this video. The lecture provides information to introduce UML as a tool for software engineers. After watching the video, write a summary that answers the following question: what is UML?

3.2.1: Use Case Diagrams Page Mike Murphy's "Use Cases"
Watch this video. The lecture provides a discussion of the use case diagram in UML. Can you describe each component of a use case diagram?
3.2.2: State Diagrams Page Mike Murphy's "UML State Diagrams"

Watch this video. The lecture provides an overview of state machines and the state diagram in UML. What is the purpose of the state diagram?

3.2.3: Class Diagrams Page Mike Murphy's "UML Class Diagrams"

Watch this video. The lecture provides a discussion of the class diagram in UML. What is the purpose of the class diagram?

3.2.4: Activity and Interaction Diagrams Page Mike Murphy's "UML Activity Diagrams"

Watch this video carefully as an example of modeling. What is the purpose of an activity diagram? How would you create an activity diagram?

3.3: Modeling Concepts Page Mike Murphy's "Object Oriented Design"

Watch this video. The lecture provides a discussion of using UML for object-oriented design.

3.4: UML 2.0 URL HubTechInsider: "What is Unified Modeling Language?"

Read the article carefully. Compare the summary list of diagram types with your notes. UML 2.0 added three new diagrams:  instance, role, and internal structure. An internet search for UML 2.0 diagrams will provide a number of examples, especially modeling software vendor sites.

4.1: Data Types File Sue Conger's "The New Software Engineering"

Read "Chapter 4: Data Collection/Gathering for Application Development” (pages 83-87) about data types.

There are different data dimensions, including time and volume. Each dimension is important in defining requirements of applications because it gives guidance to the software engineer about how much and what type of information should be collected. Take your time in reading and jot down any ideas or notes that stand out to you as particularly useful (or, conversely, confusing).

4.2: Requirements/Data Gathering Techniques File Sue Conger's "The New Software Engineering"

Read "Chapter 4: Data Gathering for Application Development” (pages 87-98).

Data collection/gathering is also referred to as requirements gathering. Data gathering is the interaction between the software engineer (in this case a business analyst) and the customers (including users) to obtain/gather data/information about the application to be developed. There are many techniques for gathering data. The data collection techniques include interviews, meetings, observations, questionnaires, reviewing software, reviewing internal document, and reviewing external documents.Take your time in reading and jot down any ideas or notes that stand out to you as particularly useful (or, conversely, confusing).

4.3: Data Collection Techniques and Application Types File Sue Conger's "The New Software Engineering"

Read "Chapter 4: Data Gathering for Application Development" (pages 98-102) about data collection techniques and application types. Take your time in reading and jot down any ideas or notes that stand out to you as particularly useful (or, conversely, confusing).

5.1: Requirements Fundamentals URL HubTechInsider: "How do You Write Software Requirements?"

This article discusses the 2011 revisions to the IEEE 830 standard for requirements analysis. What are the phases of software requirement engineering?

Also pay special attention to the section of types of software requirements and the unique quality of each type. It is important to identify and include more than just the functional requirements to have a quality system.

5.2: Requirements Activities File International Journal of Engineering and Research Technology: Sanjeev Narayan Bal's "Highways of Requirements Engineering"

Read this article. List the five steps in the requirements process and take notes under each one:  requirements elicitation, requirements analysis, requirements specification, requirements verification, and requirements management. The paper then applies the process to develop requirements for an enterprise application with the addition of two more tasks. What are the two additional steps and why are they are necessary?  (If you are not familiar with enterprise systems, do a quick web search for a definition/description.)

5.3.1: Process-Oriented Analysis File Sue Conger's "The New Software Engineering"

Read "Chapter 7: Process-Oriented Analysis" (pages 227-278).

Process-oriented analysis originated with the work of Yourdon/DeMarco and Gane/Sarson. The analysis follows a top-down approach to progressively more detailed levels of process analysis, resulting in context diagrams, data flow diagrams, and data dictionary entities. Take your time in reading and jot down any ideas or notes that stand out to you as particularly useful (or, conversely, confusing).

5.3.2: Data-Oriented Analysis File Sue Conger's "The New Software Engineering"

Read "Chapter 9: Data-Oriented Analysis" (pages 328-390).

Information engineering (IE) is the methodology used to illustrate data-oriented analysis. In the data-oriented approach, there is the notion that data are more stable than processes. Business area analysis (BAA), which is the IE term for analysis, begins with an analysis of data followed by business function processes resulting in entity-relationship diagrams (ERDs), data flow diagrams (DFDs), and the entity/process matrix called CRUD matrix (create, retrieve, update, delete).Take your time in reading and jot down any ideas or notes that stand out to you as particularly useful (or, conversely, confusing).

5.3.3: Object-Oriented Analysis (OOA) File Sue Conger's "The New Software Engineering"

Read the sections beginning with "Object-Oriented Analysis Activities" in "Chapter 11: Object-Oriented Analysis" (pages 463-500).

Unlike process-oriented (which is focused on functional thinking) and data-oriented (which is focused on entity thinking) analyses, objected-oriented analysis is focused on object thinking. Data and processes are married early in the process and encapsulated into classes/objects. Object-oriented analysis (and design) represents a paradigm shift in software development. As you read this material, bear in mind that the text illustrates this approach using the Booch notation, which has been supplanted by the Unified Modeling Language (UML). However, much of the Booch notation has been unified in UML (and is therefore still valid)--especially the class diagrams-- and classified into whole/part or generalization/specialization classes. Take your time in reading and jot down any ideas or notes that stand out to you as particularly useful (or, conversely, confusing).

6.1: Software Design Principles (Information Hiding, Cohesion, Coupling) File Sue Conger's "The New Software Engineering"

Read the "Conceptual Foundations" section in Chapter 8 (pages 279-280).

The principles of good software design have not changed much over the years. In design, we aim to divide and conquer the problem space into smaller solvable parts to better manage complexity and, therefore, cost of development/ maintenance.

6.2: Architectural Design Page Predicate Solutions: "Technical Documentation"

Watch and listen carefully to this video. Take lots of notes following the outline provided by the presenter.

This is a complete project reviewing the phases already presented in your previous activities as well as a lot of new material covered in this unit. What is the difference between functional and non-functional requirements? Give an example of each presented in this sample software project. Which life cycle is it using? The second hour of the video uses a enterprise view in showing program examples of unit 6 concepts. You will not be doing any of the coding the presenter uses to explain concepts.

6.3.1: Process-Oriented Design File Sue Conger's "The New Software Engineering"

Read "Chapter 8: Process-Oriented Design" (pages 278-327). The goal of design is to map the requirements of the application to a hardware and software environment. The result of process-oriented analysis -- data flow diagrams, data dictionary entities, etc. -- is translated into detailed specifications for hardware and software. The main output of process-oriented design includes structure charts, physical databases, and program specifications.

In this reading, you will learn about the concepts and terminologies for process-oriented design. This reading covers the steps of process-oriented design including transaction analysis, transform analysis, and structure charts, as well as physical database design, program packages, and program design. You will also learn about strengths and weaknesses of process-oriented design. Take your time in reading and jot down any ideas or notes that stand out to you as particularly useful (or, conversely, confusing).

6.3.2: Data-Oriented Design File Sue Conger's "The New Software Engineering"

Read "Chapter 10: Data-Oriented Design" (pages 391-458). The text uses the Martin [1990] version of Information Engineering to illustrate data-oriented design. The result of data-oriented analysis -- entity relationship diagrams, data flow diagrams, CRUD matrices, etc. -- is translated into screen designs, production database designs, action diagrams, procedural structures, and security plans. Compared to other approaches, data-oriented design has a strong emphasis on security, recovery, and audit controls, relating each to data and processes in the application.

In this reading, you will learn about the concepts and terminologies for data-oriented design, analyzing data and defining system controls, and the action diagram. The action diagram shows the processing details for an application in a structured format, which can be translated into programs and modules. You will also learn about menu structure, dialogue flow and hardware/software installation and testing in this reading. Take your time in reading and jot down any ideas or notes that stand out to you as particularly useful (or, conversely, confusing).

6.3.3: Object-Oriented Design OOD File Sue Conger's "The New Software Engineering"

Read "Chapter 12: Object-Oriented Design", on pages 501-553. The text uses the Booch methodology (1991) to illustrate object-oriented design. The result of object-oriented analysis is translated into time-event diagrams, Booch diagrams, message communications, service objects, and process diagrams. Collectively, they constitute a set of holistic specifications to effectively allocate functionality over program modules at the lowest level as well as multiprocessor configurations at the highest level.

As we discussed in 5.3.3, the Booch notation has been unified with other object-oriented notations (i.e., Rambaugh and Jacobsen) into Unified Modeling Language (UML). In Unit 10, we will look at another example of object-oriented analysis and design using the UML notation. Therefore, you may skim this chapter quickly to gain familiarity with OOD, which you will apply to Unit 10. Take your time in reading and jot down any ideas or notes that stand out to you as particularly useful (or confusing).

7.1: History of Programming Page Mike Murphy's "Object Oriented Implementations"

Watch and listen carefully to this video. What is the difference between OOL and OOD?

7.2: Choosing Implementation Languages File Sue Conger's "The New Software Engineering"

Read "Chapter 15: Choosing an Implementation Language" (pages 640-665).

In this reading, you will learn about the different programming languages used to convert design specifications into software code. Please focus on the languages' characteristics and how you would know which language to choose for particular projects. Take your time in reading and jot down any ideas or notes that stand out to you as particularly useful (or, conversely, confusing).

7.3: Purchasing Hardware and Software File Sue Conger's "The New Software Engineering"

Read "Chapter 16: Purchasing Hardware and Software" (pages 666-689).

Take your time in reading and jot down any ideas or notes that stand out to you as particularly useful (or, conversely, confusing).

8.1: Software Testing Terminologies File Sue Conger's "The New Software Engineering"

Read the section titled "Testing Terminology" in Chapter 17 (pages 690-694).

In this unit, you have a quick introduction to many terminologies used in the science (and art) of testing. Do not be concerned if you do not understand them fully. We will go back and examine these topics in more depth; subunit 8.2 will look more closely at test strategies (i.e., white-box, black-box, top-down, and bottom-up), and subunit 8.3 will examine more closely levels of testing (i.e., unit test, integration test, and system test). Take notes as you read.

8.2: Software Testing Strategies File Sue Conger's "The New Software Engineering"

Read the section titled "Testing Strategies" in Chapter 17 (pages 694-706).

In this subunit, you will learn about two kinds of testing strategies: how the logic is tested (i.e., black-box and white-box testing) and how the testing is conducted (i.e., top-down and bottom-up testing). Take your time in reading and jot down any ideas or notes that stand out to you as particularly useful (or, conversely, confusing).

8.3: Software Test Coverage File Sue Conger's "The New Software Engineering"

Read the section titled "Test Plan for ABC Video Order Processing" in Chapter 17 (pages 706-732). In this subunit, see how ABC Video designs testing to validate that specification, design, and coding mesh with functional and non-functional requirements of the system.

Take your time in reading and jot down any ideas or notes that stand out to you as particularly useful (or, conversely, confusing).

9.1: Project Management File Sue Conger's "The New Software Engineering"

Read "Chapter 3: Project Management" (pages 57-82).

As discussed, the software engineer and the project manager provide complementary skills and work collaboratively on shared activities. The three main activities of the project manager are organizational liaison, personnel management, and project monitoring and control. The section titled "Liaison" (pages 67-70) discusses the project manager's role as a go-between for the technical team and agents who are not members of the technical team (e.g. project sponsor, user, IS management, vendors, etc.).

In the section titled "Personnel Management," (pages 70-74) you will learn that this job entails working with personnel (i.e., human resources) to hire, fire, and provide employees with professional development.

The section titled "Monitor and Control" (pages 74-79) explains that project monitoring involves tracking project progress relative to budget. Project control means implementing changes when progress is not satisfactory (e.g. training, revising project plans, etc.). Take your time in reading and jot down any ideas or notes that stand out to you as particularly useful (or, conversely, confusing).

9.2: Change Management File Sue Conger's "The New Software Engineering"

Read "Chapter 18: Change Management" (pages 735-764).

A critical component of project monitoring and control is change management. As business requirements and operating environments change all the time, the project manager has to manage change throughout the software development cycle from acquisition, supply, development, operation to maintenance. The guiding principles, techniques, and tools for change management are discussed in this chapter. Take your time in reading and jot down any ideas or notes that stand out to you as particularly useful (or, conversely, confusing).

10.1: Preparation and Case Studies Page IIT Bombay: N.L. Sarda's "Software Engineering: Case Study"

Watch these videos, which outline a case study in software engineering. As you watch, you may wish to reference the transcripts for each video, which can be found here for the first lecture and here for the second lecture.

URL Sue Conger's "The New Software Engineering"

Read the "Application Development Case" on pages 50-54.

This case study provides an overview of of the creation of an order processing and inventory system for ABC Video Rental. Using the context of what you've learned throughout this course, analyze how this section handles the processes involved in this case study, and consider it within the context of each of the units you've studied thus far. Take your time as you read, and write down any ideas or notes that stand out to you as particularly useful or confusing.

Page Ivan Zerea's "Passing Down the Pain: Difficulties in Teaching Software Development"

Pretend you are a teacher for an online course. It can be a struggle for course developers to keep their courses interesting  and fun, or to encourage students to work together, since their classmates are all virtual. Your project for this subunit is to develop a fun interactive game for this class. Watch this interview for inspiration. Develop a problem statement for this project. As a student, you should have plenty of ideas on how you like to study and learn! The game should advocate the proper use of the software engineering process presented in this course. 

10.2: Design Modification and Quality Control Page Design Modification and Quality Control Activity

Read the instructions and complete this activity.

Study Guides and Review Exercises Page Unit 1 Study Guide and Review: Introduction to Software Engineering
Page Unit 2 Study Guide and Review: Software Development Life Cycle Models
Page Unit 3 Study Guide and Review: Software Modeling
Page Unit 4 Study Guide and Review: Software Requirements Gathering
Page Unit 5 Study Guide and Review: Software Requirements Analysis
Page Unit 6 Study Guide and Review: Software Design
Page Unit 7 Study Guide and Review: Implementation
Page Unit 8 Study Guide and Review: Software Testing
Page Unit 9 Study Guide and Review: Project Management
Page Unit 10 Study Guide and Review: Putting It Together: A Case Study
Optional Course Evaluation Survey URL Optional Course Evaluation Survey

Please take a few moments to provide some feedback about this course. Consider completing the survey whether you have completed the course, you are nearly at that point, or you have just come to study one unit or a few units of this course.

Your feedback will focus our efforts to continually improve our course design, content, technology, and general ease-of-use. Additionally, your input will be considered alongside our consulting professors' evaluation of the course during its next round of peer review. As always, please report urgent course experience concerns to [email protected] and/or our discussion forums.