UNIT 1
Introduction to
Software Engineering and Process Models
Definition of
Software
Software is: (all three (3) inclusive)
1. Instructions (computer programs)
that when executed provide desired features, function, and performance;
2. Data structures that enable the
programs to adequately(satisfactory) manipulate information;
3. Documents i.e. descriptive information
in both hard copy & virtual form (soft copy) that describes the
operation and use of the programs.
Software
Engineering Definition
•
Definition:
•
It is a systematic, scientific and disciplined approach to the development,
operation & maintenance of software.
•
Primary goal:
•
To provide the quality software with low cost.
Changing Nature
of Software
– Stand-alone programs for specific business
needs.
– E.g. Manufacturing Process Control
System, Payroll System etc.
Engineering/scientific software:
– Applications such as automotive stress
analysis, molecular biology, orbital dynamics, automated manufacturing
(CAD/CAM), MATLAB etc.
Embedded (Intelligent) software:
– Resides within a product or system.
– Used to implement and control features
& functions for the end user
– E.g. key pad control of a microwave
oven or washing machine, digital functions in automobile /car such as
dashboard display, fuel control, braking
systems
Product-line/Personal Computer
software:
– Focus on a limited marketplace to
address mass consumer market.
– e.g. Word Processing, spreadsheet,
graphics, multimedia, DBMS
Web Apps (Web
applications):
– Network based software.
– Support more sophisticated(complex)
computing environments that
•
provide stand alone features, computing functions & content to
the end user
•
Integrated with remote database and business applications.
– E.g. Online forms, Shopping Carts, email
programs (Gmail, yahoo etc.)
AI (Artificial Intelligence) software:
– Uses
non-numerical algorithm to solve complex problem.
– E.g. Robotics, expert system, artificial
neural networks, pattern recognition (image & voice) ,game playing
Basic
Activities of Software Engineering
•
Analyzing the product
– (Describing, Defining ,Managing S/w development project /product )
•
Designing the product
•
Developing/Implementing the product
•
Testing the product
•
Maintaining the product.
Need of
software Engineering
•
To Reduce Complexity
– Divides Big problem into small
problems( S/w Design)
– Focus on solving most relevant
problems
•
To minimize software cost
– Using Soft. Engg., programmers plan
everything & reduce all those efforts that are not
required
•
To decrease time
– By avoiding to run many codes
to get the ultimate running code.
•
For Handling Big Projects
– Require lots of patience, planning
& management to complete the
project by many resources(staff, h/w, s/w)
Software
Processes
u
The term software specifies to the set of computer programs,
procedures and associated documents (Flowcharts, manuals, etc.) that describe
the program and how they are to be used.
u
A software process is the set of activities and associated outcome that
produce a software product. Software engineers mostly carry out these
activities. These are four key process activities, which are common to all
software processes. These activities are:
u
Software specifications: The functionality of the software and
constraints on its operation must be defined.
u
Software development: The software to meet the requirement must be
produced.
u
Software validation: The software must be validated to ensure that it
does what the customer wants.
u
Software evolution: The software must evolve to meet changing client
needs.
Software
Process Framework
Software Process Framework is an abstraction of the software development process. It details the steps and chronological order of a process. Since it serves as a foundation for them, it is utilized in most applications. Task sets, umbrella activities, and process framework
u
activities all define the characteristics of the software development
process.
u
Software process includes:
u
Tasks – focus on a small, specific objective.
u
Action – set of tasks that produce a major work product.
u Activities – group of related tasks and actions for a major objective.
Process
Framework Activities:
u
Communication: By communication, customer requirement gathering is
done. Communication with consumers and stakeholders to determine the system’s
objectives and the software’s requirements.
u
Planning: Establish engineering work plan, describes technical risk,
lists resources requirements, work produced and defines work schedule.
u
Modeling: Architectural models and design to better understand the
problem and for work towards the best solution. The software model is prepared
by:
o Analysis of requirements
o Design
u
Construction: Creating code, testing the system, fixing bugs, and
confirming that all criteria are met. The software design is mapped into a code
by:
o Code generation
o Testing
u
Deployment: In this activity, a complete or non-complete product or
software is represented to the customers to evaluate and give feedback. On the
basis of their feedback, we modify the product for the supply of better
products.
·
Framework Activities:
Generic process models often include key activities like communication,
planning, modeling (analysis and design), construction (coding and testing),
and deployment.
·
Umbrella Activities:
These are supporting activities that occur throughout the process, such as
project tracking, risk management, and quality assurance.
Umbrella activities
u Umbrella
Activities are that take place during a software development process for
improved project management and tracking.
u Software
project tracking and control: This is an activity in which the team can
assess progress and take corrective action to maintain the schedule. Take
action to keep the project on time by comparing the project’s progress against
the plan.
u Risk
management: The risks that may affect project outcomes or quality can be
analyzed. Analyze potential risks that may have an impact on the software
product’s quality and outcome.
u Software
quality assurance: These are activities required to maintain software
quality. Perform actions to ensure the product’s quality.
u Formal
technical reviews: It is required to assess engineering work products to
uncover and remove errors before they propagate to the next activity. At each
level of the process, errors are evaluated and fixed.
u Software
configuration management: Managing of configuration process when any
change in the software occurs.
u Work
product preparation and production: The activities to create models,
documents, logs, forms, and lists are carried out.
u Reusability
management: It defines criteria for work product reuse. Reusable work
items should be backed up, and reusable software components should be achieved.
Measurement: In this activity, the
process can be defined and collected. Also, project and product measures are
used to assist the software team in delivering the required software.
Process adaptation refers to the dynamic modification of a process to better suit changing needs or environments. This involves adjusting process designs, workflows, or even the overall approach based on feedback, new information, or evolving requirements. It's a key aspect of agile methodologies and is crucial for optimizing performance, improving efficiency, and ensuring relevance in dynamic contexts.
A generic process
is a foundational, adaptable framework that outlines the fundamental steps
of a process, often used as a blueprint for more specific, project-based
implementations.
It's a generalized
approach applicable to various situations, offering a high-level structure that
can be customized for different needs. a generic process model provides
for developing software, encompassing activities like communication, planning,
modeling, construction, and deployment.
· Communication:
This involves gathering requirements from stakeholders, understanding their
needs, and establishing clear communication channels.
·
Planning:
This phase focuses on defining the scope of the project, creating a
schedule, allocating resources, and identifying potential risks.
·
Modeling:
This activity involves creating representations of the software, such as
diagrams, prototypes, or mockups, to help visualize and refine the
design.
·
Construction:
This is where the actual coding and development of the software takes
place, building the product based on the design and specifications.
·
Deployment:
This final phase involves releasing the software to users, installing it,
and providing support.
• TYPES
PRESCRIPTIVE PROCESS MODELS
The Waterfall Model
• Incremental
Process Models
• Evolutionary
Process Models
• Concurrent
Models
The Waterfall Model
• Winston
Royce introduced the Waterfall Model in 1970.
• This
model has five phases: Requirements analysis and specification, design,
implementation, and unit testing, integration and system testing, and operation
and maintenance. The steps always follow in this order and do not overlap.
• The developer must complete every phase before the next phase begins. This model is named "Waterfall Model", because its diagrammatic representation resembles a cascade of waterfalls.
The waterfall model, sometimes called
the classic life cycle, suggests a systematic, sequential approach to software
development that begins with customer specification of requirements and
progresses through planning, modeling, construction, and deployment
• When
to use SDLC Waterfall Model?
• Some
Circumstances where the use of the Waterfall model is most suited are:
• When
the requirements are constant and not changed regularly.
• A
project is short.
• The
situation is calm.
• Where
the tools and technology used is consistent and is not changing.
• When
resources are well prepared and are available to use.
• Requirements
analysis and specification phase:
• The
aim of this phase is to understand the exact requirements of the customer and
to document them properly. Both the customer and the software developer work
together so as to document all the functions, performance, and interfacing
requirement of the software.
• It describes the "what" of the
system to be produced and not "how."In this phase, a large document
called Software Requirement Specification (SRS) document is created
which contained a detailed description of what the system will do in the common
language.
• System
Design Phase:
• This
phase aims to transform the requirements gathered in the SRS into a suitable
form which permits further coding in a programming language. It defines the
overall software architecture together with high level and detailed design. All
this work is documented as a Software Design Document (SDD).
• Implementation :
• During
this phase, design is implemented. If the SDD is complete, the implementation
or coding phase proceeds smoothly, because all the information needed by
software developers is contained in the SDD.
• Testing
• During
testing, the code is thoroughly examined and modified. Small modules are tested
in isolation initially. After that these modules are tested by writing some
overhead code to check the interaction between these modules and the flow of
intermediate output.
• This
phase is highly crucial as the quality of the end product is determined by the
effectiveness of the testing carried out. The better output will lead to
satisfied customers, lower maintenance costs, and accurate results. Unit
testing determines the efficiency of individual modules.
• However, in this phase, the modules are tested
for their interactions with each other and with the system.
• 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
phase:
• Maintenance
is the task performed by every user once the software has been delivered to the
customer, installed, and operational.
• Advantages
of Waterfall model
• This
model is simple to implement also the number of resources that are required for
it is minimal.
• The
requirements are simple and explicitly declared; they remain unchanged during
the entire project development.
• The
start and end points for each phase is fixed, which makes it easy to cover
progress.
• The
release date for the complete product, as well as its final cost, can be
determined before development.
• It
gives easy to control and clarity for the customer due to a strict reporting
system.
• Disadvantages
of Waterfall model
• In
this model, the risk factor is higher, so this model is not suitable for more
significant and complex projects.
• This
model cannot accept the changes in requirements during development.
• It
becomes tough to go back to the phase. For example, if the application has now
shifted to the coding phase, and there is a change in requirement, It becomes
tough to go back and change it so backtracking or any changes are not done.
Incremental Model
Incremental Model is a
process of software development where requirements divided into multiple
standalone modules of the software development cycle. In this model, each
module goes through the requirements, design, implementation and testing
phases. Every subsequent release of the module adds function to the previous
release. The process continues until the complete system achieved.
• When the requirements are superior.
• A project has a lengthy development schedule.
• When Software team are not very well skilled or trained.
• When the customer demands a quick release of the product.
• You can develop prioritized requirements first.
• Note :-
• The incremental model is also called an iterative model in
which a particular project or software is broken down into large numbers of iterations;
where each iteration is a complete development loop resulting in a release of
executable product or software.
• The various phases of incremental model are as follows:
• 1. 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.
• 2. 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.
• 3. 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.
• 4. 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.
• Advantage of Incremental Model
• Errors are easy to be recognized.
• Easier to test and debug
• More flexible.
• Simple to manage risk because it handled during its
iteration.
• The Client gets important functionality early.
• Disadvantage of Incremental Model
• Need for good planning
• Total Cost is high.
• Well defined module interfaces are needed.
Evolutionary Process
Models
• Evolutionary models are iterative type models. They allow to
develop more complete versions of the software.
• Following are the evolutionary process models.
1.
The prototyping
model
2.
The spiral model
• 1. The Prototyping model
1.
Prototype is
defined as first or preliminary form using which other forms are copied or
derived.
2.
Prototype model is
a set of general objectives for software.
3.
It does not
identify the requirements like detailed input, output.
4.
It is software
working model of limited functionality.
5.
In this model,
working programs are quickly produced.
The Prototyping model
• 1. Communication In this phase, developer and customer meet
and discuss the overall objectives of the software.
• 2. Quick design
• Quick design is
implemented when requirements are known.
• It includes only the
important aspects like input and output format of the software.
• It focuses on those
aspects which are visible to the user rather than the detailed plan.
• It helps to construct
a prototype.
• 3. Modeling quick design
• This phase gives the
clear idea about the development of software because the software is now built.
• It allows the
developer to better understand the exact requirements.
• 4. Construction of prototype The prototype is evaluated by
the customer itself.
• 5. Deployment, delivery, feedback
• If the user is not
satisfied with current prototype then it refines according to the requirements
of the user.
• The process of
refining the prototype is repeated until all the requirements of users are met.
• When the users are
satisfied with the developed prototype then the system is developed on the
basis of final prototype.
• Advantages of Prototyping Model:
• Prototype model need not know the detailed input, output,
processes, adaptability of operating system and full machine interaction.
• In the development process of this model users are actively
involved.
• The development process is the best platform to understand
the system by the user.
• Errors are detected much earlier.
• Gives quick user feedback for better solutions.
• It identifies the missing functionality easily. It also
identifies the confusing or difficult functions.
• Disadvantages of Prototyping Model:
• The client involvement is more and it is not always
considered by the developer.
• It is a slow process because it takes more time for
development.
• Many changes can disturb the rhythm of the development team.
• It is a thrown away prototype when the users are confused
with it.
Spiral Model
• The spiral model, initially proposed by Boehm, is an evolutionary software process model that couples the iterative feature of prototyping with the controlled and systematic aspects of the linear sequential model.
• It implements the
potential for rapid development of new versions of the software. Using the
spiral model, the software is developed in a series of incremental releases.
• During the early iterations, the additional release may be a
paper model or prototype.
During later
iterations, more and more complete versions of the engineered system are
produced.
• Objective setting: Each cycle in the spiral starts with
the identification of purpose for that cycle, the various alternatives that are
possible for achieving the targets, and the constraints that exists.
• Risk Assessment and reduction: The next phase in the
cycle is to calculate these various alternatives based on the goals and
constraints. The focus of evaluation in this stage is located on the risk
perception for the project.
• Development and validation: The next phase is to develop
strategies that resolve uncertainties and risks. This process may include
activities such as benchmarking, simulation, and prototyping.
• Planning: Finally, the next step is planned. The project
is reviewed, and a choice made whether to continue with a further period of the
spiral. If it is determined to keep, plans are drawn up for the next step of
the project.
• The development phase depends on the remaining risks. For
example, if performance or user-interface risks are treated more essential than
the program development risks, the next phase may be an evolutionary
development that includes developing a more detailed prototype for solving the
risks.
• The risk-driven feature of the spiral model allows
it to accommodate any mixture of a specification-oriented, prototype-oriented,
simulation-oriented, or another type of approach. An essential element of the
model is that each period of the spiral is completed by a review that includes
all the products developed during that cycle, including plans for the next cycle.
The spiral model works for development as well as enhancement projects.
• Advantages
• High amount of risk analysis
• Useful for large and mission-critical projects.
• Disadvantages
• Can be a costly model to use.
• Risk analysis needed highly particular expertise
• Doesn't work well for smaller projects.
Concurrent development
model
• The concurrent development model is called as concurrent model.
• The communication activity has completed in the first
iteration and exits in the awaiting changes state.
• The modeling activity completed its initial communication and
then goes to the underdevelopment state.
• If the customer specifies the change in the requirement, then
the modeling activity moves from the under development state into the awaiting
change state.
• The concurrent process model activities moving from one state
to another state.
• Advantages of the concurrent development model
• This model is applicable to all types of software development
processes.
• It is easy for understanding and use.
• It gives immediate feedback from testing.
• It provides an accurate picture of the current state of a
project.
• Disadvantages of the concurrent development model
• It needs better communication between the team members. This
may not be achieved all the time.
• It requires remembering the status of the different
activities.
Unified Process
The Unified Process
(UP) is an iterative and incremental software development methodology
focused on building complex enterprise systems. It emphasizes an
object-oriented approach, using the Unified Modeling Language (UML) and
incorporates best practices like risk-driven development and iterative
lifecycles.
0 comments:
Post a Comment