SlideShare a Scribd company logo
APPLICATION
DEVLOPMENT
EMERGING
TECHNOLOGIES
ITCC
AND
Module 1:
Overview of Application
Development and Emerging
Technologies
Lesson 3:
The Software Development
Life Cycle (SDLC)
Requirement Management
What is Requirement Management?
Requirements exist within all organizations; all
organizations exist to delivery products and/or services to
customers, which are always delivered through business
processes that are decomposed into individual requirements.
Requirements are simply a capability needed by a stakeholder
(person) to deliver a product and/or service.
Software Development Life Cycle
Requirement Management
A requirement is a very simply a stated desire or need: For
example, in a fictitious library system, a requirement could be
that "the library system allows people to check-in and check-
out books". Requirements management is the process of
capturing and managing all of the different ‘needs’ that
different stakeholders have in a system. Sometimes the needs
relate to the functionality (the system needs to do X), other
times it may be technical need (the system needs to run on
specific web browsers, database servers, etc.)
Software Development Life Cycle
Requirement Management
In addition, requirements management is the process of
collecting, analyzing, refining, and prioritizing product
requirements and then planning for their delivery. The
purpose of requirements management is to ensure that the
organization validates and meets the needs of its customers
and external and internal stakeholders.
Software Development Life Cycle
Requirement Management
Why Manage Requirements?
Studies have shown that requirements management
improves all major aspects of organizational strategy
(portfolio, programs, and projects) or operations management
(day-to-day business) by:
• Reducing cost
• Improving quality
• Decreasing time taken
• Decreasing risks
Software Development Life Cycle
Requirement Management
However here are some common features that should be part
of any requirements management tool:
• Ability to enter requirements, use cases and user stories in an easy-
to-use web interface
• Derive detailed technical tasks from the requirements for building
the project development schedule.
• Ability to associate acceptance tests to the requirements so that
features can be adequately tested before development is complete.
Software Development Life Cycle
Requirement Management
• Use visual tools such as planning boards, GANTT charts to help plan
the requirements development.
• Integrated version control and history tracking of requirements
• Support for real-time collaboration and feedback during
requirements validation
• Drill down from requirements to tests and incidents
• Personalized dashboards and customizable reporting
• Fully customizable workflows and support for custom fields.
Software Development Life Cycle
Requirement Management
Design and Prototyping
• User Interface (UI) Design
User Interface Design is the process designers use to build interfaces
in software or computerized devices, focusing on looks or style.
Designers aim to create interfaces which users find easy to use and
pleasurable. UI design refers to graphical user interfaces and other
forms — e.g., voice-controlled interfaces.
Software Development Life Cycle
Design and Prototyping
UI Design focuses on anticipating what users might need to do and
ensuring that the interface has elements that are easy to access,
understand, and use to facilitate those actions. UI brings together
concepts from interaction design, visual design, and information
architecture.
Choosing Interface Elements
Users have become familiar with interface elements acting in a
certain way, so try to be consistent and predictable in your choices and
their layout. Doing so will help with task completion, efficiency, and
Software Development Life Cycle
Design and Prototyping
Software Development Life Cycle
Interface elements include but are not limited to:
• Input Controls: buttons, text fields, checkboxes, radio buttons,
dropdown list, list boxes, toggles, date field
• Navigational Components: breadcrumb, slider, search field,
pagination, tags, icons
• Informational Components: tooltips, icons, progress bar,
notifications, message boxes, modal windows
• Containers: accordion
Best Practices for Designing an Interface
Everything stems from knowing your users, including
understanding their goals, skills, preferences, and tendencies.
Once you know about your user, make sure to consider the following
when designing your interface:
• Keep the interface simple. The best interfaces are almost invisible
to the user. Avoid unnecessary elements and use clear language on
labels and in messaging
Software Development Life Cycle
Design and Prototyping
• Create consistency and use common UI elements. Use common
elements in your UI, users feel more comfortable and are able to get
things done more quickly. Create patterns in language, layout and
design throughout the site to help facilitate efficiency to be able to
transfer that skill to other parts of the site easily.
• Be purposeful in page layout. Consider the spatial relationships
between items on the page and structure the page based on
importance. Careful placement of items can help draw attention to
the most important pieces of information and can aid scanning and
Software Development Life Cycle
Design and Prototyping
• Strategically use color and texture. You can direct attention
toward or redirect attention away from items using color, light,
contrast, and texture to your advantage.
• Use typography to create hierarchy and clarity. Consider how
you use typeface. Different sizes, fonts, and arrangement of the text
to help increase scanability, legibility and readability.
Software Development Life Cycle
Design and Prototyping
• Make sure that the system communicates what’s happening.
Always inform your users of location, actions, changes in state, or
errors. The use of various UI elements to communicate status and, if
necessary, next steps can reduce frustration for your user.
• Think about the defaults. By carefully thinking about and
anticipating the goals people bring to your site, you can create
defaults that reduce the burden on the user. This becomes
particularly important when it comes to form design where you
might have an opportunity to have some fields pre-chosen or filled
Software Development Life Cycle
Design and Prototyping
A good UI Design presents a seamless blend of visual design,
interaction design, and information architecture:
• Visual Design
Visual design improves a site’s ornamental value by strategically
implementing elements such as fonts, colors, and images among
other things. When professionally done, visual design makes a page
elegant without compromising on its function or content.
Software Development Life Cycle
Design and Prototyping
• Interactive design
The interactive design looks at how users interact with technology. It
then uses the understanding of such interactions to create an
interface with behaviors that are well thought-out. Excellent interactive
design not only anticipates how a person interacts with a system but
also antedates and fixes problems in good time. It may also invent
new ways through which a system interacts and responds to users.
Software Development Life Cycle
Design and Prototyping
• Information Architecture
Information architecture is designed to help users find the info they
need to complete various tasks. It involves labelling, structuring, and
organizing the web content in a manner that makes it easily accessible
and sustainable. Also, UI is the very important part of the mobile app
design.
Software Development Life Cycle
Design and Prototyping
Multiple elements constitute a functional UI. These may include:
• Input controls such as buttons, toggles, and checkboxes among
many others.
• Navigation components e.g. breadcrumb, sliders, search fields,
icons etc.
• Information components for example tooltips, notifications,
message boxes and progress bars among others.
• Call to Action elements (see how to create perfect Call to Action
button).
**When choosing what element to include in a User Interface Design, it’s
always wise to consider your tradeoffs. An element may, for instance, save you
some space but end up unnecessarily burdening the user and break the user
Software Development Life Cycle
Design and Prototyping
UI Design Best Practices
Designing the perfect user interface comes from knowing the
users as well as understanding their tendencies, preferences, skills,
and goals.
Remember the following practices of a good User Interface Design.
1) Simple Interfaces are best- use a clear language and avoid
inessential elements.
2) Maintain Consistency by using common UI elements. Use elements
that users are familiar with. This ensures things get done fast. It
also guarantees user comfort and gratification.
Software Development Life Cycle
Design and Prototyping
3) Use smart, purposeful page layouts. Try to draw attention to the
most important aspects of the website.
4) Colors and textures should be appropriately used to draw the
attention of the user to a particular or given component. See F5
Studio’s post about web design for ordinary business
5) Use the typeface to increase readability and legibility of the content
6) Use defaults to reduce the burden of the user where appropriate.
Software Development Life Cycle
Design and Prototyping
Prototyping
Prototyping defines layout, content, and type of controls and their
behavior. It defines how functionality is spread across the screens.
Graphic design, on the other hand, defines the grid, the colors, the
fonts and the backgrounds.
The prototype gives the customer a complete idea of how the site
will look like in the final result. Prototyping allows you to streamline
the design development process, focusing on important interface
elements. Having a prototype in hand, the designer and customer
Software Development Life Cycle
Design and Prototyping
In addition, prototyping is the process of building a model of a
system. In terms of an information system, prototypes are employed
to help system designers build an information system that intuitive
and easy to manipulate for end users. Prototyping is an iterative
process that is part of the analysis phase of the systems development
life cycle.
A prototype can be anything from paper drawings (low-fidelity) to
something that allows click-through of a few pieces of content to a
fully functioning site (high-fidelity).
Software Development Life Cycle
Design and Prototyping
Advantages of Prototyping:
• Reduces development time.
• Reduces development costs.
• Requires user involvement.
• Developers receive quantifiable user feedback.
• Facilitates system implementation since users know what to expect.
• Results in higher user satisfaction.
• Exposes developers to potential future system enhancements.
Software Development Life Cycle
Design and Prototyping
Disadvantages of Prototyping:
• Can lead to insufficient analysis.
• Users expect the performance of the ultimate system to be the same
as the prototype.
• Developers can become too attached to their prototypes
• Can cause systems to be left unfinished and/or implemented before
they are ready.
• Sometimes leads to incomplete documentation.
• If sophisticated software prototypes (4th GL or CASE Tools) are
employed, the time saving benefit of prototyping can be lost.
Software Development Life Cycle
Design and Prototyping
Software Development Life Cycle
High-Fidelity and Low-Fidelity Prototyping
Low-Fidelity Prototypes are often paper-based and do not allow user
interactions. They range from a series of hand-drawn mock-ups to
printouts. In theory, low-fidelity sketches are quicker to create. Low-
fidelity prototypes are helpful in enabling early visualization of
alternative design solutions, which helps provoke innovation and
improvement. An additional advantage to this approach is that when
using rough sketches, users may feel more comfortable suggesting
changes.
Design and Prototyping
Software Development Life Cycle
High-Fidelity Prototypes are computer-based, and usually allow
realistic (mouse-keyboard) user interactions. High-fidelity prototypes
take you as close as possible to a true representation of the user
interface. High-fidelity prototypes are assumed to be much more
effective in collecting true human performance data (e.g., time to
complete a task), and in demonstrating actual products to clients,
management, and others.
Design and Prototyping
Development
On receiving system design documents, the work is divided in
modules/units and actual coding is started. Since, in this phase the
code is produced so it is the main focus for the developer. This is the
longest phase of the software development life cycle. The purpose of
the Development Phase is to convert the system design prototyped in
the Design Phase into a working information system that addresses all
documented system requirements. At the end of this phase, the
working system will enter the Test Phase.
Software Development Life Cycle
Development
Testing
Software testing is the process of evaluating and verifying that a
software product or application does what it is supposed to do. The
benefits of testing include preventing bugs, reducing development
costs and improving performance.
Different Types of Tests:
- Unit Tests - End-to-end Tests - Smoke Tests - Usability
Tests
- Integration Tests - Acceptance Tests - Regression Tests
Software Development Life Cycle
Testing
Software Development Life Cycle
 Unit Tests are very low level, close to the source of your application.
They consist in testing individual methods and functions of the
classes, components or modules used by your software. Unit tests
are in general quite cheap to automate and can be run very quickly
by a continuous integration server. Validating that each software
unit performs as expected. A unit is the smallest testable
component of an application.
 Integration Tests verify that different modules or services used by
your application work well together. These types of tests are more
expensive to run as they require multiple parts of the application to
Testing
Software Development Life Cycle
 Functional Tests focus on the business requirements of an
application. They only verify the output of an action and do not
check the intermediate states of the system when performing that
action.
*There is sometimes a confusion between integration tests and
functional tests as they both require multiple components to interact
with each other. The difference is that an integration test may simply
verify that you can query the database while a functional test would
expect to get a specific value from the database as defined by the
product requirements.
Testing
Software Development Life Cycle
 End-to-end Tests replicates a user behavior with the software in a
complete application environment. It verifies that various user flows
work as expected and can be as simple as loading a web page or
logging in or much more complex scenarios verifying email
notifications, online payments, etc.
*End-to-end tests are very useful, but they're expensive to perform
and can be hard to maintain when they're automated. It is
recommended to have a few key end-to-end tests and rely more on
lower-level types of testing (unit and integration tests) to be able to
quickly identify breaking changes.
Testing
Software Development Life Cycle
 Acceptance Tests are formal tests executed to verify if a system
satisfies its business requirements. They require the entire
application to be up and running and focus on replicating user
behaviors. But they can also go further and measure the
performance of the system and reject changes if certain goals are
not met. It verifies whether the whole system works as intended.
Testing
Software Development Life Cycle
 Performance Tests check the behaviors of the system when it is
under significant load. These tests are non-functional and can have
the various form to understand the reliability, stability, and
availability of the platform. For instance, it can be observing
response times when executing a high number of requests, or
seeing how the system behaves with a significant of data.
*Performance tests are by their nature quite costly to implement
and run, but they can help you understand if new changes are going
to degrade your system. Testing how the software performs under
different workloads.
Testing
Software Development Life Cycle
 Smoke Tests are basic tests that check basic functionality of the
application. They are meant to be quick to execute, and their goal is
to give you the assurance that the major features of your system are
working as expected.
*Smoke tests can be useful right after a new build is made to
decide whether or not you can run more expensive tests, or right after
a deployment to make sure that they application is running properly in
the newly deployed environment.
Testing
Software Development Life Cycle
 Regression Testing Checking whether new features break or
degrade functionality. Sanity testing can be used to verify menus,
functions and commands at the surface level, when there is no time
for a full regression test.
 Stress Testing How much strain the system can take before it fails.
Considered to be a type of non-functional testing.
 Usability Testing Validating how well a customer can use a system
or web application to complete a task.
Testing
Deployment
Software deployment is the process of delivering completed
software to the client who ordered it or rolling out the software to
consumers. Software deployment should only take place after
thorough testing to ensure that all the flaws and bugs have been
identified and fixed.
Software Development Life Cycle
Deployment and Maintenance
Maintenance
Maintenance is the final step of the life cycle, and this is when
remaining fixes will be delivered. It is also when additional features or
functions might be
Software Deployment Best Practices
General Best Practices for Deployment:
• Allow your end users to install software themselves using the self-
service portal.
• Check out the 'Templates' section before deploying any software.
• Configure a software repository so that you can reuse the packages
to install or uninstall a software.
• Keep your software and applications up-to-date with the Auto-
update Templates option
Software Development Life Cycle
Deployment and Maintenance
Pre-deployment checklist before installation/uninstallation:
• Checking if software already exists
• Ensuring minimum free disk space
• Checking registry key/value
• Specifying the file/folder name
• Configuring processes such as executing custom scripts, creating or
deleting a shortcut, etc.
• Changing registry values in workstations
• Configuring applications to run on Windows service
Software Development Life Cycle
Deployment and Maintenance
Thank you! 

More Related Content

DOCX
UI content
PPTX
Intro to UIUX.pptx
PPTX
User Interface DESIGN - A brief summary.pptx
PPTX
Lecturesvddddddddddddddddddddddddddddddddddd 16.pptx
PDF
UX/UI Introduction
PPTX
Professional ui for a website design
PDF
How to Master UI/UX Design: Tips from Experts
DOCX
UI Development Content
UI content
Intro to UIUX.pptx
User Interface DESIGN - A brief summary.pptx
Lecturesvddddddddddddddddddddddddddddddddddd 16.pptx
UX/UI Introduction
Professional ui for a website design
How to Master UI/UX Design: Tips from Experts
UI Development Content

Similar to LESSON 3 SOFTWARE DEVELOPMENT LIFES CYCLE (20)

DOCX
UI Development Content
PPTX
UI/UX Design
PPT
Ux team organization
PPTX
SDA-lecture-F5.pptx
PDF
User Centered Design
PDF
Importance of User Centric Design in Software Development Services.pdf
PDF
The Essential UIUX Designing Principles to Follow for Maintain Customer Engag...
PDF
Konsep-UX-Design-dikonversi 02.pdf
PDF
Custom UI/UX Design Services
DOCX
DOCX
PPTX
Web Designing training in Chandigarh.pptx
PPTX
Web Designing Course in Chandigarh Join Now.pptx
PPTX
Deconstructing/Reconstructing User Experience
PPTX
User interface and User experience Modernization.pptx
PPTX
UI UX introduction
PDF
user interfaceuiuxintroduction-191206225755.pdf
PPT
HCI Module-4-UX-Emotion-and-Experience.ppt
PDF
UIUX Interview Questions PDF By ScholarHat
DOCX
Understanding UI_UX Design_ Importance, Latest Technologies, and Leading Serv...
UI Development Content
UI/UX Design
Ux team organization
SDA-lecture-F5.pptx
User Centered Design
Importance of User Centric Design in Software Development Services.pdf
The Essential UIUX Designing Principles to Follow for Maintain Customer Engag...
Konsep-UX-Design-dikonversi 02.pdf
Custom UI/UX Design Services
Web Designing training in Chandigarh.pptx
Web Designing Course in Chandigarh Join Now.pptx
Deconstructing/Reconstructing User Experience
User interface and User experience Modernization.pptx
UI UX introduction
user interfaceuiuxintroduction-191206225755.pdf
HCI Module-4-UX-Emotion-and-Experience.ppt
UIUX Interview Questions PDF By ScholarHat
Understanding UI_UX Design_ Importance, Latest Technologies, and Leading Serv...
Ad

Recently uploaded (20)

PPTX
sap open course for s4hana steps from ECC to s4
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Empathic Computing: Creating Shared Understanding
PDF
Machine learning based COVID-19 study performance prediction
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
Spectroscopy.pptx food analysis technology
sap open course for s4hana steps from ECC to s4
Diabetes mellitus diagnosis method based random forest with bat algorithm
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Digital-Transformation-Roadmap-for-Companies.pptx
Empathic Computing: Creating Shared Understanding
Machine learning based COVID-19 study performance prediction
Chapter 3 Spatial Domain Image Processing.pdf
NewMind AI Weekly Chronicles - August'25 Week I
20250228 LYD VKU AI Blended-Learning.pptx
MIND Revenue Release Quarter 2 2025 Press Release
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Understanding_Digital_Forensics_Presentation.pptx
Mobile App Security Testing_ A Comprehensive Guide.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Review of recent advances in non-invasive hemoglobin estimation
Dropbox Q2 2025 Financial Results & Investor Presentation
Network Security Unit 5.pdf for BCA BBA.
Building Integrated photovoltaic BIPV_UPV.pdf
Spectroscopy.pptx food analysis technology
Ad

LESSON 3 SOFTWARE DEVELOPMENT LIFES CYCLE

  • 2. Module 1: Overview of Application Development and Emerging Technologies
  • 3. Lesson 3: The Software Development Life Cycle (SDLC)
  • 4. Requirement Management What is Requirement Management? Requirements exist within all organizations; all organizations exist to delivery products and/or services to customers, which are always delivered through business processes that are decomposed into individual requirements. Requirements are simply a capability needed by a stakeholder (person) to deliver a product and/or service. Software Development Life Cycle Requirement Management
  • 5. A requirement is a very simply a stated desire or need: For example, in a fictitious library system, a requirement could be that "the library system allows people to check-in and check- out books". Requirements management is the process of capturing and managing all of the different ‘needs’ that different stakeholders have in a system. Sometimes the needs relate to the functionality (the system needs to do X), other times it may be technical need (the system needs to run on specific web browsers, database servers, etc.) Software Development Life Cycle Requirement Management
  • 6. In addition, requirements management is the process of collecting, analyzing, refining, and prioritizing product requirements and then planning for their delivery. The purpose of requirements management is to ensure that the organization validates and meets the needs of its customers and external and internal stakeholders. Software Development Life Cycle Requirement Management
  • 7. Why Manage Requirements? Studies have shown that requirements management improves all major aspects of organizational strategy (portfolio, programs, and projects) or operations management (day-to-day business) by: • Reducing cost • Improving quality • Decreasing time taken • Decreasing risks Software Development Life Cycle Requirement Management
  • 8. However here are some common features that should be part of any requirements management tool: • Ability to enter requirements, use cases and user stories in an easy- to-use web interface • Derive detailed technical tasks from the requirements for building the project development schedule. • Ability to associate acceptance tests to the requirements so that features can be adequately tested before development is complete. Software Development Life Cycle Requirement Management
  • 9. • Use visual tools such as planning boards, GANTT charts to help plan the requirements development. • Integrated version control and history tracking of requirements • Support for real-time collaboration and feedback during requirements validation • Drill down from requirements to tests and incidents • Personalized dashboards and customizable reporting • Fully customizable workflows and support for custom fields. Software Development Life Cycle Requirement Management
  • 10. Design and Prototyping • User Interface (UI) Design User Interface Design is the process designers use to build interfaces in software or computerized devices, focusing on looks or style. Designers aim to create interfaces which users find easy to use and pleasurable. UI design refers to graphical user interfaces and other forms — e.g., voice-controlled interfaces. Software Development Life Cycle Design and Prototyping
  • 11. UI Design focuses on anticipating what users might need to do and ensuring that the interface has elements that are easy to access, understand, and use to facilitate those actions. UI brings together concepts from interaction design, visual design, and information architecture. Choosing Interface Elements Users have become familiar with interface elements acting in a certain way, so try to be consistent and predictable in your choices and their layout. Doing so will help with task completion, efficiency, and Software Development Life Cycle Design and Prototyping
  • 12. Software Development Life Cycle Interface elements include but are not limited to: • Input Controls: buttons, text fields, checkboxes, radio buttons, dropdown list, list boxes, toggles, date field • Navigational Components: breadcrumb, slider, search field, pagination, tags, icons • Informational Components: tooltips, icons, progress bar, notifications, message boxes, modal windows • Containers: accordion
  • 13. Best Practices for Designing an Interface Everything stems from knowing your users, including understanding their goals, skills, preferences, and tendencies. Once you know about your user, make sure to consider the following when designing your interface: • Keep the interface simple. The best interfaces are almost invisible to the user. Avoid unnecessary elements and use clear language on labels and in messaging Software Development Life Cycle Design and Prototyping
  • 14. • Create consistency and use common UI elements. Use common elements in your UI, users feel more comfortable and are able to get things done more quickly. Create patterns in language, layout and design throughout the site to help facilitate efficiency to be able to transfer that skill to other parts of the site easily. • Be purposeful in page layout. Consider the spatial relationships between items on the page and structure the page based on importance. Careful placement of items can help draw attention to the most important pieces of information and can aid scanning and Software Development Life Cycle Design and Prototyping
  • 15. • Strategically use color and texture. You can direct attention toward or redirect attention away from items using color, light, contrast, and texture to your advantage. • Use typography to create hierarchy and clarity. Consider how you use typeface. Different sizes, fonts, and arrangement of the text to help increase scanability, legibility and readability. Software Development Life Cycle Design and Prototyping
  • 16. • Make sure that the system communicates what’s happening. Always inform your users of location, actions, changes in state, or errors. The use of various UI elements to communicate status and, if necessary, next steps can reduce frustration for your user. • Think about the defaults. By carefully thinking about and anticipating the goals people bring to your site, you can create defaults that reduce the burden on the user. This becomes particularly important when it comes to form design where you might have an opportunity to have some fields pre-chosen or filled Software Development Life Cycle Design and Prototyping
  • 17. A good UI Design presents a seamless blend of visual design, interaction design, and information architecture: • Visual Design Visual design improves a site’s ornamental value by strategically implementing elements such as fonts, colors, and images among other things. When professionally done, visual design makes a page elegant without compromising on its function or content. Software Development Life Cycle Design and Prototyping
  • 18. • Interactive design The interactive design looks at how users interact with technology. It then uses the understanding of such interactions to create an interface with behaviors that are well thought-out. Excellent interactive design not only anticipates how a person interacts with a system but also antedates and fixes problems in good time. It may also invent new ways through which a system interacts and responds to users. Software Development Life Cycle Design and Prototyping
  • 19. • Information Architecture Information architecture is designed to help users find the info they need to complete various tasks. It involves labelling, structuring, and organizing the web content in a manner that makes it easily accessible and sustainable. Also, UI is the very important part of the mobile app design. Software Development Life Cycle Design and Prototyping
  • 20. Multiple elements constitute a functional UI. These may include: • Input controls such as buttons, toggles, and checkboxes among many others. • Navigation components e.g. breadcrumb, sliders, search fields, icons etc. • Information components for example tooltips, notifications, message boxes and progress bars among others. • Call to Action elements (see how to create perfect Call to Action button). **When choosing what element to include in a User Interface Design, it’s always wise to consider your tradeoffs. An element may, for instance, save you some space but end up unnecessarily burdening the user and break the user Software Development Life Cycle Design and Prototyping
  • 21. UI Design Best Practices Designing the perfect user interface comes from knowing the users as well as understanding their tendencies, preferences, skills, and goals. Remember the following practices of a good User Interface Design. 1) Simple Interfaces are best- use a clear language and avoid inessential elements. 2) Maintain Consistency by using common UI elements. Use elements that users are familiar with. This ensures things get done fast. It also guarantees user comfort and gratification. Software Development Life Cycle Design and Prototyping
  • 22. 3) Use smart, purposeful page layouts. Try to draw attention to the most important aspects of the website. 4) Colors and textures should be appropriately used to draw the attention of the user to a particular or given component. See F5 Studio’s post about web design for ordinary business 5) Use the typeface to increase readability and legibility of the content 6) Use defaults to reduce the burden of the user where appropriate. Software Development Life Cycle Design and Prototyping
  • 23. Prototyping Prototyping defines layout, content, and type of controls and their behavior. It defines how functionality is spread across the screens. Graphic design, on the other hand, defines the grid, the colors, the fonts and the backgrounds. The prototype gives the customer a complete idea of how the site will look like in the final result. Prototyping allows you to streamline the design development process, focusing on important interface elements. Having a prototype in hand, the designer and customer Software Development Life Cycle Design and Prototyping
  • 24. In addition, prototyping is the process of building a model of a system. In terms of an information system, prototypes are employed to help system designers build an information system that intuitive and easy to manipulate for end users. Prototyping is an iterative process that is part of the analysis phase of the systems development life cycle. A prototype can be anything from paper drawings (low-fidelity) to something that allows click-through of a few pieces of content to a fully functioning site (high-fidelity). Software Development Life Cycle Design and Prototyping
  • 25. Advantages of Prototyping: • Reduces development time. • Reduces development costs. • Requires user involvement. • Developers receive quantifiable user feedback. • Facilitates system implementation since users know what to expect. • Results in higher user satisfaction. • Exposes developers to potential future system enhancements. Software Development Life Cycle Design and Prototyping
  • 26. Disadvantages of Prototyping: • Can lead to insufficient analysis. • Users expect the performance of the ultimate system to be the same as the prototype. • Developers can become too attached to their prototypes • Can cause systems to be left unfinished and/or implemented before they are ready. • Sometimes leads to incomplete documentation. • If sophisticated software prototypes (4th GL or CASE Tools) are employed, the time saving benefit of prototyping can be lost. Software Development Life Cycle Design and Prototyping
  • 27. Software Development Life Cycle High-Fidelity and Low-Fidelity Prototyping Low-Fidelity Prototypes are often paper-based and do not allow user interactions. They range from a series of hand-drawn mock-ups to printouts. In theory, low-fidelity sketches are quicker to create. Low- fidelity prototypes are helpful in enabling early visualization of alternative design solutions, which helps provoke innovation and improvement. An additional advantage to this approach is that when using rough sketches, users may feel more comfortable suggesting changes. Design and Prototyping
  • 28. Software Development Life Cycle High-Fidelity Prototypes are computer-based, and usually allow realistic (mouse-keyboard) user interactions. High-fidelity prototypes take you as close as possible to a true representation of the user interface. High-fidelity prototypes are assumed to be much more effective in collecting true human performance data (e.g., time to complete a task), and in demonstrating actual products to clients, management, and others. Design and Prototyping
  • 29. Development On receiving system design documents, the work is divided in modules/units and actual coding is started. Since, in this phase the code is produced so it is the main focus for the developer. This is the longest phase of the software development life cycle. The purpose of the Development Phase is to convert the system design prototyped in the Design Phase into a working information system that addresses all documented system requirements. At the end of this phase, the working system will enter the Test Phase. Software Development Life Cycle Development
  • 30. Testing Software testing is the process of evaluating and verifying that a software product or application does what it is supposed to do. The benefits of testing include preventing bugs, reducing development costs and improving performance. Different Types of Tests: - Unit Tests - End-to-end Tests - Smoke Tests - Usability Tests - Integration Tests - Acceptance Tests - Regression Tests Software Development Life Cycle Testing
  • 31. Software Development Life Cycle  Unit Tests are very low level, close to the source of your application. They consist in testing individual methods and functions of the classes, components or modules used by your software. Unit tests are in general quite cheap to automate and can be run very quickly by a continuous integration server. Validating that each software unit performs as expected. A unit is the smallest testable component of an application.  Integration Tests verify that different modules or services used by your application work well together. These types of tests are more expensive to run as they require multiple parts of the application to Testing
  • 32. Software Development Life Cycle  Functional Tests focus on the business requirements of an application. They only verify the output of an action and do not check the intermediate states of the system when performing that action. *There is sometimes a confusion between integration tests and functional tests as they both require multiple components to interact with each other. The difference is that an integration test may simply verify that you can query the database while a functional test would expect to get a specific value from the database as defined by the product requirements. Testing
  • 33. Software Development Life Cycle  End-to-end Tests replicates a user behavior with the software in a complete application environment. It verifies that various user flows work as expected and can be as simple as loading a web page or logging in or much more complex scenarios verifying email notifications, online payments, etc. *End-to-end tests are very useful, but they're expensive to perform and can be hard to maintain when they're automated. It is recommended to have a few key end-to-end tests and rely more on lower-level types of testing (unit and integration tests) to be able to quickly identify breaking changes. Testing
  • 34. Software Development Life Cycle  Acceptance Tests are formal tests executed to verify if a system satisfies its business requirements. They require the entire application to be up and running and focus on replicating user behaviors. But they can also go further and measure the performance of the system and reject changes if certain goals are not met. It verifies whether the whole system works as intended. Testing
  • 35. Software Development Life Cycle  Performance Tests check the behaviors of the system when it is under significant load. These tests are non-functional and can have the various form to understand the reliability, stability, and availability of the platform. For instance, it can be observing response times when executing a high number of requests, or seeing how the system behaves with a significant of data. *Performance tests are by their nature quite costly to implement and run, but they can help you understand if new changes are going to degrade your system. Testing how the software performs under different workloads. Testing
  • 36. Software Development Life Cycle  Smoke Tests are basic tests that check basic functionality of the application. They are meant to be quick to execute, and their goal is to give you the assurance that the major features of your system are working as expected. *Smoke tests can be useful right after a new build is made to decide whether or not you can run more expensive tests, or right after a deployment to make sure that they application is running properly in the newly deployed environment. Testing
  • 37. Software Development Life Cycle  Regression Testing Checking whether new features break or degrade functionality. Sanity testing can be used to verify menus, functions and commands at the surface level, when there is no time for a full regression test.  Stress Testing How much strain the system can take before it fails. Considered to be a type of non-functional testing.  Usability Testing Validating how well a customer can use a system or web application to complete a task. Testing
  • 38. Deployment Software deployment is the process of delivering completed software to the client who ordered it or rolling out the software to consumers. Software deployment should only take place after thorough testing to ensure that all the flaws and bugs have been identified and fixed. Software Development Life Cycle Deployment and Maintenance Maintenance Maintenance is the final step of the life cycle, and this is when remaining fixes will be delivered. It is also when additional features or functions might be
  • 39. Software Deployment Best Practices General Best Practices for Deployment: • Allow your end users to install software themselves using the self- service portal. • Check out the 'Templates' section before deploying any software. • Configure a software repository so that you can reuse the packages to install or uninstall a software. • Keep your software and applications up-to-date with the Auto- update Templates option Software Development Life Cycle Deployment and Maintenance
  • 40. Pre-deployment checklist before installation/uninstallation: • Checking if software already exists • Ensuring minimum free disk space • Checking registry key/value • Specifying the file/folder name • Configuring processes such as executing custom scripts, creating or deleting a shortcut, etc. • Changing registry values in workstations • Configuring applications to run on Windows service Software Development Life Cycle Deployment and Maintenance

Editor's Notes

  • #29: In this phase, Developer needs to follow certain predefined coding guidelines. They also need to use programming tools like compiler, interpreters, debugger to generate and implement the code.
  • #31: INTEGRATION - For example, it can be testing the interaction with the database or making sure that microservices work together as expected
  • #35: Load testing, for example, is used to evaluate performance under real-life load conditions.
  • #38: Deployment is not the last stage of the software development life cycle. The reason for this is that there is simply no way to catch all bugs and flaws during testing