sql wiki plugin team wirox. team rit eugene marcotte chris daniels paul yates matt blackwood j....

23
SQL Wiki Plugin Team Wirox

Post on 15-Jan-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

SQL Wiki Plugin

Team Wirox

Page 2: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

Team

RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker

Xerox Tim Luksha Peter Alfvin

Page 3: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

History

Atlassian began in 2002 specializing in issue tracking and collaboration software

Created Confluence Wiki in 2004 Original SQL Plugin was written by Bob

Swift (released Sept. 2006) Currently a supported plugin for

Atlassian Confluence Xerox uses a confluence wiki for internal

communications

Page 4: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

Bob Swift’s SQL Plugin

Existing plugin only allows the viewing of results

Usage {sql-query:dataSource=TestDS|

output=wiki} select * from test {sql-query}

Xerox wishes to add more functionality to the plugin to enhance their internal workflow The goal is to modify the plugin to allow

wiki users to edit database table contents

Page 5: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

Project Requirements

Extension for the plugin which would provide them with the basic functionality to perform row operations on queries that are embedded in wiki pages

Row Operations Update Insert Delete

Time permitting the project might include Multi-row operations Advanced data type support Table scrolling User-specific database sessions

Page 6: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

Scope

In scope - Modify existing plugin to add required

functionality Integrate with Bob’s repository Specific Data type handling (varchar2, number,

integer, decimal, float, precision, dates and possibly timestamps)

Single and possibly multiple row transactions Out of scope

Fixing existing plugin bugs Handling datatypes other than those specified

Page 7: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

Technologies Used

Java Servlets Velocity XML JavaScript jQuery Confluence Maven MySQL / Oracle

Page 8: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

Testing

JUnit HTTPUnit Atlassian Integration Testing Emma

Page 9: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

Process (overview)

Scrum w/ XP engineering Requirements Workshop Two week Sprints Sprint Planning Meeting

In Person & Remote meetings Post-mortem reflections

Product & sprint backlogs Scrums, scrum meetings Pair programming Group Design

Page 10: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

Process (sequence)

http://en.wikipedia.org/wiki/Scrum_(development)

Page 11: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

Process (Estimation / Planning) The team establishes underlying tasks

for a given user story As a team we assess story points for

user stories We also estimate time for tasks within

user stories Delphi method for refining estimations Product owner prioritizes user stories

Page 12: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

User Story Example

Page 13: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

Process (Design)

Initial refactoring of plugin Typically for each User Story we allot

a task for designing and refactoring Initially the macro was a “God object” Through refactoring we have split the

functionality into more cohesive units

Page 14: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

Process (Development)

Daily <15 minute Scrum Meeting What you did since last meeting? What you will do today? Impediments?

Split into pairs for pair programming Each pair takes on a task from a user

story During development update sprint

backlog

Page 15: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

+getMacroName()+getExtension()+setBanadaManager()+execute()+generateOutput()+stripQuote()+getSqlColumnTypeAsChar()

-MODULE-FALSE-HTML_TABLE_START-HTML_TABLE_START_LENGTH-RENDER_MODE-bandanaManager

SqlMacro

+getDatabaseConnection()+cleanConnection()+convertTransactionIsolation()+getResults()+getDataSourceString()+lookUpDataSource()+setStatementInputParameters()+lookupDataSourceWithMacroInfo()+getSqlStatementFromMacroInfor()+convertTransactionIsolation()+cgetSqlColumnTypeAsChar()+getPrimaryKeyColumns()

-MACRO_NAME

DBManager

+doGet()+doPost()

-serialVersionUID

RefreshServlet

+getters()+setters()

-jndi-datasource-sql-columnTypes-columnNames-columnData-primaryKeyColumns

Results

+getMacroName()

SqlQueryMacro

+getMacroName()+getExtension()+setBandanaManager()+execute()

-MODULE-FALSE-bandanaManager

UpdatableSqlMacro

+doGet()+doPost()+getExcemptionXML()+doPost2()+getSetString()+getWhereString()+perform()+lookUpColumn()+getAffectedRows()+getAffectedQuery()

-serialVersionUID

UpdateServlet +convertToJSMap()+ConvertToArray()+setUpHTMLVelocityContext()+exceptionToString()

Utils

+abstract generateOutput()

«interface»OutputGenerator

+generateOutput()

HTMLOutputGenerator

+generateOutput()

HTMLTableOutputGenerator

ScriptMacro

ConfluenceTomcat

HTTPServlet

Wirox – SQL Wiki Plugin

Page 16: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

Metrics

Coverage User Story Status / Impediments Burn-down Chart Burn-up Chart Velocity Test Pass / Fail

Page 17: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

Sprint ChartsSprint One Sprint Two

Page 18: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

EMMA Test Coverage

Page 19: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

Risks (Top Ten)

1. Testing Environment2. Role Mapping3. Database Support Issues4. Technical Design Issues5. Javascript / jQuery6. Confluence Wiki7. Communication8. Integration9. Flow of Events10. Virtual Machine

Page 20: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

What has not gone well…

Restricted time slots Automated Integration testing Concrete roles (one exception) Development Environment

Netbeans Eclipse

Page 21: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

What has gone well…

Process choice Communication Pair programming Wiki for team coordination and

project tracking Consistency

Page 22: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

Status / Future Plans

On target for completion Extras are possible No “show-stoppers” Better development times Plugin integration Handball and Table Tennis

Page 23: SQL Wiki Plugin Team Wirox. Team RIT Eugene Marcotte Chris Daniels Paul Yates Matt Blackwood J. Scott Hawker Xerox Tim Luksha Peter Alfvin

Demo / Questions