Applying Concepts of Agile Programming and Object Oriented
Applying Concepts of Agile Programming and Object Oriented Programming to Instructional Design James Falkofske July 17, 2014
Topics • • • Traditional programming lifecycle Comparison to ADDIE Features of Agile Programming lifecycle Time investments in Agile environment Key benefits of Agile Programming Object Oriented Programming concepts How Agile and OOP concepts can adapt to ID Specific examples
Traditional Programming • Waterfall process • Prior step must complete before next step begins • Client / Stakeholders very active during start of process, but handoff to programming staff for remainder • Changes to core design must be made as FUTURE revisions / versions Detailed Planning Detailed Analysis Detailed Design Development Testing Release Maintenance
Similar Structure to ADDIE • Detailed Planning • Detailed Analysis • Detailed Design • Development • Testing • Release • Implementation • Maintenance • Evaluation
Agile Programming Goals • Reducing customer frustration / disappointment • Welcoming (rather than resisting) changing requirements • Deploying working software quickly for customer review (weeks instead of months) • Involving customer in design meetings • Incrementally improving software in an iterative process • Organizing teams for self management and continual face-to-face communication • Documenting code (internally block placeholders / high-level pseudo code)
Agile Programming Concepts • Planning and Analysis kept at a very high block-diagram level • Rapid Prototyping - High-level to low level design and refinement process (continual improvement) with placeholders and test data for missing features • Programming by fairly autonomous individuals inside of teams, each individual responsible for their specific segments • Inputs (receivables) and outputs (deliverables) are the interfaces to the other blocks • “Get something out there to look at” – and then refine, refine…. Quizzes Data Store and Retrieve Module Display User Administration Discussion Boards Calendar and Release Conditions WYSIWYG Editing
Agile Programming Lifecycle
Agile Lifecycle • In some environments • Daily meetings resolve each development block input / output interface is a single day (and this issues between teams, flow would be a 7 to 10 and also help to day cycle). prioritize feature changes within teams In other environments each block might represent a week or more.
Time Investments in Agile Environment Interface and Structures Basic Functionality (additions, modifications, changes in connections between blocks) Refining Functionality (additions, modifications, removals)
Time Investments in Agile Environment • Less time spent on defining requirements – Requirements evolve with the code – Prototyping becomes a live blueprint • More time is spent on enhancing usability – Client gets “playing around” time in order to provide more useful feedback – Clients and Users get functional software more quickly with continual improvements to process
Key Benefits • Customers can change their minds! – Before too much investment is made, client can make changes, radically alter requirements, or maybe will decide to abandon the project if their initial expectations were unreasonable. • Major errors are caught quickly! – Gaps are quickly discovered and corrections to data structures and process flows are resolved early in the development cycle • Full user experience with little time expended! – Placeholders and dummy data allow a fairly full user experience even when substantial work product is missing. This gives “look and feel” to customers early.
Object Oriented Programming • Method of program where objects have data fields and methods (what an object does and information about its current states / properties) • Objects have polymorphism and inheritance (an object can behave differently based on what inputs it receives, and children of an object can inherit methods or extend them)
Common Online Shopping Objects Customer • Name • Address • Phone • Email • Customer ID • Membership Class Product • Name • Item Number • Description • Price • Weight • Images • Reviews Shopping Cart • Cart ID • Customer ID • Date • Current. Total • Number. Items • Add. Item() • Remove. Item() • Checkout()
Object Oriented Programming Concepts • Polymorphism / overloading of method functions (one thing can be many things) • Creating objects which can be reused and extended • Encapsulation and abstraction (black box – where only inputs, object properties, and outputs are known) • Internal error handling
Polymorphism • One CLASS handles many different data types • The CLASS can be extended to handle new inputs and outputs • A method can change functionality based on the inputs it receives print(image); print(page, 3); print(page, page. Ranges()); print(document); rather than separate functions for each process Print_Image(image); Print_Page(page); Print_Page. Range(page. Start, Page. End); Print_Document(document);
Inheritance Engine, transmission, 4 wheels, seatbelts, windshield wipers, doors, steering wheel, accelerator, brakes Rail construction, rear wheel drive, cargo maximum Vehicle Unibody construction, stereo Trucks (Cargo) Cars (Passengers) Semi Pickup Compact Sedan Sports Van … … …
Reusable Objects • Most desktop programs have sets of tasks that are common to most other programs – – File Open File Save As File Print • Web based programs have similar sets of tasks as well – – Update Page Validate Data Field Store Results Get Data
Encapsulation / Abstraction • All the work of each CLASS is hidden within the class structures and methods (functions) • Only names of INPUTS and OUTPUTS and METHODS are known to the outside world (Internal variables can’t be accidentally contaminated or overwritten) input 1 input 2 input 3 Data. File. Update()
Internal Error Handling • Programmers are responsible to test inputs and ensure that the methods (functions) are getting valid data • Exceptions (unexpected events) need to be handled internally to avoid catastrophic errors in other modules
Applying AP and OOP Concepts to Instructional Design • Agile Development – Early “hands on” review by clients / stakeholders – Involving subject matter experts directly in the design process – Self-managed project teams – Iterative and continual improvement development • Recycle / Re-use of Objects • Encapsulation / Abstraction
Rapid Prototyping / Iterative Development • Screenshots as Storyboards • Content Development Progression – Text First – Add Graphics – Add Media – Add Interaction • Student Generated Content for exploring Current Topics (projects shared and peerevaluated)
Polymorphism / Inherit • Templates (boilerplate extended) – Syllabi – Course Orientation – Assignment Descriptions – Grading Rubrics • Look and Feel – CSS style sheets (screen, aural, print) Aural h 1, h 2, h 3, h 4 {voice-family: male; richness: 80; cue-before: url("beep. au")} Print #menus. Section {display: none; }
Inheritance with a Syllabi • Base template has boilerplate for – University policies – Department policies – Online etiquette expectations – Technical support information – Course methods, objectives, and assessments • Instructor extends the syllabi with – Contact information – Assignment descriptions – Grading policies
Really Ambitious? • Extending and customizing Moodle – Adding existing plug-ins (by others) – Developing plug-ins in-house • Develop formatted content on-the-fly based on CSS style sheets, boilerplate, and databases (syllabi, assignment descriptions, rubrics, graded feedback) • Graded Feedback: instructor uses checkboxes for common praise and common problems to have Moodle build a customized report for each student
Learning Object Design • Very granular • Demonstrates a specific process or knowledge base • Not tied to any specific course • Relies on context OUTSIDE the learning object to set up the lesson • Consistent look and feel (navigation, style, progression) • Design teams can pick and choose progression • Carefully choosing topics which will have the broadest impact for the investment
LOR Examples • Solving an algebraic equation with 2 variables – Applications in math, chemistry, electronics, physics, finance, engineering, logistics, etc. • Proper citation of an online source – Applications in English, business, marketing, psychology, social work, education • Metric prefixes – Applications in physics, engineering, astronomy, microbiology • Latin prefixes – Applications in remedial English, anatomy, biology
Encapsulation / Abstraction with Adobe Flash Actionscript • All text, instructions, navigation titles, image references, choices, placements, movements, and styles are imported from external XML files • Base code gets “re-used” simply by updating the external XML file with new content • Designers can more readily learn to edit the XML files than build brand new Flash objects from scratch • Simplifies and standardizes branding
Other Examples • Mail Merge to create Syllabus “boilerplate” – fill in instructors, course numbers, term, contact info, list of major assignments, etc. and then mail-merge create standard formatted documents • Mail Merge spreadsheet to create graded Rubrics – Instructor enters values to indicate student’s proficiency of each objective and the merge creates personalized feedback (vlookups and Boolean values) for each student • HTML Cleaner – Word documents went in, cleansed code came out Raw materials go in, processed product comes out
Topics Covered • • • Traditional programming lifecycle Comparison to ADDIE Features of Agile Programming lifecycle Time investments in Agile environment Key benefits of Agile Programming Object Oriented Programming concepts How Agile and OOP concepts can adapt to ID Specific examples
Questions?
- Slides: 30