This chapter will introduce the project concept, outline the general objectives as well as the specific objectives that will eventually lead to the development of the project and the scope of the project. The chapter will also outline the timeline for the development of the project; specifying when each developmental phase will start and end, the limitations of the project and finally describe briefly what the subsequent chapters will entail.
Technology has not affected our mode of communication, transportation, and education but also has given businesses (buying and selling) a touch of the magic wand in the world. It has given us strong platform of business. Technology has made it easy for people to conduct businesses from the comfort of their mobile devices. Some buy whiles others also sell online to a vast number of customers worldwide.
Ecommerce began to gain traction in the early nineties and has grown rapidly ever since. Ecommerce offers many advantages over traditional brick and mortar stores. Consumers can easily search for the products and services they are looking for. Online retailers, or e-tailers, are incredibly convenient, in that they are available 24 h a day. Today, most brick and mortar retailers such as Walmart also have an ecommerce option. While an ecommerce consumer does not get the immediate gratification of having their purchase immediately in hand, they can place orders from the comfort of their own home without having to deal with the hustle and bustle of a shopping mall. Some stores offer a combination, allowing a customer to order their merchandise online, and pick it up almost immediately at their local store. E-tailer sites like Amazon paved the way for many others. Amazon is arguably one of the most successful e-tailer sites around. It began as an online bookstore with a primary focus on the customer experience. It was so successful that it did not take long before it expanded beyond the sale of books. Today, you can order almost anything from Amazon. They have also crossed over from strictly being an e-tailer to an e-tailer and subscription site with its Amazon Prime offering.
Online shopping remains the most popular type of ecommerce. Sellers create online or mobile stores which are similar to face-to-face retail shops. Buyers visit these stores, browse through items available, and if they like the items’ quality and price, they will select it, make payments online and the goods or services will be delivered to them. At present, the global leader in this space is www.amazon.com, which does not only serve as a seller but also creates an opportunity for others to use its platform to sell their goods and services.
MATERIALS AND METHODS
In software engineering, a system development methodology refers to the framework that is used to structure, plan, and control the process of developing an information system. Software development methodologies define the processes we use to build software. These methodologies are also referred to as Software Development Process Models. Each methodology follows a series of steps unique to its type, to ensure success in the process of software development.
A software process is a set of related activities that lead to the production of a software product.
There are a lot of software processes, but they all include four activities:
These are fundamental to software engineering. A wide variety of Software Development methodology has evolved over the years. Each of these methodologies has its own recognized strengths and weaknesses. The following are the most widely used methodologies for software development.
The waterfall model is a sequential approach, where each fundamental activity of a process represented as a separate phase, arranged in linear order. This model requires planning and scheduling activities before starting working on them; it is plan-driven.
Plan-driven process is one in which all the activities are first planned, and then each progress is measured against the plan.
The agile process, on the other hand, involves planning incrementally and it is much easier to change the processes to reflect a change in requirement.
The incremental method of development is based on the idea of developing an initial implementation, exposing this model to the user to receive feedback. This model evolves in the form of versions as the requirements change until an acceptable system has been developed.
The spiral model is a risk-driven method where the process is represented as a spiral rather than a sequence of activities, and it includes best features from the waterfall and prototyping models. In addition, it introduces a new component called risk-assessment. Each loop in the spiral represents a phase; thus, the first loop might be concerned with system feasibility. The next loop might be concerned with the requirements definition and the next with system design, and the like.
A prototype is a version of a system, or part of the system that is developed quickly to check the customer’s requirements or the feasibility of some design decisions. Prototypes are useful when a customer or the developer is not sure of the requirements, the algorithms efficiency, some business rules or even response time.
The four basic process activities of specification, development, validation, and evolution are organized differently in the respective development processes. In the waterfall model, they are organized in sequence but are interleaved in incremental development method. The type of software, the people, and organizational structures involved determines how these activities are carried out. For example, specifications for extreme programming are written on cards. Tests are executable and developed before the program itself. Evolution may involve substantial system restructuring or refactoring.
This project uses the incremental method in developing the application because the preferences of the users keep changing.
Incremental Development Methodology
However, there are advantages and limitations to the incremental development that we need to look at:Incremental development is based on the idea of developing an initial implementation, exposing this to user feedback, and evolving it through several versions until an acceptable system has been developed. In incremental development, the activities of a process are not separated but are interleaved with feedback across the activities. An incremental method does not attempt to start with a full specification of requirements. Development begins by specifying and implementing just part of the software, which is then reviewed to identify further requirements. This process is then repeated, producing a new version of the software after each iteration.
During software development, it is possible to have more than an iteration of a cycle at the same time. This process may be described as an “evolutionary acquisition” or “incremental build” approach. This means that the customer can evaluate the system at an early stage to make sure that the required system is delivered.
In this incremental method, the whole requirement is divided into various builds. During each iteration, the development module goes through the requirements, design, implementation, and testing phases. Each subsequent release of the module adds function to the previous release. The process continues until the complete system is ready as per the requirement. The key to successful use of an iterative software development lifecycle is rigorous validation of requirements as well as verification and testing of each version of the software against those requirements within each cycle of the model. As the software evolves through successive cycles, tests must be repeated and extended to verify each version of the software.
The main principles of the incremental development methodology are face-to-face meetings, constant cooperation, early and continuous delivery of the working software, and transparency. Whenever there are unexpected or frequent changes either from the client’s side or internal, this model becomes the perfect choice for managers and team leaders.
This online shop is a web application, and since user requirements may change with time, a series of increments will be released to the user to get his comments and suggestions and adjust the system and release subsequent versions until the final version, which is accepted by the user, is released. Any recommendations or suggestions from the supervisor are factored into the next iteration until the supervisor accepts the final release.
Advantages of the incremental development methodology
Risks are identified and resolved during iteration, and each iteration is an easily managed milestone.
During the life cycle, software is produced early which facilitates customer evaluation and feedback. Since the first release is available to the user, they can give genuine and factual feedback based on the current system.
Testing and debugging smaller modules and units within the application are much easier.
It is possible to deliver applications more rapidly and quickly to the customer. Even if the full system functionality is not implemented in the initial release, users can use the system and enjoy all the benefits before a new version is released to cover all the functionalities.
The cost of accommodating changing customer demands is reduced. The advantage is that it avoids or reduces rework. Since we engage the end user (supervisor) in the release of the increments or versions, the changing demand of the user (in this case the supervisor) is taken care of until we develop the full system.
Better suited for large and mission-critical projects. This is because it is hard to break a small software system into further small serviceable increments/modules.
Direct communication and constant feedback from the customer (in this case the supervisor) leave no space for any guesswork in the system.
Limitations of the incremental development methodology
More resources may be required. This is because as new versions are released, we may bear the additional cost as our user (in this case the supervisor) suggests new system functionalities to the next release.
Needs a clear and complete definition of the whole system before it can be broken down and built incrementally.
The project can get off track if our customer (in this case the supervisor) is not very clear about the outcome of this project.
System architecture or design issues may arise because not all requirements are gathered at the beginning of the entire lifecycle.
Database is any collection of data or information, that is specially organized for rapid search and retrieval by a computer. Databases are structured to facilitate the storage, retrieval, modification, and deletion of data in conjunction with various data-processing operations. A database is stored as a file or a set of files on magnetic disk or tape, optical disk, or some other secondary storage device. The information in these files may be broken down into records, each of which consists of one or more fields. Fields are the basic units of data storage, and each field typically contains information pertaining to one aspect or attribute of the entity described by the database. Records are also organized into tables that include information about relationships between its various fields.
Database design is a collection of processes that facilitate the designing, development, implementation, and maintenance of enterprise data management systems. The main objectives of database designing are to produce logical and physical designs models of the proposed database system.
The logical model concentrates on the data requirements and the data to be stored independent of physical considerations. It does not concern itself with how the data will be stored or where it will be stored physically.
The physical data design model involves translating the logical design of the database onto physical media using hardware resources and software systems such as database management systems (DBMS).
A well-designed database gives access to up-to-date and accurate information. The Entity-Relationship (ER) model, Unified Modeling Language, and Relational Model among others are some of the models used by database designers. The ER model was used for our database design.
An ER diagram (ERD), also known as an ER model, is a graphical representation of an information system that depicts the relationships among people, objects, places, concepts, or events within that system. An ERD is a data modeling technique that can help define business processes and be used as the foundation for a relational database.
An ERD is a means of visualizing how the information a system produces is related. There are five main components of an ERD:
In this project, a number of development tools would be used to complete this project. They are listed as follow.
Is an interpreter, object-oriented, high-level programming language, and general-purpose programming with dynamic semantics and it will be used for the back-end. It incorporates modules, exceptions, dynamic typing, very high-level dynamic data types, and classes. Python combines remarkable power with very clear syntax. It has interfaces too many systems call and libraries, as well as to various window systems, and is extensible in C or C++. It is also usable as an extension language for applications that need a programmable interface. Python is versatile. It runs websites and is used in many popular desktop applications on PCs and Macs. It can also be found in mobile applications and embedded in many devices. Python is also a popular scripting language for other applications. Python is portable, it runs on many Unix variants, on the Mac, and on PCs under MS-DOS, Windows, Windows NT, and OS/2.
Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.[7,17] Django is a free and open-source web framework which follows the model-view-template architectural pattern. Django is portable, it runs on many Unix variants, on the Mac, and on PCs under MS-DOS, Windows, Windows NT, and OS/2. The reasons why we chose Django for our project are:
Fast: [8,21] Django has been designed in a way to help the developers make an application as fast as possible. From idea, production to release, Django helps in making it both cost-effective and efficient. Thus, it becomes an ideal solution for developers having a primary focus on deadlines.
Secure: [13,20] Django ensures that developers do not commit any mistakes related to security. Some of the common mistakes include SQL injection, cross-site request forgery, clickjacking, and cross-site scripting. To manage effectively usernames and passwords, the user authentication system is the key.
HTML is the code that is used to structure a web page and its content. HTML is used to specify whether a web content should be recognized as a paragraph, list, heading, link, image, multimedia player, form, or one of many other available elements, or even a new element that you define. It is the globally accepted programming language for formatting web pages. It is mostly used by small and medium scale businesses that do not really need advanced functionality on their websites. HTML is free, supports all browsers on the client’s machine, easy to use and understand hence, the choice in building the structure of our web pages.
CSS is a style sheet language used to describe the presentation of a document written in HTML or XML (including XML dialects such as SVG or XHTML).[14,26] CSS describes how elements should be rendered on screen, on paper, in speech, or on other media. CSS is one of the core languages of the open web and is standardized across browsers according to the World Wide Web Consortium specification.
Easy to use: Anybody with just basic knowledge of HTML and CSS can start using Bootstrap.
Responsive features: Bootstrap’s responsive CSS adjusts to phones, tablets, and desktops.
Mobile-first approach: Mobile-first styles are part of the core bootstrap framework.
Browser compatibility: Bootstrap is compatible with all modern browsers (Chrome, Firefox, Internet Explorer, Safari, and Opera).
Adobe Photoshop is the predominant photo editing and manipulation software on the market. Its uses range from full-featured editing of large batches of photos to creating intricate digital paintings and drawings that mimic those done by hand. It is a graphic designing tool that enables picture manipulation and editing. Photoshop would be used to design user interfaces and the various images that would be required in developing the system.
It is an object-relational DBMS (ORDBMS) with an emphasis on extensibility and standards compliance. A fundamental characteristic of an object-relational database is support for user-defined objects and their behaviors including data types, functions, operators, domains, and indexes. This makes PostgreSQL extremely flexible and robust. Among other things, complex data structures can be created, stored, and retrieved. All the tables and records that would be required in the project would be designed and created with PostgreSQL. My choice for PostgreSQL is that it is easy to use, support is easily available on the internet, it is open source and hence inexpensive to get it, supports complex structures, it provides extensive data capacity and is trusted for its data integrity and finally it remains one of the most accepted industry standard databases for developing web applications.
Systems Analysis and Design
System analysis and design deal with planning the development of information systems through understanding and specifying in detail what a system should do and how the components of the system should be implemented and work together. System analysis and design solve business problems through analyzing the requirements of information systems and designing such systems by applying analysis and design techniques.
System analysis and design is the most essential phase in the development of a system since the logical system design arrived at as a result of systems analysis which is, in turn, converted into physical system design.
This chapter will outline the general system and application architecture, requirements specification, functional and non-functional requirements, use case modeling, the database design, ER diagram, Normalization, and User interface design.
RESULTS AND DISCUSSIONS
After the system developed, the process of system testing must be carry on to test if the system is free of bugs. If during the system testing, there are bugs or errors detected, the developer may need to correct and fix the bugs immediately.
Testing is the process of evaluating software or system to detect differences between given input and expected output. Testing is conducted to assess the quality of a system, hence, can be said to be a validation and verification process. This ensures that system meets the technical requirements that guided its design and development, works as expected and can be implemented with the same characteristics.
There are few types of system testing that must be performed which include the unit testing, integration testing, system testing, and acceptance testing. System testing is not testing that is limited only to the development team, but it also requires the help from a specific outsider (beta-tester) to test on the system acceptance.
Below are some screenshots from the various testing we carried out to ensure that the system was functioning in line with the requirements analysis we gathered from users.
When a user is entering his/her details and forgets a field, the system prompts them that the field is required [Figure 1]. Furthermore, when they try to login into their accounts with wrong credentials, the system prompts them to enter the correct credentials [Figure 2]. When they are signing up and skip a field, the system prompts them to fill the required field [Figure 3].
Figure 1: Incremental development methodology
Figure 2: Entity-relationship diagram for the customer model
Figure 3: Testing for a customer checkout details
Furthermore, when a shop manager tries to login into the backend of the system with wrong credentials, the system prompts them to enter the correct credentials.
As stated above, during the system testing, the application did not accept negative inputs.
Figure 4: Testing for a customer login details
Figure 5: Testing for a customer register details
Figure 6: Testing to ensure that the admin enters the right login in details
The internet has become a major resource in modern business; thus, electronic shopping has gained significance not only from the entrepreneur’s but also from the customer’s point of view. For the entrepreneur, electronic shopping generates new business opportunities, and for the customer, it makes comparative shopping possible.
As per a survey, most consumers of online stores are impulsive and usually make a decision to stay on a site within the first few seconds. “Website design is like a shop interior”. If the shop looks poor or like hundreds of other shops the customer is most likely to skip to the other site.
Hence, the project has been designed to provide the user with easy navigation, retrieval of data and necessary feedback as much as possible. In this project, the user is provided with a multilingual ecommerce website that can be used to buy books online. To implement this as a web application, Django was used as the Technology. Django has several advantages such as enhanced performance, scalability, built-in security, and simplicity.
To build any web application using the Django framework, the programming language needed is Python. Python was the language used to build this application. For the client browser to connect to the Django framework, Web Server Gateway Interface was used as the Web Server.
Django uses object-relational mapping to interact with the database as it provides in-memory caching that eliminates the need to contact the database server frequently and helps protect against SQL injection attack. PostgreSQL was used as back-end database since it is one of the most popular and open source databases, and it provides fast data access, easy installation, and simplicity.
A good shopping cart design must be accompanied with user-friendly shopping cart application logic. It should be convenient for the customer to view the contents of their cart and to be able to remove or add items to their cart. The shopping cart application described in this project provides a number of features that are designed to make the customer more comfortable. This project helps in understanding the creation of an interactive web page and the technologies used to implement it. The design of the project which includes Data Model and Process Model illustrates how the database is built with different tables, how the data are accessed and processed from the tables.
The building of the project has given us a precise knowledge about how Django is used to develop a website, how it connects to the database to access the data and how the data and web pages are modified to provide the user with a shopping cart application.
In future, we hope to delve more into the integration of Mobile Money payments. This is because the payment aspect of the system does not offer this to the user. The hope is to expand the choices available to the shoppers. Furthermore, we hope to add multiple currencies to make users choose the currency of their choice before they start shopping.