0% found this document useful (0 votes)
87 views10 pages

Unit Part2

The document discusses different types of frameworks used in software development including web, mobile, and data science frameworks. It explains what frameworks are, why they are used, popular frontend and backend web frameworks like Angular, Vue, Django and more. The document also covers what makes a good framework and importance of using frameworks.
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)
87 views10 pages

Unit Part2

The document discusses different types of frameworks used in software development including web, mobile, and data science frameworks. It explains what frameworks are, why they are used, popular frontend and backend web frameworks like Angular, Vue, Django and more. The document also covers what makes a good framework and importance of using frameworks.
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
You are on page 1/ 10

ECS Unit-1

Frameworks, Packages, IDE’s

What is a Framework?

 A framework is like a structure that provides a base for the application


development process. With the help of a framework, you can avoid writing
everything from scratch. Frameworks provide a set of tools and elements
that help in the speedy development process. It acts like a template that can
be used and even modified to meet the project requirements.
 Frameworks are based on programming languages. Some popular
frameworks that are most used are Django, Flutter, Angular, Vue,
PyTorch, Spring Boot, React Native, Apache Spark, Ionic, etc. These
frameworks allow developers to create robust and rich functionalities
software.

Why is Framework Used?

Writing the code from scratch is a tedious task full of possible risks and errors. You
need to make the code clean, well-tested, bugs and errors free. It will be difficult for
other developers to understand the code and work on it. So, it is better to work with
the frameworks that meet your requirements. They make the development process
easy with fewer errors. It is a general template that can be used and modified as
per the requirement. It will be easy for others to understand your code as they are
also familiar with frameworks.
Frameworks provide many advantages such as:
 Easy to test your code and debug it.
 Clean code is much easy to understand and work with.
 Reduces redundancy of code in the project.
 Reduces the time and cost of the project with the enhanced application.
 Features and functionalities provided by the framework can be modified
and extended.

Types of Frameworks:

1.Web Development Frameworks:


Web development refers to developing and maintaining
websites and web applications. It can be a single web page, either a static
or dynamic website or a web application. Web development frameworks are used
in the development of websites and web applications by serving web resources,
web services, and APIs to developers. The web development frameworks can be
divided into two: Front-end frameworks and Back-end frameworks.

A. Front-End Frameworks
Frontend web development frameworks are used to create the user interface of
the website that is seen and used by the users. They develop the client side of the
application. Some of the popular front-end web development frameworks are
Angular and Vue.js.
1. Angular
Angular is an open-source TypeScript-based framework. It is created and
maintained by Google. Angular provides many features and services that can help
in developing websites and Progressive Web Apps (PWAs). Angular makes use
of TypeScript code on websites and gives proper responses to the user’s input in
less time without writing any extra lines of code. It allows the integration of third-
party tools. There are many top companies that make use of Angular framework
such as Google, PayPal, Nike, Upwork, etc.
2. VueJS
Vue.js is an open-source JavaScript-based frontend web development framework.
It is built using HTML, CSS, and JavaScript and supports Model-View-View
Model (MVVM) architecture. It is easy to learn and understand and has large
community support. Many top companies use the Vue.js framework such
as Behance, Trustpilot, etc.
3. Bootstrap
Bootstrap is an open-source CSS-based framework. It is developed with the help of
HTML, CSS, and JavaScript. It helps in creating websites that are easy and fast to
develop, highly responsive, and platform-independent. Nowadays, all websites are
suitable for all kinds of devices (desktops, smartphones, tablets) thanks to
Bootstrap. Many top companies use the Bootstrap framework such as Airbnb,
Netflix, Uber, etc.

B. Back-End Frameworks
Backend web development frameworks are used on the server side of the
application. They provide backend functionalities responsible for handling
requests, databases, communicating with APIs, etc. Some of the popular backend
web development frameworks are Ruby on Rails, Django, PHP, etc.
1. Ruby on Rails
Ruby on Rails is an open-source Ruby-based framework. Ruby is responsible for
providing secure and scalable software. It is based on Model View
Controller (MVC) architecture and third-party libraries can also be integrated. There
are many top companies that make use of the Ruby on Rails framework such as
CafePress, Airbnb, etc.
2. Django
Django is an open-source Python-based web framework. It provides a speedy
development of web applications and ensures that they are scalable and flexible.
Django is based on Model Template View (MTV) architecture and is compatible
with any frontend framework. There are many top companies that make use of
Django such as YouTube, Instagram, Spotify, etc.
3. Spring Boot
Spring Boot is an open-source Java-based web framework. It enables developers
to develop production-ready and standalone applications. Spring Boot provides
high flexibility and scalability to websites. Many top companies use Spring Boot
such as Netflix, Uber, Intuit, LinkedIn, etc.

2. Mobile Application Framework


Mobile application frameworks are used to develop mobile applications for
both Android and iOS. These applications can be either native, hybrid, or cross-
platform as per the requirements.
Some of the best frameworks for mobile app development are Flutter, React
Native, and Ionic.
1. Flutter
Flutter is an open-source mobile application framework developed and maintained
by Google. It works with Dart programming language to create cross-
platform applications compatible with Android, iOS, Web, and Desktop. Flutter is
used by many top companies such as Google, Microsoft, Amazon, eBay, Adobe,
etc.
2. React Native
React Native is an open-source JavaScript framework created and maintained
by Meta. React Native can be used to develop applications that are compatible
with Android, iOS, macOS, Web, and Windows. React Native is used by many top
companies such as Facebook, Instagram, Skype, Tesla, etc.

3. Data Science Frameworks


Data Science is a field that collects data from various sources and then analyses
them by applying various algorithms and statistics. Majorly, data scientists work
with Python language hence many Python frameworks are used in data science:
1. PyTorch
PyTorch is an open-source data science framework based on Python and Torch
library. It is used to create deep learning models and develop artificial neural
networks. PyTorch is also used in Natural Language Processing (NLP), image
classification, object and obstacle detection, etc.
2. Apache Spark
Apache Spark is an open-source framework that is used in big data analytics. It
supports various programming languages such as Scala, R, Python, and Java and
is hence widely used by data scientists. Apache Spark processes real-time streams
used in machine learning, analyses of large amounts of data, and predictive
analytics.

What is a good framework?

A good framework is a structured set of guidelines, methodologies, tools, and best


practices designed to facilitate the development, implementation, or understanding of
complex systems, processes, or concepts. Whether it's in software development,
project management, business strategy, or any other field, a good framework should
possess several key characteristics:

1. Clarity: It should provide clear and concise guidance on how to approach a


problem or task.
2. Flexibility: A good framework should be adaptable to various situations and
contexts without losing its effectiveness.
3. Scalability: It should be scalable to accommodate different project sizes or
organizational scales.
4. Accessibility: The framework should be accessible to all stakeholders
involved, regardless of their level of expertise or background.
5. Practicality: It should offer practical solutions and actionable steps that can
be easily implemented.
6. Robustness: The framework should be resilient to changes and able to
withstand unforeseen challenges or disruptions.
7. Collaboration: It should promote collaboration and communication among
team members or stakeholders.
8. Continuous Improvement: A good framework should be open to feedback
and iteration, allowing for continuous improvement over time.

Examples of popular frameworks include:

 Agile
 SCRUM
 Design Thinking
 Lean Startup
 Six Sigma
 Kanban

Importance of Frameworks:
Frameworks serve several important purposes across various domains:

1. Structured Approach: Frameworks provide a structured approach to solving


complex problems or achieving specific objectives. They offer a roadmap or
guideline, saving time and effort by providing a proven method for tackling
common challenges.
2. Efficiency: By leveraging established best practices and methodologies,
frameworks help streamline processes, reducing redundancy and minimizing
errors. This efficiency often leads to cost savings and increased productivity.
3. Consistency: Frameworks promote consistency in decision-making and
execution. They establish common terminology, processes, and standards,
ensuring that everyone involved is on the same page and working towards
shared goals.
4. Risk Reduction: Many frameworks incorporate risk management principles,
helping organizations identify and mitigate potential risks before they escalate
into larger issues. This proactive approach can prevent costly mistakes and
setbacks.
5. Scalability: Frameworks are designed to be scalable, meaning they can
accommodate different project sizes, organizational structures, or levels of
complexity. This scalability allows businesses to grow and adapt without
needing to reinvent their processes from scratch.
6. Learning and Development: Frameworks often come with educational
resources, training materials, and certification programs. This enables
individuals and teams to acquire new skills, deepen their expertise, and stay
up-to-date with industry best practices.
7. Continuous Improvement: Many frameworks emphasize the importance of
continuous improvement and feedback loops. By regularly evaluating
performance and seeking opportunities for optimization, organizations can
stay competitive and responsive to changing market conditions.
8. Alignment with Goals: Frameworks help align activities with strategic
objectives. By providing a clear framework for decision-making and resource
allocation, organizations can ensure that their efforts are directed towards
achieving desired outcomes.

What is a Software Package?

A software package can be defined as a bundled collection of computer programs,


files, and other required resources all grouped together for the process of
distribution and installation. software packages are responsible for encapsulating
everything that is required for the proper working of particular software applications
seamlessly on the user’s software some common examples of software packages
are executable binaries, libraries, configuration files, documentation, and any other
assets vital for the software’s operation.

Types of Software Packages


1. Application Suites
Application Suites are packages of different computer programs that work together
to help users do any specific tasks the application suites mainly include multiple
programs that are designed to work together seamlessly and provide users with a
range of functionalities in a single application and these suites make it very easy
for user to use multiple tools that user require for completion of any particular job,
all in one package so Instead of getting each program separately, you can get them
all together, which is convenient and often more cost-effective
Example: Microsoft Office (Word, Excel, PowerPoint)
2. System Software
System software is like the nervous system of the computer so simply system
software is the manager of your computer these programs hold the responsibilities
of managing all the essential functions of a computer, like making sure
your keyboard, mouse, and screen work together, managing files, and keeping
your computer safe and stable and also allowing your computer’s hardware and
software to work together smoothly.
Example: operating systems (Windows, macOS, Linux) and device drivers
3. Development Tools
Developer tools are toolkits for building software that include almost everything a
programmer requires for creation, testing, and debugging any software applications
in short Development tools are toolkits for people who create software these tools
include things like compilers, which turn the code developers write into programs
the computer can understand interpreters, which help run code line by line
and debuggers, which help find and fix mistakes in code.

Common Software Packaging Formats


There are several software packaging formats available so the format of a software
package determines how it’s distributed, installed, and managed. Below are some
common software packaging formats used across different operating systems.
1. Windows
 MSI (Microsoft Installer): MSI offers granular control over installation
and removal so is widely used by Windows applications,
 EXE (Executable file): EXE files are often used for smaller applications
so they are simple format for standalone programs.
2. macOS
 PKG: PKG have function similar to MSI so they are Standard format for
installing applications on macOS.
 DMG (Disk Image): DMG are Often used for the process of distributing
installers as virtual disk images that need to be mounted before
installation.
3. Linux
 RPM (Red Hat Package Manager): RPM offer great dependency
management so they become Popular format to be used in Red Hat-
based distributions and derivatives
 DEB (Debian package): DEB are similar in structure to RPM that are
Used in Debian-based distributions.
4. Mobile
 APK (Android Package Kit): the standard format used on android
devices for installing any applications.
 IPA (iOS App): The format used for distributing and installing apps on
Apple devices.
5. Some other Notable Formats
 WAR (Web Application Archive): WAR are Used for deploying web
applications on servers like Tomcat or Jetty.
 JAR (Java Archive): JAR are software package used to bind Java class
files and resources together.
 Docker Image: Docker Contains a complete software environment that is
isolated from the host system.

Key Components of Software Packages


 Executable Programs: The heart of any software package lies in its
executable programs or binaries. These are the files that contain the
instructions necessary to carry out specific tasks or functions within the
software.
 Libraries: Many software packages rely on external libraries or modules
to extend their functionality or provide additional features. These libraries
are often bundled with the package to ensure compatibility and ease of
installation.
 Configuration Files: Configuration files are files responsible for dictating
how the software behaves under Different circumstances.
 Documentation: Comprehensive documentation is very important for
users to it inform user how to use the software effectively. Software
packages commonly include user manuals and guides to implement this
process.
 Dependencies: In some cases, software packages may rely on other
software components or dependencies to function correctly. These
dependencies are often listed explicitly, ensuring that users are aware of
any additional software required for installation.

Advantage of Software Packages


 Convenience: Installing a single package for multiple related programs
saves time and simplifies the process.
 Cost-Effectiveness: Packages often offer discounts compared to buying
individual programs separately.
 Compatibility: Components within a package are designed to work
seamlessly together, reducing compatibility issues.
 Updates: Managing updates for all programs in a package can be easier
than updating them individually.

Disadvantages of Software Packages


 Limited Flexibility: Software packages mainly arrive with predefined
features which limits the ability to customize the software according to
specific requirements.
 System requirements: Package requirements might not align with your
system configuration and lead to compatibility issues.
 Version restrictions: Updates might break compatibility with other
installed packages.
 Security Risks: Software packages may introduce security
vulnerabilities, particularly if they are not regularly updated or maintained.
 Cost: While software packages may offer cost savings compared to
purchasing individual software components separately but still they can
be expensive particularly for enterprise-level solutions or subscription-
based services.

Integrated Development Environment

• An IDE is software that combines commonly used developer tools into a


compact GUI application.
• One can directly get on to building their applications without going through
the hardship of manually configuring and integrating the development
environment.

Features: Integrated Development Environments (IDEs) typically offer a range of


features designed to streamline the software development process. While specific
features can vary depending on the IDE, some standard features include:

1. Code Editor: A primary component of any IDE, the code editor provides a
platform for writing, editing, and formatting code. It often includes features
such as syntax highlighting, code completion, and code folding to enhance
productivity.
2. Compiler/Interpreter Integration: IDEs often integrate compilers or
interpreters for various programming languages, allowing developers to
compile or run their code directly within the IDE environment.
3. Debugger: Debugging tools enable developers to identify and fix errors in
their code. IDEs typically provide features such as breakpoints, variable
inspection, and step-through debugging to aid in the debugging process.
4. Version Control Integration: Many IDEs integrate with version control
systems such as Git, enabling developers to manage code repositories, track
changes, and collaborate with team members more effectively.
5. Project Management: IDEs often include project management tools to help
organize and manage software projects. This may include features such as
project templates, file organization, and build configuration.
6. Code Refactoring: IDEs offer tools for code refactoring, allowing developers
to restructure and optimize their codebase without changing its external
behavior. Common refactoring actions include renaming variables, extracting
methods, and optimizing imports.
7. Code Navigation: IDEs facilitate code navigation by providing features such
as code navigation shortcuts, symbol lookup, and context-aware search
functionality. This helps developers quickly navigate large codebases and
locate specific code elements.
8. Code Analysis: IDEs often include static code analysis tools that help identify
potential errors, inefficiencies, or code smells in the codebase. This can help
improve code quality and maintainability.
9. Integration with External Tools: IDEs typically support integration with
external development tools and utilities, such as build automation tools,
dependency management systems, and testing frameworks.
10. Customization and Extensibility: Many IDEs allow users to customize the
environment to suit their preferences and workflow. This may include
customizing keyboard shortcuts, installing plugins or extensions, and
configuring code formatting options.
11. Documentation and Help Resources: IDEs often provide built-in
documentation and help resources, including language reference
documentation, API documentation, and tutorials to assist developers in
learning and using the IDE effectively.

Why do Developers Use IDE?

By providing a single, unified environment for managing all aspects of the


development process, IDEs can help improve a developer’s productivity, code
quality, and overall development experience.
1. Productivity: By combining common activities such as editing code, building
executables, debugging, and testing as part of software/application development,
IDEs help by reducing time and increasing overall productivity.
2. Code Quality: IDEs come with built-in tools as a part of a single GUI, through
which developers can execute actions without switching between applications.
Furthermore, it can also help in Syntax highlighting, code refactoring, and code
analysis boosting overall code quality.
3. Integrated Environment: IDEs come pre-built with a combination of
development tools that allow developers to start programming new applications
quickly. With IDEs, it is no longer necessary to manually configure and integrate
numerous utilities as part of the setup procedure. Additionally, since every utility is
available on the same workbench, developers don’t have to spend hours learning
how to use each one separately.
4. Customizability: By incorporating customization options ranging from custom
color schemes, and keyboard shortcuts, to choosing unique layouts, different
plugins, and add-ons; IDEs enable developers to customize their environment to
their unique needs and tastes, improving the comfort and efficiency of the
development process.
Types of IDEs:
IDEs come in various forms, some are designed to work for a specific language
whereas some are targeted to a particular platform like mobile devices. Hence, it
becomes equally important to choose an IDE best suited to one’s needs.

1. Desktop IDEs
This type includes the IDEs that can be configured locally. They do not need an
active internet connection to build/run programs. Desktop IDEs are highly
customizable to suit developer-specific needs and provide performance irrespective
of the internet speed. Examples: include Microsoft Visual Studio, Eclipse,
Netbeans, etc.

2. Cloud IDEs
Cloud IDEs eliminate the overhead of configuring the software locally. They run on
remote servers and can be accessed through desktop browsers. Cloud IDEs
provide better accessibility and platform independence making them accessible
through the Internet Irrespective of the Client Operating System. Cloud IDEs can
be used freely or can have pricing models with respect to the
provider. Examples: Include Gitpod, AWS Cloud 9, Replit, etc.

3. Mobile App Development IDEs

These IDEs are specially designed for creating mobile applications. They include
features like Emulator support and integration for developing and testing mobile
applications. Mobile Development IDEs can be in the form of Desktop IDE or Cloud
IDE. Examples: Include Android Studio, Flutlab.io, etc.

4. Database-Specific IDEs

These IDEs are specially designed for working with databases. They include
features like query builders and n for developing and testing mobile applications.
Like mobile-development IDEs, Database IDEs can also be in the form of Desktop
IDE or Cloud IDEs. Examples: Include MySQL Workbench, Oracle SQL
Developer, etc.

How Should I Choose an IDE?


One can find many IDEs available in the market,
while some are open-source and free to use, others may work with subscription
models. Popular IDEs include Visual Studio, PyCharm, Android Studio, etc.
1. Programming Language: The choice of IDE mainly lies with the programming
language you decide on. Dedicated IDEs have automated features that best suit
the programming languages they support. While there also exist IDEs that support
multiple programming languages.
2. Operating System: Mostly all IDEs work with different Operating systems, but
there exist IDEs that might only work best on specific platforms. You may take into
account the IDEs’ compatibility with various platforms and operating systems.
3. Pricing Model: Some IDEs might be freely available while some may require a
premium subscription model to unlock the majority of the features. Taking your
budget and your needs, go with the IDE that suits you the best.
4. Features: Features like version control, debugger, code highlighter, integrated
terminal, and code refactoring are some of the features that can be considered
white choosing an IDE.

Advantages of using IDE:

1. Project Management: IDEs make viewing the project directory structure much
simpler which breaks down the tedious tasks of working with multiple files. Typically
IDEs also include a number of tools, such as syntax highlighting, code completion,
and code folding, which makes it easier to manage the overall project.
2. Saving plenty of time and Effort: IDEs often include a variety of tools that can
not only assist you in organizing your code but also quickly highlight the error in
your code. They also include a flexible combination of tools for compiling, building,
testing, and deploying your code, through which you can automate these tasks
eliminating the need to manually run each task.
3. Productivity: IDEs can increase your productivity by providing a centralized
location for all of your development needs, from writing and editing code to
debugging and deploying. Some of the functionality provided by IDEs can also be
accomplished with a text editor and command-line tools, but IDEs usually make the
process more convenient and user-friendly.

Disadvantages of using IDE:

1. Not beginner Friendly: IDEs are complex tools and generally provide quite an
intimidating UI, which can be a little tough to comprehend for a beginner.
Maximizing their benefit generally needs a dedicated effort.
2. Frequent Updates: It’s difficult to keep up with constant updates, such as new
samples, templates, and features.
3. Only Assist in writing code: As a tool, IDEs are limited to being an assistant.
They can’t write code or automatically fix errors, one still needs the knowledge to
write clean code.
4. Cost: Some IDE is Expensive or needs additional costs to unlock some add-ons,
which can be a barrier for small-scale companies or learning Individuals.

What are the most popular IDEs?

1. Visual Studio
2. IntelliJ IDEA
3. PyCharm
4. Eclipse
5. WebStorm
6. PhpStorm, etc.

You might also like