Detailed Notes
Welcome to another edition of Develpreneur. In this presentation, we are gonna be talking about software development. What goes into building software. Instead of this being just a run-of-the-mill discussion on SDLC, we will flip it on its head and take a different approach to software development. Previously, we have talked about things like software development SDLC, we've talked about software test life cycle, and we've given you the benchmark or textbook descriptions on these particular topics. Now let us talk about building software from an application perspective, Â building a new application from scratch.
What Goes Into Building Software..., It all begins with an idea.
Our journey will take us through software development or software development as a whole, from the perspective of a business. A lot of application ideas come from a round table discussion about an idea, need, or service that the business wants to solve with software.
Common Questions Asked During Round Table Discussion:
What is the problem we want to solve? How can we solve this problem with the software? Is this something we can automate? Where will this solution have the most impact? What type of application should we develop? Overview of What Goes Into Building Software
We will cover what is our problem? Start with the problem. Break down the problem. We're gonna design an application. We're going to talk about building a prototype application we're then going to briefly cover how to test our application and then go into deploying the application. And then finally at the end of the cycle, handing off the project to the customer and what are the next steps?
Transcript Text
foreign [Music] welcome to another edition of developer today we are going to be talking about software development what goes into building software So today we're going to take a different look at software development so in the past we've talked about things like software development sdlc we've talked about software test life cycle and we've given you kind of The Benchmark or textbook descriptions on these particular topics so to kick off a new series I will be covering soon talking about building software from a application perspective we're going to be building a new application from scratch essentially a classroom app so today my idea was to kind of go through the software development or software development as a whole from the perspective of a business where here we are we are sitting at Round Table and the business decides we want to build something we want to write an app we want to solve a problem so we're going to cover these topics today we're going to start with you know what is our problem start with the problem break down the problem we're going to design an application we're going to talk about building a prototype application we're then going to briefly cover how to test our application and then go into deploying the application and then finally at the end of the cycle you know handing off the project to the customer and what are the next steps foreign so let's start with the first concept you know here we are we're a software company we're an entrepreneur we have this idea we either have a problem that we want to solve or we have a unique problem within the company or a feature that we need to build to service our customers so we want to start with asking ourselves what do we want what is it that we need to build or what is it that we're trying to solve so this is kind of that first part of the software development life cycle you know that planning phase and this is a vital role in the software development life cycle where we need to sit down either as a team or sit down as a group or maybe a collaboration of people and kind of walk through the ideas of what it is that we want to do what is it that we're trying to solve so for instance this new series I'm going to be talking about building this classroom app well this concept came from the idea of developer nerve you know we have all these meetings and we talked about these presentations and the different concepts of software development uh different areas in the industry you know devops we've talked about mobile apps so we had a problem so instead of us having to constantly deploy our apps out to like Vimeo or YouTube or say we want to do a boot camp idea it kind of stems to the fact that maybe we should put together a classroom app idea so from here instead of us meeting in the real world given the covid and all the constraints in today's society I was thinking why don't we build a classroom app a virtual app for a classroom so that's our problem and so now we need to sit down and Define specifically what it is that we want to do you know is our classroom uh idea for you know virtual is it for on-site do we need to have cameras do we need to have different you know what is it that we want to do so you start with the problem so you start putting together the different pieces and ideas and you kind of brainstorm what it is that you want so once you have defined the problem once you know what it is that you want to do we need to break it down into smaller pieces so we kind of need to break the problem down further so here we're kind of moving out of the planning phase of the software development life cycle into that Gathering requirements phase so here we're going to break down our idea we're going to take this classroom app and then we need to now break it down into its smaller pieces for instance you know do we need to have different users for our classroom you know you're going to probably have presenters you're going to have teachers you're going to have students and do we need to have a public facing you know are we going to open up some of our uh classrooms to the public where they can watch but not interact we may need an administrator someone to actually add users to our classroom application some other things we need to think about are like Hardware you know what type of Hardware do we need do we are we going to have laptops for this classroom do we need to have any specific requirements for the instructor or the student you know what type of operating systems do we need to worry about if we're building a desktop application this is a web application and if so you know what type of browsers are going to support uh you know is this going to be for you know mobile or web uh so are you going to need to be supporting tablets in the cell phone other things you need to think about or breaking down or you know what are some of the security constraints you know do we need to have a login uh or do we need to you know make sure we have those SSL certificates if we're on the web so that we can be accessible through web browsers you know what type of data storage features do we need are we going to have a cloud-based storage or do we need to have any storage uh repositories you know set up specifically GitHub or bitbucket repositories other things to think about once you've kind of defined the uh functionality or the components of the problem you now need to break it down even further so if we're looking to build a classroom application and we say we want to make it a web or even a desktop application what is it going to look like how is it going to enter or how's the user going to interact with this application so we're going to probably need things like a login page a dashboard you know maybe a profile so the student or the instructor can upload photos and some information and contacts on how to reach them we might want to have a lesson book or workbooks for the students where we can assign tasks or do in class assignments maybe some type of scheduler for integrating with different calendars a media manager possibly even a news and a Blog feature and then some other things to think about so that so we've covered from a futuresque problem so we broke it down into the different roles we've talked about some of the features we've talked about some of the modules we could build we also talked about some of the devices we could support now we need to also think about what type of languages or what type of architectures do we want to use to build our software so in this breaking down of the problem this is where we also want to look at okay what type of resources do we have at our disposal are we a brand new company do we have any Tech resources do we have anyone with any software development skills if not then what do we need to look for when we go out and hire people do we need web-based developers meaning do they have HTML JavaScript CSS support do we need to build something that has a back-end support so do we need to have C sharp do we need to have Java do we need to have PHP Perl python some of those things and then some of the other things you need to think about not just from a programming language perspective but you also need to think about possibly data storage so now we could be getting into databases so now you may need to have some type of database architecture you know do you need to have like MySQL do you need to have Oracle uh postgres and then what type of tools and things do you need with that and then you need to break it down just a little bit further from that then you start thinking about okay now here are all the individual problems so now we need to start breaking them down further so now what do we need to do do we need to go hire some developers or do we have the developers we need do we need to hire some testers to actually start testing the apps that we're building do we need to go by physical devices you know get those mobile phones get those desktops tablets things like that at this phase we need to think about those as we break down the problem so these are just some of the things to think about as you break down the problem or during that requirements Gathering phase of the software development cycle so now once you've discussed the problem once you define what it is that you're trying to build and you've broken down all the individual components for how it is that you want to actually build design and put this together you now have to go through and figure out what you want the application to look like so for our classroom application do we want uh so say we want to build this as a web application so is it going to be mobile facing are we going to have two different versions a browser base or a and a handheld face or just the web version only you know specifically what type of uh devices do we want so once we know the devices and then we start designing the application we need to make sure that we articulate the user interface or the interactively to our applications to be uh user friend so we want to make sure what we build not only meets our problem or meets the need of the organization or the shareholders but we also want to make sure that it is a good fun easy to use customer experience for the end user so during the design phase of the application this is where you're going to kind of story book out the screen you're going to kind of do some wire diagrams put them together here and then you're going to take those diagrams and you're going to go out and actually start building the application do it right you do these wireframes up front you're going to reduce the back and forth time between you and the end user and the requirement which will help reduce the amount of time it takes to get to Market and it will help cut down on any mistakes that might be overlooked during the design phase also in the design phase when you're looking to uh you know build the look and feel of your application you want to think to yourself you know what do we want to be when we're all grown up so you take the concept from the idea from the take it from the idea take it from the requirements and then you take the individual components and then again you go back and you think to yourself okay what do we want to look like at the end so it's kind of a cohesive process as you're going through this so these are just some things you're going to think about as you're designing your application next once you've gone through the first three phases of the software development life cycle you know planning requirements Gathering design now we want to actually build the Prototype now we're going to put the pieces together we are going to take all those different components that we need and slowly start building them out now if we've done our due diligence and we have laid out all the different components that we needed from the beginning then when we get to this piece we are going to have a pretty good roadmap for what it is that we need to build so we can take all those pieces and we put them together now if we did not do a good job in the beginning phases of our design process we're going to run into things like scope creep uh or we're going to start running into longer development and build times trying to put things together because we Overlook things which can increase the cost of our development time so if we're trying to get something to Market quickly we really need to make sure that we've done our due diligence and broken down those pieces for instance we don't want to start building our classroom app and then come to the point where we're ready to present and realize that we forgot the login we forgot the role-based security so we now cannot distinguish between that at um that instructor versus the student so now everyone sees all the solutions not to mention the content so whoops we don't want to do that you want to make sure that you've done your due diligence and that you have you know put together all the pieces first so when you get to this point you just build out the Prototype you get something quick and easy you start building the front-end user phase people can start interacting with it and then you start building the back-end pieces next we get into testing so as I have here we want to test test so how do we avoid that crash and burn so during the software cycle as we're testing our applications as we're building the applications we want to make sure that we have someone there that is testing as each of the features slowly roll out this way we can actually catch things before we get to the end user so we get into that agile style of development where okay we develop a task we quickly test if there's a problem roll it back we fix it and move forward so we go through that continuous cycle well we're testing we're going to be looking for some other things throughout the process so not only as we prototype this we're going to be looking at the different ways we want to test the software so if this is a web-based application one if we're doing any type of software development the developers should have some level of testing built into their applications they need to be doing some type of unit testing that way we know from a development perspective when things break when the code changes as we roll into the user interface testing the actual manual testing we need to start looking at the different types of testing tools that we need to test our application for instance if we're dealing with the web-based application we can use the browser developer tools to test our applications we can use selenium to write web-based tests to test our applications we can use record playback tools like the selenium IDE we can use sauce Labs or we can use browser stack to test our applications if we are doing with a mobile app we may have to look at using things like appium or depending upon the language tool you're using you might be able to use some additional testing tools for testing your mobile applications if you're a desktop application you run into some additional risks with that but there are still some tools out there that allow you to test desktop applications depending on the operating system so here at this level we're doing that software testing so if we're walking through the um through the classroom application here we're going to want to think about those different components so we want to test okay do we have that login screen are we testing you know what how are we testing the application are we testing it for functionality are we testing it from a student's perspective are we testing it from an instructor's perspective are we testing this from the administrator's perspective meaning they are the person that just goes in and sets up users accounts and roles whereas if you're the instructor you want to be able to come into the application and actually set up a new class add students add workbooks add assignments and so on and if you're the student you want to make sure you can log into the applications see the different courses you registered for see your progress in the course and be able to go in watch and watch the classes do the assignments or possibly take tests thank you foreign
Transcript Segments
foreign
[Music]
welcome to another edition of developer
today we are going to be talking about
software development what goes into
building software
So today we're going to take a different
look at software development so in the
past we've talked about things like
software development sdlc we've talked
about software test life cycle and we've
given you kind of The Benchmark or
textbook descriptions on these
particular topics
so to kick off a new series I will be
covering soon talking about building
software from a application perspective
we're going to be building a new
application from scratch essentially a
classroom app
so today my idea was to kind of go
through the software development or
software development as a whole from the
perspective of a business where here we
are
we are sitting at Round Table and the
business decides we want to build
something we want to write an app we
want to solve a problem
so we're going to cover these topics
today we're going to start with you know
what is our problem start with the
problem
break down the problem we're going to
design an application we're going to
talk about building a prototype
application we're then going to briefly
cover how to test our application and
then go into deploying the application
and then finally at the end of the cycle
you know handing off the project to the
customer and what are the next steps
foreign
so let's start with the first concept
you know here we are we're a software
company we're an entrepreneur we have
this idea we either have a problem
that we want to solve or
we have a unique problem within the
company or a feature that we need to
build to service our customers
so we want to start with asking
ourselves what do we want what is it
that we need to build or what is it that
we're trying to solve so this is kind of
that first part of the software
development life cycle you know that
planning phase and this is a vital role
in the software development life cycle
where we need to sit down
either as a team or sit down as a group
or maybe a collaboration of people and
kind of walk through the ideas of what
it is that we want to do what is it that
we're trying to solve so for instance
this new series I'm going to be talking
about building this classroom app well
this concept came from the idea of
developer nerve you know we have all
these meetings and we talked about these
presentations and the different concepts
of software development uh different
areas in the industry you know devops
we've talked about mobile apps
so we had a problem so instead of us
having to constantly deploy our apps out
to like Vimeo or YouTube or say we want
to do a boot camp idea
it kind of stems to the fact that maybe
we should put together a classroom app
idea so from here instead of us meeting
in the real world given the covid and
all the constraints in today's society I
was thinking why don't we build a
classroom app a virtual app for a
classroom so that's our problem and so
now we need to sit down and Define
specifically what it is that we want to
do you know is our classroom uh idea for
you know virtual is it for on-site do we
need to have cameras do we need to have
different you know what is it that we
want to do
so you start with the problem so you
start putting together the different
pieces and ideas and you kind of
brainstorm what it is that you want
so once you have defined the problem
once you know what it is that you want
to do we need to break it down into
smaller pieces so we kind of need to
break the problem down further so here
we're kind of moving out of the planning
phase of the software development life
cycle into that Gathering requirements
phase so here we're going to break down
our idea we're going to take this
classroom app and then we need to now
break it down into its smaller pieces
for instance you know do we need to have
different users for our classroom you
know you're going to probably have
presenters you're going to have teachers
you're going to have students and do we
need to have a public facing you know
are we going to open up some of our uh
classrooms
to the public where they can watch but
not interact we may need an
administrator someone to actually add
users to our classroom application
some other things we need to think about
are like Hardware you know what type of
Hardware do we need do we are we going
to have laptops for this classroom do we
need to have any specific requirements
for the instructor or the student you
know what type of operating systems do
we need to worry about if we're building
a desktop application this is a web
application and if so you know what type
of browsers are going to support uh you
know is this going to be for you know
mobile or web uh so are you going to
need to be supporting tablets in the
cell phone
other things you need to think about or
breaking down or you know what are some
of the security constraints you know do
we need to have a login uh or do we need
to you know make sure we have those SSL
certificates if we're on the web so that
we can be accessible through web
browsers
you know what type of data storage
features do we need are we going to have
a cloud-based storage or do we need to
have any storage uh repositories you
know set up specifically GitHub or
bitbucket repositories
other things to think about once you've
kind of defined the uh functionality or
the components of the problem you now
need to break it down even further so if
we're looking to build a classroom
application and we say we want to make
it a web or even a desktop application
what is it going to look like how is it
going to enter or how's the user going
to interact with this application so
we're going to probably need things like
a login page a dashboard you know maybe
a profile so the student or the
instructor can upload photos and some
information and contacts on how to reach
them we might want to have a lesson book
or workbooks for the students where we
can assign tasks or do in class
assignments maybe some type of scheduler
for integrating with different calendars
a media manager possibly even a news and
a Blog feature
and then some other things to think
about so that so we've covered from a
futuresque problem so we broke it down
into the different roles we've talked
about some of the features we've talked
about some of the modules we could build
we also talked about some of the devices
we could support
now we need to also think about what
type of languages or what type of
architectures do we want to use to build
our software so in this breaking down of
the problem this is where we also want
to look at okay what type of resources
do we have at our disposal are we a
brand new company do we have any Tech
resources do we have anyone with any
software development skills if not then
what do we need to look for when we go
out and hire people do we need web-based
developers meaning do they have HTML
JavaScript
CSS support do we need to build
something that has a back-end support so
do we need to have C sharp do we need to
have Java do we need to have PHP Perl
python some of those things
and then some of the other things you
need to think about not just from a
programming language perspective but you
also need to think about possibly data
storage so now we could be getting into
databases so now you may need to have
some type of database architecture you
know do you need to have like MySQL do
you need to have Oracle uh postgres and
then what type of tools and things do
you need with that
and then you need to break it down just
a little bit further from that then you
start thinking about okay now here are
all the individual problems
so now we need to start breaking them
down further so now what do we need to
do do we need to go hire some developers
or do we have the developers we need do
we need to hire some testers to actually
start testing the apps that we're
building do we need to go by physical
devices you know get those mobile phones
get those desktops tablets things like
that at this phase we need to think
about those as we break down the problem
so these are just some of the things to
think about as you break down the
problem or during that requirements
Gathering phase of the software
development cycle
so now once you've discussed the problem
once you define what it is that you're
trying to build and you've broken down
all the individual components for how it
is that you want to actually build
design and put this together you now
have to go through and figure out what
you want the application to look like so
for our classroom application do we want
uh so say we want to build this as a web
application so is it going to be mobile
facing are we going to have two
different versions a browser base or a
and a handheld face or just the web
version only
you know specifically what type of uh
devices do we want so once we know the
devices and then we start designing the
application we need to make sure that we
articulate the user interface or the
interactively to our applications to be
uh user friend so we want to make sure
what we build not only meets our problem
or meets the need of the organization or
the shareholders but we also want to
make sure that it is a good fun easy to
use customer experience for the end user
so during the design phase of the
application this is where you're going
to kind of story book out the screen
you're going to kind of do some wire
diagrams put them together here and then
you're going to take those diagrams and
you're going to go out and actually
start building the application
do it right you do these wireframes up
front you're going to reduce the back
and forth time between you and the end
user and the requirement which will help
reduce the amount of time it takes to
get to Market and it will help cut down
on any mistakes that might be overlooked
during the design phase
also in the design phase when you're
looking to uh you know build the look
and feel of your application you want to
think to yourself you know what do we
want to be when we're all grown up so
you take the concept from the idea from
the
take it from the idea take it from the
requirements and then you take the
individual components and then again you
go back and you think to yourself okay
what do we want to look like at the end
so it's kind of a cohesive process as
you're going through this so these are
just some things you're going to think
about as you're designing your
application
next once you've gone through the first
three phases of the software development
life cycle you know planning
requirements Gathering design now we
want to actually build the Prototype now
we're going to put the pieces together
we are going to take all those different
components that we need and slowly start
building them out now
if we've done our due diligence and we
have laid out all the different
components that we needed from the
beginning then when we get to this piece
we are going to have a pretty good
roadmap for what it is that we need to
build so we can take all those pieces
and we put them together
now if we did not do a good job in the
beginning phases of our design process
we're going to run into things like
scope creep uh or we're going to start
running into longer development and
build times trying to put things
together because we Overlook things
which can increase the cost of our
development time so if we're trying to
get something to Market quickly we
really need to make sure that we've done
our due diligence and broken down those
pieces
for instance we don't want to start
building our classroom app and then come
to the point where we're ready to
present and realize that we forgot the
login we forgot the role-based security
so we now cannot distinguish between
that at
um that instructor versus the student so
now everyone sees all the solutions not
to mention the content so whoops we
don't want to do that you want to make
sure that you've done your due diligence
and that you have you know put together
all the pieces first so when you get to
this point you just build out the
Prototype you get something quick
and easy you start building the
front-end user phase people can start
interacting with it and then you start
building the back-end pieces
next we get into testing so as I have
here we want to test test so how do we
avoid that crash and burn so during the
software cycle as we're testing our
applications as we're building the
applications we want to make sure that
we have someone there that is testing as
each of the features slowly roll out
this way we can actually catch things
before we get to the end user so we get
into that agile style of development
where okay we develop a task we quickly
test if there's a problem roll it back
we fix it and move forward so we go
through that continuous cycle
well we're testing we're going to be
looking for some other things throughout
the process so not only as we prototype
this we're going to be looking at the
different ways we want to test the
software so if this is a web-based
application
one if we're doing any type of software
development the developers should have
some level of testing built into their
applications they need to be doing some
type of unit testing that way we know
from a development perspective when
things break when the code changes
as we roll into the user interface
testing the actual manual testing we
need to start looking at the different
types of testing tools that we need to
test our application
for instance if we're dealing with the
web-based application we can use the
browser developer tools to test our
applications we can use selenium to
write web-based tests to test our
applications we can use record playback
tools like the selenium IDE we can use
sauce Labs or we can use browser stack
to test our applications
if we are doing with a mobile app we may
have to look at using things like appium
or depending upon the language tool
you're using you might be able to use
some additional testing tools for
testing your mobile applications
if you're a desktop application you run
into some additional risks with that but
there are still some tools out there
that allow you to test desktop
applications depending on the operating
system
so here at this level we're doing that
software testing
so if we're walking through the
um
through the classroom application here
we're going to want to think about those
different components so we want to test
okay do we have that login screen are we
testing you know what how are we testing
the application are we testing it for
functionality are we testing it from a
student's perspective are we testing it
from an instructor's perspective are we
testing this from the administrator's
perspective meaning they are the person
that just goes in and sets up users
accounts and roles
whereas if you're the instructor you
want to be able to come into the
application and actually set up a new
class add students add workbooks add
assignments and so on and if you're the
student you want to make sure you can
log into the applications see the
different courses you registered for see
your progress in the course and be able
to go in watch and watch the classes do
the assignments or possibly take tests
thank you
foreign