Software Development Process (Udacity)

Software Development Process (Udacity)

In SDP, you will learn how to select and implement the ideal software process for your development project. Through Professor Orso's engaging examples and interviews with industry insiders, you will learn both conceptual and practical aspects of software engineering. The course covers requirements engineering, architecture and design, testing and maintenance, and software quality in general.

Class Deals by MOOC List - Click here and see Udacity's Active Discounts, Deals, and Promo Codes.

The goal of this class is to equip you with the skills necessary to define requirements, set up an integrated development environment (IDE), learn Git (and Github!) and use Unified Modeling Language (UML) to design and build an Android application. We will also examine several testing practices and refactoring techniques that are helpful before the launch of your software project.
While everyone working with software should have these skills, they are particularly important for Software Engineers and Engineering Managers.
Software engineering isn’t just about programming. It isn’t just about building a technology stack.
This course introduces the idea of software engineering as an iterative, systematic process. You will learn to use Github and Eclipse as you get introduced to the development life cycle, design processes and software testing.
Software Development Processes will show you the skills and processes needed to complement technical understanding of software products in order to make you a more effective developer in an engineering team.

What You Will Learn

Lesson 1
Introduction and Overview
Importance of Software Engineering
Discipline of Software Engineering
The Software Crisis
Software Phases

Lesson 2
Life Cycle Models
Introduction with Barry Bohem
Requirements Engineering
Design
Maintenance
Software Process Model Introduction
Waterfall Process
Spiral Process
Evolutionary Prototyping Process
Rational Unified Process
Agile Process
Choosing a Model
Lifecycle Documents

Lesson 3
Integrated Development Environment
Eclipse Introduction
IDE Overview
Plug-Ins
Eclipse Demo: Create Java Project
Eclipse Demo: Create a Class
Eclipse Demo: Run Configuration
Eclipse Demo: Debugging

Lesson 4
Version Control Systems
Interview with John Britton
Version Control System Introduction
Two Main Types of VCS
Introduction to Git
Git Workflow
Git Demo: Intro to Git
Git Demo: Git + Eclipse
Git Demo: Github
Git Recap: Local Repositories
Git Recap: Remote Repositories

Lesson 5
Requirements Engineering
Interview with Jane Cleland-Huang
General RE Definition
Software Intensive Systems
Functional and Nonfunctional Requirements
User and System Requirements
Modeling Requirements
Analyzing Requirements
Requirements Prioritization
Requirements Engineering Process

Lesson 6
OO Software and UML
Object Orientation Introduction
UML Structural Diagrams: Class Diagrams
Class Diagram: Creation Tips
UML Structural Diagrams: Component Diagram
UML Structural Diagram: Deployment Diagram
UML Behavioral Diagram: Use Case
Use Case Diagram: Creation Tips
UML Behavioral Diagrams: Sequence
UML Behavioral Diagrams: State Transition Diagram

Lesson 7
Software Architecture
Interview with Nenad Medvidovic
What is Software Architecture?
Prescriptive vs. Descriptive Architecture
Architectural Evolution
Architectural Degradation
Architectural Recovery
Architectural Elements
Components, Connectors, and Configuration
Deployment Architectural Perspective

Lesson 8
A Tale of Analysis and Design
Analyzing Requirements
Refining Classes and Attributes
Adding Attributes
Identifying Operations
Refining the Class Diagram

Lesson 9
Design Patterns
Patterns Catalogue
Pattern Format
Factory Method Pattern
Strategy Pattern
Choosing a Pattern
Negative Design Patterns

Lesson 10
Unified Software Process
Use-Case Driven
Inception Phase
Elaboration Phase
Construction Phase
Transition Phase
Phases and Iterations

Lesson 11
General Concepts
Failure, Fault and Error
Verification Approaches
Pros and Cons of Approaches
Testing Introduction
Testing Granularity Levels
Alpha and Beta Testing
Black and White Box Testing Introduction

Lesson 12
Black-Box Testing
Systematic Functional Testing Approach
Test Data Selection
Category Partition Method
Produce and Evaluate Test Case Specifications
Generate Test Cases from Test Case Specifications
Model Based Testing
Finite State Machines

Lesson 13
White-Box Testing
Coverage Criteria Intro
Statement Coverage
Control Flow Graphs
Test Criteria Subsumption
MC/DC Coverage

Lesson 14
Agile Development Methods
Cost of Change
Agile Software Development
Extreme Programming (XP)
XP’s Values and Principles
Test First Development
Refactoring
Pair Programming
Continuous Integration
Testing Strategy
High Level Scrum Process

Lesson 15
Software Refactoring
Reasons to Refactor
Refactoring Demo
Refactoring Risks
Cost of Refactoring
When Not to Refactor

Prerequisites and Requirements
A strong familiarity with Android development (perhaps through Developing Android Apps) is expected.

Go to Class
MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Related Courses

Software Design Methods and Tools (Coursera) Coursera
University of Colorado System

Software Design Methods and Tools (Coursera)

Since many software developers are compulsive coders, they have created software over the years to help them do their job. There are tools which make design and its associated tasks easier. The course introduces some basic tools and techniques to help you with design. Tools aren’t always tangible, however. The last two lessons of this course discuss questions of Ethics in software development. The purpose here is, as with tools, to equip you to better carry our your responsibilities as a designer. Students will be required to have a prior knowledge of writing and delivering software and some programming knowledge in java.

Jun 22nd 2026
5-12 Weeks
Software Analysis & Testing (Udacity) Udacity
Georgia Institute of Technology,Udacity

Software Analysis & Testing (Udacity)

This course covers the theory and practice of software analysis, which lies at the heart of many software development processes such as diagnosing bugs, testing, debugging, and more. It presents diverse techniques, each with their own strengths and limitations, for automating tasks such as testing, debugging, and finding bugs in complex real-world programs. These techniques include dataflow analysis, constraint-based analysis, type systems, model checking, symbolic execution, and more. The course teaches the principles underlying these techniques as well as imparts hands-on experience with using and implementing tools based on these techniques.

Self Paced
Self-Paced
Productivity and Systems Development (Coursera) Coursera
University of California, Irvine

Productivity and Systems Development (Coursera)

This course provides hands-on experience with technology-based productivity tools, as well as foundational knowledge and understanding of system design and development. The course is designed to integrate concepts of hardware, software, and the Internet. This course also provides an overview of data security, data privacy, and ways to increase productivity and efficiency. Students will also investigate technology career paths and some of the various certifications available in the industry.

Jun 22nd 2026
3 Weeks
TDD - Desenvolvimento de Software Guiado por Testes (Coursera) Coursera
Instituto Tecnológico de Aeronáutica

TDD - Desenvolvimento de Software Guiado por Testes (Coursera)

Neste curso, assumimos que você já sabe projetar e desenvolver programas mais complexos em Java, com método e organização graças às boas práticas e princípios exercitados no curso anterior; mas você talvez não se sinta ainda confortável em projetar programas usando técnicas ágeis, como o desenvolvimento guiado por testes (TDD).

Jun 22nd 2026
4 Weeks
Engineering Maintainable Android Apps (Coursera) Coursera
Vanderbilt University

Engineering Maintainable Android Apps (Coursera)

Engineering Maintainable Android Apps, which is a 4 week MOOC that shows by example various methods for engineering maintainable Android apps, including test-driven development methods and how to develop/run unit tests using JUnit and Robotium (or equivalent automated testing frameworks for Android), as well as how to successfully apply common Java/Android software patterns to improve the extensibility and clarity of Android apps.

Jun 22nd 2026
4 Weeks
Inheritance and Data Structures in Java (Coursera) Coursera
University of Pennsylvania

Inheritance and Data Structures in Java (Coursera)

This course provides a comprehensive look at Java inheritance, including access modifiers and overriding methods. Students are introduced to abstract classes, and will learn how to read and write to files, use regular expressions for parsing text, and how to leverage complex data structures like collections and maps. Additionally, this course offers strategies for catching errors and debugging code, including an overview of Eclipse’s debugging tool.

Jun 22nd 2026
4 Weeks
Engineering Practices for Building Quality Software (Coursera) Coursera
University of Minnesota

Engineering Practices for Building Quality Software (Coursera)

Agile embraces change which means that team should be able to effectively make changes to the system as team learns about users and market. To be good at effectively making changes to the system, teams need to have engineering rigor and excellence else embracing change becomes very painful and expensive. In this course, you will learn about engineering practices and processes that agile and traditional teams use to make sure the team is prepared for change. In additional, you will also learn about practices, techniques and processes that can help team build high quality software. You will also learn how to calculate a variety of quantitative metrics related to software quality.

Jun 22nd 2026
4 Weeks
Build a Modern Computer from First Principles: Nand to Tetris Part II (project-centered course) (Coursera) Coursera
Hebrew University of Jerusalem

Build a Modern Computer from First Principles: Nand to Tetris Part II (project-centered course) (Coursera)

In this project-centered course you will build a modern software hierarchy, designed to enable the translation and execution of object-based, high-level languages on a bare-bone computer hardware platform. In particular, you will implement a virtual machine and a compiler for a simple, Java-like programming language, and you will develop a basic operating system that closes gaps between the high-level language and the underlying hardware platform.

Jun 22nd 2026
5-12 Weeks
Game Design and Development 1: 2D Shooter (Coursera) Coursera
Michigan State University

Game Design and Development 1: 2D Shooter (Coursera)

If you love games and want to learn how to make them, then this course will start you down that path. Making games is a creative and technical art form. In this course you will familiarize yourself with the tools and practices of game development and well as the process. You will get started developing video games using industry standard game development tools, including the Unity 2020 game engine. At the end of the course you will have completed two hands-on projects, including an Intro to Unity project and a 2D Shooter game, and will be able to leverage an array of game development techniques to create your own basic games.

Jun 22nd 2026
4 Weeks
Data Structures and Design Patterns for Game Developers (Coursera) Coursera
University of Colorado System

Data Structures and Design Patterns for Game Developers (Coursera)

This course is the fourth course in the specialization about learning how to develop video games using the C# programming language and the Unity game engine on Windows or Mac. Why use C# and Unity instead of some other language and game engine? Well, C# is a really good language for learning how to program and then programming professionally. Also, the Unity game engine is very popular with indie game developers; Unity games were downloaded 16,000,000,000 times in 2016! Finally, C# is one of the programming languages you can use in the Unity environment.

Jun 22nd 2026
4 Weeks