Talent without working hard is nothing.


In the contemporary world, with the expansion of businesses/corporates, we have seen an abrupt increase in the automobiles (public or private). With the increase of commercial demand of the vehicles, companies are seeking new solutions such as mobility services to make it more convenient to the consumers with an intent to build a profitable venture. One of the suggested solutions is the car-sharing service. Furthermore, the car-sharing concept introduces as “an innovative approach to the growing transportation problems of the major metropolitan areas of the United States” [29]. The car-sharing service is a new idea in many countries around the world, which can be provided by car rental companies as a fantastic method to increase their clients. There are a few car-sharing services in the market such as Zip Car, Drive Now, etc. In contrast, the traditional,  Predominantly car rent is based on the concept where an organization with an automobile can offer its services on a lease agreement to the clients for a time frame, vehicles are stationed at a fixed car location and a client who wishes to rent the vehicle is generally required to return the vehicle back to a similar area [1]. However, with many positives that come along with this idea, there are few shortcomings which include dropping-off vehicles which are not flexible, the customer if he would like to rent a car, he must pick-up the car from fix location such as company branch or airport location at the same time dropping-off the car must be in the company property [1]. The overall comfort of borrowing the automobiles is required a lot of effort to pick or drop at a static location, Furthermore, the available systems in the market are not serving the user requests as many as possible. Our motive here is to analyze and implement a solution which is based on flexible drop-off facility. Convenience is one of the factors as an individual can travel across the cities to finish their work at an enormous pace as opposed to the past. Presently, we can see an enormous increase with such ideas as businesses based on this concept has already been started in many cities around the world as a means of increasing mobility. However, Car sharing systems can offer One-way systems provide more flexibility to users since they can be dropped off at any location [3]. The Car Share software (Web Application) is developed with friendly design with an intent to help the customer travel by reserving the vehicle effortlessly by selecting the required date, time, pickup, and the drop-off locations. The web application can display to the user the nearest vehicle displayed on Google Map. Meanwhile, we have focused more to make the system to serve as many requests as possible using an algorithm to check the booking table at the same time to predict the vehicle locations. The application has been developed using Microsoft Visual Studio environment 2017 (IDE) with other tools like Microsoft SQL Server management studio 2017, also we have used number of APIs and packages such as Google APIs, DVLA Search API, Stripe API, Nexmo(SMS) API, SendGrid(Email) API, Quartz (Scheduling Framework for .NET) and Address API to enrich the application with friendly and easy website to use by the end-user. The Web application has been created to accomplish tasks such as booking, adding vehicles, manage the reservation and the payments. It is implemented by using various technologies such as C#.NET, HTML5, CSS, Bootstrap, and JavaScript.



All sentences or passages quoted in this report, or computer code of any form whatsoever used and/or submitted at any stages, which are taken from other people’s work have been specifically acknowledged by a clear citation of the source, specifying author, work, date, and the page(s). Any part of my own written work, or software coding, which is substantially based upon other people’s work, is duly accompanied by clear citation of the source, specifying author, work, date, and the page(s). I understand that failure to do this amount to plagiarism and will be considered grounds for failure in this module and degree examination as a whole.

Name: Alaeddin Alhamoud

Date:     17/05/2019



Table of Abbreviations

Lat …Latitude

Long … Longitude

MVC … Model-View-Controller

API …Application Programming Interface

JS … JavaScript

UI …User Interface

JSON …JavaScript Object Notation

XML …Extensible Mark-up Language

OS …Operating System

SMS … Short Message Service

HTML… Hypertext Mark-up Language

APP …Application Program

URL …Uniform Resource Locator

HTTP …Hypertext Transfer Protocol

CSS … Cascading Style Sheets

SaaS … software as a service

IoT ... Internet of Things

IDE … Integrated development environment

DVLA … Driver and Vehicle Licensing Agency



  1. Introduction

As discussed in the abstract, car-sharing service is a type of short-term agreement/hiring of a car by the customer for a certain period. Short-term car rental services, otherwise called vehicle sharing frameworks, are increasing at a rapid rate which in turn ending up progressively regular methods for urban transport, the expected number by 2035 is 7.5 million shared vehicles on European roads [28]. With their rising prominence, the operators of such systems introduce systematically numerous improvements to the functioning of services in order to fine-tune their offers to the requirements of their present and potential customers [1]. Therefore, Car sharing service is a type of car rental agencies providing services for a short period of time.

To conclude, with all these advancements in the Automotive industry, we have noticed that big ventures are accepting these new technological solutions and they are willing to invest in the Research and Development of these ideas. In the current scene of things, these ideas have been accepted openly which lead to its commercial success. Thus, resulting in an abrupt growth in companies like ZIPCAR, Car2go & City Car Club, etc flourishing in the last couple of years.


    1. Motivation

Recent advancement and commercial success of the car share concept has grabbed the attention of many computer enthusiasts working in the IT industry as well as the researchers. Universities are an ideal environment as lots of students rent cars to commute to the university and back at a comparatively cheaper rate. Also, commercially customers are not satisfied with the intractable drop off at a static location. Our motivation is to bring a commercial web application which focuses on maximum user satisfaction. We are writing an algorithm in order to solve the booking problem also make it more dynamic by predicting the new location for the vehicle also we will be creating UI (Web Application) for user satisfaction. With the focus entirely on implementing such a Web App that will provide companies’ the ability to rent the maximum number of cars. At the same time, we will make sure all the users can drop-offs as per their convenient location which automatically leads to satisfaction.


    1. Aims 

 With flexibility is the key, our goal is to implement an algorithm and then build software based on it to support a car-sharing system. With the focus on clients as they can book or reserve vehicle, for instance, rent a car from location A to B at 8 am and from B to A at 6 pm. However, it is not necessary that the drop-off location is the same as the pick-up location as it varies according to the client’s needs. Also, the system tries to serve as many requests as possible.


The software should take the user as a request, depends on the vehicles accessible at the location the user will be provided the maximum number of solutions they can be fulfilled without clashes, for example, if a request that includes a trip from A to B at 8 am to 9 am is accepted, then there must be a car available at location B at 9 am. Requests arrive over time, so the problem is an online problem.

The main motive of the project is to gain insight into the algorithmic difficulties of the problem and to come up with the ideas that produce a feasible solution to the customers as well the car rental companies. Also, to analyze those ideas and/or implement them in software which includes a user-friendly interface with responsive pages to be able to work on any device (Desktop, Laptop or Mobile).


    1. Objectives

The main objectives of the Car Share Web Application are listed below:

  • Creating Responsive Friendly User Interfaces to help the End-Users to book a vehicle, and manage his profile such as:
    • User Details.
    • User Address.
    • User Driving License.  
    • User booking and payment History with Full details.
    • User Pending Orders with Full details.
  • book and reserve the time slot for a car from the car company at a specific location.
  • Allowing the end-user to give feedback on vehicles which he/she rents. It includes car condition and a rating.
  • Control Panel (E-Portal) to check and manage the full website (Only for the company Employees).
    • Dashboard to display the latest actions on the website(Booking, pending payments, number of users, etc).
    • Adding Vehicle using the DVLA API or manually.
    • Allows checking the vehicle timetable.
    • Permissions (User-Roles) to allow the user to access the authorized pages only.
    • Manage the users with the ability to change the Role.
    • Allowing to Check and manage the Reservations.
    •  Finance to display the latest bank transactions, Order has been paid or unpaid.
    • Approve Driving license, validation step to check the user driving license.
    • Chart report shows the company performance.
    • Allow the user to manage the website settings by add/edit the APIs keys.
    1.  Challenges

In order to develop an effective/dynamic Web-based application, we have listed out the requirements that we will be working on to achieve the desired product. The real challenge for this project is to implement a strong reliable user-centric high-performance and provide other important features at the same time with faster data loading. To develop that we first need to understand and model a complex optimization problem arising in a practical application and come up with effective solution approaches. Also, integrating this logic in the front-end is one of the challenging aspects of this project. Furthermore, choosing the best type of database as we are building a web-based application to keep the saved data in the database with no effect on the performance of the device or storage space. Moreover, we are using a third-party application such as Google API to make the website more dynamic by displaying the vehicles on Google Map also using Google sign-in and Facebook login for easy registration, DVLA Search API giving the user ability to add UK vehicles just by providing vehicle registration number (Plate Number). Also, the Stripe payment gateway to handle the payment and charge the customer with various payment methods. We have also added additional API such Nexmo API to send SMS as a notification to inform the customer about his booking, SendGrid API (Email) To handle the Emails such as sending receipt email after booking a vehicle, confirm the customer email address. Furthermore, we are using Address API to add an address for the end-user by providing the postcode and the property number, without affecting the application performance.


  After implementing the front and the APIs logic, our main challenge was to implement a booking and the predict car location logic. Upon careful analysis, we came across a booking logic which helps us to displays the available vehicles according to the user needs (Search based on Time and Date). We have tried to make it as efficient as possible so that multiple users can book consecutive booking based on the availability of time, for example, User A can book 10-11 and it allows User B to book the same car from 11-12 (considering both are not at the same location). Please note that in order to make it work we developed our simple algorithm in order to make bookings effectively. Also, we used the Quartz package Scheduling Framework to do the background jobs such as checking the booking table, in our case if the booking is not confirmed, it will automatically get deleted after 15 minutes. Please note that initially, we have implemented the booking logic for a short duration, however now we have implemented the full version so that customers can able to book it a minimum of 1 hour or 24 hours which is a whole day or anything between these two.



After implementing the database/frontend and connecting the respective APIs, our main goal is to add the authentications (Permissions/Roles) and then test our application with the help of end-users and upon their feedback that will be sent after each booking operation, we can enhance our application and make it more interactive. Also, we have hosted our website in order to test it online.


  1. Related Work

Nowadays, one of the most important mobility for traveling is cars, because of the flexibility and comfortability that provided by the car. Also owning a private car has many advantages as we mentioned at the beginning. However, there are many disadvantages too, for example, the cost of the expenses of the car tax, insurance, etc for people drive short distance or the car not needed for daily use, also the number of vehicles Increasing on the roads, causing many issues such as increasing in CO2 emission, congestion, and parking.

The previous issues of owning a private car can be solved with car sharing, “a type of car rental for people who want to rent a car to travel a short distance or for a short period of time” [8].

With car sharing the customer can have the advantages of a private vehicle that we have mentioned at the beginning of this section. However, car share sounds very promising according to Steiningeretal study predict the market of car share 9% in Austria, additional study prediction by Reinhardt and Muheim, there is a chance to increase the number of car share for the Mobility Switzerland service to 600,000 customers [8].

As we have discussed earlier, there have been a significant increase in car Share industry and many organizations such as Zipcar, Car2Go, etc has profited by realizing and taking advantage of the customers’ demands of having a cheap alternative for transportation.

According to research form Frost & Sullivan, the number of people using car-sharing services is expected to increase almost threefold from roughly 6 million in 2017 to almost 18 million by 2025 [7].


    1. Type of car sharing

In this section will demonstrate an overview of different models of car sharing.

  1. Business to consumer (b2c)

The consumer can rent a vehicle from a company own fleet of vehicles; this category can be divided into two categories [8].

  1. Round trip Carshare: the driver must return the vehicle to the same station.
  2. One-way car share: the driver can drop off the vehicle at another location within the allowed area.
  1. Peer to Peer (p2p)

This type of car-sharing is individual rent.

  1. Business intermediary: car owners can list their car on the rental platform, to be available to rent by other people.
  2. Neighborhood sharing car owned by a group of people, allowing anyone to use when needed.

In addition, the differences can be also in the parking location [8].

  1. Station-based: it is like the traditional car rental, the cap pick-up form company location, must be a drop-off in one of the car locations.
  2. Free-floating: the driver can drop off the vehicle at any location.


    1. Existing car share Applications

There are many famous rental companies around the world adopted the car-share service, due to provides short team car rent. In this section will demonstrate some of these companies.

  1. Zip Car: an American company provides vehicles reservations by day, hour, or minutes, also Zip car provides annual and monthly membership. The company founded in 2000. Zip Car company has many features such as members can book a car using a mobile application or  Phone. Also, the company provides an NFC card to open the car door for the members [25].
  2. Car2Go: German company, the company own fleet of the car nearly 14,000 cars, in 26 location around the world. By offering Smart and Mercedes-Benz cars, the user can make reservation car though the mobile application provides many features such as extend the booking time [27].
  3. Drive Now: the company owned by the car manufacturer BMW, to provide car-sharing service. The start of this company was in 2011 from Munich, Germany. Drive Now the company provides full-electric BMW i3s with the ability to book the vehicle per minutes. Besides, a variety of gasoline-powered and diesel vehicles. The company allows users to reserve cars through the mobile application. One of the mobile application features is to check the car the battery state of charge or fuel gauge, this makes the customer more satisfied before booking the car for his journey [26].


  1.  Technical Specifications


This section will explain the technical Specification, with the required tools to build a web application. However, after doing research about the best web development environment, database, and programming languages. also, previous expensive as a .NET developer. We have created a list of the technical specification to build a web application and back-end using various modern technologies.


    1.     Project Prerequisites
    • The development environment for the application is Microsoft Visual Studio IDE. 
    • The web application for this project is built on .NET Core platform / C#.NET.
    • Using Microsoft Entity Framework Core 2.2 to handle the data flow between the SQL database and the website.
    • using Microsoft Identity Core 2.2 to handle the security and the sessions for the users.
    • Microsoft SQL Server Management to implement and design the database.


    1. Front-end
  • In order to develop front-end of website/web app, we have used Bootstrap framework of CSS for the Style. According to wiki, “Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and (optionally) JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.” [15]. It is supported by jQuery libraries as per the requirement.
  • We have used Icon library (Font awesome) to aid our UI design.
  • JSON has been used to Receive or send, From/To the APIs.



    1. Database / Business Logic
  • We have developed a database using Microsoft  SQL database with .NET Core project.
  • The important table includes User, Roles, Vehicles, Reservation, Current location of the vehicle, etc.
  • In order to add the vehicles to the database, we have used DVLA Search API, it will fetch the necessary information from the API Provider. The data we are fetching it from the API it will be stored in the local database.
  • Entity Framework Core to process and handle between the web application and the database.
  • For reservation logic, we have implemented a Queue data structure, also we have added Booking time where we are storing begin/end time. Based on the Booked reservation we are checking the availability of the time slot.
  • the Favourites feature so that all the users can add any vehicle to favorite list. Please note that we are displaying this dynamic feature along with the vehicle details.
  • Reviews functionality along with ratings for the users. Everyone who uses the website can read reviews of certain vehicles.
  • Feedback option which will be displayed once the user makes a payment. Feedback will tell us if the user is satisfied with the trip. Also, will be sent as an email to the user after finishing the trip.


    1. Required APIs

In order to develop a dynamic web application and make the website easier to use by the users (Administrators, Customers). We have implemented the following APIs:

  1. Google API
  1. Google Maps: to display the vehicle using the map give the user more options.
  2. Google sign-in: to provide an easy option to login
  3. Google reCAPTCHA v3: to protect the web application from the bots.
  4. Google Charts: to display company performance.
  1. Address API: Once we add the postcode and house number it will give us all the address details. Connected Google maps with the address API by providing latitude and longitude information from the API.
  2. DVLA Search API: Once we add the car registration number, it will give us all the car details which include VIN, model name, manufactured year, etc.
  3. Stripe Payments gateway API: we are using stripe gateway to implements payments effectively.
  4. SMS Nexmo API: providing SMS gateway to notify the user about the booking status.
  5. Email SendGrid API: email service to notify the user about the booking, registration, payment, etc.
  6. Facebook login API: to provide the user easy way to log in.


    1. Detailed Requirement

To developing an effective Car Share Web-based Application, the features are listed as follows:


      1.   Essential features
  • Integrate the app with Address API. So that user can add its home address based on postcode and house number.
  • The Application will provide a vehicle to be rented by the user.
  • The User will provide the booking details such as booking date, Pickup time, Drop off time, and the pickup drop-off locations.
  • The user will be able the see his current location on Google Map View, at the same time he can choose the drop off location.
  • The website will provide the user vehicles available or will be physically in the location and the time he asked for.
  • By choosing a vehicle from the Google Map will provide a user the vehicle details such as Model, Rate, Price, etc.
  • The system will insert a booking record of the vehicle, that choose by the user.
  • In case the user payment does not confirm, the booking will be canceled after 15 minutes.
  • The End-user will receive Email and SMS as confirmation for his booking and the payment if it has been confirmed too.
  • Integrate payment gateway using Stripe.
  • DVLA search API to provide all the essential car details such as Model, color, Engine, etc.
  • End-user can submit rating and feedback about the vehicle he drove it, at the same time he can add it to his favorite list.
      1.  Recommended  features
  • Providing the location to pick up and where the user will the drop-off.
  • Search feature to filter the list of the places by google map. The search input box will be auto-complete, for cities or postcode.
  • Control Panel (CP/ e Portal) to manage the website.
  • Vehicle inventory, to display the details with feedback about it.
  • Using Google sign in and Facebook APIs to login.
  • Add the User details such as his address using external API, Driving license, and use personal information.
  • List of Order History (Paid, Unpaid) with details.
  • List of Reservations (Past Reservations, Future Reservations) with details.
  • Add Google Charts API for a dynamic report.
  • Walk Me Feature to navigate the user to the car location using google map API.
  • Drive Me as a simulation for the system.
      1. Optional features
  • Open Vehicle Door by Mobile application using Smart Car API applied over 2015 only.
  • add distance to the booking details such as kilometer or mile.
  • verify the driving license by added it using DVLA API.
  • Extend the booking time.
  • inform the delay to the next customer by sending SMS or replace the vehicle if there any vehicle around.
  • charge customer who caused the delay.
  • IOS and Android mobile applications.
  • In case the vehicle needs Key, sending SMS, to release the car key from the secured key bad.
  • Make the booking more flexible for example add timing booking by minutes.




Find More Pdf File

Code Source





[1] Katerina Bohmova, Yann Disser, Matus Mihalak, and Rastislav Sramek, 2016, Scheduling Transfers of Resources over Time: Towards Car-Sharing with Flexible Drop-Offs, LATIN 2016 Conference, pp.14, [Online] Available at: https://www2.mathematik.tu-darmstadt.de/~disser/pdfs/BoehmovaDisserMihalakSramek16.pdf, [Accessed 03 May 2019].


[2] K Turoń,  A Kubik,  B Łazarz Bogusław,  P Czech,  and Z Stanik  ,2018, Car-sharing in the context of car operation, Silesian University of Technology , pp.11, [Online] Available at: https://iopscience.iop.org/article/10.1088/1757-899X/421/3/032027/pdf, [Accessed 03 May 2019].


[3]  Martin Repoux, Burak Boyacı, Nikolas Geroliminis, 2015, Simulation and optimization of one-way car-sharing systems with variant relocation policies, 94th Annual Meeting of the Transportation Research BoardAt: Washington D.C, pp.20, , [Online] Available at: https://www.researchgate.net/publication/302405209_Simulation_and_optimization_of_one-way_car-sharing_systems_with_variant_relocation_policies, [Accessed 03 May 2019].



[4] Steve Smith, 2018, Overview of ASP.NET Core MVC, Microsoft Corporation, [Online] Available at: https://docs.microsoft.com/en-us/aspnet/core/mvc/overview?view=aspnetcore-2.2 , [Accessed 01 May 2019].


[5] Hoang Lam, Thuan Thai, 2009, .Net Framework Essentials,3rd Edition, O’Reilly.


[7] Frost & Sullivan,2016, Future of Carsharing Market to 2025, [Online] Available at: http://www.frost.com/sublib/display-report.do?id=MB4D-01-00-00-00, [Accessed 04 May 2019].


[8] Lennard VAN DEN BERG, 2017, “The Road to the Future of Cars: Opportunities and Key Features for Car Sharing Services”, Radboud university, [Online] Available at:

https://www.ru.nl/publish/pages/769526/z_lennard_van_den_berg.pdf, [Accessed 04 May 2019]



[9] Rick Anderson, 2019, ” Introduction to Identity on ASP.NET Core”, Microsoft Docs, [ONLINE] Available at: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity?view=aspnetcore-2.2&tabs=visual-studio. [Accessed 01 May 2019].


[10] Google, 2019, Introducing reCAPTCHA v3, [ONLINE] Available at: https://www.google.com/recaptcha/intro/v3.html. [Accessed: 01 May 2019].


[11] Google, 2019, Google Sign-In, [ONLINE] Available at: https://developers.google.com/identity/. [Accessed: 01 May 2019].


[12] DropZoneJS, 2019, DropZone Library, [ONLINE] Available at: https://www.dropzonejs.com. [Accessed: 01 May 2019].


[12] Oracle, 2013, The Java EE 6 Tutorial, [ONLINE] Available at : https://docs.oracle.com/javaee/6/tutorial/doc/gkigr.html. [Accessed: 01 May 2019].


[13] Google, 2018, Maps Static API, [ONLINE] Available at : https://developers.google.com/maps/documentation/maps-static/intro. [Accessed: 01 May 2019].


[14] Google, 2019, Maps JavaScript API, [ONLINE] Available at : https://developers.google.com/maps/documentation/javascript/markers [Accessed: 01 May 2019].


[15] Wiki, 2017, Bootstrap (front-end framework), [ONLINE] Available at : https://en.wikipedia.org/wiki/Bootstrap_(front-end_framework) [Accessed: 01 May 2019].


[16] Wiki, 2019, Stripe, [ONLINE] Available at : https://en.wikipedia.org/wiki/Stripe_(company) [Accessed: 02 May 2019].


[17] Nexmo,  About Nexmo, [ONLINE] Available at : https://www.nexmo.com/about-nexmo [Accessed: 03 May 2019].


[18] Quartz, what is Quartz, [ONLINE] Available at: https://www.quartz-scheduler.net/documentation/faq.html [Accessed: 03 May 2019].


[19] Facebook for Developers, Facebook Login Overview, [ONLINE] Available at: https://developers.facebook.com/docs/facebook-login/overview [Accessed: 06 May 2019].


[20] DVLA Search API, [ONLINE] Available at: http://dvlasearch.co.uk [Accessed: 06 May 2019].


[21] Google Chart API, 2018, Using Google Charts, [ONLINE] Available at: https://developers.google.com/chart/interactive/docs/ [Accessed: 09 May 2019].


[22] Microsoft Doc, 2015, Introduction to LINQ Queries (C#), [ONLINE] Available at: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/introduction-to-linq-queries [Accessed: 11 May 2019].


[23] Scott Addie and Tom Dykstra, 2019, Create web APIs with ASP.NET Core, Microsoft Doc, [ONLINE] Available at: https://docs.microsoft.com/en-us/aspnet/core/web-api/?view=aspnetcore-2.2 [Accessed: 11 May 2019].


[24] Software Testing Fundamentals, 2019, Test Case, [ONLINE] Available at: http://softwaretestingfundamentals.com/test-case/ [Accessed: 12 May 2019].


[25] Wiki, 2019, Zip Car, [ONLINE] available at: https://en.wikipedia.org/wiki/Zipcar [Accessed: 13 May 2019]


[26] Wiki, 2018, Drive Now, [ONLINE] available at: https://en.wikipedia.org/wiki/DriveNow [Accessed: 13 May 2019]


[27] Wiki, 2018, Car 2 Go, [ONLINE] available at: https://en.wikipedia.org/wiki/Car2go [Accessed: 13 May 2019]


[28] Fien Van den steen, 2018, 7.5 Million Shared Cars on European Roads, Fleeteurope, [ONLINE] available at: https://www.fleeteurope.com/en/smart-mobility/europe/features/75-million-shared-cars-european-roads?t%5B0%5D=Car%20sharing&curl=1 [Accessed: 13 May 2019].


[29] Richard Katzev, 2003, Car sharing: A New Approach to Urban Transportation Problems, Analyses of Social Issues and Public Policy 3(1):65 - 86, pp.41, DOI: 10.1111/j.1530-2415.2003.00015.x, [Online] Available at: https://www.researchgate.net/publication/227718696_Car_Sharing_A_New_Approach_to_Urban_Transportation_Problems, [Accessed 15 May 2019].










Read more..

The .Net platform:

The Net platform is a development framework created by Microsoft to provide a new programming interface to Windows applications, by integrating many technologies. The first version of the .net platform was released in April 2003[5]. However, the ideas behind.Net framework is to use a new strategy by enabling software as a service (SaaS).


The five main components of .Net Platform are Visual Studio .NET, .NET Enterprise Servers, .NET Framework, .NET Building Block Services, and Operating system on servers, at the top of the previous figure the bottom layer is the operation system (OS) such as windows XP, Windows Server and Windows CE [5]. The second layer on top of the OS layer is group of specialized server products, the required to develop large scale business applications, such as BizTalk Server, Exchange Server and SQL Server [5]. On the Top layer of the .NET is the development environment tool (IDE) Visual Studio, which is one of the best IDE on the development market, because of the feature that included in the visual studio make the development cycle easy to use. Also supporting many programming languages for example, C#.NET, VB.NET, F#, and more.

 History of ASP.NET MVC

The first release of ASP.NET was in 2002, at a time Microsoft company was trying to protect its position with controlling the market of desktop application development. At the same time, Microsoft realized the thread of the internet revolution on their technologies [3].

The following figure 2 showing the technology stack as it is showing then.




Using asp.net web forms Microsoft tried to support both the statelessness Hypertext Transfer Protocol (HTTP), also support the uncommon Hypertext Mark-up Language (HTML) at that time by many developers, by modeling the user interface (UI) and the server-side control object [3]. However, the huge support from Microsoft to build new technology to give the developer the ability to make web development just same as developing windows application, from this point Microsoft company opens a new door for the windows application developers called the world of web applications.

In General, the asp.net web form development as a principle was good, but the developer found it more complicated [3]. Because of,

  • View Stat weight: the actual amount of data transferring between the client and the server its was huge blocks, causing a slow loading for the web application.
  • Page life cycle: the code to link the front end with back end code to handle the event is part of the page life cycle it was very accurate and complicated.
  • Limited control over HTML: the ASP.net Server (IIS) is responsible to handle the rendering for the code, sometimes that causing failed to meet the standard HTML.
  • Low testability: the approach of the design was in asp.net web form was tightly coupled was not fitting for the unit test tools, that cause big effort on the developers.

The consequence for the last issues in the classic asp.net made Microsoft the find solution, Will demonstrate the solution as we are explaining the history of asp.net.[]




[4] Steve Smith, 2018, Overview of ASP.NET Core MVC, Microsoft Corporation, [Online] Available at: https://docs.microsoft.com/en-us/aspnet/core/mvc/overview?view=aspnetcore-2.2 , [Accessed 01 May 2019].

[5] Hoang Lam, Thuan Thai, 2009, .Net Framework Essentials,3rd Edition, O’Reilly.


Read more..


مقدمة عن منصة بلازور.

في مقالتي هذه سوف نتحدث عن منصة جديده مقدمة  شركة مايكروسوف  تسمح مطورين المواقع بستخدام لغات عالية المستوى مثل  C#   في تطوير صفحات الويب.

منصة بلازور Blazor framework   التي تسمح لك بتنفيذ كود بلغة الــ C# ضمن متصفح الويب دون الحاجة لاستخدام لغة الــ Java Script   التى كانت تحتكر موضوع في طرف العميل.

كما ذكرت كثير من المواقع ان قواعد اللعبة تغيرت.

طبعا يعتبر هذا انجاز كبير, حيث انه لا داعي لمطور C# ان يجيد Java Script   وبالاضافة لذلك استخدام مميزات سي شارب الكثير .

لكن السوال هو كيف تعمل Blazor   ؟

ليس كما جرت العاده في C# Razor يتم ترجمة كود السي شارب إلى كود جافا سكريبت حتى يتم تنفيده في المتصفح.

هنا تقوم بلازور بتحويل او ترجمة كود الـ C# إلى لغة منحفضة المستوى عن طريق استخدام WebAssembly .

الفرق المسؤل عن هذا العمل هو Mono   الذي تبنى مشروع بلازور .


الصوره التالية تبين بنية بلازور .


عند تنفيذ او تشغيل  تطبيق بلازور  Blazor App  في متصفح كروم. التطبيق  التى هو عبارة عن عداد يتضمن blazor.js.

والتى تستخدم mono.js  لتقوم بتهيئة المتصفح عن طريق Mono runtime (mono.wasm) في الــ WebAssembly.

بدورها تقوم بعمل تحميل لكل المكاتب المطلوبة .


تعمل بلازور مع فجوال ستديو 2017 النسحة ال 7 مع تحديث ASP.NET Core 2.1 .

 روابط التحميل .



•Install the .NET Core 2.1 SDK (2.1.300 or later).

•Install Visual Studio 2017 (15.7 or later) with the ASP.NET and web development workload selected.

•Install the latest Blazor Language Services extension from the Visual Studio Marketplace.








Read more..

You may be wondering what is Sparql?

What for? 

In this article will try to answer this question, and talk a bit about SPARQL.

According to W3C SPARQL is an RDF query language, that is, a semantic query language for databases, able to retrieve and manipulate data stored in Resource Description Framework (RDF) format.

it is instructions to query RDF, it is similar to SQL query.



I do not want to talk more IT jargon, let's make it easy.

many of us using Alex, google or Cortana this AI devises or software.

How they are understanding what is written in your HTML page.

How they will recognize this text is talking about Person, not about Place or Pace of hardware.

For example, if you google Hilton word, how google understand that is Person, not Hotel!

Rdf came to solve the problem, By giving a description to the text to make it has meaning.


By Using RDFa or Microdata and write our own ontology to describe things.

Example for RDFa with HTML:


In the Last HTML page, you may notice the new code in the red color.

This code describes the HTML page, telling Alex this is an Article, title and the body of the article.

So when you Ask Alex: Who is the creator of the Article?

Alex: will give the correct answer (Alice).

the subject is not that complicated, I just give you small or brief words to describe it to you.

and our main article was about SPARQL Query language.

I have developed web solution, through the website you can upload you owl file and query it.

demo: http://sparql.a-hamoud.com/Home/Index

 I have used dontnetrdf API and ASP.NET MVC 5 with SQL Server to store the owl files and manage the users.





Read more..

Most software has bugs. Is it possible to write software that does not have bugs? What techniques are available to help make software that is bug-free, and how do they compare with each other?


Software bugs mean those mistakes made by a developer during the life cycle of developing software. According to Davies (2014, p.1), it is important to fix those bugs which will have an effect on the developers’ time and on the cost of the software. By reducing software bugs, the developer will have more time to spend on adding new features and enhancing the software (Ibid). It is clear that the primary requirement for an end-user and software developer is software quality to be an error-free. Davies (2014, p.3) founds software bugs as defined by The Institute of Electrical and Electronics Engineer (IEEE) as an issue in software if not fixed can cause to an incorrect outcome or fail in an application. It would seem that the meaning of software bugs is still vague, there are many questions about the origin of a bug, how an end-user treat it if faced with bugs in a software, however, the most important question is how to prevent or deal with those bugs. There are several tools such as Bugzilla to help developers track the bugs in released software that has been detected by end-user (Davies, 2014, p.4).  It seems that it is impossible to have software free bugs. This essay will examine the possibility of software free bugs and will compare the techniques methods used to help software be free bugs.


One of the most effective techniques in bug life cycle is Bug Tracking Systems (BTSs). Pinzger, et, al. (2009, p.113) state that, BTSs is used to provide feedback on the system by developers and end-user, the feedback may be informed as an incorrect case or as a requirement to improve the system.

       The feedback or bugs are recorded in a Bug Tracking Systems (BTSs), for instance, Bugzilla which allows bug reporters (developers and end users) to report details of errors or bugs encountered while using an application (Davies, 2014, p.4). As a real example of a bug report from Mozilla is the most common internet browser, the report includes a full explanation of a bug, specific information such as a piece of code and screenshots to guide the developer, all previous information is collected together in a bug report (Ibid). It seems that the benefit of the bug report is to guide the developer to fix the bugs, using useful information provided by the report. However, the information provided by bug report is not enough to fix the bug or determine the reason for the bug (Ibid). It appears that the bug report is to help the developer to fix the bug which using one of the available techniques, at the same time, it can be stored as records to provide last update and the status of the bug to the reporter.

     According to Davies (2014, p.4), the bug report life cycle has a number of steps depending on the Bug Tracking Systems (BTSs) and the default stages of Bugzilla. The first step is an Unconfirmed status that created by a user during reporting about a bug, the decision back to the developer to be Confirmed and send it to the next phase or the bug does exist, after the bug has been confirmed will be assigned to a specific developer to investigate and fix the bug and change the status to In Progress, if the developer has finished fixing the bug the status will be Resolved, the final stages is to check and test the bug by a quality engineer and confirm that the bug has been fixed correctly then the status will be changed to Verified (Ibid). It is clear that the steps of the bug report life cycle provide more information about the bug and which techniques should be used to fix the bug by the developer.



One of the most important stages of the software development lifecycle is Software testing. There are many techniques in Software Development life cycle used to test the software by tester and developer. 

     Sawant, et al. (2013, p.981) indicate that static or manual testing is a type of test which can be done by a set of tools manually without executing the code to check the design and requirement documents to review it on the working document by the analyst and the testing team, when the system is inactive, the statics test executes security test to analyze the system without running the code. It is clear that the static testing technique provides to the developer the bug places in the application code on the early step of the life cycle. Meanwhile, static testing work with documents such as design, source code, and test plans documents, therefore, the content of the static testing technique has many steps, firstly, inspection is one type of reviewing the code to find the defects using the checklist, code walkthroughs are managed by a moderator, second, the walkthrough is meeting with the software users to describe the product, at the same time participants can ask questions as notes, another step, technical reviews to check the code if is identical to the technical specifications and standards, the final step, informal reviews to review the documents and comments on it using informal methods (Ibid).

     Currently, software’s are becoming more complex and traditional methods such as static techniques are not effective enough to reduce the bug in a software. Sawant, et al. (2013, p.981) indicate that dynamic or automated testing is executed while the software is active status. For example, the dynamic testing will be executed at the same time of inputting value, hence, the output will be compared with the final result (Ibid). The example shows the functional behavior of the application, during the runtime lifecycle of the application, thus, it is possible to check the system performance and the quality of the application while the application active. According to Sawant, et al. (2013, p.981) the dynamic technique has the following four types, first, unit testing is the tool to test the code for individual modules, second, integration testing is to test the join between the interfaces and the modules, also, system testing is to test the whole application performance, the last one, acceptance testing is testing was done by the end-user.


      Nevertheless, both of the dynamic and static techniques are important for the life cycle of the Software Development. Sawant, et al. (2013, p.981) claim that both of techniques have strong and weak points, which should be considered while executing these techniques on the application. Sawant, et al. (2013, p.981) demonstrate that it is different for both of techniques, the static technique is the first step on the software life cycle and it is effectively more than dynamic techniques, while the dynamic technique is the last step on the software life cycle. On the other hand, the static technique performed before executing the application whereas, the dynamic technique is performed at the same time of the runtime (Ibid). It seems that the static technique to test software, should follow certain steps: Firstly, Reviewing the documents, secondly, checking the interfaces of the software, finally, checking the database table before releasing the software, this should be done by the developer team, on the contrary, the dynamic technique test will be in the runtime of the software and the test could be checked by a developer or end-user during the software life cycle.

      In addition, mutation testing is a type of software testing or fault-based testing which supplies testing standards, by mutating some statements in the code and reviewing it to look for bugs, however, it can be used to check the functionality of a test in terms of the possibility to detect bugs (Jia,2013,p.14).A recent study by Jia (2013,p.15) founds that, mutation test compares between three commonly test such as prime path coverage, edge-pair coverage, and all-uses, the result of the study found that the mutation testing detects more bugs than another test with the more efficient test. According to Jia (2013, p.18), there are many popular programming languages has been used mutation testing such as Fortran programs, C programs, C# programs. Furthermore, mutation testing proves the ability to effectively value the quality of the test, undoubtedly, it still experiences a few problems, such as High computational cost, Trivial mutants, Equivalent mutants and Oracle (Ibid). It seems that mutation test is similar to the static test, both tests use the same strategies during the test life cycle to find bugs, in contrast, the dynamic test uses different strategies. However, the strategies and techniques of testing software is a significant requirement to enhance the development life cycle (Thakare, S. el at.,2012, p.686).




        This essay has examined the history of software bugs and the methods of tracking bugs. At the same time, discussing the static, dynamic and mutation techniques by comparing every one of the techniques. In addition, discussing the possibility of having free bugs software. Unfortunately, it seems that it is impossible to have free bugs software.  However, there are several methods to reduce software bugs and many techniques to solve it.




  • Davies, S., 2014, STUDYING THE LIVES OF SOFTWARE BUGS [Online] Glasgow, University of Strathclyde Glasgow. Available from: http://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.632701 [Accessed 15/11/2017].
  • Sawant, A. A. et at.,2012, Software Testing Techniques and Strategies [Online] Mumbai, University of Mumbai, INDIA. Available from: http://www.ijera.com/papers/Vol2_issue3/FQ23980986.pdf [Accessed 22/11/2017].
  • Pinzger, M. et al.,2009, "A Bug's Life" Visualizing a Bug Database [Online] Glasgow, University of Lugano, Switzerland and University of Zurich, Switzerland. Available from: https://serg.aau.at/pub/MartinPinzger/Publications/Dambros2007-bugslife.pdf [Accessed 15/11/2017].
  • Thakare, S. el at., 2012, International Journal of Emerging Technology and Advanced Engineering [Online] Mumbai, Computer Technology Department, India. Available from: http://citeseerx.ist.psu.edu/viewdoc/download?doi= [Accessed 15/11/2017].
  • Jia, Y, 2013 Higher Order Mutation Testing [Online] London, University of London, United Kingdom. Available from: http://discovery.ucl.ac.uk/1401264/1/YuePhDFinal2013.pdf [Accessed 1/12/2017].



Read more..