Mark Ahlemeier

Telma Cunjuca

Mike Fortuno

Jenny Hinojos

CSE 360 Introduction to Software Engineering

Homework Assignment 5

Part 1: Building the system

  1. Library Management System
  1. Database Management: MongoDB (www.mongodb.com) is a popular NoSQL database system. It was picked after another group in CSE 360 did a presentation on it and it looked like a very appealing and modern database system. Trends from Google, LinkedIn.com, Indeed.com and other job sites indicate show that MongoDB is very popular and in-demand[1]. Companies such as Cisco, Forbes, Intuit, Foursquare and The Guardian rely on MongoDB so it is proven to be reliable and scalable.

  1. Graphical User Interface (GUI): Drupal (https://drupal.org/) will be used to develop our GUI front-end. Drupal is an open source content management system (cms) which has been around for more than 10 years and has a community of over 630,000 users and developers[2]. Drupal supports themes and has easy to use widgets and layout editing capabilities. Drupal also supports modern web technologies like HTML5/CSS/Javascript, and responsive design for mobile-friendly interfaces. Since Drupal supports Javascript, jQuery UI (http://jqueryui.com/) should be easy to integrate and allow for many widgets and extensions to be added as needed.

  1. Business Model: ArgoUML (http://argouml.tigris.org/) is a popular open source UML diagram software written in Java so it is cross-platform compatible. It was found after searching Google for “Open Source UML software” and it was listed on a wikipedia page about UML tools[3]. ArgoUML offered many types of diagrams but its main weakness is that its development appears to be stagnant and has not been updated since 2011. It still has gaps in functionality, such as a missing undo system, but the fact that it still has great functionality, is cross-platform, open source and free afford it some leeway.

A use-case diagram showing User and Librarian interaction with the system

User activity diagram

Librarian activity diagram

  1. Hosting Server: Apache HTTP server (https://github.com/apache/httpd). Our group decided to host the servers internally and use the Apache HTTP server because it is considered to be the most popular web server on the internet. Its considered to be a robust, commercial-grade server[4]. An investment in server hardware would be an up-front cost but once configured and running, it should require minimal costs.

  1. OSS for collaboration and development
  1. Development: Netbeans (https://netbeans.org) is a popular development environment, which supports multiple languages, including Java, C/C++, HTML5, Python and others. It allows refactoring and supports version control. Netbeans was chosen because its features are provided by modules, which allows Netbeans to be extended and to support additional plugins. In addition, it provides documentation, and the Netbeans team actively support the product and seek feature suggestions from a wider community.

  1. Collaboration: Github (https://github.com/) is the most popular Open Source Software Git repository. It allows for easy collaboration and the project can be easily added back to the community by making it Open Source. It handles file syncing, conflict resolution, version control, online discussion, wikis and task management.

  1. Testing: Selenium (http://docs.seleniumhq.org/) provides an easy-to-use interface for developing automated tests for web applications.  It provides a record/playback tool for authoring tests without learning a test scripting language.  It also provides a test domain-specific language to write tests in a number of popular programming languages including Java, C#, Groovy, Perl, PHP, Python, Ruby. Selenium includes features like record and playback, intelligent field selection, walk through tests, and debug and set breakpoints.

Part 2: Adding features to the system

  1. Open Source Image Uploader
  1. I found our solution for the image uploader on github at           https://github.com/vlad-ghita/image_upload. I searched github using “image uploader” in order to find it.

  1. The solution satisfies the requirements in that it has restrictions on the type of files to be uploaded, crop or resize before uploaded. These features are listed in the Readme for the repository found on git at https://github.com/vlad-ghita/image_upload. This solution however doesn’t meet all of the requirements because it does not have a file size limit or watermark capabilities. In order to meet the requirement I searched github for an open source solution for watermarking. I was able to find a solution on github at https://github.com/josemarluedke/Watermark. As a result the image would have to be first watermarked and then fed into the image uploader where it could then be resized or cropped. We would then add code that would check to make sure the image was under a certain size before it was uploaded.

  1. The input for the watermarker would be an image. The output for this component would be a watermarked image. We will then add some code to check to make sure the file is under a certain size.Once the output size is confirmed it can be fed into the image uploader as input, where the image is then cropped or resized. The output for this component(in this case a book cover image) is then pushed to the site.

  1. Rich Text Editor
  1. TinyMCE (http://www.tinymce.com/) is an option for the rich-text editor. It was found by searching on Google for “open source rich text editor javascript”. The source code can be found on GitHub at https://github.com/tinymce/tinymce.

TinyMCE is a web-based open source WYSIWYG rich text editor that supports HTML. TinyMCE is written in Javascript and It requires Node.js. Since it is written in Javascript it should be easy to integrate with the website interface. TinyMCE has an easy-to-use interface that allows changes to text formatting, including font, size, color, style, superscript and subscript, indentations, headers, tables, lists, and more. TinyMCE has many options and appears to be more complicated to configure compared to other more minimalist rich-text-editors. The general consensus is that TinyMCE is powerful but isn’t a lightweight editor.

CKeditor (http://ckeditor.com) is a popular open-source rich-text editor based on WYSIWYG.  It was found by searching for “open source rich text editor” on google. This rich text is functional, flexible, and fast. It has many innovative features such as Word clean-up, which automatically detects and cleans up text that is copied from Microsoft Word documents. In addition, Ckeditor is easy to use, it allows formatting features including font size, type, style, lists, indentations and HTML table editing and creation, which facilitates users to create and edit tables for displaying data. Being an open source, CKEditor is also based on community feedback. The source code can be found at http://dev.ckeditor.com/browser.

OpenWYSIWYG editor (http://www.openwebware.com/) is a cross browser open-source rich-text editor, with everything we need to integrate into the website. It was found by searching for “open source rich text editor” on google. It is written in javascript and DHTML and loads quickly. The user can view HTML code, and make in-code adjustments. OpenWYSIWYG supports text formatting including font, size, color, style, superscripts and subscripts. It is fully open source, permitting us to modify the code to attend our needs. The source code can be found at http://openwysiwyg.cvs.sourceforge.net/viewvc/openwysiwyg/openwysiwyg/.

All three rich-text editors satisfy all of the requirements. Choosing one would come down to using and evaluating each of them and deciding which is truly the easiest to integrate into our system and offers the best design and implementation of features.


  1. Comparison

Criteria \ Solutions

TinyMCE

https://github.com/tinymce/tinymce

CKEditor
http://dev.ckeditor.com/browser

OpenWYSIWYG editor

http://openwysiwyg.cvs.sourceforge.net/viewvc/openwysiwyg/openwysiwyg/.

Description Matching

5

5

5

Expert’s opinion

4

4

3

Comments

4

4

3

Documentation

5

5

4

GUI

5

5

4

Ease of use

5

5

5

Ease of setup

3

3

5


[1] http://www.mongodb.com/leading-nosql-database

[2] https://drupal.org/about

[3] http://en.wikipedia.org/wiki/List_of_Unified_Modeling_Language_tools

[4] https://github.com/apache/httpd/blob/trunk/README