Managing Software Development CS 5500 Fall 2011

YOU CAN TAKE THIS COURSE CONCURRENTLY WITH PDP. YOU APPLY WHAT YOU LEARN IN PDP IN THIS COURSE IN THE CONTEXT OF AN INTERESTING PROJECT. YOU CHECK WHETHER THE PRINCIPLES YOU LEARN IN PDP ARE FOLLOWED IN THE CURRENT IMPLEMENTATION OF SCG COURT.

UNDER DEVELOPMENT. SUBJECT To Change.

Frequently used links:
Spring 2011 User Guide | Spring 2011 Implementation | SCG Poster | Maintenance and improvements for SCG Court .

Any study of Managing Software Development needs an interesting application to ground the study of the software development process. In this course we use an innovative Crowdsourcing Platform, called SCG Court, as application to study how to learn about an existing software project, its documentation and source code, and how to maintain the software by perfecting it and adding new features.

Motivation for the Crowdsourcing Platform

The purpose of the Crowdsourcing Platform is to build software for the coming Gig Economy where talent seeks many projects with different companies. Companies come to SCG Court to define playgrounds so that winning players in those playgrounds have useful technology to help solve one of the companies problems. Players can live anywhere in the world: all they need is a computer with an Internet connection. Players register with SCG Court and choose the playgrounds they want to compete in. Each playground has prize money that will be distributed to the best players. In addition, the players build up their reputation which gives them status in the SCG Court community. SCG Court is designed to create a trusted relationship between talent and companies. SCG Court offers a simple interface to talent to access the needs of numerous companies and companies have a simple interface to access a large pool of talent. Talent is guaranteed that their work is fairly evaluated by their peers through the SCG Court system. Talent is assured that if they perform a gig well (compared to their peers) they will be paid well.

The Crowdsourcing Systems generated by the Crowdsourcing Platform are supported by four established areas: (1) group organization. Warren Bennis in his book: Organizing Genius, The Secrets of Creative Collaboration, says: "you create an atmosphere of stress, creative stress, everyone competing to solve one problem." (2) Karl Popper's approach to scientific knowledge based on refutation (3) Serious Games, including the notions of social welfare (collaboration through selfish competition) and equilibria and (4) Logic, specifically quantifier logic games with two players Exists and ForAll (going back to 1898), Lorenzen's approach to dialogic games and logics with incomplete information, specifically Hintikka's and Sandu's independence friendly logic known as IF logic.

A crowdsourcing platform is a generator of crowdsourcing systems, each defined by a playground definition. A playground defines a virtual world for the participating players, called scholars. A playground is designed in such a way that the scholars come up with innovations in a specific area of interest. The area of interest is defined by defining classes like Instance, Solution, InstanceSet and Claim along with refutation protocols.

SCG Home points to the software and documentation developed by the Spring 2011 class.

We will apply the software development ideas advocated in recent Google Tech Talks in the context of SCG Court. Some of the Google Tech Talks we will use are in the red section of the Law of Demeter Home page.

Course Directories | Lecture Notes | Projects | Blackboard | Mailinglist (archive, sign-up, etc.) | Assembla/Documentation | Office Hours.

Documents that the instructor has written to define the project.
Playground Designer Guide .
SCG Description .
Problem Statement .

We learn about Managing Software Development by maintaining a software development project for an innovation game that develops a knowledge base of good claims. The purpose of the game is to distinguish good claims from bad claims and to develop the know-how to defend the good claims and to refute the bad claims. Such games are played daily by engineers and scientists around the world. The software we learn about and which we learn to maintain is a product line web application about serious, but fun games intended to be used by organizations to advance the state of the art in a specific domain.

Learning to maintain a software project is a very typical activity of a software developer. Starting a project from scratch is the exception.

Required textbook: The successful textbook (it is the 3rd edition)

Object-Oriented Software Engineering
Third Edition
Bernd Bruegge
Allen Dutoit
Prentice Hall, Pearson,
ISBN 0-13-606125-7, 2010.
has the same objective: to learn managing software development by doing a project.

See Software Product Lines to learn more about product lines.

For our project we will use an interesting game that models a scientific community of scholars that propose claims and oppose each others' claims. It is called the Scientific Community Game or the Specker Challenge Game. Because you all have been exposed to several scientific disciplines, it will be easy for you to acquire the domain knowledge about scientific communities so that you can maintain use cases and implementing them.
Initial SCG Arena Problem Statement .

We will apply the SCG to software development. After all, software developers should make claims about their software: correctness, security, efficiency, maintainability, modularity, traceability, flexibility, etc.

DemeterF: Functions and Traversals Combined

Syllabus .
Project solutions.
Old exams (Practice exams) .

Instructor's Home page.