jCheck jEdit Spellcheck Plug-in Group Section
What is jEdit? Text editor for programmers Written entirely in Java Developed since 1998 Highly Customizable
What is jCheck? Plug-in for jEdit Java “Spellchecker” Finds undefined properties, keywords, and function names Suggests possible replacements
Why chose jEdit/jCheck? jEdit has sophisticated plug-in architecture Active community with many resources Most plug-in ideas already implemented jCheck chosen because it was not done yet and would be a useful feature Parts of existing plug-ins used to ease development
Solution Process Organization Management/ Organization Object Research/ Requirements Library/ Presentation ParserTesting DocumentationProcess Log WebsiteRepository
Solution Process SDP Model Used extreme programming Four sub-groups worked in pairs Parser group Library and Presentation group Testing, Research and Requirements Object group
Solution Process Group wiki powered by QwikiWiki - Josh Resources
Solution Process Group forums powered by PunBB - Mason Resources
Solution Process Shared code repository via Subversion – Mason Resources
Solution Design Design specification – Bhavya Management
Organization Solution Design Flowchart – Joel and Josh
Solution Design Object Model UML – Joel
Classes Solution Design jCheckPluginJCheckFrameParserLibraryKeyword Undefined KW Defined KW Location
Solution Design Story cards – Alen and Chris Management
Solution Implementation Time Management - Alexandra Management
Solution Implementation Parser Tokenizer Regular expressions LevenshteinOperationsSkippingReplacing Skip all Replace all
Solution Testing Overview Testing Hierarchy – Bhavya
Solution Testing Pre-Integration Test Flowchart – Bhavya
Solution Testing Pre-Integration Unit testing with jUnit – Ralph and Sopagna public class Math { static public int add(int a, int b) { return a + b; } static public int multiply(int a, int b) { return a * b; } import junit.framework.*; public class TestMath extends TestCase { protected void setUp() { // put common setup code in here } protected void tearDown() { // put common cleanup code in here } public void testAdd() { int num1 = 3; int num2 = 2; int total = 6; int sum = 0; sum = Math.add(num1, num2); assertEquals(sum, total); } public void testMulitply() { int num1 = 3; int num2 = 7; int total = 21; int sum = 0; sum = Math.multiply(num1, num2); assertEquals("Problem with multiply", sum, total); num1 = 5; num2 = 4; total = 20; sum = Math.multiply(num1, num2); assertEquals("Problem with multiply", sum, total); } Actual Class Test class
Solution Testing Post-Integration Issue Manager – Mason
Status Fixing bugs in issue tracker Finishing testing Preparing project for submission Gathering and organization logs and docs
Post-mortem What we would have done differently: Implement parser using open-source code Utilize features from other plug-ins Show tree using Sidekick plug-in Batch processing using ProjectWizard Cover areas not implemented due to time constraints Scope Real-time checking Underline errors
Questions