sql wiki plugin team wirox. team rit eugene marcotte chris daniels paul yates matt blackwood j....
Post on 15-Jan-2016
213 views
TRANSCRIPT
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
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
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
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
Technologies Used
Java Servlets Velocity XML JavaScript jQuery Confluence Maven MySQL / Oracle
Testing
JUnit HTTPUnit Atlassian Integration Testing Emma
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
Process (sequence)
http://en.wikipedia.org/wiki/Scrum_(development)
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
User Story Example
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
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
+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
Metrics
Coverage User Story Status / Impediments Burn-down Chart Burn-up Chart Velocity Test Pass / Fail
Sprint ChartsSprint One Sprint Two
EMMA Test Coverage
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
What has not gone well…
Restricted time slots Automated Integration testing Concrete roles (one exception) Development Environment
Netbeans Eclipse
What has gone well…
Process choice Communication Pair programming Wiki for team coordination and
project tracking Consistency
Status / Future Plans
On target for completion Extras are possible No “show-stoppers” Better development times Plugin integration Handball and Table Tennis
Demo / Questions