-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdatabases.html
157 lines (153 loc) · 11.9 KB
/
databases.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Favicon and Icons -->
<link rel="icon" href="https://Smokey027.github.io/favicon.ico" type="image/x-icon">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<!-- Meta Tags -->
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Databases page of Scot's ePortfolio.">
<!-- Title -->
<title>Databases - Scot C. Batton's ePortfolio</title>
<!-- Styles -->
<style>
body {
font-family: Arial, sans-serif;
line-height: 1.6;
margin: 0;
padding: 0;
background-color: #f0f0f0;
color: #333;
}
header {
padding: 20px;
text-align: center;
background-image: url('red-3124617_1280.png');
background-size: cover;
background-position: center;
color: black;
font-family: 'Copperplate Gothic Bold', sans-serif;
}
header h1 {
font-size: 28px;
margin: 5px 0;
}
header p {
font-size: 24px;
margin: 5px 0;
}
nav {
background-color: #333;
color: #fff;
padding: 10px;
text-align: center;
}
nav a {
color: #fff;
margin: 0 15px;
text-decoration: none;
cursor: pointer;
}
main {
padding: 20px;
max-width: 800px;
margin: 0 auto;
background-color: #fff;
}
footer {
padding: 20px;
background-color: #888;
color: #fff;
text-align: center;
}
section {
margin-bottom: 40px;
}
h2, h3 {
color: #4169e1;
}
a {
color: #4169e1;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
.image-container {
position: relative;
text-align: center;
}
.img-center {
display: block;
margin: 0 auto;
max-width: 100%;
position: relative;
transform: scaleY(0.75);
}
.text-overlay {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: white;
font-size: 24px;
font-weight: bold;
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.7);
}
.github-button {
display: inline-block;
margin-top: 10px;
padding: 10px 20px;
background-color: #24292e;
color: #ffffff;
border-radius: 5px;
text-decoration: none;
font-weight: bold;
}
</style>
</head>
<body>
<header>
<h1>Scot C. Batton</h1>
<p>ePortfolio</p>
<p>CS-499 Computer Science Capstone</p>
<a href="https://github.com/Smokey027/Smokey027.github.io" class="github-button" target="_blank" rel="noopener noreferrer">View Project on GitHub</a>
</header>
<nav>
<a href="index.html#welcome">Welcome</a>
<a href="index.html#self-assessment">Professional Self-Assessment</a>
<a href="refinement-plan-and-code-review.html">Enhancement Plan and Code Review</a>
<a href="software-design.html">Software Design</a>
<a href="algorithms.html">Algorithms</a>
<a href="databases.html">Databases</a>
</nav>
<main>
<section id="databases">
<h2><a href="databases.html">Databases</a></h2>
<div class="image-container">
<img class="img-center" src="database.jpg" alt="Database Image" title="Database Image">
<div class="text-overlay">Databases</div>
</div>
<a href="Module 5 Narrative (Databases).docx" title="Database Narrative">Database Narrative</a>
<p style ="text-indent: 40px;">For the capstone project of my bachelor's degree in computer science I had many artifact options to choose to enhance. To best show my skills and achieve the course outcomes I have chosen to enhance an Event Tracking Mobile Android application that I created for the Android operating system using Android Studio. The event tracking application artifact was created during <strong>CS-360: Mobile Architecture and Design</strong>. This class was attended during the 2023-2024 school year at Southern New Hampshire University. The application that I created is designed to manage events for users of the application. The user can add, edit, track, and delete events, manage the details within the event, receive text alerts about the events, and track multiple events if needed. The narrative associated with this section of the project will focus on databases. The enhancing of the database, the skills associated with those enhancements, and the course outcomes achieved will all be discussed in the following sections.
<p style ="text-indent: 40px;">As described in the <a href="refinement-plan-and-code-review.html" title="Enhancement Plan and Code Review">Enhancement Plan and Code Review</a>, the artifact selected for the databases category is the <strong>Mobile Event Tracking Application</strong>. The artifact that had the ability to showcase my coding and creative skills along with my ability to understand an assignment and follow instructions. The inclusion of the event tracking application in my ePortfolio allows me the ability to showcase my skills in software design and engineering, algorithms and data structures, and most recently databases. This narrative will focus on my skills in secure data handling techniques, the implementation of encryption methods, the security of the database, error handling within the database, and SMS text permissions for the user. I use a Database helper class for managing user credentials and events, this shows my skills in structured data handling. I used AES encryption for passwords in my SmsPermissionActivity and key management in KeystoreUtil. This encryption shows my skills in encryption methods and reaffirms my ability to securely handle data. I also provide error handling in SmsPermissionActivity by catching exceptions when generating encryption keys and encrypting passwords. I have also shown skills in database security by protecting data both at rest and in transit with my encryption methods. The artifact was enhanced by providing encryption to the application, securing the database, and adding a NextActivity class and xml layout file to ensure that when login is successful, the user will be taken to another page.</p>
<p style ="text-indent: 40px;">The course outcomes that have been provided for this capstone project have been thoughtfully included within my project. I have developed with the outcomes in mind and have met all these outcomes at different times of the project but have achieved all five of the outcomes across the totality of the application. The outcomes that are included in this section of the application, databases, have been met and consist of outcomes 3, 4, and 5. Outcomes three and four have been met in prior categories but outcomes five, develop a security mindset that anticipates adversarial exploits in software architecture and designs to expose potential vulnerabilities, mitigate design flaws, and ensure privacy and enhanced security of data and resources, has been added to this artifact. This section of the capstone has been thoroughly researched and enhancements have been thought out. Through encryption, secure data handling, error handling, and additional pages I have been able to improve the user experience and the performance and security of the application.</p>
<p style ="text-indent: 40px;">When performing the necessary changes to the artifact in the database category, I used many different skills to achieve my anticipated course outcomes. In the SmsPermissionActivity.java class I was able to use AES encryption to secure user passwords before storing or validating them. Using this type of encryption provides a tradeoff of a strong level of security and good performance. In the Database.java and EventAdapter.java classes I use SQLite and managing the users’ credentials and events. The tradeoff of SQLite is that it’s easy to use with Android but may not handle large sets of data. The use of these methods and the attention to security and performance of the database achieves <strong>Outcome 3</strong>. I achieved this by designing and evaluating computing solutions that solve a given problem using algorithmic principles and computer science practices and standards appropriate to its solution, while managing the trade-offs involved in design choices (data structures and algorithms). I achieved course <strong>Outcome 4</strong> in this category by demonstrating an ability to use well-founded and innovative techniques, skills, and tools in computing practices for the purpose of implementing computer solutions that deliver value and accomplish industry-specific goals (software engineering/design/database). This is achieved through NextActivity.java and RegistrationActivity.java. I show an understanding of Android activity lifecycle with the use of BottomNavigationView and button animations. This enhances user engagement and feedback. I also provide secure data handling in Database.java class. This is done with a structured approach and secure queries. The only outcome that I have not achieved so far in the enhancements has been outcome 5. I have achieved <strong>Outcome 5</strong> in this category through different layers of secure operations. I used AES encryption and key management to secure sensitive data in the SmsPermissionActivity.java and KeystoreUtil.java classes. In the RegistrationActivity.java class I validate user input for username and password as a part of a secure mindset. In this category I was provide error handling and Unit and Integration testing to test these measures. I have achieved <strong>Outcome 5</strong> by developing a security mindset that anticipates adversarial exploits in software architecture and designs to expose potential vulnerabilities, mitigate design flaws, and ensure privacy and enhanced security of data and resources.</p>
<p style ="text-indent: 40px;">As I worked on the artifact for the event tracking application, I have learning and have faced challenges. The category of databases that is being discussed in this narrative was an area in which I have had the least amount of experience. I have worked with MySQL and SQLite in the past but providing the proper layers of protection and performance together are something I have learned more to do this week. The performance and data handling of the database is something that can cause your application to not function or to function slowly and with security flaws that put the user at risk. I learned the subtle ways that encryption, sms permissions, and error handling can provide a more secure and robust application without the user knowing it is happening. This must all happen with limited interference to the user and without a tradeoff in performance. The challenge of authentication has been the biggest challenge of this artifact. There is still work that needs done on 2FA authentication and ensuring that users can accept or deny sms permissions. </p>
</p>
<p style ="text-indent: 40px;">
Explore the application and download the Databases code Enhancement below:
<ul>
<li><a href="https://Smokey027.github.io/EventTrackingApp/Database.zip" download>Download Code Enhancement</a></li>
</ul
</section>
</main>
<footer>
<p>© 2024 Scot C. Batton. All rights reserved.</p>
</footer>
</body>
</html>