CU website

ECEN 4/5053

Information

Staff

Syllabus

Assignments

Supporting Material

Recommended Books

 

ECEN 5053/4053

Software Engineering of Distributed Software Systems


This web site reflects the course when offered in Fall 2006. Current offerings are managed under CULearn. This web site will give a good idea of the course content but there may be changes since 2006 such as the choice of texts. If you are taking this course in an upcoming semester at the University of Colorado, verify the text before purchasing it.


The Software Engineering Certificate is a graduate-level certificate program consisting of three courses: Software Engineering of Stand-Alone Programs, Software Engineering of Multi-Program Systems, and Software Engineering of Distributed Software Systems. If you register for the courses using the 5000-level number, each course carries 3 semester hours of academic credit at the graduate level. All graduate credits earned in the certificate can be transferred to an appropriate graduate engineering program at CU-Boulder.

Historically, "software engineering" has been an oxymoron. Software engineering has come of age as a body of fundamental engineering knowledge applied to software -- product requirements definition and analysis, design for performance and testability, design for field diagnosis and maintenance, test coverage, etc. Professionals who understand this body of knowledge are able to develop products more predictably and reliably for stand-alone programs as well as for programs that will be part of a more complex environment such as a multiprogramming environment or a distributed system.

This course, the third course in the series, addresses issues of distributed software applications. Distributed systems include web applications, other network environments, as well as self-contained embedded system products involving multiple processors. This course examines issues that exist because of the complexity of software running simultaneously and asynchronously on multiple heterogeneous processors connected by a network of a potentially wide geographical area. Some topics such as reliability and response time are clearly important in simpler systems but they are addressed in this course because of the difficulty of specifying, designing, and testing such aspects in a distributed environment. Distribution over a network introduces additional challenges of interoperability, security, latency, and bandwidth limitations.

Topics in the third course include:

  • specification of use cases for a distributed application
  • design concerns such as
    • communication standards
    • bandwidth
    • response time
    • fault tolerance
    • reliability
    • security
    • interoperability
    • the absence of a global clock
    • distributed data
  • how these concerns influence the placement of functionality in the distributed environment
  • representation of timing sequences
  • design for testability
  • other issues about testing distributed systems
  • security

For this third course, the criteria are that you understand concepts of programming, fundamentals of OO software engineering methods, state diagrams and basic UML notation, especially for class diagrams and sequence diagrams, and concurrency. The concurrency issues may have been addressed in a course on operating systems.


Instructor Revision 2.0 (2006/08/28)