COMP 4911 ~ COMPUTING SCIENCE PROJECT
POST 3: ANALYSIS | DAVID PEDERSEN, T00586936
Process Model Alternatives And Preferred Alternative
Two potential software process models were evaluated for this project: the Waterfall Model, and the Incremental Development Model.
The Waterfall Model is the older of the two and offers a linear one-way process. It is plan-driven, requiring thorough planning before development begins to ensure success. Because much of today’s software is dynamic and can change during the development process (which, in the Waterfall Model, would require restarting), the Waterfall Model is very uncommon, finding use only in large mission-critical projects.
Incremental and Agile Development, on the other hand, is a more recent model developed to meet the needs of smaller software projects where requirements are subject to change throughout the development process. It has the added benefit of iterating through each stage of the project, sometimes multiple times, using feedback collected from the client and potential end users along the way. This helps reduce development costs and time by allowing potential issues to be addressed during the process rather than having to start over like the Waterfall Model dictates. It is also faster and is more adaptable to change.
Accordingly, I have selected and will be using Incremental and Agile Development as the process model since it best suits the nature of this project.
Development Tools Considered And Preferred Alternative
There are many different development tools available for designing web pages. However, the use of integrated development environments (IDEs) is currently the most common. Two common IDEs used for web development are Eclipse, produced and maintained by the Eclipse Foundation, and NetBeans, formerly maintained by Oracle and now maintained by the Apache Software Foundation.
There are also web-based development environments, such as W3Schools’ online IDE and the developer tools of most web browsers. However, these lack much of the functionality that desktop IDEs have, and the online versions aren’t accessible when Internet connectivity is unavailable.
Having experimented with each one, I have decided to develop this project using NetBeans. I am familiar with it having used it for over a decade now, and I like its integration with common web browsers and the GitHub version-control system. Those features will allow me to easily test, debug, and back-up my work as I progress through the development.
Language Alternatives And Preferred Alternative
The fundamental core languages for web development are HTML and CSS. There are no alternatives worth considering here, so these languages will be used for the layout and styling of the web pages.
For the dynamic features of some of the pages, there is the choice of PHP or JavaScript. Both are derived in part from the C programming language, and I am familiar with the general structure of both. However, they differ in the scope of their capabilities, as PHP is designed to handle forms and databases whereas JavaScript is designed to animate text and other website elements. Furthermore, from a database perspective, PHP is the lingua franca of MySQL, whereas JavaScript (and JSON) is the norm for MongoDB.
I have far more experience with PHP than JavaScript, and as discussed below I will be using MySQL for the database implementation. Therefore, I will be using PHP to provide functionality for the dynamic pages.
Database Alternatives And Preferred Alternative
When it comes to databases and database management systems that are made to be integrated with websites, the choice comes down to one of two: MySQL, an older relational database management system, and MongoDB, a newer object-oriented database framework.
Relational databases like MySQL have a rigid relational structure to them, which can be problematic for some situations but work well for applications where the database content is well-defined and predictable. Relational databases also work well with the PHP scripting language, which will be used for this project as mentioned above.
MongoDB is an object-oriented database framework which works well for less-defined or unpredictable data types. It also makes use of JavaScript and JSON to provide its functionality, which I have less experience in compared to PHP.
Accordingly, I will be using the MySQL relational database management system to implement the database functionality for this project.