DCIT 26 | Midterms Flashcards
refers to the process of creating software applications that perform specific functions for users or other applications
application development
This field encompasses a wide range of activities, from initial planning and design to coding, testing, and deployment
application development
key concepts and stages involved in application development
- understanding requirements
- planning and design
- development
- testing
- deployment
- maintenance and support
- emerging trends
Gathering User Requirements
Defining Functional Requirements
understanding requirements
Project Planning
System Architecture Design
User Interface (UI) Design
planning and design
Coding
Version Control
development
Unit Testing
Integration Testing
User Acceptance Testing (UAT)
testing
Release Management
Deployment
deployment
Monitoring
Updates and Bug Fixes
maintenance and support
Agile Development
DevOps
Low-Code/No-Code Development
emerging trends
Types of Application Development
1.Web Application Development
2.Mobile Application Development
3.Desktop Application Development
4.Game Development
5.Enterprise Application Development
6.Cloud Application Development
7.Embedded Application Development
8.API Development
9.Blockchain Application Development
10.(AR) and (VR) Development
Creating applications that run-in web browsers. These applications can be accessed from any device with internet connectivity.
Web Application Development
Developing applications specifically for mobile devices
such as smartphones and tablets
Mobile Application Development
Creating software applications that run on desktop operating systems like Windows, macOS, or Linux
Desktop Application Development
Designing and creating video games for various platforms, including consoles, PCs, and mobile devices
Game Development
Building large-scale applications designed to meet the needs of an organization, often integrating with existing systems
Enterprise Application Development
Developing applications that run on cloud infrastructure, providing scalability and remote access
Cloud Application Development
Creating applications that run on embedded systems, such as IoT devices, appliances, and automotive systems
Embedded Application Development
Building application programming interfaces (APIs) that allow different software applications to communicate with each other
API Development
Developing decentralized applications (dApps) that utilize blockchain technology for secure transactions and data integrity
Blockchain Application Development
Creating immersive applications that enhance or simulate real-world environments
(AR) and (VR) Development
App Development Methodologies
1.Waterfall Model
2.Agile Development
3.Scrum
4.Kanban
5.Extreme Programming (XP)
6.Lean Software Development
7.DevOps
8.Feature-Driven Development (FDD)
9.Rapid Application Development (RAD)
10.Spiral Model
A linear and sequential approach where each phase must be completed before the next begins
Waterfall Model
An iterative and incremental approach that emphasizes flexibility, collaboration, and customer feedback
Agile Development
A specific Agile framework that organizes work into time-boxed iterations called sprints, typically lasting 2-4 weeks
Scrum
time-boxed iterations
sprints
Scrum Roles
Scrum Master
Product Owner
Devt Team
A visual approach to managing work, emphasizing continuous delivery and limiting work in progress (WIP)
Kanban
An Agile methodology focused on improving software quality and responsiveness to changing requirements through frequent releases
Extreme Programming (XP)
An approach, focusing on eliminating waste and maximizing value
Lean Software Development
A methodology that combines development (Dev) and operations (Ops) to improve collaboration, automation, and integration
DevOps
Focuses on delivering tangible, working software features in short iterations
Feature-Driven Development (FDD)
Emphasizes quick development and iteration of prototypes over rigorous planning and testing
Rapid Application Development (RAD)
A risk-driven approach that combines iterative development with the systematic aspects
of the Waterfall model
Spiral Model
App Dev Tools and Technologies
1.Programming Languages
2.Frameworks
3.Integrated Development Environments (IDEs)
4.Version Control Systems
5.Database Management Systems
6.Testing Tools
7.Deployment and Continuous Integration/Continuous Deployment (CI/CD) Tools
8.Cloud Platforms
9.API Development Tools
10.Collaboration and Project Management Tools
Programming Languages
JavaScript
Python
Java
C#
Swift
Kotlin
Frameworks
Web Development
- React
- Angular
- Vue.js
Back-End Development
- Node.js
- Django
- Ruby on Rails
Mobile Development
- Flutter
- React Native
Integrated Development Environments (IDEs)
- Visual Studio
- Eclipse
- PyCharm
- Xcode
- Android Studio
Version Control Systems
- Git
- GitHub
- GitLab
Database Management Systems
- SQL Databases
- NoSQL Databases
- ORM Tools
Testing Tools
- JUnit
- Selenium
- Jest
- Postman
Deployment and Continuous Integration/Continuous Deployment (CI/CD) Tools
- Docker
- Kubernetes
- Jenkins
- CircleCI
Cloud Platforms
- Amazon Web Services (AWS)
- Microsoft Azure
- Google Cloud Platform (GCP)
API Development Tools
- Swagger/OpenAPI
- Postman
- GraphQL
Collaboration and Project Management Tools
- Jira
- Trello
- Slack
Widely used for web development (front-end and back-end with Node.js)
JavaScript
Popular for web applications, data analysis, and machine learning
Python
Commonly used for enterprise applications and Android development
Java
Used for Windows applications and game development with Unity
C#
Primary language for iOS application development
Swift
Official language for Android development
Kotlin
A JavaScript library for building user interfaces
React
A framework for building single-page applications (SPAs)
Angular
A progressive JavaScript framework for building UIs
Vue.js
JavaScript runtime for building server-side applications
Node.js
A Python framework for building web applications quickly
Django
A web application framework written in Ruby
Ruby on Rails
A UI toolkit for building natively compiled applications for mobile, web, and desktop from a single codebase
Flutter
A framework for building mobile apps using React
React Native
A powerful IDE for .NET and C# development
Visual Studio
Commonly used for Java development
Eclipse
An IDE specifically for Python development
PyCharm
The official IDE for iOS and macOS development
Xcode
The official IDE for Android development
Android Studio
A distributed version control system widely used in software development
Git
A platform for hosting Git repositories and collaborating on projects
GitHub
A web-based DevOps lifecycle tool that provides a Git repository manager
GitLab
MySQL, PostgreSQL, Microsoft SQL Server
SQL Databases
MongoDB, Cassandra, Firebase
NoSQL Databases
Hibernate (Java), Entity Framework (C#), Sequelize (Node.js)
ORM Tools
A testing framework for Java applications
JUnit
A tool for automating web browsers for testing
Selenium
A JavaScript testing framework used with React applications
Jest
A tool for testing APIs
Postman
A platform for developing, shipping, and running applications in containers
Docker
An orchestration tool for managing containerized applications
Kubernetes
An open-source automation server for CI/CD
Jenkins
A cloud-based CI/CD tool
CircleCI
A comprehensive cloud platform offering computing power, storage, and other services
Amazon Web Services (AWS)
A cloud computing service for building, testing, and managing applications
Microsoft Azure
A suite of cloud computing services that runs on the same infrastructure as Google’s end-user products
Google Cloud Platform (GCP)
Tools for designing and documenting APIs
Swagger/OpenAPI
Also used for API testing and development
Postman
A query language for APIs that allows clients to request only the data they need
GraphQL
A tool for agile project management and issue tracking
Jira
A visual collaboration tool for organizing tasks and projects
Trello
A messaging platform for team communication
Slack
are vital for business operations and user engagement
Web applications
refers to the part of web applications that users interact with directly
Frontend development
It’s crucial for delivering a seamless user experience and ensuring accessibility across various devices
Frontend development
Basics of Frontend Technologies
HTML (HyperText Markup Language)
CSS (Cascading Style Sheets)
JavaScript
Provides the structure of web pages using elements and tags
HTML (HyperText Markup Language)
Handles the presentation layer, allowing developers to apply styles, layouts, and responsive designs
CSS (Cascading Style Sheets)
Popular frontend frameworks
React
Angular
Vue.js
Adds interactivity, enabling dynamic content updates without needing to refresh the page
JavaScript
Developed by Facebook; allows building interactive UIs with reusable components and a virtual DOM for improved performance
React
A TypeScript-based framework by Google; supports two-way data binding and is suitable for large-scale applications
Angular
A progressive framework that is easy to integrate into existing projects, known for its flexibility and simplicity
Vue.js
involves server-side logic and database management, ensuring that the application functions correctly and securely
Backend development
It serves as the backbone of a web application, handling data processing, storage, and retrieval
Backend development
Common languages in backend development
PHP
Python
Ruby
Node.js
Widely used for web development, particularly for server-side scripting
PHP
Known for its readability and efficiency, popular in web frameworks like Django and Flask
Python
Often used with Rails framework, emphasizes convention over configuration
Ruby
store, manage, and retrieve data efficiently, making them crucial for web applications
Databases
Types of Databases
Relational Databases (RDBMS)
NoSQL Databases
Such as MySQL and PostgreSQL, which use structured query language (SQL) to manage data in tables
Relational Databases (RDBMS)
Such as MongoDB and Firebase, designed for unstructured data and flexible data models
NoSQL Databases
Understanding the demographics, needs, and behaviors of potential users is critical for creating user-centered applications
Identifying Target Users
Conduct surveys, interviews, and usability tests to gather insights that inform design decisions and feature prioritization
Importance of User Research
List essential functionalities that address user needs, such as user authentication, data visualization, and search capabilities
Defining Key Features
Use techniques like MoSCoW (Must have, Should have, Could have, Won’t have) to prioritize features based on user feedback and project goals
Prioritizing Functionalities for User Experience
requires a balanced approach to both frontend and backend components
Effective web application development
result from seamless collaboration between frontend and backend teams to create cohesive user experiences
Successful applications
have become essential in today’s digital age, with varying approaches to development
Mobile applications
the process of creating software applications that run on mobile devices, such as smartphones and tablets
Mobile application development
used across various industries, from e-commerce and healthcare to education, entertainment, and finance, making mobile development a crucial skill set in today’s market
Apps
involves building applications specifically for one operating system, such as iOS or Android. Each app is written in the language and tools designed for the OS
Native Development
Uses Swift or Objective-C in Apple’s Xcode environment
iOS Native Development
Uses Kotlin or Java in Android Studio
Android Native Development
Pros of Native development
Optimized Performance
Enhanced User Experience (UX)
Direct Access to OS Features
Native apps are faster and more responsive, as they’re built specifically for the device’s OS
Optimized Performance
Native apps have access to OS-specific UI components, resulting in a consistent and familiar look and feel for users on each platform
Enhanced User Experience (UX)
Native apps can directly utilize device features like the camera, GPS, sensors, and other hardware functions without requiring additional configurations
Direct Access to OS Features
Cons of Native development
Higher Development Cost
Limited to One Platform
Since native development requires separate codebases for each platform (iOS and Android), it often involves hiring different development teams, leading to higher costs
Higher Development Cost
Apps developed for a single platform cannot run on other OS platforms without being entirely rewritten
Limited to One Platform
allows developers to create applications that can run on multiple operating systems with a single codebase
Cross-platform development
Pros of Cross Platform
Cost-Effective
Faster Development and Deployment
Broader Market Reach
By using a single codebase for multiple platforms, cross-platform development reduces the need for separate teams and streamlines resources, resulting in lower costs
Cost-Effective
With one codebase, developers can build and deploy applications on multiple platforms simultaneously
Faster Development and Deployment
A cross-platform app can target both iOS and Android users without additional development effort, widening the app’s audience.
Broader Market Reach
Cons of Cross Platform
Slightly Reduced Performance
Complex Code Structure for Advanced Features
Cross-platform apps may not perform as smoothly as native apps, especially for resource-intensive features
Slightly Reduced Performance
Certain platform-specific or performance-intensive functionalities may require custom native code, adding complexity to the codebase and potentially reducing the efficiency gained from cross-platform development
Complex Code Structure for Advanced Features
Choosing between native and cross platform
Target audience and platform (iOS, Android, both).
Budget and resource availability.
App complexity and required performance.
An open-source framework developed by Facebook for building mobile apps using JavaScript and React.
React Native
Allows developers to create applications for both iOS and Android with a shared codebase
React Native
Used by leading companies, such as Facebook, Instagram, Airbnb, and Tesla, due to its efficiency and flexibility.
React Native
Write once, run anywhere – reduces development time and cost by sharing code across platforms
React Native
A popular, lightweight code editor from Microsoft, widely used for cross-platform frameworks like React Native and Flutter
VS Code (Visual Studio Code)
These are widely used design tools that allow UI/UX designers to create interactive, high-fidelity prototypes
figma
sketch
adobe xd
allows developers to track changes, work collaboratively, and manage code versions
git
a platform for hosting repositories, enabling teams to work together and review code changes
github
it is crucial for user satisfaction and app success
Good UI/UX
Defines the approach and framework for development
Research Design
Gathering relevant information to make informed decisions during the design, development, and testing phases
Data collection
process of examining the collected data to gain insights, make decisions, and optimize the app
Data Analysis
an essential skill in the digital age, catering to diverse sectors
Mobile application development
refers to how many features and functions an app has, as well as how intricate those features are
App complexity
about how fast and smooth the app needs to run
Required performance
facilitate teamwork and maintain code history
Version control and collaboration platforms
basic structure and layout
Wireframe
interactive version to test the app’s functionality
Prototype
framework that guides the planning, execution, and analysis of a study (problem definition, objectives and goals)
Research design
makes it possible for cross-platform apps to work on both iOS and Android, but this additional processing can slightly impact performance, especially with demanding features
abstraction layer