- This version of CS302: Software Engineering closed on June 10, 2024. You can find the most up-to-date versions of Saylor Academy's courses in the Course Catalog.
Course Introduction
-
Time: 41 hours
-
Free Certificate
The purpose of this course is to present software engineering as a body of knowledge. The course is designed to present software engineering concepts and principles in parallel with the software development life cycle. The course will begin with an introduction to software engineering, giving you a definition of this body of knowledge, as well as a discussion of the main methodologies of software engineering. You will then learn about the Software Development Life Cycle (SDLC), major methodologies followed by software modeling using Unified Modeling Language (UML), a standardized general-purpose modeling language used to create visual models of object-oriented software.
You will go on to learn about the major phases of the SDLC: analysis, design, coding/implementation, and testing. You will also learn about project management for the purpose of delivering high-quality software that satisfies customer needs and is within budget. By the time the course is complete, you will master software engineering concepts, principles, and essential processes of the SDLC. You will demonstrate this knowledge by creating artifacts for requirements gathering, analysis, and design phases using UML.
-
Course Syllabus
First, read the course syllabus. Then, enroll in the course by clicking "Enroll me". Click Unit 1 to read its introduction and learning outcomes. You will then see the learning materials and instructions on how to use them.
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 software characteristics and the code of ethics used in the professional practice of software engineering.
Completing this unit should take you approximately 3 hours.
Unit 2: Software Development Life Cycle Models
The software development life cycle (SDLC) is the process for planning, creating, testing, and deploying an information system. There are different approaches to break down the work when developing software systems. Conceptually, each model provides specific guidance to the sequencing and repetition of life cycle activities to deliver high-quality software systems.
As you review this unit, try to see the similarities in these categories of life cycle models. This will help you grasp the basic concepts of SDLC. This unit connects strongly with Unit 9: Project Management, since choosing and managing a software life cycle process is a central component of project management.
Completing this unit should take you approximately 4 hours.
Unit 3: Software Modeling
Many believe that good design is fundamental to creating successful software. The first step in software creation is to gather requirements. Notations, such as UML, allow us to articulate complex ideas succinctly and precisely. Designing software requires the use of certain industry-standard design tools, and mastery of them is essential to becoming a capable software engineer.
This unit will introduce you to UML, a standardized general-purpose modeling language for creating visual models of object-oriented software. This unit aims to give you a comprehensive understanding of UML, the five fundamental artifacts of UML, and modeling concepts, as well as the modeling concepts' relationships to the terms system, model, and view.
Completing this unit should take you approximately 4 hours.
Unit 4: Software Requirements Gathering
Requirements gathering requires the software engineer (in this case, a business analyst) to interact with the stakeholders, including customers and users, to gather/collect information about what the software system being developed needs to do. There is also the situation where vendors are subcontracted to develop all, or some components, of the software systems and/or develop the hardware that the software will run on. In this case, the vendors bid on the subcontract by providing a proposal in response to a request for proposals. In this unit, you will learn the data/information types, data collection techniques, and data collection and application types.
Completing this unit should take you approximately 3 hours.
Unit 5: Software Requirements Analysis
Requirements elicitation is when software engineers interact with the stakeholders, including users, to gather information about what the software system needs to do. In this unit, we examine what the software engineer does to elicit, analyze (or translate), validate, and manage this phase of the life cycle. Each step requires working with the customer to achieve a common understanding of the customer's goals. This set of activities is referred to as "analysis", and focuses on what the application will do, whereas "design" describes how the application will work.
There are many ways to elicit and analyze customer requirements. The three most commonly used methodologies are data-oriented, process-oriented, and object-oriented. We will examine the conceptual foundations, activities, and deliverables in each of these methodologies. As you review this unit, focus on the object-oriented methodology and how it applies to software requirements and analysis. You will put it all together later in this course as part of a case study.
Completing this unit should take you approximately 4 hours.
Unit 6: Software Design
After requirements and analysis, a software engineer must transform the analysis model into a design model that can be implemented in a specific hardware and software environment. In this unit, we will discuss the principles of design and architecture design. Just as there are various methodologies for requirements analysis, we will look at three corresponding methodologies of the design model (data-oriented, process-oriented, and object-oriented). As you review this unit, focus on the object-oriented methodology and how it applies to software design. You will put it all together later in this course as part of a case study.
Completing this unit should take you approximately 9 hours.
Unit 7: Implementation
Implementation, also known as programming or coding, is the process of using a programming language to convert specified requirements into software source code and later into compiled code for execution. Programmers can use automated tools to convert design requirements into code.
Sometimes, vendors are subcontracted to develop all or part of the software, and even the hardware that it will run on, according to specified requirements. In these situations, vendors will bid on the subcontract by providing a proposal.
Completing this unit should take you approximately 2 hours.
Unit 8: Software Testing
Testing is the process of finding errors and is one of the last activities in the software life cycle. In testing, we look to validate that software requirements analysis, software design, and software implementation mesh together correctly to deliver a software system that performs as expected, functionally and non-functionally.
As you review this unit, note the three levels of a test plan: unit, integration, and system. Each of these levels of test plan assures the quality of the overall software from varying levels of granularity. In your own practice as a software engineer, be sure to incorporate these levels of testing as this is the last stop before the software goes out the door representing your professional work and code of ethics.
Completing this unit should take you approximately 3 hours.
Unit 9: Project Management
Project management in a software engineering environment is unique because of the technical aspects of a software project. The project manager's role is different from that of the software engineer's. While software engineers are generally accountable for the technical aspects of a project, the project manager is accountable for organizational aspects.
As you review the materials of the unit, try to connect this unit with what you have already learned about the software development life cycle. You will see that the success of an SDLC depends on people, process, and product. Project management is the glue that holds these aspects together.
Completing this unit should take you approximately 4 hours.
Unit 10: Putting It Together: A Case Study
There are different principles necessary to practice software engineering. In this unit, you will use these principles and main software engineering concepts to practice professional issues that a software engineer might face. This includes identifying input and output and main stakeholders, developing a timeline with checkpoints for delivery of key deliverables, creating the main UML diagrams, and using different testing strategies and system quality evaluation methods.
Completing this unit should take you approximately 5 hours.
Course Feedback Survey
Please take a few minutes to give us feedback about this course. We appreciate your feedback, whether you completed the whole course or even just a few resources. Your feedback will help us make our courses better, and we use your feedback each time we make updates to our courses.
If you come across any urgent problems, email contact@saylor.org.
Certificate Final Exam
Take this exam if you want to earn a free Course Completion Certificate.
To receive a free Course Completion Certificate, you will need to earn a grade of 70% or higher on this final exam. Your grade for the exam will be calculated as soon as you complete it. If you do not pass the exam on your first try, you can take it again as many times as you want, with a 7-day waiting period between each attempt.
Once you pass this final exam, you will be awarded a free Course Completion Certificate.
- Receive a grade Receive a pass grade
Saylor Direct Credit
Take this exam if you want to earn college credit for this course. This course is eligible for college credit through Saylor Academy's Saylor Direct Credit Program.
The Saylor Direct Credit Final Exam requires a proctoring fee of $5. To pass this course and earn a Credly Badge and official transcript, you will need to earn a grade of 70% or higher on the Saylor Direct Credit Final Exam. Your grade for this exam will be calculated as soon as you complete it. If you do not pass the exam on your first try, you can take it again a maximum of 3 times, with a 14-day waiting period between each attempt.
We are partnering with SmarterProctoring to help make the proctoring fee more affordable. We will be recording you, your screen, and the audio in your room during the exam. This is an automated proctoring service, but no decisions are automated; recordings are only viewed by our staff with the purpose of making sure it is you taking the exam and verifying any questions about exam integrity. We understand that there are challenges with learning at home - we won't invalidate your exam just because your child ran into the room!
Requirements:
- Desktop Computer
- Chrome (v74+)
- Webcam + Microphone
- 1mbps+ Internet Connection
Once you pass this final exam, you will be awarded a Credly Badge and can request an official transcript.
- Desktop Computer