2. INTRODUCTION TO SOFTWARE DEVELOPMENT
Software development- Set of computer science activities dedicated to the
process of creating, designing, deploying and supporting software.
Three basic types
System software - Core functions such as operating systems, disk
management, utilities, hardware management
Programming software - Give programmers tools such as text editors,
compilers, linkers, debuggers and other tools to
create code
Application software - Office productivity suites, data management
software, media players and security programs
A possible fourth type is embedded software
3. SOFTWARE DEVELOPMENT
Programmers, or coders
Write source code to program computers for specific tasks like merging
databases, processing online orders, routing communications, conducting
searches or displaying text and graphics
Software engineers
Apply engineering principles to build software and systems to solve
problems.
They use modeling language and other tools to devise solutions that can
often be applied to problems in a general way, as opposed to merely
solving for a specific instance or client
Software developers
Have a less formal role than engineers and can be closely involved with
specific project areas - including writing code
4. Developing software typically involves the following
steps
Selecting a methodology
Gathering requirements
Choosing or building an architecture
Developing a design
Building a model
Constructing code
Testing
Managing configuration and defects
Deploying
Migrating data
Managing and measuring the project
5. CHALLENGES
Changing Requirements during the development process brings challenges for
the software developers. Sometimes they won’t be able to deal with changing
requirements
Providing complete Security to the software applications is a major challenge
for developers as hackers are trying each moment there to hack the software
applications and steal the data
Sometimes Misinterpreted requirements to give rise to a problem as a result the
software product fails to give the actual result to the end-users
Many times software developers face problems during System and Application
integration leading to the failure of software projects also
Further Maintenance and Upgradation become a problem for software
developers for some software projects
6. Adapting to the latest Technology becomes a big challenge for software
developers when they don’t have sufficient experience with the latest market
trends
Sometimes when the developers don’t get the appropriate Project infrastructure
for the development and deployment of projects they face problems in delivering
the product.
Getting Defects or Errors in the product during its last stage creates an unwanted
challenge for the software developers
Time limitations play a vital role in software development. When there is not
sufficient time for the development times the product doesn’t meet the quality
standards as the developers work under pressure and output decreases.
When a new developer lacks proper Communication and Coordination with the
other developers of the same development team it creates a problem at some
point.
7. It feels like a common problem when one developer Works with another
developer’s code This situation creates a problem for the developer as it takes
a lot of time for the new developer to understand the code.
In last, most software developers face this problem if they Don’t get the
required support from the Project Manager/Leader, and sometimes it gets
difficult to handle the relationship between colleagues and managers which in
terms decreases productivity
Software developers face a number of challenges in their work
8. COMMON CHALLENGES
Complexity
Maintaining Quality
Meeting Deadlines
Keeping up with new technologies
Managing changing requirements
Collaboration
Debugging
Dealing with legacy code
Managing complexity in distributed development
Balancing short-term and long-term goals
9. HOW TO FACE THIS CHALLENGES
Complexity: Use design patterns and architecture principles to simplify the
software systems and make it easy to understand and manage
Maintaining Quality: Use software testing and quality assurance techniques to
ensure the quality of software systems, and conduct code reviews to identify
and fix issues early on.
Meeting Deadlines: Use project management techniques such as Agile
development and Scrum to plan and manage work effectively
Keeping up with new technologies: Continuously learn and explore new
technologies and programming languages to stay current
Managing changing requirements: Use flexible development methodologies
such as Agile and Scrum to handle changing requirements effectively
10. Contd…
Collaboration: Use collaboration tools such as communication platforms and
version control systems to facilitate effective collaboration among team
members
Debugging: Use debugging tools and techniques to simplify the debugging
process and make it more efficient
Dealing with legacy code: Use refactoring techniques to improve the quality and
maintainability of legacy code.
Managing complexity in distributed development: Use communication tools and
techniques to effectively coordinate and communicate with team members
located in different parts of the world.
Balancing short-term and long-term goals: Use techniques such as Test-driven
development and Continuous Integration to balance short-term goals and long-
term goals.
12. Class
A class is a user-defined data type. It consists of data members and member
functions, which can be accessed and used by creating an instance of that
class. It represents the set of properties or methods that are common to all
objects of one type.
Object
It is a basic unit of Object-Oriented Programming and represents the real-life
entities. An Object is an instance of a Class. When a class is defined, no
memory is allocated but when it is instantiated memory is allocated.
13. Data Abstraction
Data abstraction refers to providing only essential information about the data to the
outside world, hiding the background details or implementation
Encapsulation
Encapsulation is defined as the wrapping up of data under a single unit. It is the
mechanism that binds together code and the data it manipulates
Inheritance
Inheritance is an important pillar of OOP(Object-Oriented Programming).
The capability of a class to derive properties and characteristics from another class
is called Inheritance.
When we write a class, we inherit properties from other classes.
14. Polymorphism
The word polymorphism means having many forms. In simple words, we can define
polymorphism as the ability of a message to be displayed in more than one form.
For example, A person at the same time can have different characteristics
Dynamic Binding
Dynamic binding means that the code associated with a given procedure call is not
known until the time of the call at run time. Dynamic Method Binding One of the
main advantages of inheritance is that some derived class D has all the members
of its base class B. Once D is not hiding any of the public members of B, then an
object of D can represent B in any context where a B could be used. This feature is
known as subtype polymorphism
Message Passing -It is a form of communication used in object-oriented
programming as well as parallel programming
16. Stage 1: Planning and Requirement Analysis
Requirement analysis is the most important and fundamental stage in SDLC. It
is performed by the senior members of the team with inputs from the customer,
the sales department, market surveys and domain experts in the industry.
This information is then used to plan the basic project approach and to conduct
product feasibility study in the economical, operational and technical areas.
Planning for the quality assurance requirements and identification of the risks
associated with the project is also done in the planning stage.
The outcome of the technical feasibility study is to define the various technical
approaches that can be followed to implement the project successfully with
minimum risks.
17. Stage 2: Defining Requirements
Once the requirement analysis is done the next step is to clearly define and
document the product requirements and get them approved from the customer
or the market analysts.
This is done through an SRS (Software Requirement Specification)
document which consists of all the product requirements to be designed and
developed during the project life cycle
18. Stage 3: Designing the Product Architecture
SRS is the reference for product architects to come out with the best
architecture for the product to be developed.
Based on the requirements specified in SRS, usually more than one design
approach for the product architecture is proposed and documented in a DDS –
Design Document Specification.
A design approach clearly defines all the architectural modules of the product
along with its communication and data flow representation with the external and
third party modules (if any).
The internal design of all the modules of the proposed architecture should be
clearly defined with the minutest of the details in DDS.
19. Stage 4: Building or Developing the Product
In this stage of SDLC the actual development starts and the product is built.
The programming code is generated as per DDS during this stage. If the design is
performed in a detailed and organized manner, code generation can be
accomplished without much hassle.
Developers must follow the coding guidelines defined by their organization and
programming tools like compilers, interpreters, debuggers, etc. are used to
generate the code.
Different high level programming languages such as C, C++, Pascal, Java and
PHP are used for coding.
The programming language is chosen with respect to the type of software being
developed.
20. Stage 5: Testing the Product
This stage is usually a subset of all the stages as in the modern SDLC
models, the testing activities are mostly involved in all the stages of SDLC.
This stage refers to the testing only stage of the product where product
defects are reported, tracked, fixed and retested, until the product reaches
the quality standards defined in the SRS.
21. Stage 6: Deployment in the Market and
Maintenance
Once the product is tested and ready to be deployed it is released formally in the
appropriate market.
Sometimes product deployment happens in stages as per the business strategy of
that organization.
The product may first be released in a limited segment and tested in the real
business environment (UAT- User acceptance testing).
Then based on the feedback, the product may be released as it is or with suggested
enhancements in the targeting market segment.
After the product is released in the market, its maintenance is done for the existing
customer base.
23. SDLC - Waterfall Model
Requirement Gathering and analysis − All possible requirements of the system to
be developed are captured in this phase and documented in a requirement
specification document.
System Design − The requirement specifications from first phase are studied in this
phase and the system design is prepared. This system design helps in specifying
hardware and system requirements and helps in defining the overall system
architecture.
Implementation − With inputs from the system design, the system is first developed
in small programs called units, which are integrated in the next phase. Each unit is
developed and tested for its functionality, which is referred to as Unit Testing.
24. Contd..
Integration and Testing − All the units developed in the implementation
phase are integrated into a system after testing of each unit. Post
integration the entire system is tested for any faults and failures.
Deployment of system − Once the functional and non-functional testing is
done; the product is deployed in the customer environment or released into
the market.
Maintenance − There are some issues which come up in the client
environment. To fix those issues, patches are released. Also to enhance
the product some better versions are released. Maintenance is done to
deliver these changes in the customer environment.
25. SDLC - Waterfall Model
Advantages are
Simple and easy to understand and
use
Easy to manage due to the rigidity of
the model. Each phase has specific
deliverables and a review process.
Phases are processed and completed
one at a time.
Works well for smaller projects where
requirements are very well
understood.
Clearly defined stages.
Well understood milestones.
Easy to arrange tasks.
Process and results are well
documented
Disadvantages are
No working software is produced until late
during the life cycle.
High amounts of risk and uncertainty.
Not a good model for complex and object-
oriented projects.
Poor model for long and ongoing projects.
Not suitable for the projects where
requirements are at a moderate to high risk of
changing. So, risk and uncertainty is high with
this process model.
It is difficult to measure progress within
stages.
Cannot accommodate changing
requirements.
Adjusting scope during the life cycle can end
a project.
Integration is done as a "big-bang. at the very
27. SDLC - ITERATIVE MODEL
Iterative and Incremental development is a combination of both iterative design or
iterative method and incremental build model for development.
"During software development, more than one iteration of the software development
cycle may be in progress at the same time."
This process may be described as an "evolutionary acquisition" or "incremental build“
approach."
In this incremental model, the whole requirement is divided into various builds. During
each iteration, the development module goes through the requirements, design,
implementation and testing phases.
Each subsequent release of the module adds function to the previous release.
The process continues till the complete system is ready as per the requirement.
28. Pros are
Some working functionality can be developed quickly and early in the life cycle.
Results are obtained early and periodically.
Parallel development can be planned.
Progress can be measured.
Less costly to change the scope/requirements.
Testing and debugging during smaller iteration is easy.
Risks are identified and resolved during iteration; and each iteration is an easily
managed milestone.
Easier to manage risk - High risk part is done first.
With every increment, operational product is delivered.
Issues, challenges and risks identified from each increment can be utilized/applied to the next
increment.
Risk analysis is better.
It supports changing requirements.
Initial Operating time is less.
Better suited for large and mission-critical projects.
During the life cycle, software is produced early which facilitates customer evaluation and
feedback.
29. Cons
More resources may be required.
Although cost of change is lesser, but it is not very suitable for changing requirements.
More management attention is required.
System architecture or design issues may arise because not all requirements are
gathered in the beginning of the entire life cycle.
Defining increments may require definition of the complete system.
Not suitable for smaller projects.
Management complexity is more.
End of project may not be known which is a risk.
Highly skilled resources are required for risk analysis.
Projects progress is highly dependent upon the risk analysis phase.
31. Identification
This phase starts with gathering the business requirements in the baseline
spiral.
In the subsequent spirals as the product matures, identification of system
requirements, subsystem requirements and unit requirements are all done in
this phase.
This phase also includes understanding the system requirements by continuous
communication between the customer and the system analyst.
At the end of the spiral, the product is deployed in the identified market.
32. Design
The Design phase starts with the conceptual design in the baseline spiral and
involves architectural design, logical design of modules, physical product design and
the final design in the subsequent spirals.
Construct or Build
The Construct phase refers to production of the actual software product at every
spiral.
In the baseline spiral, when the product is just thought of and the design is being
developed a POC (Proof of Concept) is developed in this phase to get customer
feedback.
Then in the subsequent spirals with higher clarity on requirements and design details
a working model of the software called build is produced with a version number.
These builds are sent to the customer for feedback.
33. Evaluation and Risk Analysis
Risk Analysis includes identifying, estimating and monitoring the technical
feasibility and management risks, such as schedule slippage and cost overrun.
After testing the build, at the end of first iteration, the customer evaluates the
software and provides feedback.
The following illustration is a representation of the Spiral Model, listing the
activities in each phase.
34. Advantages are
Changing requirements can be
accommodated.
Allows extensive use of prototypes.
Requirements can be captured
more accurately.
Users see the system early.
Development can be divided into
smaller parts and the risky parts
can be developed earlier which
helps in better risk management.
Disadvantages are
Management is more complex.
End of the project may not be
known early.
Not suitable for small or low risk
projects and could be expensive for
small projects.
Process is complex
Spiral may go on indefinitely.
Large number of intermediate
stages requires excessive
documentation
35. SDLC - BIG BANG MODEL
The Big Bang model is an SDLC model where we do not follow any specific
process.
The development just starts with the required money and efforts as the input,
and the output is the software developed which may or may not be as per
customer requirement.
This Big Bang Model does not follow a process/procedure and there is a very
little planning required.
Even the customer is not sure about what exactly he wants and the
requirements are implemented on the fly without much analysis.
Usually this model is followed for small projects where the development teams
are very small.
36. Advantages are
This is a very simple model
Little or no planning required
Easy to manage
Very few resources required
Gives flexibility to developers
It is a good learning aid for new
comers or students
Disadvantages are
Very High risk and uncertainty.
Not a good model for complex and
object-oriented projects.
Poor model for long and ongoing
projects.
Can turn out to be very expensive if
requirements are misunderstood
37. SOFTWARE DEVELOPMENT LIFE CYCLE
Stage1: Planning and requirement analysis
Requirement Analysis is the most important and necessary stage in SDLC. The senior members of the
team perform it with inputs from all the stakeholders and domain experts or SMEs in the industry
Stage2: Defining Requirements
Once the requirement analysis is done, the next stage is to certainly represent and document the
software requirements and get them accepted from the project stakeholders
Stage3: Designing the Software
The next phase is about to bring down all the knowledge of requirements, analysis, and design of the
software project. This phase is the product of the last two, like inputs from the customer and
requirement gathering.
38. Stage4: Developing the project
In this phase of SDLC, the actual development begins, and the programming is
built. The implementation of design begins concerning writing code. Developers
have to follow the coding guidelines described by their management and
programming tools like compilers, interpreters, debuggers, etc. are used to
develop and implement the code.
Stage5: Testing
After the code is generated, it is tested against the requirements to make sure
that the products are solving the needs addressed and gathered during the
requirements stage
Stage6: Deployment
Once the software is certified, and no bugs or errors are stated, then it is
deployed. Then based on the assessment, the software may be released as it
is or with suggested enhancement in the object segment
Stage7: Maintenance
Once when the client starts using the developed systems, then the real issues
come up and requirements to be solved from time to time
40. The phases of the unified process
Inception
The main goal of this phase involves delimiting the project scope.
This is where we define why we are making this product in the first place.
It should have the following:
What are the key features?
How does this benefit the customers?
Which methodology will we follow?
What are the risks involved in executing the project?
Schedule and cost estimates.
41. Contd..
Elaboration
We build the system given the requirements, cost, and time constraints and all the risks
involved.
It should include the following:
Develop with the majority of the functional requirements implemented.
Finalize the methodology to be used.
Deal with the significant risks involved.
Construction
This phase is where the development, integration, and testing take place.
We build the complete architecture in this phase and hand the final documentation to the
client.
Transition
This phase involves the deployment, multiple iterations, beta releases, and improvements of
the software.
The users will test the software, which may raise potential issues.
43. ITERATIVE MODEL
Requirement gathering & analysis:
In this phase, requirements are gathered from customers and check by an analyst whether
requirements will fulfil or not.
Analyst checks that need will achieve within budget or not. After all of this, the software
team skips to the next phase.
Design:
In the design phase, team design the software by the different diagrams like Data Flow
diagram, activity diagram, class diagram, state transition diagram, etc.
Implementation:
In the implementation, requirements are written in the coding language and transformed into
computer programmes which are called Software.
Testing:
After completing the coding phase, software testing starts using different test methods.
There are many test methods, but the most common are white box, black box, and grey box
test methods.
44. Deployment:
After completing all the phases, software is deployed to its work environment.
Review:
In this phase, after the product deployment, review phase is performed to check
the behavior and validity of the developed product.
And if there are any error found then the process starts again from the
requirement gathering.
Maintenance:
In the maintenance phase, after deployment of the software in the working
environment there may be some bugs, some errors or new updates are
required.
Maintenance involves debugging and new addition options.
46. INCREMENTAL MODEL
Requirement analysis:
In the first phase of the incremental model, the product analysis expertise identifies the
requirements. And the system functional requirements are understood by the requirement
analysis team. To develop the software under the incremental model, this phase performs a
crucial role.
Design & Development:
In this phase of the Incremental model of SDLC, the design of the system functionality and
the development method are finished with success. When software develops new
practicality, the incremental model uses style and development phase.
Testing:
In the incremental model, the testing phase checks the performance of each existing
function as well as additional functionality. In the testing phase, the various methods are
used to test the behavior of each task.
Implementation:
Implementation phase enables the coding phase of the development system. It involves
the final coding that design in the designing and development phase and tests the
functionality in the testing phase. After completion of this phase, the number of the product
working is enhanced and upgraded up to the final system product
48. AGILE MODEL
Requirements gathering:
In this phase, you must define the requirements. You should explain business
opportunities and plan the time and effort needed to build the project. Based on this
information, you can evaluate technical and economic feasibility.
Design the requirements:
When you have identified the project, work with stakeholders to define requirements.
You can use the user flow diagram or the high-level UML diagram to show the work of
new features and show how it will apply to your existing system.
Construction/ iteration:
When the team defines the requirements, the work begins. Designers and developers
start working on their project, which aims to deploy a working product. The product will
undergo various stages of improvement, so it includes simple, minimal functionality.
49. Testing:
In this phase, the Quality Assurance team examines the product's performance
and looks for the bug.
Deployment:
In this phase, the team issues a product for the user's work environment.
Feedback: After releasing the product, the last step is feedback. In this, the
team receives feedback about the product and works through the feedback.
Agile Testing Methods:
Scrum
Crystal
Dynamic Software Development Method(DSDM)
Feature Driven Development(FDD)
Lean Software Development
eXtreme Programming(XP)
50. Dynamic Software Development
Method(DSDM):
DSDM is a rapid application development strategy for software development
and gives an agile project distribution structure.
The essential features of DSDM are that users must be actively connected, and
teams have been given the right to make decisions.
The techniques used in DSDM are:
Time Boxing
MoSCoW Rules
Prototyping
51. The DSDM project contains seven stages:
Pre-project
Feasibility Study
Business Study
Functional Model Iteration
Design and build Iteration
Implementation
Post-project
52. Advantage(Pros) of Agile Method:
Frequent Delivery
Face-to-Face Communication with clients.
Efficient design and fulfils the business requirement.
Anytime changes are acceptable.
It reduces total development time.
Disadvantages(Cons) of Agile Model:
Due to the shortage of formal documents, it creates confusion and crucial decisions
taken throughout various phases can be misinterpreted at any time by different
team members.
Due to the lack of proper documentation, once the project completes and the
developers allotted to another project, maintenance of the finished project can
become a difficulty.