Software Engineering Unit 1 Notes (1)-3
Software Engineering Unit 1 Notes (1)-3
UNIT-1
The goal of the SDLC life cycle model is to deliver high-quality, maintainable
software that meets the user’s requirements. SDLC in software engineering
models outlines the plan for each stage so that each stage of the software
development model can perform its task efficiently to deliver the software at a
low cost within a given time frame that meets users’ requirements.
The SDLC model involves six phases or stages while developing any software.
SDLC is a collection of these six stages, and the stages of SDLC are as follows:
Stage-1: Planning and Requirement Analysis
Planning is a crucial step in everything, just as in software development. In this
same stage, requirement analysis is also performed by the developers of the
organization. This is attained from customer inputs, and sales department/market
surveys.
The information from this analysis forms the building blocks of a basic project.
The quality of the project is a result of planning. Thus, in this stage, the basic
project is designed with all the available information.
SOFTWARE ENGINEERING NOTES MS J SUMEDHA ASST PROF
number of spirals depends upon the type of project. Each loop in the spiral
structure indicates the Phases of the Spiral model.
5. V-Shaped Model
The V-shaped model is executed in a sequential manner in V-shape. Each stage
or phase of this model is integrated with a testing phase. After every development
phase, a testing phase is associated with it, and the next phase will start once the
previous phase is completed, i.e., development & testing. It is also known as the
verification or validation model.
6. Big Bang Model
The Big Bang model in SDLC is a term used to describe an informal and
unstructured approach to software development, where there is no specific
planning, documentation, or well-defined phases.
What is the need for SDLC?
SDLC is a method, approach, or process that is followed by a software
development organization while developing any software. SDLC models were
introduced to follow a disciplined and systematic method while designing
software. With the software development life cycle, the process of software
design is divided into small parts, which makes the problem more understandable
and easier to solve. SDLC comprises a detailed description or step-by-step plan
for designing, developing, testing, and maintaining the software.
DEFINATION OF SOFTWARE ENGINEERING:
Software is: (1) instructions (computer programs) that when executed provide
desired features, function, and performance; (2) data structures that enable the
programs to adequately manipulate information, and (3) descriptive information in
both hard copy and virtual forms that describes the operation and use of the
programs.
SOFTWARE ENGINEERING:
In order to build software that is ready to meet the challenges of the twenty-first
century, you must recognize a few simple realities: • Software has become deeply
embedded in virtually every aspect of our lives, and as a consequence, the number
of people who have an interest in the features and functions provided by a specific
application8 has grown dramatically. When a new application or embedded system
is to be built, many voices must be heard. And it sometimes seems that each of
them has a slightly different idea of what software features and functions should be
delivered. It follows that a concerted effort should be made to understand the
problem before a software solution is developed. • The information technology
requirements demanded by individuals, businesses, and governments grow
increasing complex with each passing year. Large teams of people now create
SOFTWARE ENGINEERING NOTES MS J SUMEDHA ASST PROF
PROCESS PATTERNS:
As the software team moves through the software process they encounter
problems. It would be very useful if solutions to these problems were readily
available so that problems can be resolved quickly. Process-related problems
which are encountered during software engineering work, it identifies the
encountered problem and in which environment it is found, then it will suggest
proven solutions to problem, they all are described by process pattern. By solving
problems a software team can construct a process that best meets needs of a
project.
Uses of the process pattern:
At any level of abstraction, patterns can be defined. They can be used to describe
a problem and solution associated with framework activity in some situations.
While in other situations patterns can be used to describe a problem and solution
associated with a complete process model.
Template:
Pattern Name – Meaningful name must be given to a pattern within context
of software process (e.g. Technical Reviews).
Forces – The issues that make problem visible and may affect its solution also
environment in which pattern is encountered.
It is of three types :
1. Stage pattern – Problems associated with a framework activity for process
are described by stage pattern. Establishing Communication might be an
example of a staged pattern. This pattern would incorporate task pattern
Requirements Gathering and others.
2. Task-pattern – Problems associated with a software engineering action or
work task and relevant to successful software engineering practice (e.g.,
Requirements Gathering is a task pattern) are defined by task-pattern.
SOFTWARE ENGINEERING NOTES MS J SUMEDHA ASST PROF
3. Phase pattern – Even when the overall flow of activities is iterative in nature,
it defines sequence of framework activities that occurs within process. Spiral
Model or Prototyping might be an example of a phase pattern.
Known uses and Examples: In which the pattern is applicable, it indicates the
specific instances. For example, communication is mandatory at the beginning of
every software project, is recommended throughout the software project, and is
mandatory once the deployment activity is underway.
May not keep up with rapidly evolving technologies: The SEI/CMM model
may not be able to keep up with rapidly evolving technologies and
development methodologies, which could limit its usefulness in certain
contexts.
Lack of agility: The SEI/CMM model may not be agile enough to respond
quickly to changing business needs or customer requirements, which could
limit its usefulness in dynamic and rapidly changing environments.
Key Process Areas (KPA)
Each of these KPA (Key Process Areas) defines the basic requirements that
should be met by a software process in order to satisfy the KPA and achieve that
level of maturity.
Conceptually, key process areas form the basis for management control of the
software project and establish a context in which technical methods are applied,
work products like models, documents, data, reports, etc. are produced,
milestones are established, quality is ensured and change is properly managed.
Level-1: Initial
No KPIs defined.
SOFTWARE ENGINEERING NOTES MS J SUMEDHA ASST PROF
Processes followed are Adhoc and immature and are not well defined.
Unstable environment for software development.
No basis for predicting product quality, time for completion, etc.
Limited project management capabilities, such as no systematic tracking of
schedules, budgets, or progress.
We have limited communication and coordination among team members and
stakeholders.
No formal training or orientation for new team members.
Little or no use of software development tools or automation.
Highly dependent on individual skills and knowledge rather than standardized
processes.
High risk of project failure or delays due to a lack of process control and
stability.
Level-2: Repeatable
Focuses on establishing basic project management policies.
Experience with earlier projects is used for managing new similar-natured
projects.
Project Planning- It includes defining resources required, goals, constraints,
etc. for the project. It presents a detailed plan to be followed systematically for
the successful completion of good-quality software.
Configuration Management- The focus is on maintaining the performance of
the software product, including all its components, for the entire lifecycle.
Requirements Management- It includes the management of customer
reviews and feedback which result in some changes in the requirement set. It
also consists of accommodation of those modified requirements.
Subcontract Management- It focuses on the effective management of
qualified software contractors i.e. it manages the parts of the software
developed by third parties.
Software Quality Assurance- It guarantees a good quality software product
by following certain rules and quality standard guidelines while developing.
Level-3: Defined
At this level, documentation of the standard guidelines and procedures takes
place.
It is a well-defined integrated set of project-specific software engineering and
management processes.
Peer Reviews: In this method, defects are removed by using a number of
review methods like walkthroughs, inspections, buddy checks, etc.
SOFTWARE ENGINEERING NOTES MS J SUMEDHA ASST PROF
Capability Maturity
Capability Maturity Model Integration
Aspects Model (CMM) (CMMI)
Expands to various
Primarily focused on
disciplines like systems
Scope software engineering
engineering, hardware
processes.
development, etc.
Capability Maturity
Capability Maturity Model Integration
Aspects Model (CMM) (CMMI)
Expands to various
Primarily focused on
disciplines like systems
Scope software engineering
engineering, hardware
processes.
development, etc.
Capability Maturity
Capability Maturity Model Integration
Aspects Model (CMM) (CMMI)
Capability Maturity
Capability Maturity Model Integration
Aspects Model (CMM) (CMMI)
Expands to various
Primarily focused on
disciplines like systems
Scope software engineering
engineering, hardware
processes.
development, etc.
PROCESS PATTERNS:
As the software team moves through the software process they encounter
problems. It would be very useful if solutions to these problems were readily
available so that problems can be resolved quickly. Process-related problems
which are encountered during software engineering work, it identifies the
encountered problem and in which environment it is found, then it will suggest
proven solutions to problem, they all are described by process pattern. By solving
problems a software team can construct a process that best meets needs of a
project.
Uses of the process pattern:
At any level of abstraction, patterns can be defined. They can be used to describe
a problem and solution associated with framework activity in some situations.
While in other situations patterns can be used to describe a problem and solution
associated with a complete process model.
Template:
SOFTWARE ENGINEERING NOTES MS J SUMEDHA ASST PROF
ISO 9001:2000 for Software: a generic standard that applies to any organization
that wants to improve the overall quality of the products, systems, or services that
it provides. Therefore, the standard is directly applicable to software organizations
and companies.
PROCESS MODELS:
Prescriptive Models:
Waterfall Model.
Incremental Process Model.
Evolutionary Process Model.
The Waterfall Model:
The Waterfall model is also known as ‘Linear sequential model‘or ‘Classic life
cycle model‘. It is used in small projects where requirements are well defined and
known before starting the project. Activities are carried out in a linear and
systematic fashion.
The process starts with communication, where requirements are gathered from the
customer and recorded.
Then goes to the planning stage where the cost and time constraints are estimated,
a schedule is outlined and project tracking variables are defined.
Modeling is where a design based on the requirements and keeping the project
constraints in mind is created. After this, code is generated and the actual building
of the product is started in the construction phase.
SOFTWARE ENGINEERING NOTES MS J SUMEDHA ASST PROF
Testing (unit testing, integration testing) is done after code completion in this
phase.
Deployment is the last stage where the product is delivered, customer feedback is
received and, support and maintenance for the product are provided.
It may be difficult for the customer to provide all the specific requirements
beforehand.
Cannot be used for complex and object-oriented projects.
Testing and customer evaluation are done at the last stages and hence the risk is
high.
Iteration of activities is not promoted which is unavoidable for certain projects.
May lead to “blocking states” in which some project team members must wait for
other members of the team to complete dependent tasks.
Incremental Process Model:
In the Incremental process model, a series of releases, called increments, are built
and delivered to the customer. First, a simple working system(core product), that
addresses basic requirements, is delivered. Customer feedback is recorded after
each incremental delivery. Many increments are delivered, by adding more
functions, until the required system is released. This model is used when a user
demands a model of product with limited functionality quickly.
SOFTWARE ENGINEERING NOTES MS J SUMEDHA ASST PROF
Evolutionary process models are opted when the requirements may tend to
change and also when the complete sophisticated product delivery cannot be done
before a given deadline, but the delivery of a limited version of it is possible.
model permits requirements, plans and estimates to evolve over time. Here we
discuss prototyping and the spiral model.
Prototyping Model:
In cases when the requirements are unclear and are likely to change or when the
developer is doubtful about working of an algorithm, a solution is to build a
prototype and find out what is actually needed. Hence, in this model, one or more
prototypes are made with unrefined currently known requirements before the
actual product is made.
Prototyping model
A quick design is what occurs in a prototype model. The client evaluates the
prototype and gives feedback and other requirements which are incorporated in the
next prototype. This is repeated until the prototype becomes a complete product
that is acceptable to the client. Some prototypes are built as “throwaways”, others
are “evolutionary” in nature as they evolve into the actual system.
Advantages of prototyping:
Spiral Model:
The first circuit around the spiral might result in the development of a product
specification. The subsequent passes around the spiral might be used to develop a
prototype and then progressively more mature versions of the software.
Planning is where the objectives, alternatives and other constraints are determined.
The alternatives are considered, risks in each alternative are analysed and
prototypes are refined in the risk analysis sector. At the development quadrant
level risks are known and it proceeds with developing and testing the product. In
the assessment sector, customer evaluation of product developed is reviewed and
SOFTWARE ENGINEERING NOTES MS J SUMEDHA ASST PROF
the next phase is planned. This loop continues until acceptable software is built and
deployed.
Hence, the spiral model follows an incremental process methodology and unlike
other process models, it deals with the uncertainty by applying a series of risk
analysis strategies throughout the process.
Reduces risk.
Recommended for complex projects.
Changes can be incorporated at a later stage.
Strong documentation helps in better management.
Disadvantages of spiral model:
The modeling and construction stages are begun with identifying candidate
components suitable for the project.
In the Formal Methods Model, mathematical methods are applied in the process of
developing software. It Uses Formal Specification Language (FSL) to define each
system characteristics. FSL defines the syntax, notations for representing system
specifications, several objects and relations to define the system in detail.
Regardless of the software process that is chosen, the builders of complex software
invariably implement a set of localized features, functions, and information
content. These localized software characteristics are modeled as components (e.g.,
object-oriented classes) and then constructed within the context of a system
architecture. As modern computer-based systems become more sophisticated (and
complex), certain concerns—customer required properties or areas of technical
interest—span the entire architecture. Some concerns are high-level properties of a
system (e.g., security, fault tolerance). Other concerns affect functions (e.g., the
application of business rules), while others are systemic (e.g., task synchronization
or memory management). When concerns cut across multiple system functions,
features, and information, they are often referred to as crosscutting concerns.
Aspectual requirements define those crosscutting concerns that have an impact
across the software architecture. Aspect-oriented software development (AOSD),
often referred to as aspect-oriented programming (AOP), is a relatively new
software engineering paradigm that provides a process and methodological
approach for defining, specifying, designing, and constructing aspects—
“mechanisms beyond subroutines and inheritance for localizing the expression of a
crosscutting concern” . Grundy provides further discussion of aspects in the
context of what he calls aspect-oriented component engineering (AOCE): AOCE
uses a concept of horizontal slices through vertically-decomposed software
components, called “aspects,” to characterize cross-cutting functional and non-
functional properties of components. Common, systemic aspects include user
interfaces, collaborative work, distribution, persistency, memory management,
transaction processing, security, integrity and so on. Components may provide or
require one or more “aspect details” relating to a particular aspect, such as a
SOFTWARE ENGINEERING NOTES MS J SUMEDHA ASST PROF
The unified process is not simply a process, but rather an extensible framework
which should be customized for specific organizations or projects. The rational
unified process is, similarly, a customizable framework. As a result, it is often
impossible to say whether a refinement of the process was derived from UP or
from RUP, and so the names tend to be used interchangeably.
Inception
Elaboration (milestone)
Construction (release)
Transition (final production release)
Each phase will generally contain multiple iterations (named I1, E1, E2, C1, etc. in
the UP phase illustration). The exact number of iterations in each phase depends on
SOFTWARE ENGINEERING NOTES MS J SUMEDHA ASST PROF
the scale and nature of the project. The UP phase illustration here contains exactly
1, 2, 4 and 2 iterations in the four phases, but this is merely an example of how a
specific project could look.
Inception phase
Inception is the smallest phase in the project, and ideally, it should be quite short.
If the inception phase is long then it may be an indication of excessive up-front
specification, which is contrary to the spirit of the unified process.
Develop an approximate vision of the system, make the business case, define the
scope, and produce a rough cost estimate and project schedule.
Elaboration phase
During the elaboration phase, the project team is expected to capture a healthy
majority of the system requirements. However, the primary goals of Elaboration
are to address known risk factors and to establish and validate the system
architecture. Common processes undertaken in this phase include the creation
of use case diagrams, conceptual diagrams (class diagrams with only basic
notation) and package diagrams (architectural diagrams).
The final elaboration phase deliverable is a plan (including cost and schedule
estimates) for the construction phase. At this point the plan should be accurate and
credible since it should be based on the elaboration phase experience and since
significant risk factors should have been addressed during the elaboration phase.
Construction phase
Construction is the largest phase of the project. In this phase, the remainder of the
system is built on the foundation laid in elaboration. System features are
implemented in a series of short, time-boxed iterations. Each iteration results in an
executable release of the software. It is customary to write full-text use cases
during the construction phase and each one becomes the start of a new iteration.
Common Unified Modeling Language (UML) diagrams used during this phase
SOFTWARE ENGINEERING NOTES MS J SUMEDHA ASST PROF
Transition phase
The final project phase is transition. In this phase the system is deployed to the
target users. Feedback received from an initial release (or initial releases) may
result in further refinements to be incorporated over the course of several transition
phase iterations. The transition phase also includes system conversions and user
training.
The best software process is one that is close to the people who will be doing the
work. If a software process model has been developed at a corporate or
organizational level, it can be effective only if it is amenable to significant
adaptation to meet the needs of the project team that is actually doing software
engineering work. In an ideal setting, you would create a process that best fits your
needs, and at the same time, meets the broader needs of the team and the
organization. Alternatively, the team itself can create its own process, and at the
same time meet the narrower needs of individuals and the broader needs of the
organization. and argues that it is possible to create a “personal software process”
and/or a “team software process.” Both require hard work, training, and
coordination, but both are achievable.
Personal Software Process (PSP): Every developer uses some process to build
computer software. The process may be haphazard or ad hoc; may change on a
daily basis; may not be efficient, effective, or even successful; but a “process” does
exist. Suggests that in order to change an ineffective personal process, an
individual must move through four phases, each requiring training and careful
instrumentation. The Personal Software Process (PSP) emphasizes personal
measurement of both the work product that is produced and the resultant quality of
the work product. In addition PSP makes the practitioner responsible for project
planning (e.g., estimating and scheduling) and empowers the practitioner to control
the quality of all software work products that are developed. The PSP model
defines five framework activities: Planning. This activity isolates requirements and
develops both size and resource estimates. In addition, a defect estimates (the
number of defects projected for the work) is made. All metrics are recorded on
worksheets or templates. Finally, development tasks are identified and a project
SOFTWARE ENGINEERING NOTES MS J SUMEDHA ASST PROF
PSP stresses the need to identify errors early and, just as important, to understand
the types of errors that you are likely to make. This is accomplished through a
rigorous assessment activity performed on all work products you produce. PSP
represents a disciplined, metrics-based approach to software engineering that may
lead to culture shock for many practitioners. However, when PSP is properly
introduced to software engineers [Hum96], the resulting improvement in software
engineering productivity and software quality are significant [Fer97]. However,
PSP has not been widely adopted throughout the industry. The reasons, sadly, have
more to do with human nature and organizational inertia than they do with the
strengths and weaknesses of the PSP approach. PSP is intellectually challenging
and demands a level of commitment (by practitioners and their managers) that is
not always possible to obtain. Training is relatively lengthy, and training costs are
high. The required level of measurement is culturally difficult for many software
people. Can PSP be used as an effective software process at a personal level? The
answer is an unequivocal “yes.” But even if PSP is not adopted in its entirely,
many of the personal process improvement concepts that it introduces are well
worth learning.
• Build self-directed teams that plan and track their work, establish goals, and own
their processes and plans. These can be pure software teams or integrated product
teams (IPTs) of 3 to about 20 engineers.
SOFTWARE ENGINEERING NOTES MS J SUMEDHA ASST PROF
• Show managers how to coach and motivate their teams and how to help them
sustain peak performance. • Accelerate software process improvement by making
CMM23 Level 5 behavior normal and expected.
TSP defines the following framework activities: project launch, high-level design,
implementation, integration and test, and postmortem. Like their counterparts in
PSP (note that terminology is somewhat different), these activities enable the team
to plan, design, and construct software in a disciplined manner while at the same
time quantitatively measuring the process and the product. The postmortem sets
the stage for process improvements. TSP makes use of a wide variety of scripts,
forms, and standards that serve to guide team members in their work. “Scripts”
define specific process activities (i.e., project launch, design, implementation,
integration and system testing, postmortem) and other more detailed work
functions (e.g., development planning, requirements development, software
configuration management, and unit test) that are part of the team process. TSP
recognizes that the best software teams are self-directed.Team members set project
objectives, adapt the process to meet their needs, control the project schedule, and
through measurement and analysis of the metrics collected, work continually to
improve the team’s approach to software engineering. Like PSP, TSP is a rigorous
approach to software engineering that provides distinct and quantifiable benefits in
productivity and quality. The team must make a full commitment to the process
and must undergo thorough training to ensure that the approach is properly applied.
PROCESS TECHNOLOGY:
One or more of the process models discussed in the preceding sections must be
adapted for use by a software team. To accomplish this, process technology tools
have been developed to help software organizations analyze their current process,
organize work tasks, control and monitor progress, and manage technical quality.
Process technology tools allow a software organization to build an automated
model of the process framework, task sets, and umbrella activities discussed in the
SOFTWARE ENGINEERING NOTES MS J SUMEDHA ASST PROF
S.
No. Product Process
Introduction to Agility:
Agility has become today’s buzzword when describing a contemporary software
method. Everyone is agile. An associate agile team could be a nimble team able
to befittingly reply to changes. Modification is what software development is
extremely abundant.
Changes within the software being engineered,
Changes to the team members,
Changes attributable to new technology,
Changes of all types will have an effect on the merchandise they build or the
project that makes the merchandise.
All changes can be represented as shown in the below diagram which is
considered according to Ivar Jacobson Agility process of Software.
Agile Model divides tasks into time boxes to provide specific functionality for the
release. Each build is incremental in terms of functionality, with the final build
containing all the attributes. The division of the entire project into small parts helps
minimize the project risk and the overall project delivery time.
Individuals and interactions are given priority over processes and tools.
Adaptive, empowered, self-organizing team.
Focuses on working software rather than comprehensive documentation.
Agile Model in software engineering aims to deliver complete customer
satisfaction by rapidly delivering valuable software.
Welcome changes in requirements, even late in the development phase.
Daily co-operation between businesspeople and developers.
SOFTWARE ENGINEERING NOTES MS J SUMEDHA ASST PROF
Here are the important stages involved in the Agile Model process in the SDLC
life cycle:
Requirements Gathering: In this Agile model phase, you must define the
requirements. The business opportunities and the time and effort required for
the project should also be discussed. By analyzing this information, you can
determine a system’s economic and technical feasibility.
Design the Requirements: Following the feasibility study, you can work
with stakeholders to define requirements. Using the UFD diagram or high-
level UML diagram, you can determine how the new system will be
incorporated into your existing software system.
Develop/Iteration: The real work begins at this stage after the software
development team defines and designs the requirements. Product, design,
SOFTWARE ENGINEERING NOTES MS J SUMEDHA ASST PROF
and development teams start working, and the product will undergo different
stages of improvement using simple and minimal functionality.
Test: This phase of the Agile Model involves the testing team. For example,
the Quality Assurance team checks the system’s performance and reports
bugs during this phase.
Deployment: In this phase, the initial product is released to the user.
Feedback: After releasing the product, the last step of the Agile Model is
feedback. In this phase, the team receives feedback about the product and
works on correcting bugs based on the received feedback.
Compared to Waterfall, Agile cycles are short. There may be many such cycles in
a project. The phases are repeated until the product is delivered.
Types of Agile
Here are some important Agile Types:
Crystal: Using Crystal methodology is one of the most straightforward and most
flexible approaches to developing software, recognizing that each project has
unique characteristics. Therefore, policies and practices need to be tailored to suit
them.