1. 1. INTRODUCTION
2. THE SOFTWARE PROCESS
2.1 A GENERIC VIEW OF PROCESS
2.1.1 S/W ENG. A LAYERED TECHNOLOGY
2.1.2 A PROCESS FRAME WORK
2.1.3 CAPABILITY MATURITY MODEL INTEGRATION (CMMI)
2.1.4 PROCESS PATTERNS
2.1.5 PROCESS ASSESSMENT
2.1.6 PRODUCT AND PROCESS
2.2 PROCESS MODELS
2.2.1 PRESCRIPTIVE MODELS
2.2.2 THE WATERFALL MODELS
2.2.3 INCREMENTAL PROCESS MODELS
THE INCREMENTAL MODEL
THE RAD MODEL
2.2.4 EVOLUTIONARY PROCESS MODELS
PROTOTYPING
THE SPIRAL MODEL
THE CONCURRENT DEVELOPMENT MODEL
2.2.5 SPECIALIZED PROCESS MODELS
COMPONENT-BASED DEVELOPMENT
THE FORMAL METHODS MODEL
2.2.6 THE UNIFIED PROCESS
3. AGILE VIEW OF PROCESS
WHAT IS AGILITY?
AGILE PROCESS
AGILE PROCESS MODELS
EXTREME PROGRAMMING(XP)
ADAPTIVE SOFTWARE DEVELOPMENT(ASD)
DYNAMIC SYSTEMS DEVELOPMENT METHODS(DSDM)
SCRUM
CRYSTAL
4. SE PRACTICE
THE ESSENCE OF PRACTICE
CORE PRINCIPLES
COMMUNICATION PRACTICES
PLANNING PRACTICES
MODELING PRACTICES
ANALYSIS MODELING PRACTICE
DESIGN MODELING PRACTICE
CONSTRUCTION PRACTICE
CODING PRINCIPLES AND CONCEPTS
TESTING PRINCIPLES
DEPLOYMENT
2. 1. A quality Focus :- Any engineering approach
must rest on an quality. The "Bed Rock" that
supports software Engineering is Quality Focus.
•Functional: degree to which correct S/W has been
developed.
•Non-functional: Maintainability, Robustness etc.,
ex: six sigma, TQM etc.,
2. Process :- Foundation for SE is the Process
Layer. A frame work that must be established for
effective delivery of s/w. SE process is the GLUE
that holds all the technology layers together and
enables the timely development of computer
software. It forms the base for management control
of software project.
3. Methods :- SE methods provide the "Technical
Questions" for building a Software. Methods contain
a broad array of tasks that include
communication, requirement analysis, design
modeling, program construction testing and
support.
4. Tools :- SE tools provide automated or semi-
automated support for the "Process" and the
"Methods". Tools are integrated so that information
created by one tool can be used by another.
Computer aided s/w: is set of tools working together
to deliver a functionality in the s/w.
SOFTWARE ENGINEERING – A LAYERED TECHNOLOGY
3. PROCESS FRAME WORK
Frame work is a standard way
to build and deploy
applications.
Software framework is
foundation of a complete
software engineering process.
It includes no. of framework
activities that are applicable to
all software projects.
4. A generic process framework encompasses five activities:
1. Communication: the detailed communication between the customer(s)
or stakeholders and the company people about what to be developed.
2. Planning: Technical tasks to be conducted, risks, required resources,
work schedule etc.
3. Modeling: A model will be created to better understand the
requirements and design.
4. Construction: Code will be generated and tested.
5. Deployment: Complete or partially completed version of software is
represented to the customers to evaluate and they give feedback to
developers.
Other umbrella activities:
1. Software project tracking and control In this activity, the developing
team accesses project plan and compares it with the predefined
schedule. If these project plans do not match with the predefined
schedule, then the required actions are taken to maintain the schedule.
2. Risk management Risk is an event that may or may not occur.
If the event occurs, then it causes some unwanted outcome. Hence, proper
risk management is required.
5. 1. Software project tracking and controlIn this activity, the developing team accesses project
plan and compares it with the predefined schedule.
If these project plans do not match with the predefined schedule, then the required actions are
taken to maintain the schedule.
2. Risk managementRisk is an event that may or may not occur.
If the event occurs, then it causes some unwanted outcome. Hence, proper risk management is
required.
3. Software Quality Assurance (SQA)SQA is the planned and systematic pattern of activities
which are required to give a guarantee of software quality.
For example, during the software development meetings are conducted at every stage of
development to find out the defects and suggest improvements to produce good quality
software.
4. Formal Technical Reviews (FTR)FTR is a meeting conducted by the technical staff. The
motive of the meeting is to detect quality problems and suggest improvements. The technical
person focuses on the quality of the software from the customer point of view.
5. Measurement Measurement consists of the effort required to measure the software. The
software cannot be measured directly. It is measured by direct and indirect measures. Direct
measures like cost, lines of code, size of software etc. Indirect measures such as quality of
software which is measured by some other factor. Hence, it is an indirect measure of
software.
6. Software Configuration Management (SCM) It manages the effect of change throughout the
software process.
7. Reusability managementIt defines the criteria for reuse the product. The quality of software
is good when the components of the software are developed for certain application and are
useful for developing other applications.
8. Work product preparation and productionIt consists of the activities that are needed to
create the documents, forms, lists, logs and user manuals for developing a software.
7. PROCESS MODEL
The software development model are the various processes or methodologies that
are being selected for the development of the project depending on the project’s
aims and goals. There are many development life cycle models that have been
developed in order to achieve different required objectives. The models specify the
various stages of the process and the order in which they are carried out.
The selection of model has very high impact on the testing that is carried out. It will
define what, where and when should we perform testing and determines which
testing techniques to be used.
There are various Software development models or methodologies like:
2.2.1 PRESCRIPTIVE MODELS
2.2.2 THE WATERFALL MODELS
2.2.3 INCREMENTAL PROCESS MODELS
THE INCREMENTAL MODEL
THE RAD MODEL
2.2.4 EVOLUTIONARY PROCESS MODELS
PROTOTYPING
THE SPIRAL MODEL
THE CONCURRENT DEVELOPMENT MODEL
2.2.5 SPECIALIZED PROCESS MODELS
COMPONENT-BASED DEVELOPMENT
THE FORMAL METHODS MODEL
2.2.6 THE UNIFIED PROCESS
8.
9. WATER FALL MODEL
The waterfall model is a relatively linear sequential design approach for Software
engineering design. In software development, it tends to be among the less iterative and
flexible approaches, as progress flows in largely one direction ("downwards" like
a waterfall) through the phases of conception, initiation, analysis, design, construction,
testing, deployment and maintenance.
In waterfall model, the following phases are followed in order:
• System and Software requirements: Captured in a System Requirements Document.
• Analysis: Resulting in models, schema and business rules.
• Design: Resulting in the Software Architecture
• Coding: The development, proving and integration of software.
• Testing: The systematic discovery and debugging of defects.
• Operations: The installation, migration, support, and maintenance of complete systems.
Thus the waterfall model maintains that one should move to a phase only when its
preceding phase is reviewed and verified.
10. A SPIRAL VIEW OF THE REQUIREMENTS ENGINEERING PROCESS
11. SPECIALIZED PROCESS MODELS
1. Component-based Development Model :
• Consists of the following process steps
– Available component-based products are researched and evaluated
for the application domain in question
– Component integration issues are considered
– A software architecture is designed to accommodate the
components
– Components are integrated into the architecture
– Comprehensive testing is conducted to ensure proper functionality
• Relies on a robust component library
• Capitalizes on software reuse, which leads to documented savings
in project cost and time
12. SPECIALIZED PROCESS MODELS (CONT.,)
2. Formal Methods Model (Description)
• Encompasses a set of activities that leads to formal mathematical
specification of computer software
• Enables a software engineer to specify, develop, and verify a
computer-based system by applying a rigorous, mathematical
notation
• Ambiguity, incompleteness, and inconsistency can be discovered and
corrected more easily through mathematical analysis
• Offers the promise of defect-free software
• Used often when building safety-critical systems
Formal Methods Model (Challenges)
• Development of formal methods is currently quite time-consuming
and expensive
• Because few software developers have the necessary background to
apply formal methods, extensive training is required
• It is difficult to use the models as a communication mechanism for
technically unsophisticated customers
15. Background
• Introduced during the late 1980s and early 1990s when object-
oriented languages were gaining wide-spread use.
• Many object-oriented analysis and design methods were proposed;
three top authors were Grady Booch, Ivar Jacobson, and James
Rumbaugh.
• They eventually worked together on a unified method, called the
Unified Modeling Language (UML)
– UML is a robust notation for the modeling and development of object- oriented
systems
– UML became an industry standard in 1997
– However, UML does not provide the process framework, only the necessary
technology for object-oriented development
• Booch, Jacobson, and Rumbaugh later developed the unified
process, which is a framework for object-oriented software
engineering using UML
– Draws on the best features and characteristics of conventional software process
models
– Emphasizes the important role of software architecture
– Consists of a process flow that is iterative and incremental, thereby providing an
evolutionary feel
• Consists of five phases: inception, elaboration, construction,
transition, and production
16. 1. Inception Phase
• Encompasses both customer communication and planning activities of the
generic process
• Business requirements for the software are identified
• A rough architecture for the system is proposed
• A plan is created for an incremental, iterative development
• Fundamental business requirements are described through preliminary use
cases
– A use case describes a sequence of actions that are performed by a user.
2. Elaboration Phase
• Encompasses both the planning and modeling activities of the generic process
• Refines and expands the preliminary use cases
• Expands the architectural representation to include five views
– Use-case model
– Analysis model
– Design model
– Implementation model
– Deployment model
• Often results in an executable architectural baseline that represents a first
cut executable system
• The baseline demonstrates the viability of the architecture but does not
provide all features and functions required to use the system.
17. 3. Construction Phase
• Encompasses the construction activity of the generic process
• Uses the architectural model from the elaboration phase as input
• Develops or acquires the software components that make each use-case
operational
• Analysis and design models from the previous phase are completed to
reflect the final version of the increment
• Use cases are used to derive a set of acceptance tests that are executed
prior to the next phase.
4. Transition Phase
• Encompasses the last part of the construction activity and the first part
of the deployment activity of the generic process
• Software is given to end users for beta testing and user feedback reports
on defects and necessary changes
• The software teams create necessary support documentation (user
manuals, trouble-shooting guides, installation procedures)
• At the conclusion of this phase, the software increment becomes a usable
software release.
18. 5. Production Phase
• Encompasses the last part of the deployment activity of the
generic process
• On-going use of the software is monitored
• Support for the operating environment (infrastructure) is
provided
• Defect reports and requests for changes are submitted and
evaluated
19.
Unified Process Work Products
• Work products are produced in each of the first four phases of
the unified process
Analysis model and the Design model work products:
• Analysis model includes – Scenario-based model, class-based
model, and behavioral model
• Design model includes – Component-level design, interface
design, architectural design, and data/class design