|Course Introduction||Course Syllabus|
|1.1: Software Engineering Overview||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.
|Sue Conger's The New Software Engineering: "Overview of 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.
|1.1.1: What Is Software Engineering?||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.
|The Scientific World Journal: Isabel M. del Águila et al.'s "Milestones in Software Engineering and Knowledge Engineering History"||
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.
|Tony Targonski's "6 Degrees of Computer Science"||
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||Sue Conger's The New Software Engineering: "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||Dublin Institute of Technology: Ronan Fitzpatrick's "Software Quality: Definitions and Strategic Issues"||
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||Sue Conger's The New Software Engineering: "Methodologies and User Involvement in Application Development"||
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||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?
|Sue Conger's The New Software Engineering: "Professionalism and Ethics"||
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.
|2.1: Software Development Life Cycle (SDLC)||Predicate Solutions: "Software Development Life Cycle Methodologies"||
This video contains a lot of good information, so be sure to take notes. You may also want to revisit parts of the video later.
|Boundless: Business: "Quality Management: Quality Inspections and Standards"||
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||Sue Conger's The New Software Engineering: "Project Life Cycles and the Sequential Project Life Cycle"||
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||Sue Conger's The New Software Engineering: "Iterative Project Life Cycle"||
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||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.
|Sue Conger's The New Software Engineering: "Object-Oriented Terms"||
Read the "Definition of Object-Oriented Terms" section in Chapter 11 (pages 461–463). This section will cover basic object-oriented terms including classes and objects, abstract data types (ADT) and encapsulation, whole or part and generalization or specification classes,
inheritance and polymorphism, and messages.
|3.2: An Overview of UML||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?
|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?
|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?
|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?
|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||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||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||Sue Conger's The New Software Engineering: "Data Collection/Gathering for Application Development"||
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.
|4.2: Requirements/Data Gathering Techniques||Sue Conger's The New Software Engineering: "Data Collection/Gathering for Application Development"||
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 and gather data and 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.
|4.3: Data Collection Techniques and Application Types||Sue Conger's The New Software Engineering: "Data Collection/Gathering for Application Development"||
Read "Chapter 4: Data Gathering for Application Development" (pages 98–102) about data collection techniques and application types.
|5.1: Requirements Fundamentals||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||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 article 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 and description.
|5.3: Requirements Analysis Methodologies||Sue Conger's The New Software Engineering: "Process-Oriented Analysis"||
Read "Chapter 7: Process-Oriented Analysis" (pages 227–278).
Process-oriented analysis originated with the work of Yourdon and DeMarco, and Gane and 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.
|Sue Conger's The New Software Engineering: "Data-Oriented Analysis"||
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).
|Sue Conger's The New Software Engineering: "Object-Oriented Analysis"||
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 and 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 or part, or generalization or specialization classes.
|6.1: Software Design Principles (Information Hiding, Cohesion, and Coupling)||Sue Conger's The New Software Engineering: "Conceptual Foundations"||
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 and maintenance.
|6.2: Architectural Design||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: Software Design Approaches||Sue Conger's The New Software Engineering: "Process-Oriented Design"||
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, and so on – 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 chapter, you will learn about the concepts and terminologies for process-oriented design and 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.
|Sue Conger's The New Software Engineering: "Data-Oriented Design"||
Read "Chapter 10: Data-Oriented Design" (pages 391–458). The text uses the Martin  version of Information Engineering to illustrate data-oriented design. The result of data-oriented analysis – entity relationship diagrams, data flow diagrams, CRUD matrices, and so on – 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 chapter, 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 and software installation and testing.
|Sue Conger's The New Software Engineering: "Object-Oriented Design"||
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.
The Booch notation has been unified with other object-oriented notations (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.
|7.1: History of Programming||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||Sue Conger's The New Software Engineering: "Choosing an Implementation Language"||
Read "Chapter 15: Choosing an Implementation Language" (pages 640–665).
In this chapter, you will learn about the different programming languages used to convert design specifications into software code. Focus on the languages' characteristics and how you would know which language to choose for particular projects.
|7.3: Purchasing Hardware and Software||Sue Conger's The New Software Engineering: "Purchasing Hardware and Software"||
Read "Chapter 16: Purchasing Hardware and Software" (pages 666–689).
|8.1: Software Testing Terminologies||Sue Conger's The New Software Engineering: "Testing Terminology"||
Read the "Testing Terminology" section 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 by looking closely at test strategies (white-box, black-box, top-down, and bottom-up) and examining the levels of testing (unit test, integration test, and system test).
|8.2: Software Testing Strategies||Sue Conger's The New Software Engineering: "Testing Strategies"||
Read the "Testing Strategies" section in Chapter 17 (pages 694–706).
In this section, you will learn about two kinds of testing strategies: how the logic is tested (via black-box and white-box testing) and how the testing is conducted (by top-down and bottom-up testing).
|8.3: Software Test Coverage||Sue Conger's The New Software Engineering: "Test Plan for ABC Video Order Processing"||
Read the "Test Plan for ABC Video Order Processing" section in Chapter 17 (pages 706–732). In this section, see how ABC Video designs testing to validate that specification, design, and coding mesh with functional and non-functional requirements of the system.
|9.1: Project Management||Sue Conger's The New Software Engineering: "Project Management"||
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 "Liaison" section (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 (such as project sponsors, users, IS management, vendors, and so on).
In the "Personnel Management" section (pages 70–74), you will learn that this job entails working with personnel and human resources to hire, fire, and provide employees with professional development.
The "Monitor and Control" section (pages 74–79) explains that project monitoring involves tracking project progress relative to budget. Project control means implementing changes when progress is not satisfactory (such as training or revising project plans).
|9.2: Change Management||Sue Conger's "The New Software Engineering: "Change Management"||
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.
|10.1: Preparation and Case Studies||N.L. Sarda's "Software Engineering: Case Study"|
|Sue Conger's The New Software Engineering: "Application Development Case"||
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.
|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||Design Modification and Quality Control Activity||
Read the instructions and complete this activity.
|Study Guides||Unit 1 Study Guide: Introduction to Software Engineering|
|Unit 2 Study Guide: Software Development Life Cycle Models|
|Unit 3 Study Guide: Software Modeling|
|Unit 4 Study Guide: Software Requirements Gathering|
|Unit 5 Study Guide: Software Requirements Analysis|
|Unit 6 Study Guide: Software Design|
|Unit 7 Study Guide: Implementation|
|Unit 8 Study Guide: Software Testing|
|Unit 9 Study Guide: Project Management|
|Unit 10 Study Guide: Putting It Together: A Case Study|
|Course Feedback Survey||Course Feedback Survey|