0% found this document useful (0 votes)
3 views27 pages

Voting System Development Guidelines

The document outlines requirements for a distributed programming test involving the development of a voting system with both a web and mobile application. The web application is to allow an administrator to manage voting events and view results, while the mobile app allows users to view events, vote once in open events, and see results for closed events. It provides details on required functionality, technical specifications, deliverables, and a compliance checklist for grading.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views27 pages

Voting System Development Guidelines

The document outlines requirements for a distributed programming test involving the development of a voting system with both a web and mobile application. The web application is to allow an administrator to manage voting events and view results, while the mobile app allows users to view events, vote once in open events, and see results for closed events. It provides details on required functionality, technical specifications, deliverables, and a compliance checklist for grading.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Distributed Programming - Test 2

Teacher Juan Carlos Zuluaga

Value 20%

Deadline Second class of Easter week

Terms ● Individual work.


● The note depends on the sustentation.
● If partial or total copy is found between jobs, the note will be 0.0 for everyone
involved.
● All software, comments, commits must be in English.
● The WEB Backend interface must be displayed in English.
● The interface of the Frontend Mobile App English (default language) Spanish and the
language that corresponds according to the instructions.
● Use the MVC pattern for the WEB application. It must be done in .NET Core and
apply all the concepts seen in the course.
● Use the MVVM pattern for the mobile application. It must be done in Xamarin Forms
and apply all the concepts seen in the course.
● Your code must be ordered, clear and you must follow all the good programming
practices that we have seen so far in class.
● All sources must reside in the private GitHub repository and a chronological progress
must be observed in the completed Commits.
● No work is received that is not delivered as described later in this document.
● The solution must be published on Azure.
● You must design your own DB according to the requirements.
● Everything must be implemented by repositories, any class mustn't exceed the data
directly.

Request
Develop a voting system. In this system you can register different voting events, for example: president of the
year 2020, Do you agree with the new metro line? Do you prefer Rock or Reggaeton? ETC. The people who
register in the system will be able to vote only once for each voting event. And then the administrator, will be
able to consult the result of each voting event.

Functionality in the WEB module


● It can only be accessed by the administrator user.

● You can register multiple voting events which must have at least the following attributes:

○ Name: event vote name, e.g. Do you agree with a new pool for the ITM? or; Student
representative for 2019.
○ Description: A detailed explanation of the event.
○ Start Date: Date and time at which you can start voting.
○ End Date: Date and time at which the vote is closed.
○ Candidates: A list of candidates or options that must have the following attributes:

■ Name: candidate or option name, e.g. Yes / No (for the case of the pool) or Cristina
López, Martin Rios, Luis Cardona, Blank (for the case of Student representative).
■ Proposal: A brief description of the proposal of the candidate or of what implies the
option of the query in question..
■ Image: Photo of the candidate or option.

● When the voting event ends, it should be possible to check how many votes each candidate or each
option obtained and to easily identify who or what option won.

Functionality in the mobile App


● Login / Logout / Register new / Change data / Change password / Remember password. For users who
want to vote in the system, following all the guidelines explained in class (including safe consumption of
Rest). Users must have the following additional attributes:
○ First name: voter’s first name.
○ Last Name: voter’s last name.
○ Occupation: voter’s occupation (Student, Law, Doctor, ETC).
○ Stratum: voter’s stratum (1, 2, 3, 4, 5, 6).
○ Gender: voter’s occupation (male, female, other).
○ Birthdate: voter’s birthdate.
○ City: voter’s city (you must implement select a country first).

Note: don’t ask for the address.

● List all the organized voting events, showing first those that the user has not voted for and then
showing what the user has already voted.

● When selecting a voting event for which you have NOT voted and it’s still open, you must show the list
of candidates or options with the photo, proposal and give the opportunity to vote once for this event.

● When I selected a voting event which is still open but a vote was already made. The candidate is
shown for which you voted but you should NOT let it change.

● When I select a voting event that is already closed, it must show in descending order the candidates or
options that had the most votes.

● The application must be multi-language, must be in English (default language), Spanish and this
language depends on your document number:

Documents finalized in: Language

0, 5 French

1, 6 German

2, 7 Portuguese

3, 8 Italian

4, 9 Dutch

● You App Look and Feel, must be pretty different than it was explained in class. I mean, you must
change the login and all your UI appearance. Be original!

● You can watch a complete explanation of this in:


[Link]

● You can download the App Sample from Google


Play:[Link] (coming soon in Apple
Store)
Compliance checklist
Accomplishment
Module Achievement Weight Observation
(Full, Partial, No)

WEB Accessible only by the administrator 5

WEB Manage event votes with his candidates or options 12


WEB Show vote results when the event finish 12
App Login / Logout 5
App Register new users 5
App Modify users / Change password 5
App Recover password 5
App Lists event votes 10
App Allow to vote once time 11
App Show previous vote 10
App Show vote results 10
App Multi language 10
TOTAL 100

Deliverable
The delivery day, you must send an email to jzuluaga55@[Link], It must attached a document with the
following:

● Full name and group.


● URL of the repository (add user jzuluaga55@[Link] as collaborator).
● URL of the publication in Azure.
● Users and password to enter the system.
● Diagram entity relationship that you implemented to reach the requirement.
● Check lists of compliance completed.
● Screenshots where all the obtained achievements are evidenced.

Example document to deliver:

Fullname Juan Carlos Zuluaga Cardona

Group 1

Repository URL [Link]

Azure URL [Link]

Admin user jzuluaga55@[Link] Password: 123456

Other users to test user1, user2, user3, …, user20@[Link], Password for all: 123456

Diagram entity relationship

Draw your own diagram. Like this example:

Compliance checklist (explample)

My
Accomplishment
Module Achievement Weight Observation Auto
(Full, Partial, No)
Note

WEB Accessible only by the administrator 5 Full See images 1, 2, 3 5

Manage event votes with his candidates


WEB 12 Full See images 3, 4, 5, 6 12
or options
I can't complete this
WEB Show vote results when the event finish 12 No 0
feature

App Login / Logout 5 Full See images 7, 8, 9 5

App Register new users 5 Full See images 10, 11, 12 5

I can't complete the


App Modify users / Change password 5 Partial change password. See 3
images 13, 14

I can't complete this


App Recover password 5 No 0
feature
App Lists event votes 10 Full See images 15, 16 10

App Allow to vote once time 11 Full See images 17, 18, 19 11

App Show previous vote 10 Full See images 20, 21 10

I can't complete this


App Show vote results 10 No 0
feature
Only in English and
App Multi language 10 Partial 8
Spanish
TOTAL 100 69

Screen Shots Evidences

And then show all the images referenced in compliance checklist that prove your achievements.

Example finished application


This is the teacher solution, it can serve to guide you. But you will try to do something different, using different
colors, images and in general a pretty different look and feel.

In Web
Login: Register:

Send email instructions: Email to confirm register:


User confirmation: Password recovery:

Email to recover password: Reset password:

Countries:

Countries details:
Event votes:

Event votes details:

Results:
Results details:

In App

On Phone

Icon: Splash:
Login: Event list:

New User: Register confirmation message:


Email confirmation: Menú:

Modify user: Modify password:

Forgot your password: Event vote don’t start:


Confirm vote: Vote confirm message:

When you already vote: Vote results:


Multi language Spanish: Multi language German:

Multi language French: Multi language Portuguese:


Multi language Italian: Multi language Dutch:
On Tablet
Recommendations
● You don’t need to create the same solution structure that we use in class. You can create some like
that only with Xamarin Forms Front:
● It is recommended to have several users in the seeder (at least 20), to be able to test the votes for the
different options. Example: user1@[Link], to user20@[Link], all with the same password to
test easily.

● I recommend you start today. I wish you so lucky. Happy coding!

Common questions

Powered by AI

Ensuring secure user authentication and voting involves implementing robust encryption protocols for data transmission and storage, including passwords and votes. Using secure HTTPS connections, hashing passwords with salts, and employing OAuth for authentication APIs are critical. The application must also include measures to prevent common web threats such as SQL injection, cross-site scripting (XSS), and man-in-the-middle attacks. It should validate inputs and offer features like two-factor authentication to enhance security. These considerations protect user credentials and voting integrity, preventing unauthorized access or tampering in the voting process .

The web module requires functionalities for event management by an administrator, including registering voting events with attributes like name, description, start and end dates, and candidates. The ability to display voting results after an event ends is also essential. The mobile app must include user authentication features (login, logout, register, change data, change password), listing unvoted and voted events, and showing election results in descending order of votes. It must allow users to vote once per event and prevent vote changes for open events already voted. The application should support multiple languages and have a unique UI appearance .

Requiring an original UI appearance influences the development process by encouraging creativity and innovation. Developers must design a unique user interface that differentiates from standard templates or class practices, fostering an environment of problem-solving and artistic expression. This requirement challenges developers to consider not only functionality but also aesthetics and user engagement, potentially leading to more novel design solutions that can improve user experience. Additionally, it requires developers to spend more time on design and prototyping, ensuring that the application not only works well but also appeals visually to users .

The use of MVC (Model-View-Controller) for the web application and MVVM (Model-View-ViewModel) for the mobile application enhances the organization and maintainability of the voting system. MVC separates the application into three interconnected components, allowing for independent development and testing of the UI, business logic, and data handling. MVVM provides a clear separation between the GUI and business logic, facilitating two-way data binding and making the application easier to test and debug. By adhering to these patterns, developers can create scalable and modular applications, crucial for complex systems like a voting platform .

Designing the database for the voting system involves careful consideration of data normalization, ensuring referential integrity, and structuring for efficient querying. The database must handle entities like users, voting events, candidates, and votes, with foreign keys maintaining relationships between them. Each voting event should link to its options or candidates, storing votes securely. Adhering to these considerations prevents data anomalies, ensures data consistency, and optimizes retrieval performance, vital for querying voting results and storing large volumes of user data securely as per project requirements .

Using a private GitHub repository with chronological commits promotes version control best practices, allowing developers to track changes, understand development progression, and rollback if necessary. Chronological commits provide a detailed history of the codebase evolution, which is beneficial for both the developers and the assessors. It fosters accountability, showing the developer’s contribution and progress, crucial during the evaluation phase. It also facilitates collaboration, offering clear insights into when and what changes were made, which is crucial in maintaining code quality and ensuring project milestones are effectively met .

GitHub plays a central role in collaborative software development by providing a platform for code hosting, version control, and tracking progress through commits. It allows multiple developers to work together, offering tools to handle merge conflicts, review code, and document progress. GitHub ensures that all project development is centralized, with the ability to handle branching and pull requests, which is vital for collaborative efforts. By maintaining a chronological commit history, the platform aids in tracking individual contributions and software changes over time, as required by the project guidelines .

Publishing the voting system application on Azure is crucial for ensuring scalability, reliability, and accessibility. It allows the application to be accessible from anywhere, providing a seamless experience for the administrator and users. Azure's cloud services offer enhanced security, disaster recovery, and load balancing, which are vital for handling varying loads during different voting events, ensuring that the application runs smoothly without downtime. Additionally, Azure facilitates easier updates and maintenance, essential for continuous delivery and integration practices .

Prioritizing voting events that users have not yet participated in ensures that the most relevant and actionable information is presented first, streamlining user interaction by highlighting opportunities that demand attention. This approach minimizes the cognitive load on users, helping them focus on tasks required for completion and improving the overall efficiency of the voting process. This design choice aligns with user-centric principles, enhancing usability and ultimately increasing the likelihood that users engage with available voting events .

Implementing a multilingual user interface significantly enhances user experience by ensuring accessibility to a broader audience, breaking language barriers. Users can interact with the application in their preferred language, increasing user engagement and satisfaction. It accommodates diverse users, fulfilling organizational inclusivity goals, and can potentially increase voter turnout, as users are more comfortable using a system in their native language. Furthermore, it demonstrates cultural sensitivity, which is essential in user-centric applications like voting systems .

You might also like