KEMBAR78
PMSC Module 1 | PDF | Software Prototyping | Software Testing
0% found this document useful (0 votes)
7 views25 pages

PMSC Module 1

The document outlines the syllabus for a software engineering course, detailing the software development life cycle (SDLC) phases and various models, including Waterfall, Agile, and Prototyping. It emphasizes the importance of systematic approaches in software development to improve quality, reduce defects, and enhance maintainability. Additionally, it discusses the evolution of programming styles and the significance of prototyping in understanding user requirements.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views25 pages

PMSC Module 1

The document outlines the syllabus for a software engineering course, detailing the software development life cycle (SDLC) phases and various models, including Waterfall, Agile, and Prototyping. It emphasizes the importance of systematic approaches in software development to improve quality, reduce defects, and enhance maintainability. Additionally, it discusses the evolution of programming styles and the significance of prototyping in understanding user requirements.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 25

Syllabus:

MODULE 1:- Illustrate life cycle phases and various models used in Software
Development Process.

Contents:
Basic Concepts of software engineering and software development life cycle.
Software Engineering-Definition-Importance-
Software project types-Emergence of Software Engineering-
Early Computer Programming- High level Language Programming- Control Flow based Design-
Data Structure oriented Design- Data Flow-oriented Design, Object oriented Design-
What Next-Other Developments.
Software life Cycle- Definition-Phases- SDLC Models-Definition-Classifications-
Comparison of SDLC Models-Classical Waterfall models- Iterative- Prototyping model-
Spiral Model-Agile Model- V-Model

Software Engineering
Software engineering is a systematic and disciplined approach for developing, testing, and
maintaining software applications.

Software engineering discusses systematic and cost-effective techniques for software


development

The advantages of using software engineering for developing software are:

• Improved requirement specification


• Improved quality
• Improved cost and schedule estimates
• Better use of automated tools and techniques
• Less defects in final product
• Better maintenance of delivered software
• Well defined processes
• Improved productivity
• Improved reliability

Evolution and Impact

• The early programmers used an exploratory also called build and fix programming style

• In the build and fix (exploratory) style, normally a poor quality program is quickly
developed without making any specification, plan or design. The different imperfections
that are subsequently noticed while using or testing are fixed.

• The exploratory programming style is very informal style of program approach, and there
are no set of rules or recommendations that one has to obey, it is guided by his own
intuitions, experience, and fancies.

• The exploratory style is also the one that is normally adopted by students and novice
programmers who do not have any exposure to software engineering principles.
• We can consider the exploratory program development style as an art since, any art is
mostly guided by the intuition.

EMERGENCE OF SOFTWARE ENGINEERING

Software engineering techniques have evolved over many years in the past. This evolution is the
result of a series innovations and experiences.

Early Computer Programming

• Computers were very slow as compared to today’s standards.


• Programs were very small at that time and lacked sophistication.
• Programs were written in assembly languages.
• Programs lengths were typically limited to about few hundred lines of code.
• Build &fix method is implemented.
• No proper plan, design or strategy.
• They went on fixing the problem until they had product worked reasonably well.

High Level Language Programming

• Computers become faster with the invention of semiconductor technology.


• High level languages like FORTRAN, ALGOL etc. introduced.
• Considerably reduce the effort in developing software.
• Still using build& fix method.
Control Flow Based Design

• Programs control flow structure indicates the sequence in which the programs
instructions are executed.

• Flow charting technique is developed to help the programmer to design programs having good
control flow structure.

• In flowcharting technique, the algorithm is represented using flowcharts. A flowchart is a


graphical representation that depicts the sequence of operations to be carried out to solve a given
problem.

• If the flowchart representation is simple, then the corresponding code should be simple.

• A program having good control flow structure would be easier to understand


and develop.
Data Structure oriented Design

• Computers became more powerful with the advent of ICs now they use more complex problems.

• The control flow based program found to be non satisfactory.


• First programs data structure is designed.

• Next program design is derived from the data structure.

• Eg - Jackson’s Structured programming (JSP) , Warnier- Orr Methodology

DataFlow Oriented Design

• With the introduction of very Large Scale Integrated circuits (VLSI), the computers became more
powerful and faster. As a result, various significant developments like networking and GUIs came
into being.
• Clearly, the complexity of software could not be dealt using control flow based design. Thus, a
new technique, namely, dataflow oriented technique came into existence.

• In this technique, the flow of data through business functions or processes is represented using
Dataflow Diagram (DFD).

• Dataflow diagram also known as bubble chart or workflow diagram.

• Main advantage of DFD is its simplicity

• IEEE defines a dataflow diagram as 'a diagram that depicts data sources, data sinks, data storage,
and processes performed on data as nodes, and logical flow of data as links between the nodes.'
Object Oriented Design

• Natural objects (such as employees, pay-roll-register) relevant to the problem are identified.

• Then relationships among objects such as composition, reference, and inheritance are determined.

• Each object act as a data hiding(data abstraction) entity

• Gained acceptance because of simplicity, the scope of code and design reuse.

• Promises lower development time lower development cost and easier maintenance.

Software Process

• A software process is a systematic approach to build and maintain software.

•A software process also known as a software development life-cycle, it is composed of a number of


clearly defined and distinct work phases which are used to design and build software.

Software Development Life Cycle (SDLC) phases

Software life cycle models describe phases of the software cycle and the order in which those
phases are executed.

There are various software development approaches defined and designed which are used during
development process of software.

Eg Waterfall model, Iterative model, Prototyping model, Spiral Model, Agile Model, V-Model etc.

Each phase produces deliverables required by the next phase in the life cycle.

Phases in every Software development life cycle model:

1. Requirement gathering and analysis


2. Feasibility Study
3. Design
4. Coding
5. Testing
6. Installation / Deployment
7. Maintenance
1) Requirement gathering and analysis:

Business requirements are gathered in this phase. This phase is the main focus of the project
managers and stake holders.

After requirement gathering these requirements are analysed for their validity and the possibility
of incorporating the requirements in the system to be development is also studied.

The outcome of this phase is the software requirement specification document (SRS).

A requirement specification documents is created which serves the purpose of guideline for
the next phase of the model.

• The testing team follows the software Testing Cycle and starts the Test Planning phase after
the requirements analysis is completed.

2) Feasibility Study:

Feasibility Study is essential to evaluate cost & benefits of the proposed system.

On the basis of the feasibility study decision is taken on whether to proceed or to postpone the
project or to cancel the project.

The result is a feasibility report submitted to the management. This may be accepted or accepted
with modifications or rejected.
Different feasibility study:

Economical feasibility -
• Economic feasibility determines whether the required software is capable of generating financial
gains for an organisation.
• It involves the cost incurred on the software development team, estimated cost of hardware and
software, cost of performing feasibility study, and so on.

Operational feasibility
This feasibility is dependent on human resources (software development team) and involves
visualising whether the software will operate after it is developed and be operative once it is
installed.

Organisational feasibility –

Decide Whether the proposed system is consistent with the organisation’s strategic objectives?

Technical feasibility

Technical feasibility assesses the current resources (such as hardware and software) and technology,
which are required to accomplish user requirements in the software within the allocated time and
budget.

Social feasibility
Whether the problem be solved without causing any social issues?
Whether the system will be acceptable to the society?

3) System Design:

It is the most crucial phase in the development of a system.

The purpose of the design phase is to plan a solution of the problem specified by the requirement
documents.

The output of this phase is the design document.

In the design stage, the programming language and the hardware and software platform in which the
new system will run are also decided. Data structure, control process, equipment source, work load
and limitation of the system, Interface, documentation, training, procedures of using the system,
taking backups and staffing requirement are decided at this stage.

There are several tools and techniques used for describing the system design of the system.
These tools and techniques are: Flowchart, Data flow diagram (DFD), Data dictionary,
Structured English, Decision table and Decision tree etc..

It is of two types:

System Design or Top level Design:

It identifies the various modules that should be in the system, the specifications of the modules and
interconnections between the various modules. At the end of system design all the major data
structures, file formats, output formats, and the major modules in the system and their specifications
are decided.

Detailed Design:

It identifies the internal logic of the various modules. During this phase further details of the data
structures and algorithmic design of each of the modules is specified.

4) Coding:

The system design needs to be implemented to make it a workable system. This demands
the coding of design into computer language, i.e., programming language.

This is also called the programming phase in which the programmer converts the program
specifications into computer instructions, which we refer to as programs.

It is an important stage where the defined procedures are transformed into control specifications by
the help of a computer language.

A well written code reduces the testing and maintenance effort. It is generally felt that the programs
must be modular in nature. This helps in fast development, maintenance and future changes, if
required. Programming tools like compilers, interpreters and language like c, c++, and java etc., are
used for coding with respect to the type of application. The right programming language should be
chosen.

5) Testing:

After the code is developed it is tested against the requirements to make sure that the product is
actually solving the needs addressed and gathered during the requirement phase.
• During this phase all types of functional testing like unit testing, integration testing, system
testing, acceptance testing are don as well as non-functional testing are also done.
• It is a major quality control measure used during software development.
• Its basic function is to detect errors in the software

The different types of testing are:


a. Unit testing:
It tests each module separately and detects ceding errors.
b. Integration testing:
When the various modules are integrated, this testing is performed to detect errors from the
overall system.
c. System testing:
The system is tested against the system requirements to see if all the requirements are met
and if the system performs as specified in SRS.
d. User Acceptance Testing:
The system is tested against the user requirements to see if the user is satisfied.
6)Deployment:

Once the testing is done, and the product is ready for deployment, it is released for customers to
use.

The major steps involved in this phase are;


• Acquisition and Installation of Hardware and Software
• Conversion
• User Training
• Documentation

The hardware and the relevant software required for running the system must be made fully
operational before implementation.

The conversion is also one of the most critical and expensive activities in the system development
life cycle. The data from the old system needs to be converted to operate in the new format of the
new system. The database needs to be setup with security and recovery procedures fully defined.
During this phase, all the programs of the system are loaded onto the user’s computer.

After loading the system, training of the user starts.

After the users are trained about the computerised system, working has to shift from manual to
computerised working. The process is called Changeover.

The following strategies are followed for changeover of the system.


1.Direct Changeover: This is the complete replacement of the old system by the new system.
It is a risky approach and requires comprehensive system testing and training.

2.Parallel run: In parallel run both the systems, i.e., computerised and manual, are executed
simultaneously for certain defined period. The same data is processed by both the systems. This
strategy is less risky but more expensive because of the following facts:
Manual results can be compared with the results of the computerised system.
1. The operational work is doubled.
2. Failure of the computerised system at the early stage does not affect the working of the
organization, because the manual system continues to work, as it used to do.

3. Pilot run: In this type of run, the new system is run with the data from one or more of the
previous periods for the whole or part of the system. The results are compared with the old system
results. It is less expensive and risky than parallel run approach. This strategy builds the confidence
and the errors are traced easily without affecting the operations.

The documentation of the system is also one of the most important activity in the system
development life cycle. This ensures the continuity of the system. Generally following two
types of documentations are prepared for any system.
• User or Operator Documentation
• System Documentation
User Documentation: The user documentation is a complete description of the system
from the user’s point of view detailing how to use or operate the system. It also includes the
major error messages likely to be encountered by the user.
System Documentation: The system documentation contains the details of system design,
programs, their coding, system flow, data dictionary, process description, etc. This helps to
understand the system and permit changes to be made in the existing system to satisfy new
user needs.

7)Maintenance :

Maintenance is the seventh phase of SDLC where the developed product is taken care of. According
to the changing user end environment or technology, the software is updated timely

Maintenance is necessary to eliminate errors in the system during its working life and to
tune the system to any variations in its working environments. It must meet the scope of
any future enhancement, future functionality and any other added functional features to
cope up with the latest future needs. It has been seen that there are always some errors
found in the systems that must be noted and corrected. It also means the review of the
system from time to time. The review of the system is done for:
• knowing the full capabilities of the system
• knowing the required changes or the additional requirements
• studying the performance.
`
PROTOTYPE MODEL

The goal of a prototyping-based development process is to counter the first limitation of the
waterfall model.

In this,instead of freezing the requirements before design or coding, a throwaway prototype is
built to help understand the requirements.

Prototype is a working model of software with some limited functionality.

This prototype is developed based on the currently known requirements.

Development of the prototype undergoes design, coding ,and testing phases.

By using this prototype, the client can better understand the requirements of the desired system.

This results in more stable requirements that change less frequently.


Following is the stepwise approach to design a software prototype:
Basic Requirement Identification: This step involves understanding the very basics
product requirements especially in terms of user interface. The more intricate details of the
internal design and external aspects like performance and security can be ignored at this
stage.
Developing the initial Prototype: The initial Prototype is developed in this stage, where
the very basic requirements are showcased and user interfaces are provided. These features
may not exactly work in the same manner internally in the actual software developed and
the workarounds are used to give the same look and feel to the customer in the prototype
developed.
Review of the Prototype: The prototype developed is then presented to the customer and
the other important stakeholders in the project. The feedback is collected in an organised
manner and used for further enhancements in the product under development.
Revise and enhance the Prototype: The feedback and the review comments are
discussed during this stage and some negotiations happen with the customer based on
factors like, time and budget constraints and technical feasibility of actual implementation.
The changes accepted are again incorporated in the new Prototype developed and the cycle
repeats until customer expectations are met.

Software Prototyping Types


There are different types of software prototypes used in the industry. Following are the
major software prototyping types used widely:
Throwaway/Rapid Prototyping: Throwaway prototyping is also called as rapid or close
ended prototyping. This type of prototyping uses very little efforts with minimum
requirement analysis to build a prototype. Once the actual requirements are understood,
the prototype is discarded and the actual system is developed with a much clear
understanding of user requirements.
Evolutionary Prototyping: Evolutionary prototyping also called as breadboard prototyping
is based on building actual functional prototypes with minimal functionality in the
beginning. The prototype developed forms the heart of the future prototypes on top of
which the entire system is built. Using evolutionary prototyping only well understood
requirements are included in the prototype and the requirements are added as and when
they are understood.
Incremental Prototyping: Incremental prototyping refers to building multiple functional
prototypes of the various sub systems and then integrating all the available prototypes to
form a complete system.
Extreme Prototyping : Extreme prototyping is used in the web development domain. It
consists of three sequential phases. First, a basic prototype with all the existing pages is
presented in the html format. Then the data processing is simulated using a prototype
services layer. Finally the services are implemented and integrated to the final prototype.
This process is called Extreme Prototyping used to draw attention to the second phase of
the process, where a fully functional UI is developed with very little regard to the actual
services.
Software Prototyping Application
Software Prototyping is most useful in development of systems having high level of user
interactions such as online systems. Systems which need users to fill out forms or go
through various screens before data is processed can use prototyping very effectively to give
the exact look and feel even before the actual software is developed.
Software that involves too much of data processing and most of the functionality is internal
with very little user interface does not usually benefit from prototyping. Prototype
development could be an extra overhead in such projects and may need lot of extra efforts.
Software Prototyping Pros and Cons
Software prototyping is used in typical cases and the decision should be taken very
carefully so that the efforts spent in building the prototype add considerable value to the
final software developed. The model has its own pros and cons discussed as below.
SPIRAL MODEL
The spiral model combines the idea of iterative development with the systematic, controlled aspects of the
waterfall model.
Spiral model is a combination of iterative development process model and sequential linear development model
i.e. waterfall model with very high emphasis on risk analysis. It allows for incremental releases of the product, or
incremental refinement through each iteration around the spiral.

Spiral Model design


The spiral model has four phases.

• 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 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.

• Design: Design phase starts with the conceptual design in the baseline spiral and involves architectural design,
logical design of modules, physical product design and final design in the subsequent spirals.

• Construct or Build: 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 ProofofConcept 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 customer for feedback.

• Evaluation and Risk Analysis: Risk Analysis includes identifying, estimating, and monitoring 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.
Following is a diagrammatic representation of spiral model listing the activities in
each phase:

Spiral Model Application

Spiral Model is very widely used in the software industry as it is in synch with the natural development process of
any product i.e. learning with maturity and also involves minimum risk for the customer as well as the
development firms.

Following are the typical uses of Spiral model:


• When costs there is 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.
• 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.

Spiral Model Pros and Cons


The advantage of spiral lifecycle model is that it allows for elements of the product to be added in when they
become available or known. This assures that there is no conflict with previous requirements and design.
This method is consistent with approaches that have multiple software builds and releases and allows for making
an orderly transition to a maintenance activity. Another positive aspect is that the spiral model forces early user
involvement in the system development effort.
On the other side, it takes very strict management to complete such products and there is a risk of running the
spiral in indefinite loop. So the discipline of change and the extent of taking change requests is very important to
develop and deploy the product successfully.

The following table lists out the pros and cons of Spiral SDLC Model;
AGILE MODEL

• Used for time-critical applications.

• In Agile, more emphasis is given to sustained and quick development of product features rather than spending
more time during the initial project planning, and analysing the actual requirements.

• The Agile team develops the product through a series of iterative cycles known as sprints.

• Besides development activity, other aspects pertaining to development such as product analysis, designing the
product features, developing the functionality, and “testing” the development for bugs are also carried out during
the sprints.

•Agile processes make extensive use of events such as the daily scrum meetings, sprint review meeting, and the
sprint retrospective meeting to identify and self-correct the development carried out by the team.
Advantages of Agile model:

• Customer satisfaction by rapid, continuous delivery of useful software.


• People and interactions are emphasised rather than process and tools. Customers, developers and testers
constantly interact with each other.
• Working software is delivered frequently (weeks rather than months).
• Face-to-face conversation is the best form of communication.
• Close, daily cooperation between business people and developers.
• Continuous attention to technical excellence and good design.
• Regular adaptation to changing circumstances.
• Even late changes in requirements are welcomed

Disadvantages of Agile model:

• In case of some software deliverables, especially the large ones, it is difficult to assess the effort required at the
beginning of the software development life cycle.
• There is lack of emphasis on necessary designing and documentation.
• The project can easily get taken off track if the customer representative is not clear what final outcome that they
want.
• Only senior programmers are capable of taking the kind of decisions required during the development process.
Hence it has no place for newbie programmers, unless combined with experienced resources.

V-Model
V-model in Software Development Life Cycle (SDLC) is a method in that include the testing and validation
alongside each development phase.

It is based on the idea of a "V" shape, with the two legs of the "V" representing the progression of the software
development process from Requirements Gathering and analysis to design, implementation, testing, and
maintenance.

Phases of SDLC V-Model


The V-Model, which includes the Verification and Validation it is a structural approach to the software
development. The following is the different Phases of V-Model of the SDLC.
V-Model Verification Phases

There are several Verification phases in the V-Model:

1. Business Requirement Analysis


This is the first step of the designation of the development cycle where product requirement needs to be cured
from the customer's perspective. in these phases include proper communication with the customer to understand
the requirements of the customers.
These are the very important activities that need to be handled properly, as most of the time customers do not
know exactly what they want, and they are not sure about it at that time then we use an acceptance test design
planning which is done at the time of business requirement it will be used as an input for acceptance testing.

2. System Design
In this phase, the overall structure of the software is planned out. The team develops both the high-level design
(how the system will be structured) and detailed design (how the individual components will work).
Design of the system will start when the overall we are clear with the product requirements, and then need to
design the system completely. This understanding will be at the beginning of complete under the product
development process. these will be beneficial for the future execution of test cases.

3. Architectural Design
In this stage, architectural specifications are comprehended and designed. Usually, several technical approaches
are put out, and the ultimate choice is made after considering both the technical and financial viability. The system
architecture is further divided into modules that each handle a distinct function. Another name for this is High-
Level Design (HLD).
At this point, the exchange of data and communication between the internal modules and external systems are
well understood and defined. During this phase, integration tests can be created and documented using the
information provided.

4. Module Design
This phase, known as Low-Level Design (LLD), specifies the comprehensive internal design for every system
module. Compatibility between the design and other external systems as well as other modules in the system
architecture is crucial. Unit tests are a crucial component of any development process since they assist in
identifying and eradicating the majority of mistakes and flaws at an early stage. Based on the internal module
designs, these unit tests may now be created.

5. Coding Phase
This is where the software is actually built. Developers write the code based on the design created in the previous
phase.
The Coding step involves writing the code for the system modules that were created during the Design phase. The
system and architectural requirements are used to determine which programming language is most appropriate.
The coding standards and principles are followed when performing the coding. Before the final build is checked
into the repository, the code undergoes many code reviews and is optimised for optimal performance.

V-Model Validation Phases


It involves dynamic analysis techniques (functional, and non-functional), and testing done by executing code.
Validation is the process of evaluating the software after the completion of the development phase to determine
whether the software meets the customer's expectations and requirements.

1. Unit Testing
In Unit testing, unit Test Plans are developed during the module design phase. These Unit Test Plans are executed
to eliminate bugs in code or unit level.

2. Integration testing
After completion of unit testing Integration testing, is performed. In integration testing, the modules are integrated
and the system is tested. Integration testing is performed in the Architecture design phase. This test verifies the
communication of modules among themselves.

3. System Testing
System testing tests the complete application with its functionality, inter-dependency, and communication. It tests
the functional and non-functional requirements of the developed application.

4. User Acceptance Testing (UAT)


User Acceptance Testing is performed in a user environment that resembles the production environment. UAT
verifies that the delivered system meets the user's requirement and the system is ready for use in the real world.
Advantages of V-Model
• This is a highly disciplined model and Phases are completed one at a time.
• V-Model is used for small projects where project requirements are clear.
• Simple and easy to understand and use.
• This model focuses on verification and validation activities early in the life cycle thereby enhancing the
probability of building an error-free and good quality product.
• It enables project management to track progress accurately.
• Clear and Structured Process: The V-Model provides a clear and structured process for software
development, making it easier to understand and follow.
• Emphasis on Testing: The V-Model places a strong emphasis on testing, which helps to ensure the quality
and reliability of the software.
• Improved Traceability: The V-Model provides a clear link between the requirements and the final product,
making it easier to trace and manage changes to the software.
• Better Communication: The clear structure of the V-Model helps to improve communication between the
customer and the development team.

Dis-Advantages of V-Model
• The V-Model is a linear and sequential model, which can make it difficult to adapt to changing
requirements or unexpected events.
• The V-Model can be time-consuming, as it requires a lot of documentation and testing.
• High risk and uncertainty.
• It is not good for complex and object-oriented projects.
• It is not suitable for projects where requirements are not clear and contain a high risk of changing.
• This model does not support iteration of phases.
• It does not easily handle concurrent events.
• The V-Model places a strong emphasis on documentation, which can lead to an overreliance on
documentation at the expense of actual development work.

You might also like