Ectropic Design:Support for Open Source Development Spencer Rugaber, Kathy Gray,Mark Guzdial
What is Ectropy?? • Ectropy = ¬ Entropy • Ectropy is “order out of chaos” • Good Description of Open Source Development…!
Open Source Success Stories • Linux • Linus Torvals • gcc • Richard Stallman • python • Guido Von Rossum
Open Source Development only works... • When there is a Champion • Someone who maintains coherence of the design over time, • Someone who integrates changes in a reasonable way, • Someone who is the recognized authority in identifying a new release.
Can we do Open Source with an automated Champion? • Imagine a server that: • Accepts code from a team of programmers • Knows the programmers and their tasks • Makes sure that the code meets design requirements • Alerts the team to issues • Integrates software to define a “release” • Big job!
Our Solution: Ectropic Software • Ectropic Software evolves over time • becoming more highly structured • better able to accomplish goals of its users • Ectropic Objects are all bound to the goals they meet
Ectropic Software • Two Key Ideas • Ectropic Design • A design method by which order and structure are created from collaborative efforts of multiple, unrelated software developers • Ectrospace • active collaboration space to support Ectropic Design
Introducing ECode Ectropic COllaborative Design Environment (pronounced “echoed”)
But First!A Review of OOA/OOD/OOP • A Review of Object Oriented Software Design • OOA • OOD • OOP
OOA • Object Oriented Analysis (OOA) • Requirements Analysis • Use of Scenarios in Requirements Analysis • Build List of Collaborator-Responsibility Cards (CRC Cards) • Distribute Responsibilities Among CRC Cards
OOD • Object Oriented Design • Complete all Scenarios with Responsibility-CRC Card Pairs • Add Method Names, with method categories and descriptions • Integrity Check!
OOP • Object Oriented Programming • Select CRC Cards for Classes • Generate Class Stubs • Complete Full Implementation of Classes
ECODE • Ectropic Collaborative Design Environment • A design tool to assist you in mapping an Object-oriented design process to Ectropic • A non-collaborative prototype release • For design purposes - not to replace the Squeak programming environment!
Getting Started with Ecode • Download and filein from the class coweb: • Ectropic-Basic.st • Ectropic-Views.st • Copy to your Squeak folder: • logo.gif • Save your image.
Ectropic Objects • EctropicDesign • has Scenario(s) and CRCCard(s) • Scenario • has Responsibility/CRCCard pairs • CRCCard • has Responsibility(s) • Responsibility • has a Method and possibly a CRCCard collaborator
Main Ecode Approach • Analysis Mode • Determine CRCCards and Responsibilities using Scenarios • Design Mode • Distribute Responsibilities to CRCCards and create a Method for all Responsibilities • Program Mode • Create Class stubs from selected CRCCards
Analysis Mode • Requirements Analysis • Use Scenarios to Help with Requirements Analysis • Build List of Collaborator-Responsibility Cards (CRC Cards) • Distribute Responsibilities Among CRC Cards
Scenarios Help with Design! • Determine a Scenario for a Task • Build the Scenario, step-by-step by creating a set of Responsibilities • Assign each Responsibility to a CRCCard • ECoDE will allow you to select or create CRCCards • All Responsibilities should be assigned to or removed
Design Mode • Complete all Scenarios with Responsibility-CRC Card Pairs • Add Method Names, with method categories and descriptions • Integrity Check!
Integrity Check • When shifting to Program Mode, ECoDE makes a quick integrity check for you • Are all responsibilities assigned to CRCCards? • Do all responsibilities have associated method names? • You have the option to continue
Program Mode • Select CRC Cards for Classes • Generate Class Stubs • Parent Class • Instance Variables • Complete Full Implementation of Classes • In a System Browser!
Compile Errors • This version of ECoDE will not catch all compile errors • When generating code, if you get the pink compile error • Abandon • Correct your code • Retry
Completing the Implementation • ECoDE is not intended to replace the built-in programming environment in Squeak • It is a design tool – which will generate Class stubs for you • It is highly recommended that you switch to a System Browser when completing your implementation
Saving Your Work – 2 Ways • Save Project (for turnin) • Snapshot of your image as a .pr file • Many open windows = long long time! • BUT main ECoDE window MUST be open! • Save • Saves your design with a simple fileout • Saves a .ect file and a .st file
Loading Designs • When loading your design (not as project) • ECoDE loads the corresponding .st file • MAKE SURE the .st file in the same directory with your .ect file is the MOST RECENT copy • Of course you can always close and retry without saving image
Critical Reminders! • Copy logo.gif to your squeak directory • When transferring saved designs, you need to transfer both • designName.ect file • designName.st file (MOST RECENT!) • When saving project for turnin, USE ECoDE for save, NOT Squeak Navigator “Publish It”
UML Options • In Squeak, ConnectorMorphs • Rational Rose • Visio • Hand-draw diagrams and scan • Power-point drawings • See http://coweb.cc.gatech.edu/cs2340/2112
Turnin • See http://coweb.cc.gatech.edu/cs2340/1937 for details • TA’s want PROJECTS!! • But if any problems saving as project • Do regular save • Turnin .ect and .st files along with diagrams
Technical Assistance • Kathy Gray, kgray@cc • Office hours: Tuesday, 1:30 – 3:00 • Jonathan D’Andries, bane@cc • Office hours: Wednesday, 11 – 1
ECoDE on CoWeb • ECoDE on CoWeb • from class admin page) • http://coweb.cc.gatech.edu/cs2340/2100 • Defect Log • Usability Log • Comments/Feedback/Suggestions
Classroom Experiment • Consent Forms • Preliminary Survey • Problems with Prototype • Your feedback is critical!
Advice! • Design before coding! • Save and manage saved files well • Teams should consider configuration management with Designs! • Back up your work • Report Bugs immediately