0% found this document useful (0 votes)
6 views

AppDev-Reviewer

Application development involves creating software to support business functions, with traditional coding requiring extensive knowledge and low coding allowing for quicker app creation. Benefits of app development include improved customer engagement, enhanced branding, and data collection for better marketing strategies. The software development life cycle (SDLC) outlines essential stages from planning to maintenance, while various programming paradigms and languages influence the choice of development tools.

Uploaded by

km bautista
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)
6 views

AppDev-Reviewer

Application development involves creating software to support business functions, with traditional coding requiring extensive knowledge and low coding allowing for quicker app creation. Benefits of app development include improved customer engagement, enhanced branding, and data collection for better marketing strategies. The software development life cycle (SDLC) outlines essential stages from planning to maintenance, while various programming paradigms and languages influence the choice of development tools.

Uploaded by

km bautista
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
You are on page 1/ 19

AppDev Reviewer

Overview of Software and Hardware Technology

What is Application Development?

• It is the process of creating software that supports a business function and


provides values to users.
• It’s a process that results in a finished app, which may be designed for mobile
devices, desktops, or the web.

Traditional Coding Vs. Low coding

There are two main approaches for coding apps:

1. Traditional coding
• It is the app development approach and requires developers to code the app
from scratch. This requires the developers to have app development
knowledge and coding experience.
2. Low Coding
• Low coding is the latest app development approach that uses special tools
and platforms to create apps quickly without requiring manual coding .
• Best approach for app projects with complex requirements as it allows app
developers to gauge the app’s performance and make necessary changes.

WHAT ARE THE BENEFITS OF DEVELOPING APPLICATIONS?

• IMPROVED CUSTOMER ENGAGEMENT


- The application provides businesses with an additional channel to engage
with their customers. It allows customers to access products or services
quickly, receive updates, and provide feedback.
• ENHANCED BRANDING
- Apps help businesses build and strengthen their brand by providing a
platform to showcase their products or services and share their values and
mission.
• HIGH EFFICIENCY
- Composable applications can also help businesses improve their internal
operations, allowing them to streamline processes, reduce costs, and
improve productivity.
• DATA COLLECTION AND ANALYSIS
- An app can provide businesses with valuable data on user behavior and
preferences, which can be used to improve marketing strategies and
enhance customer experiences.

WHAT ARE THE MAIN STEPS IN APPLICATION DEVELOPMENT?

App development is linked with the software development life cycle. The basic
stages and steps of app development SDLC are as follows:

• Planning and research


• Design and prototyping
• Code development
• Testing and optimization
• Release and maintenance

Types of App Development

Rapid App Development Enterprise App Development


Custom App Development Web App Development
Database App Development Citizen App Development
Examples of apps developed for business

Marketing Apps Project Management Apps


Collaboration Apps Inventory Management Apps
Expense Tracking Apps Human Resource Management Apps
WHAT DOES THE FUTURE OF APP DEVELOPMENT LOOK LIKE?

• Businesses adopt digital-first strategies, increasing demand for on-demand app


development. Low-code, no-code approaches reduce reliance on traditional
software, enabling faster, cost-effective app development.
• Low-code and no-code platforms enable non-technical users to create custom
applications using visual interfaces and drag-and-drop components, simplifying
and accelerating app development. By 2024, 80% of non-IT professionals will
develop apps, with over 65% using these tools, freeing IT teams from manual tasks
and allowing focus on complex projects.

Software Development Life Cycle (SDLC)

• It is the process of planning, writing, modifying, and maintaining software.


• Developers use the methodology as they design and write modern software for
computers, cloud deployment, mobile phones, video games, and more.
• Adhering to the SDLC methodology helps to optimize the final outcome.
- In IT, the term "life cycle" was first used in the 1950s and 1960s to describe the
stages involved in developing a new computer system, but it is now
commonly used to refer to all stages in the production of any type of
software.

Why is the SDLC important?

• The SDLC is important because it helps ensure that the right people are involved in
the right activities at the right times. Using a structured approach to developing
software helps ensure that your project will be successful. Some of the SDLC's
benefits are:
- Understanding your requirements and the goal of the software
- Identify risks at an early stage
- Plan how you will deliver your solution in stages, such as building prototypes
or writing functional specifications
- Measure your progress relative to your goals and ensure everything is on
track.
7 stages of the software development life cycle

Stage 1: Plan and brainstorm.

• The first step in the software development life cycle is planning. It's when you gather
the team to brainstorm, set goals, and identify risks. At this stage, the team will work
together to devise a set of business goals, requirements, specifications, and any
high-level risks that might hinder the project's success.

Stage 2: Analyze requirements.

• Once you've come up with some ideas, it's time to organize them into a cohesive
plan and design. This requires a lot of research and planning to ensure that your
final product meets your expectations (and those of your customers). The big step
is creating a detailed project plan document and work breakdown structure that
outlines the requirements.

Stage 3: Design the mockups.

• Once you've got your design plans in front of you, it's time for wireframing and
mockups. This step builds upon the planning stage, building out the tasks you need
to do in the work breakdown schedule. There are plenty of tools available, such as
Adobe XD or InVision, that make this process much easier than ever before.

Stage 4: Develop the code.

• The development phase is where coding begins to take place. It is one of the most
time-consuming phases in the SDLC. This phase often requires extensive
programming skills and knowledge of databases. The team will build functionality
for the product or service, which includes creating a user interface and building the
database so users can store information in your system.

Stage 5: Test the product.

• Before releasing the mockups into final production, you'll need to test it to ensure it
is free of bugs and errors. Any issues need to be fixed before moving forward with
deployment. You'll also need to manage how the system will integrate into existing
systems, software, and processes.
Stage 6: Implement and launch the product.

• Once you've completed all testing phases, it's time to deploy your new application
for customers to use. After deployment, the launch may involve marketing your new
product or service so people know about its existence. If the software is in-house, it
may mean implementing the change management process to ensure user training
and acceptance.

Stage 7: Set up maintenance and operations.

• The final stage of the software development life cycle is maintenance and
operations. This is one of the most critical stages because it's when your hard work
gets put to the test.
• Maintenance involves updating an existing software product to fix bugs and ensure
reliability. It can also include adding new features or functionality to a current
product. Operations refer to the day-today running of a software product or service,
such as performing backups and other administrative tasks.

Software development models

• There are six main software development approach models available in the market.
Each has its own advantages and disadvantages. They are listed below:

Waterfall model

• The waterfall model remains one of the most popular process models in software
development. Used since the 1970s, the waterfall model is a sequential design
process that moves in a straight line from one phase to the next. Developers use
this approach when the requirements for a product are well-defined and resources
are available. However, it can perform inconsistently if requirements change
frequently.

Agile model

• The Agile software development process aims to deliver high-quality software early,
often, and at a low cost. Agile methods prioritize working software over
comprehensive pre-planning and documentation, which can slow the creative
process. It is a modern approach with short phases that works well when software
requirements are likely to emerge as the development process begins. The Agile
model offers more flexibility than the Waterfall model, but it is not always suitable
for large-scale projects with complex requirements because it lacks initial
documentation.

Iterative model

• The iterative model organizes the development process into small cycles instead of
a strictly linear progression. This allows developers to make changes incrementally
and frequently so they learn from mistakes before they become expensive.
Developers get feedback from users throughout the process with the iterative
model, so it's ideal for large projects with a strong leadership team.

V-shaped model

• Also called the Verification and Validation model, the V-Shaped model allows for
simultaneous development and testing. Like Waterfall, this model follows a linear
progression, but you only move on to the next stage once the team finishes the
previous one. The V-shaped model focuses on documentation and planning so it's
ideal for large-scale projects with long schedules. However, the rigidity built into the
system only allows for infrequent changes.
Big Bang model

• Compared to other software development models, Big Bang has less structure. With
this model, developers start working with little more than an understanding of the
project requirements. They must figure out things as they go along, as they put
most of the resources into the software development stage. Big Bang focuses on
getting something working quickly. This approach works well with small projects,
where one or two developers can work together to determine requirements and
solutions as they code. However, it can be expensive and time-consuming for large
projects.

Spiral model

• The spiral model combines elements of other models, namely Waterfall and
Iterative. Developers work in shorter cycles, and the work within the cycles follows a
linear progression. After each iteration, the software gradually gets better. The key
advantage of this model is that it helps manage risk very effectively by focusing on
small portions of risk at a time and using different approaches based on the risk
profile at that stage. This allows developers to make adjustments without
compromising the project's outcome. This approach works well in highly complex,
large, expensive projects.
Programming Paradigms and Languages

What is Programming Paradigm?

• A programming paradigm is a fundamental style of computer programming


- Procedural
- Event driven
- Object oriented

Procedural Paradigm

• The focus of procedural programming is to break down a programming task into a


collection of variables, data structures, and subroutines
• Procedural languages are the most traditional types of language, and usually the
first type that is learnt. • They include Fortran, Pascal, Basic and C.
• Specifies the steps the program must take to reach the desired state. • Inclusion of
reusable subprograms (procedures, functions) to avoid repetition of coding.
• Procedural languages are very good for small-scale projects.

Limitations of Procedural Paradigm

• To limit the program flow in 1-dimensional (or linear way). Most of software
developers would have been brain-washed to think this way.
• The most serious limitation is the tendency for large procedural-based programs to
turn into "spaghetti-code".
• Spaghetti code is code that has been modified so many times that the logical flow
becomes so complicated. Accordingly, any new programmer coming onto the
project needs a two-month prep-course in order to even begin to understand the
software innards.
Event Driven Paradigm

• The flow of the program is determined by events, such as or user actions (mouse
clicks, key presses) or messages from other programs.
• Is widely used in graphical user interfaces
• Is clearly divided down to two sections:
- the first is event selection (or event detection)
- the second is event handling.
• Limitations Sometimes leading programmers to create error prone, difficult to
extend and excessively complex application code.

Object Oriented Programming

• Object-orientated languages provide an excellent model for programming and


designing computer software
• They include C, Smalltalk and Java.
• An object-oriented program may be viewed as a collection of interacting objects
• Objects are consisting of data fields and methods

Limitations of OOP

• Not all programs can be modeled accurately by the objects model. If you just want
to read in some data, do something simple to it and write it back out, you have no
need to define classes and objects.
• Another disadvantage is that one programmer's concept of what constitutes an
abstract object might not match the vision of another programmer. The objects
often require extensive documentation.

Types of Programming Languages

• There are so many types of programming languages


• In this presentation, only two are mentioned:
- Visual Programming languages
- Script languages
- Mark-up languages

Programming Languages

• Visual languages use images to communicate concepts based on spatial context,


as opposed to a linear (text) context.
• One example of a visual language is Visual Basic.Net, which is part of the Visual
Studio.Net package.
• Other languages include script and markup languages that can be used for web
page design, such as JavaScript and hypertext markup language (HTML)

Factors influencing the choice of programming languages

1. Organizational policy: where a default programming language is used as standard


2. Suitability: how functional and user friendly is it in terms of features and tools? Is it
easy to learn?
3. Availability of trained staff: user expertise and their level of understanding or
training in a particular language
4. Reliability of the language: is it a reliable language? e.g. does it provide adequate
exception handling?
5. Expandability: is it capable of expanding with the organization or task requirement?
6. Development and maintenance costs:
• Some languages become obsolete or unsupported
• Cost is influenced by a variety of factors including:
▪ training of programmers
▪ Cost/Time of writing the actual program
▪ Compiler cost (time and development environment cost)
▪ Execution cost (deployment environment cost)
▪ Bugs and reliability issues
▪ Maintenance

Features of Programming languages

• Variable: A named storage location in memory that holds a value or data.

• Loops: A loop is sequence of a statements that can be carried out a number of time,
but only specified once.

• Statement: A single line or instruction in a program that performs a specific action


or operation.

• Operator: A symbol or keyword that represents an action or operation to be


performed on one or more values or variables, such as + (addition), – (subtraction),
* (multiplication), and / (division).

Data Types

• Data types define the format or context of the data. For example, a data type could
be classed as:
- Text
▪ Can include any alphanumeric characters, for example abc123.
▪ Text benefits from the flexibility of combining both characters and
numbers together, a good example being in an address field.
- Integer
▪ A whole number such as 1, 2, 3 or 4.
▪ Benefits of using an Integer are that less storage space is required, a
counter can be used, mathematical operations can be performed and
comparisons can be made.
- Floating point
▪ A ‘ real number ’ that has a decimal point.
▪ The benefits of using a floating point are that percentages, areas,
measurements and computations can be stored.
- Byte
▪ used for storing binary data in a computer system.
- Date
▪ will represent data in a specific date format
▪ It is beneficial to users as it will prompt them to enter the date in a set
format, for example --/--/----, 22/02/1972.
- Boolean
▪ a logic value that will return a ‘true’ or ‘false’ value.
▪ Boolean data types are very small, requiring one bit, 0 or 1, representing
true or false.

Benefits of having different data types

• Efficiency of storage: efficient memory allocation for variables


• Imposes less bugs to programs: allows you to catch common coding problems
during compilation and during development before delivering the code to
production
• Allows the runtime to understand how to implement the operators: Operators
perform differently for different types (+ adding numbers or connecting strings)
• Allows code and subroutine parameters to be more expressive
• Programs become more secure: because a data's type specification limits what
the data can be used for
• They also provide conveniences in developing and maintaining the code.

Integrated Development Environments (IDEs) and Tools

What is an integrated development environment (IDE)?

• An integrated development environment (IDE) is a software set that solidifies the


basic tools needed to write and test software.
• It is a software application that provides software and app developers with a
comprehensive solution for software development.
• Generally, an IDE includes both a code editor and a debugger, as well as
automation tools that help to streamline and simplify the build process.

Understanding the Integrated Development Environment

• Software developers often use text editors or command prompts to create


software, but many prefer a more comprehensive solution called an integrated
development environment (IDE). There are numerous IDE options, but not all work
the same way.
• Software developers must choose the integrated development environment they
use based on a number of different factors, including the languages that the IDE
offers or can handle, the operating system on which it runs, the cost of the IDE
overall, and more.

Common features of integrated development environments

• An IDE includes peculiarities such as programmable editors, object and data


modeling, a source code library, unit testing, and automation tools.
Some of the most popular IDEs on the market today

Visual Studio NetBeans


Intellij Eclipse
Windows PowerShell Aptana
Komodo Blackadder
Geany
Benefits of using IDEs

• The overall purpose and primary advantage of an integrated development


environment are to improve developer productivity. IDEs increase productivity by
decreasing setup time, doubling the speed of development tasks, keeping
developers up to date, and regulating the development process.

INTRODUCTION TO UNIFIED MODELING LANGUAGE

UML, short for Unified Modeling Language, is a standardized modeling language


consisting of an integrated set of diagrams, developed to help system and software
developers for specifying, visualizing, constructing, and documenting the artifacts of
software systems, as well as for business modeling and other non-software systems.

The goal of UML is to provide a standard notation that can be used by all object-
oriented methods and to select and integrate the best elements of precursor notations.
UML has been designed for a broad range of applications. Hence, it provides constructs
for a broad range of systems and activities (e.g., distributed systems, analysis, system
design and deployment).

GOALS OF UML

• Provide users with a ready-to-use, expressive visual modeling language so they


can develop and exchange meaningful models.
• Provide extensibility and specialization mechanisms to extend the core concepts.
• Be independent of particular programming languages and development
processes.
• Provide a formal basis for understanding the modeling language.
• Encourage the growth of object-oriented tools in the market.
• Support higher-level development concepts such as collaborations, frameworks,
patterns and components.
• Integrate best practices in Software Development Life Cycle (SDLC).
UML Diagram Types

UML Diagram Types (Structural Diagram)

• Class Diagram
- The most widely use UML diagram is the class diagram. It is the building block
of all object-oriented software systems. We use class diagrams to depict the
static structure of a system by showing system’s classes, their methods and
attributes. Class diagrams also help us identify relationship between different
classes or objects.

• Composite Structure Diagram


- We use composite structure diagrams to represent the internal structure of a
class and its interaction points with other parts of the system. A composite
structure diagram represents relationship between parts and their
configuration which determine how the classifier (class, a component, or a
deployment node) behaves.
• Object Diagram
- An Object Diagram can be referred to as a screenshot of the instances in a
system and the relationship that exists between them. Since object diagrams
depict behaviors when objects have been instantiated, we are able to study
the behaviors of the system at a particular instant.

• Component Diagram
- Component diagrams are used to represent how the physical components in
a system have been organized. We use them for modelling implementation
details. Component Diagrams depict the structural relationship between
software system elements and help us in understanding if functional
requirements have been covered by planned development.
• Deployment Diagram
- Deployment Diagrams are used to represent system hardware and its
software. It tells us what hardware components exist and what software
components run on them. We illustrate system architecture as distribution of
software artifacts over distributed targets.

• Package Diagram
- We use Package Diagrams to depict how packages and their elements have
been organized. A package diagram simply shows us the dependencies
between different packages and internal composition of packages.
• Activity Diagrams
- We use Activity Diagrams to illustrate the flow of control in a system. We can
also use an activity diagram to refer to the steps involved in the execution of
a use case. We model sequential and concurrent activities using activity
diagrams.

• Use Case Diagrams


- Use Case Diagrams are used to depict the functionality of a system or a part
of a system. They are widely used to illustrate the functional requirements of
the system and its interaction with external agents(actors).
• Sequence Diagram
- A sequence diagram simply depicts interaction between objects in a
sequential order i.e. the order in which these interactions take place. We can
also use the terms event diagrams or event scenarios to refer to a sequence
diagram.

• Communication Diagram
- A Communication Diagram (known as Collaboration Diagram in UML 1.x) is
used to show sequenced messages exchanged between objects. A
communication diagram focuses primarily on objects and their relationships.
• Timing Diagram
- Timing Diagram are a special form of Sequence diagrams which are used to
depict the behavior of objects over a time frame. We use them to show time
and duration constraints which govern changes in states and behavior of
objects.

• Interaction Overview Diagram


- An Interaction Overview Diagram models a sequence of actions and helps us
simplify complex interactions into simpler occurrences. It is a mixture of
activity and sequence diagrams.
DESIGN PRINCIPLES AND PATTERNS

What is Design Pattern?

• is a reusable and generalized solution to a common problem that arises during


software design and development.
• This is not a CODE. It is a description on how to tackle these problems and design a
solution.

Types of Design Pattern

• Creational Design Pattern


- abstract the instantiation process. To help in making a system independent of
how its objects are created, composed and represented.
▪ Complex Object Creation- process of creating an object is complex,
involving multiple steps, or requires the configuration of various
parameters.
▪ Promoting Reusability- promote object creation in a way that can be
reused across different parts of the code, enhancing modularity and
maintainability.
▪ Reducing Coupling- can help reduce the coupling between client code
and the classes being instantiated, making the system more flexible
and adaptable to changes
▪ Singleton Requirement- Use the Singleton pattern when exactly one
instance of a class is needed, providing a global point of access to that
instance.
▪ Step-by-step Construction – when you need to construct a complex
object step by step, allowing for the creation of different representation
of the same object.
• Advantages of Creational Design Pattern
- Flexibility and Ability
- Reusability
- Centralized Control
- Scalability
- Promotion of Good Design Practices
• Structural Design Pattern
- are concerned with how classes and objects are composed to form larger
structures. Structural class patterns use inheritance to compose interfaces or
implementations.
• When to use Structural Design Pattern
- Adapting to Interface
- Organizing Object Relationship
- Simplifying Complex Systems
- Managing Object Lifecycle
- Hierarchical Class Structure
• Advantage of Structural Design Patterns
- Flexibility and Adaptability
- Code Reusability
- Improved Scability
- Simplified Integration
- Easier Maintenance
- Solves Recurring Design Problem
• Behavioral Design Pattern
- are concerned with algorithms and the assignment of responsibilities
between objects. Behavioral patterns describe not just patterns of objects or
classes but also the patterns of communication between them.
• When to use Behavioral Design Patterns
- Communication Between Objects
- Encapsulation of Behavior
- Dynamic Behavior Changes
- State-Dependent Behavior
- Interactions Between Objects
• Advantages of Behavioral Design Pattern
- Flexibility and Adaptability
- Code Reusability
- Separation of Concerns
- Encapsulation of Algorithm
- Ease of Maintenance

What are the advantages of using Design Patterns?

• The Design Patterns capture software engineering experiences.


• They are reusable and can be used in multiple projects.
• They provide transparency to software design.
• The Design Patterns provide a solution that helps to define the system architecture.

You might also like