2. 2
Intro.to Software Development Approaches
❖ Software development is a process to create computer
software (programs) using one or more specific programming
languages that provides functionality to address particular
business or personal objectives.
❖ Some of software development approaches are as follows.
◼ Waterfall
◼ Software Prototype model
◼ Incremental
◼ Iterative
◼ Spiral
◼ RAD
3. 3
1. Waterfall
❖ The Waterfall Model was first Process Model to
be introduced.
❖ It is very simple to understand and use.
❖ Waterfall model is the earliest SDLC approach
that was used for software development .
4. 4
Cont…
❖ The waterfall Model illustrates the software
development process in a linear sequential flow;
hence it is also referred to as a linear-sequential life
cycle model.
❖ This means that any phase in the development process
begins only if the previous phase is complete.
5. 5
Cont…
◼ In a waterfall model, each phase must be completed
fully before the next phase can begin.
◼ This type of model is basically used for small
projects within certain requirements.
◼ At the end of each phase, a review takes place to
determine if the project is on the right path and
whether or not to continue or discard the project.
6. 6
Cont…
❖ In this model the testing starts only after the
development is complete.
❖ In waterfall model phases do not overlap.
❖ It is the oldest development methodology.
7. 7
Waterfall Model design
◼ Waterfall approach was first SDLC Model to be used
widely in Software Engineering to ensure success of
the project.
◼ In "The Waterfall" approach, the whole process of
software development is divided into separate phases.
◼ In Waterfall model, typically, the outcome of one phase
acts as the input for the next phase sequentially.
9. 9
The sequential phases in Waterfall model are:
◼ Requirement Gathering and analysis: All possible
requirements of the system to be developed are captured in this
phase and documented in a requirement specification doc.
◼ System Design: The requirement specifications from first phase
are studied in this phase and system design is prepared.
◼ System Design helps in specifying hardware and system
requirements and also helps in defining overall system
architecture.
10. 10
Cont…
Implementation:
❖ With inputs from 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.
11. 11
Cont…
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.
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.
12. 12
Cont…
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.
13. 13
Waterfall Model Application
❖ Some situations where the use of Waterfall
model is most appropriate are:
◼ Requirements are very well documented, clear and
fixed.
◼ Product definition is stable.
◼ Technology is understood and is not dynamic.
◼ There are no ambiguous requirements.
◼ Ample resources with required expertise are
available to support the product.
◼ The project is short
14. 14
Waterfall model Advantages & Disadvantages
Advantages
◼ It allows for departmentalization and control.
◼ A schedule can be set with deadlines for each stage of
development and a product can proceed through the development
process model phases one by one.
◼ Development moves from concept, through design,
implementation, testing, installation, troubleshooting,
and ends up at operation and maintenance.
◼ Each phase of development proceeds in strict order.
15. 15
Cont...
◼ 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.
16. 16
Disadvantage
◼ It does not allow for much reflection or revision.
◼ Once an application is in the testing stage, it is
very difficult to go back and change something
that was not well-documented.
◼ No working software is produced until late during the life
cycle.
◼ High amounts of risk and uncertainty.
17. 17
Con’t…
◼ 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.
◼ Not a good model for complex and object-
oriented projects
18. 18
2. Software Prototyping
◼ It refers to building software application
prototypes which display the functionality of
the product under development but may not
actually hold the exact logic of the original
software.
◼ Create the incomplete versions of the software
program being developed.
◼ A prototype typically simulates only a few
aspects of, and may be completely different
from, the final product.
19. 19
Cont…
◼ It enables to understand customer requirements
at an early stage of development.
◼ It helps to get valuable feedback from the
customer and helps software designers and
developers understand about what exactly is
expected from the product under development.
20. 20
Following is the stepwise approach to design a software
prototype:
◼ Basic Requirement Identification
◼ Developing the initial Prototype
◼ Review of the Prototype
◼ Revise and enhance the Prototype
21. 21
3. Incremental Build Model
◼ The model is designed, implemented and tested
incrementally (a little more is added each time).
◼ Finished when satisfies all the requirements.
◼ Combines the elements of the waterfall model
with the iterative philosophy of prototyping.
22. 22
4. Iterative
◼ Iterative process starts with a simple implementation of
a small set of the software requirements and
iteratively enhances the evolving versions until the
complete system is implemented and ready to be
deployed.
◼ An iterative life cycle model does not attempt to
start with a full specification of requirements.
23. 23
Cont…
◼ Development begins by specifying and
implementing just part of the software, which is
then reviewed in order to identify further
requirements.
◼ This process is then repeated, producing a new
version of the software at the end of each
iteration of the model.
25. 25
Cont…
◼ The key to successful of an iterative model
is validation of requirements, and
verification & testing of each version of
the software against those requirements
within each cycle of the model.
26. 26
Iterative Model Application
❖ This model is most often used in the following
scenarios:
✓ Requirements of the complete system are clearly defined and
understood.
✓ Major requirements must be defined; however, some
functionalities or requested enhancements may evolve with
time.
✓ There is a time to the market constraint.
27. 27
Cont…
✓ A new technology is being used and is being learnt by
the development team while working on the project.
✓ Resources with needed skill set are not available and are
planned to be used on contract basis for specific
iterations
✓ There are some high risk features and goals which may
change in the future.
28. 28
5. Spiral Model
◼ The spiral model combines the idea of iterative
development with the systematic, controlled aspects of
the waterfall model.
◼ Combines the features of the prototyping and the
waterfall model
◼ The spiral model is intended for large, expensive and
complicated projects.
30. 30
Spiral Model Application
❖ The following are the typical uses of Spiral model:
◼ When a budget constraint and risk evaluation is
important
◼ For medium to high-risk projects
◼ Long-term project commitment because of potential
changes to economic priorities as the requirements
change with time
31. 31
Cont…
• Customer is not sure of their requirements which is usually the
case
• Requirements are complex and need evaluation to get clarity
• New product line which should be released in phases to get
enough customer feedback
• Significant changes are expected in the product during the
development cycle
32. 32
6. RAD (Rapid Application Development)
◼ The RAD model is based on prototyping and
iterative development with no specific planning
involved.
◼ RAD focuses on gathering customer requirements
through workshops or focus groups, early testing of the
prototypes by the customer using iterative concept,
reuse of the existing prototypes (components),
continuous integration and rapid delivery.
◼ In RAD model the functional modules are developed
in parallel as prototypes and are integrated to make the
complete product for faster product delivery
33. 33
RAD Model Design
◼ RAD model distributes the analysis, design,
build, and test phases into a series of short,
iterative development cycles.
◼ Following are the phases of RAD Model:
1. Business Modeling: development is designed in
terms of flow of information and the distribution of
information between various business channels.
34. 34
Cont…
2.Data Modeling: The information gathered in the Business
Modeling phase is reviewed and analyzed to form sets of
data objects vital for the business. The attributes of all data
sets is identified and defined.
3. Process Modeling: any changes or enhancements to the
data object sets is defined in this phase.
▪ Process descriptions for adding , deleting, retrieving or
modifying a data object are given.
35. 35
Cont…
4. Application Generation: The actual system is
built and coding is done by using automation tools
to convert process and data models into actual
prototypes.
5. Testing and Turnover: The overall testing time
is reduced in RAD model as the prototypes are
independently tested during every iteration.
However the data flow and the interfaces
between all the components need to be
thoroughly tested with complete test coverage.
36. 36
RAD Model Application
◼ The following are the typical scenarios
where RAD can be used:
◼ RAD should be used only when a system can
be modularized to be delivered in incremental
manner.
◼ It should be used if there’s high availability of
designers for modeling
◼ It should be used only if the budget permits
use of automated code generating tools.
37. 37
Cont…
◼ RAD SDLC model should be chosen only if
domain experts are available with relevant
business knowledge
◼ Should be used where the requirements
change during the course of the project and
working prototypes are to be presented to
customer in small iterations of 2- 3 months.
38. 38
Advantages of the RAD Model
◼ Reduced development time.
◼ Increases reusability of components
◼ Quick initial reviews occur
◼ Encourages customer feedback
◼ Integration from very beginning solves a lot of
integration issues
39. 39
Disadvantages of RAD model
◼ Depends on strong team and individual performances for
identifying business requirements.
◼ Only system that can be modularized can be built using
RAD
◼ Requires highly skilled developers/designers.
◼ High dependency on modeling skills
◼ Inapplicable to cheaper projects as cost of modeling
and automated code generation is very high.
40. 40
Stages of Software Development Life Cycle
❖ Gathering the requirements for the product and
creating a task
◼ Planning
◼ preparing the architecture and design
◼ Implementation (includes the writing of program
code)
◼ Product trials (testing)
◼ Deployment and exploitation
◼ Support.
✓ Implementation, testing, deployment and support are
mostly accomplished using programming.
41. 41
C# and .NET Framework
.NET Framework
❖ The .NET Framework (pronounced “dot net”) is a
software framework that runs primarily on Microsoft
Windows.
❖ It includes a large library and supports several
programming
❖ languages which allow language interoperability (each
language can use code written in other Languages).
42. 42
Cont…
❖ The .NET library is available to all the programming
languages that .NET Supports
❖ Programs written for the .NET Framework execute in a
software environment, known as the Common
Language Runtime (CLR), an application virtual
machine that Provides important services such as
security, memory management, and exception
handling.
43. 43
Cont…
❖ The class library and the CLR together establish the
.NET Framework.
◼ The .NET framework is a revolutionary platform that
helps you to write the following types of applications:
◼ Windows applications
◼ Web applications
◼ Web services
◼ Mobile Application
44. 44
Cont…
❖ The .Net framework applications are multi-
platform applications.
❖ The framework has been designed to be used from
any of the following languages:
C#, C++, Visual Basic, Jscript, COBOL, etc.
❖ All these languages can access the framework as well
as communicate with each other.
45. 45
Some of the components of the .Net framework:
◼ Common Language Runtime (CLR)
◼ The .Net Framework Class Library
◼ Common Language Specification
◼ Common Type System
◼ Metadata and Assemblies
◼ Windows Forms
46. 46
Cont…
◼ ASP.Net and ASP.Net AJAX
◼ ADO.Net
◼ Windows Workflow Foundation (WF)
◼ Windows Presentation Foundation
◼ Windows Communication Foundation (WCF)
◼ LINQ
47. 47
The C# Programming Language
◼ C# is a modern programming language for
development of software applications.
◼ C# is a modern, general-purpose, object-
oriented programming language developed by
Microsoft.
48. 48
Cont…
◼ C# is designed for Common Language
Infrastructure (CLI), which consists of the
executable code and runtime
environment that allows use of various high-
level languages on different computer platforms
and architectures.
49. 49
Cont…
◼ C# is a modern object-oriented, general-purpose
programming language, created and developed by
Microsoft together with the .NET platform.
◼ There is highly diverse software developed with C# and on
the .NET platform: office applications, web
applications, websites, desktop applications,
mobile applications, games and many others.
50. 50
The following reasons make C# a widely used
professional language:
◼ It is a modern, general-purpose programming
language
◼ It is object oriented.
◼ It is component oriented.
◼ It is easy to learn.
◼ It is a structured language.
◼ It produces efficient programs.
◼ It can be compiled on a variety of computer
platforms.
◼ It is a part of .Net Framework.
51. 51
The Microsoft.NET Framework
◼ The C# language is not distributed as a standalone product – it
is a part of the Microsoft .NET Framework platform
(pronounced "Microsoft dot net framework").
◼ .NET Framework generally consists of an environment for
the development and execution of programs, written in C# or
some other language, compatible with .NET (like VB.NET,
Managed C++, J# or F#).
52. 52
Integrated Development Environment (IDE) for C#
◼ Microsoft provides the following development tools for
C# programming:
◼ Visual Studio 2010 (VS)
◼ Visual C# 2010 Express (VCE)
◼ Visual Web Developer
◼ Visual studio 2012
◼ Visual studio 2013
◼ Visual studio 2015
53. 53
Cont…
◼ The.NET Framework runs on the Windows
operating system
◼ Mono is an open-source version of the .NET
Framework which includes a C# compiler and runs on
several operating systems, including various flavors of
Linux and Mac OS.
54. 54
Why we choose C#?
◼ It is a modern programming language
◼ widely spread, used by millions of programmers around the entire
world.
◼ At the same time C# is a very simple and easy to learn (unlike C and
C++).
◼ It is natural to start with a language
◼ It is suitable for beginners
◼ widely used in the industry by many large companies,
◼ it one of the most popular programming languages nowadays.
55. 55
C# Program Structure
A C# program consists of the following parts:
◼ Namespace declaration
◼ A class
◼ Class methods
◼ Class attributes
◼ A Main method
◼ Statements and Expressions
◼ Comments
56. 56
Let us look at a simple code that prints the words "Hello World":
1. using System;
2. namespace HelloWorldApplication
3. {
4. class HelloWorld
5. {
6. static void Main(string[] args)
7. {
8. /* my first program in C# */
9. Console.WriteLine("Hello World");
10. Console.ReadKey();
11. }
12. }
13. }
57. 57
Cont…
✓ The first line of the program using System;
✓ The using keyword is used to include the System namespace in
the program.
✓ A program generally has multiple using statements.
❖ The next line has the namespace declaration.
❖ A namespace is a collection of classes.
❖ The HelloWorldApplication namespace contains the
class HelloWorld.
58. 58
Cont…
◼ The next line has a class declaration, the
class HelloWorld contains the data and method
definitions that your program uses.
◼ Classes generally contain multiple methods. Methods
define the behavior of the class. However,
the HelloWorld class has only one method Main.
59. 59
Cont…
◼ The next line defines the Main method, which is the entry
point for all C# programs.
◼ The Main method states what the class does when executed.
◼ The next line /*...*/ is ignored by the compiler and it is put to
add comments in the program.
◼ The Main method specifies its behavior with the
statement Console.WriteLine("Hello World");
60. 60
Cont…
◼ WriteLine is a method of the Console class defined in
the System namespace.
◼ This statement causes the message "Hello, World!" to
be displayed on the screen.
◼ The last line Console.ReadKey(); is for the VS.NET
Users.
◼ This makes the program wait for a key press and it
prevents the screen from running and closing quickly
when the program is launched from Visual Studio
.NET.
62. 62
Cont…
NB
◼ C# is case sensitive.
◼ All statements and expression must end with
a semicolon (;).
◼ The program execution starts at the Main
method.
◼ Unlike Java, program file name could be
different from the class name.
63. 63
Compiling and Executing the Program
❖ If you are using Visual Studio.Net for compiling and executing
C# programs, take the following steps:
◼ Start Visual Studio.
◼ On the menu bar, choose File -> New -> Project.
◼ Choose Visual C# from templates, and then choose Windows.
◼ Choose Console Application.
◼ Specify a name for your project and click OK button.
◼ This creates a new project in Solution Explorer.
◼ Write code in the Code Editor.
64. 64
C# and VB.NET
◼ CSharp and VB.NET are the two primary languages
used to program on the .NET Framework
environment.
◼ Both languages are use the same framework and they
both precompiled into the same byte code and then it
is compiled and run at runtime.
65. 65
Cont…
◼ So we can say VB.NET and C# are functionally
equivalent.
◼ Both C# and Visual Basic.NET share structural
similarities with other modern high level languages such
as Java and C++ .
66. 66
Cont...
◼ C# is case sensitive while Visual Basic .NET is not.
◼ In VB.NET "Example" and "example" are same , but in
CSHARP "Example" and "example" are two different
variable names.
◼ Also it is good to remember that C# statements always
terminated by a semicolon (;).
67. 67
Differences between VB.NET and C#.
◼ Single Line Comments :
• VB.NET : ' ex: 'This is a single line comment
• CSHARP : // ex: //This is a single line comment
◼ Multi Line Comments :
• VB.NET : Not available
• CSHARP : /*..*/ ex: /*Multi line comments */