0% found this document useful (0 votes)
46 views2 pages

Understanding Software Stacks in Development

The document discusses the anatomy of a software application by describing the front end, back end, and database tiers. The front end is what users interact with directly, such as a website, desktop app, or mobile app. It is developed using languages like HTML, CSS, JavaScript, Swift, or Kotlin. The back end handles all application logic and processing using languages like PHP, Python, Ruby, or Go. It communicates with the database tier, which stores user data in tables within a database management system like MySQL, PostgreSQL, or MongoDB.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
46 views2 pages

Understanding Software Stacks in Development

The document discusses the anatomy of a software application by describing the front end, back end, and database tiers. The front end is what users interact with directly, such as a website, desktop app, or mobile app. It is developed using languages like HTML, CSS, JavaScript, Swift, or Kotlin. The back end handles all application logic and processing using languages like PHP, Python, Ruby, or Go. It communicates with the database tier, which stores user data in tables within a database management system like MySQL, PostgreSQL, or MongoDB.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

1.

2 Anatomy of a Software Application


Now you should probably have a general idea of what software is and how it can help in our
day-to-day lives. Let’s take a deeper look into the tiers you will learn about as a FullStack
developer. We will look into what functionalities they have, and what technologies and tools
that you’ll be working with.

Front End / Client

This is the layer most users will be directly interacting with. The front end can be developed
in several ways. You can have a web-based front end, which is in the form of a website or a
web application. If we take our bank as an example, this is what the banking assistant will be
interfacing with to retrieve all the information necessary to provide you a service. This will
mostly be a desktop application, which means it is a separate application installed in that
desktop that enables them to connect to the back end. Desktop applications are normally
developed using programming languages such as C++, C#, Java, etc. They are similar to a
game that you install on your computer, and instead of fighting enemies, the banking assistant
retrieves and updates information. The ATM you use to withdraw or deposit cash can be also
seen as part of the front end.

Another example of a front-end application is the mobile or web application you use to check
your balance or to make an online fund transfer. Unlike with the banking assistant, you can
directly interact with the front end in this situation. To develop these kinds of applications
there are a plethora of languages to choose from. For example, if it is a web page/application,
it can be developed using HTML, CSS, JavaScript, Node, etc. If it is a mobile app,
technologies such as Ionic, Swift, or Kotlin can be used.

Back End / Server

The back end or the server is the backbone of the system. It is responsible for handling and
catering to all needs of the user. Even though the user interacts with the front end, the
backend is where all the work happens. You can think of this as the kitchen of a restaurant.
The front end is the waiters, whom you interact with and inform what you want to have. Then
the waiter goes and informs the kitchen, which is analogous to the backend. This is where the
chefs cut vegetables, cook them and arrange them on a plate with some decorations to be
served. When the order is ready, the waiter will pick up the dish and deliver it to you.

This is a very powerful concept we use in software engineering, called abstraction. As the
user, you do not need to know how your request is catered or what additional functionalities
are needed to fulfill it. The back end takes care of all these tasks, just like the chefs. For
example, from the banking system we discussed, imagine that you want to withdraw some
money from your account. What you see is you enter the card, enter your PIN and withdraw
the amount required. In order to perform these tasks, the backend should verify your identity,
access a central database to check your balance, authorize the transaction and update your
current balance. All these actions are performed by the server in abstraction. Programming
languages such as PHP, Ruby, Python, and Go are used to build such systems. This is also
known as server-side programming.

Database
For the bank to provide you services, it should have access to information about you. For
example, they would need to perform a security check on you to make sure you are the holder
of a certain account. When you register with the bank you provide your details by filling out a
form and this information gets stored on a database at the time of your account creation. A
database can hold various kinds of data. It can hold string data such as your name and
address, integer and float data such as date of birth, account balance and telephone number,
and even image data such as your signature or photo.

There are several types of databases. The most commonly used database type is called
relational databases, which you will learn more about them in future lessons. These types of
databases comprise a set of tables. We call a single row of a table, a record. The backend will
access the database and retrieve the relevant information using queries. A query is a
command or a request to the database to retrieve a set of data points that satisfies a set of
rules. Queries can also be used to update a database. One of the most popular database
management systems (DBMS) is MySQL. There are also other DBMSs such as PostgreSQL,
Cassandra, SQLite, and MongoDB. This was only a basic introduction to the technologies
that are available for a full stack developer and there are many more to learn. We hope
reading about all these interesting technologies got you excited, and hope to see you in the
future lessons where we go into detail about these areas.

Common questions

Powered by AI

Relational databases store data in a structured format using tables, which makes them suitable for applications requiring complex query capabilities and data integrity through relationships and constraints. They use schemas to define the structure of data, which maintains data consistency. Unlike NoSQL databases, which can store unstructured data, relational databases require predefined schemas, making them less flexible but more reliable for transactions. This structure allows for robust data integrity and efficient handling of complex queries, critical for applications such as financial systems, where data accuracy and consistency are paramount.

A full-stack developer might face challenges such as ensuring seamless communication between front-end and back-end systems, managing changes in technology stack compatibility, and maintaining data consistency across different layers. To address these, developers can use RESTful APIs to standardize interactions and ensure decoupled communication. Consistently updating and testing systems as new technologies emerge can help mitigate compatibility issues. Implementing thorough validation and error-handling mechanisms ensures data consistency and system robustness, reducing the potential for bugs and allowing for seamless integration of diverse technologies.

The front end of a software application is the client-side part that users directly interact with. It can be a web-based interface like a website or web application, a desktop application, or a mobile application. Technologies for web front ends include HTML, CSS, JavaScript, and Node. Desktop applications might use languages such as C++, C#, or Java, while mobile applications can be developed using Ionic, Swift, or Kotlin. These applications serve as the interface for users to retrieve or input data and communicate with the back end to fulfill user requests.

In a banking system's software architecture, databases store and manage all critical information needed to perform banking operations. They hold various types of data, including string data like names and addresses, integer and float data such as date of birth and account balances, and even image data like signatures or photos. Databases enable actions such as security checks, balance inquiries, and transaction authorization, allowing the back end to retrieve and update data as needed. They ensure the integrity and availability of crucial account information.

The choice of front-end development frameworks directly impacts user experience by affecting application responsiveness, interface aesthetics, and performance optimization. Frameworks like React or Angular can enhance performance through virtual DOM use and efficient state management, leading to smoother user interaction. Moreover, frameworks come with various tools and libraries that allow developers to create visually appealing and intuitive interfaces, impacting user engagement and satisfaction. However, choosing a framework that aligns poorly with application needs might lead to slower performance or limited functionality, negatively affecting user experience.

Server-side programming enhances the security and functionality of web applications by centralizing sensitive operations like authentication, data validation, and business logic, shielding them from potential client-side vulnerabilities. It allows secure management of data, reducing risks of SQL injection, cross-site scripting, and other attacks by keeping sensitive code and data processing away from the user interface. Server-side programming also enables efficient handling of user requests, data storage, and retrieval, ensuring reliable and consistent application performance essential for a secure and functional web environment.

Choosing the right DBMS is crucial in full-stack development because it affects data management efficiency, scalability, data integrity, and the application's ability to handle concurrency and complex queries. The right DBMS can optimize the performance of an application and ensure it meets its scalability and data integrity needs. Popular DBMSs include MySQL, known for its ease of use and versatility; PostgreSQL, which offers advanced features and compliance with standards; SQLite, which is lightweight and often used for mobile apps; and MongoDB, suited for applications needing high flexibility with schema design.

Abstraction in the interaction between the front end and back end of a banking application allows users to perform complex operations without understanding the underlying processes. For example, when a user requests to withdraw money via an ATM, the front end collects inputs, such as card details and PIN, and communicates these to the back end. The back end then handles the verification, balance check, and transaction processing, abstracting these details from the user. This separation simplifies user interactions and safeguards the complexity of backend operations, similar to how a waiter abstracts the process of cooking in a kitchen.

The back end of a software application resembles a restaurant kitchen in that it is responsible for processing user requests, much like chefs prepare the food based on a waiter's request. Despite the user interacting primarily with the front end, such as placing an order with a waiter, all the actual processing occurs in the back end, akin to preparing meals in a kitchen. Common programming languages for building back-end systems include PHP, Ruby, Python, and Go. These languages facilitate server-side programming where operations such as authentication, data validation, and database management are handled.

Queries in a database are used to request and manipulate data, forming the basis for extracting useful information for applications. They function by using specific commands to retrieve, update, insert, or delete data from the database, complying with the rules set by the database schema. Their significance lies in enabling applications to perform operations like data retrieval for user queries, updating user information, and ensuring data integrity and security. Properly written queries enhance database performance and allow for efficient, accurate data handling critical for application functionality.

You might also like