Distributed Development of Software

Course
Identifier: 
COM S 4100

Offered during Fall Semester each year.

  1. Credits and contact hours: 3 credits, 3 contact hours
  2. Instructor’s or course coordinator’s name: Carl Chang
  3. Text book, title, author, and year: None required
  4. Other supplemental materials: None

Specific course information

  1. Brief description of the content of the course: Teams of students develop software applications in a modern software engineering environment. Importance, effective processes pertaining to team organization, management and communication, and cultural issues of distributed development. Graduate credit requires in-­depth study of concepts and oral presentations.
  2. Prerequisites or co-requisites: COM S 228, COM S 327, COM S 309; for graduate credit: graduate standing or permission of instructor
  3. Required, elective, or selected elective? Selected Elective

Specific goals for the course

  1. Specific outcomes of instruction:
  • Ability to understand the major differences between distributed development of software and collocated development of software  (1)
  • Ability to understand the major risks of distributed development of software are, especially when teams are widely separated by distance, time zones, culture, and native language. (2, 5)
  • Ability to mitigate the risks of distributed development of software.
  • Ability to use processes, tools, and techniques help to make distributed development of software effective. (6)
  • Ability to do Test Driven Development (TDD).
  • Ability to understand the benefits of distributed development of software and how to take advantage of those benefits.
  • Ability to plan a distributed development project.
  • Ability to track the progress of a distributed development project.
  • Ability to present the team project.
  • Ability to conduct continuous integration with regression tests using the agile methods and supported by the modern-day DevOps.
  • Ability to use open-source Agile development support environment to track the progress of development iterations/sprints.

Brief list of topics to be covered

  • Software engineering processes employing the Agile Methods (Scrum) in an emulated distributed development environment.
  • Effective processes for distributed development (product/task breakdown, incremental development, regression tests, continuous integration, Scrum/sprint, release planning/deployment, etc.)
  • Cultural, organizational and communication issues in distributed development
  • Test Driven Development