Professional Documents
Culture Documents
Software Engineering - Chapter 1
Software Engineering - Chapter 1
Software Engineering - Chapter 1
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Software engineering
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
The Process Framework
A process framework establishes the foundation for a complete software engineering process by identifying a
small number of framework activities that are applicable to all software projects, regardless of their size or
complexity. In addition, the process framework encompasses a set of umbrella activities that are applicable
across the entire software process.
Communication - Before any technical work can commence, it is critically important to communicate and
collaborate with the customer (and other stakeholders). The intent is to understand stakeholders’ objectives
for the project and to gather requirements that help define software features and functions.
Planning- A software project is a complicated journey, and the planning activity creates a “map” that helps
guide the team as it makes the journey. The map—called a software project plan—defines the software
engineering work by describing the technical tasks to be conducted, the risks that are likely, the resources that
will be required, the work products to be produced, and a work schedule.
Construction- What you design must be built. This activity combines code generation (either manual or
automated) and the testing that is required to uncover errors in the code.
Deployment- The software (as a complete entity or as a partially completed increment) is delivered to the
customer who evaluates the delivered product and provides feedback based on the evaluation.
and establishes mechanisms to achieve reusable components. Work product preparation and
production—encompass the activities required to create work products such as models, documents, logs,
forms, and lists.
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Umbrella Activities
Software engineering process framework activities are complemented by a number of umbrella activities. In
general, umbrella activities are applied throughout a software project and help a software team manage and
control progress, quality, change, and risk.
Risk management—assesses risks that may affect the outcome of the project or the quality of the product.
Software quality assurance—defines and conducts the activities required to ensure software quality.
Technical reviews—assess software engineering work products in an effort to uncover and remove errors
before they are propagated to the next activity.
Measurement—defines and collects process, project, and product measures that assist the team in
delivering software that meets stakeholders’ needs; can be used in conjunction with all other framework and
umbrella activities.
Software configuration management—manages the effects of change throughout the software process.
Reusability management—defines criteria for work product reuse (including software components) and
establishes mechanisms to achieve reusable components.
Work product preparation and production—encompass the activities required to create work products
such as models, documents, logs, forms, and lists.
SOFTWARE PROCESS
When you work to build a product or system, it’s important to go through a series of predictable steps—a road
map that helps you create a timely, high-quality result. The road map that you follow is called a “software
process.”
The hierarchy of technical work within the software process is activities, encompassing actions, populated by
tasks.
Process was defined as a collection of work activities, actions, and tasks that are performed when some work
product is to be created. Each of these activities, actions, and tasks resides within a framework or model that
defi nes their relationship with the process and with one another.
Each software engineering action is defi ned by a task set that identifi es the work tasks that are to be
completed, the work products that will be produced, the quality assurance points that will be required, and the
milestones that will be used to indicate progress.
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Software process framework
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Process flow
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Capability Maturity Model (CMM) :
The Capability Maturity Model (CMM) is a procedure used to develop and refine an organization's software
development process.
The model defines a five-level evolutionary stage of increasingly organized and consistently more mature
processes.
CMM was developed and is promoted by the Software Engineering Institute (SEI), a research and
development center promote by the U.S. Department of Defense (DOD).
Capability Maturity Model is used as a benchmark to measure the maturity of an organization's software
process.
1. Initial Level
The initial level, as the name suggests, is the starting point for the utilization of an undocumented or new
repeat process. Processes at the initial level are generally not documented and tend to be in a state of active
change.
The processes also tend to be operated by events and/or users in an uncontrolled manner. The result is that
processes are unstable. Success in the initial level is not expected to be repeatable because processes are
not adequately documented or defined.
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
2. Repeatable Level
Processes at the repeatable level, as the name suggests, are repeatable and tend to generate constant
results. At this level, general project management strategies exist, and successes may be replicated when the
appropriate measures and processes have been developed, identified, and recorded.
3. Defined Level
Processes at the defined level are usually defined and recorded (documented). Standard processes are also
defined and developed and can be improved as time passes. Hence, process validation for various scenarios
may be possible. Essentially, processes at the defined level are expected to be in the development stage, and
they can be enhanced to the next level.
4. Managed Level
At the managed level, organizations tend to exercise control over their processes and can monitor them.
Process capability is defined, process sustainability is tested across various environments, and processes are
normally improved and in use. Additionally, the process maturity at the managed stage allows for them to be
used in certain environments or projects without quality deterioration or specification alteration.
5. Optimizing Level
The optimizing level tends to encompass continuous upgrades of processes via feedback obtained from
monitoring activities and through the development of new and creative processes that will increase
organizational efficiency. The optimizing stage focuses heavily on process performance improvement.
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Advanced Trends in Software Engineering :
The future for software development is, as they say, very bright (and exciting) indeed.
Attempting to predict the future of anything is notoriously tricky, but there are some emerging fields that
look like good bets for the future of software engineering. If you are considering a career in this already
fast-developing and exciting field, now is a good a time as any to get on the bandwagon.
2. Artificial Intelligence will only get better over the next few years
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
PRESCRIPTIVE PROCESS MODELS :
A process model provides a specific roadmap for software engineering work. It defi nes the flow of all
activities, actions and tasks, the degree of iteration, the work products, and the organization of the
work that must be done.
The purpose of process models is to try to reduce the chaos present in developing new software
products.
Prescriptive process models define a prescribed set of process elements and a predictable process workflow.
The waterfall model is a sequential, plan driven-process where you must plan and schedule all your
activities before starting the project. Each activity in the waterfall model is represented as a separate
phase arranged in linear order.
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, culminating in ongoing
support of the completed software.
Each of these phases produces one or more documents that need to be approved before the next
phase begins. However, in practice, these phases are very likely to overlap and may feed
information to one another.
The waterfall model is easy to understand and follow. It doesn’t require a lot of customer involvement
after the specification is done. Since it’s inflexible, it can’t adapt to changes. There is no way to see
or try the software until the last phase.
The waterfall model has a rigid structure, so it should be used in cases where the requirements are
understood completely and unlikely to radically change.
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
V Model :
The V model (Verification and Validation model) is an extension of the waterfall model.
All the requirements are gathered at the start and cannot be changed.
You have a corresponding testing activity for each stage. For every phase in the development cycle,
there is an associated testing phase.
The corresponding testing phase of the development phase is planned in parallel, as you can see above.
The V model is highly disciplined, easy to understand, and makes project management easier. But it
isn’t good for complex projects or projects that have unclear or changing requirements.
This makes the V model a good choice for software where downtimes and failures are
unacceptable.
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Incremental Process Models :
The incremental model divides the system’s functionality into small increments that are delivered one
after the other in quick succession. The most important functionality is implemented in the initial
increments.
The subsequent increments expand on the previous ones until everything has been updated and
implemented.
The incremental model combines the elements’ linear and parallel process flows.
Each iteration passes through the requirements, design, coding, and testing stages.
The incremental model lets stakeholders and developers see results with the first increment.
The incremental model delivers a series of releases, called increments, that provide progressively more
functionality for the customer as each increment is delivered.
If the stakeholders don’t like anything, everyone finds out a lot sooner. It is efficient as the developers only
focus on what is important and bugs are fixed as they arise, but you need a clear and complete definition of
the whole system before you start.
The incremental model is great for projects that have loosely-coupled parts and projects with complete and
clear requirements.
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Evolutionary Process Models :
Evolutionary models are iterative. They are characterized in a manner that enables you to develop
increasingly more complete versions of the software.
Prototyping : Often, a customer defines a set of general objectives for software, but does not
identify detailed requirements for functions and features. In other cases, the developer may be
unsure of the efficiency of an algorithm, the adaptability of an operating system, or the form that
human-machine interaction should take. In these, and many other situations, a prototyping paradigm
may offer the best approach.
You meet with other stakeholders to define the overall objectives for the software, identify whatever
requirements are known, and outline areas where further definition is mandatory.
A prototyping iteration is planned quickly, and modeling (in the form of a “quick design”) occurs. A
quick design focuses on a representation of those aspects of the software that will be visible to end
users (e.g., human interface layout or output display formats).
The quick design leads to the construction of a prototype. The prototype is deployed and evaluated
by stakeholders, who provide feedback that is used to further refine requirements. Iteration occurs as
the prototype is tuned to satisfy the needs of various stakeholders, while at the same time enabling
you to better understand what needs to be done.
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Iterative Model
The iterative development model develops a system through building small portions of all the
features. This helps to meet initial scope quickly and release it for feedback.
In the iterative model, you start off by implementing a small set of the software requirements. These
are then enhanced iteratively in the evolving versions until the system is completed. This process
model starts with part of the software, which is then implemented and reviewed to identify further
requirements.
Like the incremental model, the iterative model allows you to see the results at the early
stages of development. This makes it easy to identify and fix any functional or design
flaws. It also makes it easier to manage risk and change requirements.
The deadline and budget may change throughout the development process, especially for
large complex projects. The iterative model is a good choice for large software that can be
easily broken down into modules.
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
RAD Model
The Rapid Application Development (RAD model) is based on iterative development and
prototyping with little planning involved. You develop functional modules in parallel
for faster product delivery. It involves the following phases:
1. Business modeling
2. Data modeling
3. Process modeling
4. Application generation
5. Testing and turnover
The RAD concept focuses on gathering requirements using focus groups and workshops,
reusing software components, and informal communication.
The RAD model accommodates changing requirements, reduces development time, and
increases the reusability of components. But it can be complex to manage. Therefore, the
RAD model is great for systems that need to be produced in a short time and have known
requirements.
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Spiral Model
The spiral model is a risk driven iterative software process model. The spiral model
delivers projects in loops. Unlike other process models, its steps aren’t activities but
phases for addressing whatever problem has the greatest risk of causing a failure.
It was designed to include the best features from the waterfall and introduces
risk-assessment.
The spiral development model is a risk-driven process model generator that is used to
guide multi-stakeholder concurrent engineering of software intensive systems. It has
two main distinguishing features. One is a cyclic approach for incrementally growing a
system’s degree of definition and implementation while decreasing its degree of risk.
The other is a set of anchor point milestones for ensuring stakeholder commitment to
feasible and mutually satisfactory system solutions.
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
You have the following phases for each cycle:
1. Address the highest-risk problem and determine the objective and alternate
solutions
2. Evaluate the alternatives and identify the risks involved and possible solutions
3. Develop a solution and verify if it’s acceptable
4. Plan for the next cycle
You develop the concept in the first few cycles, and then it evolves into an
implementation. Though this model is great for managing uncertainty, it can be difficult
to have stable documentation. The spiral model can be used for projects with unclear
needs or projects still in research and development.
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Agile process model:
The meaning of Agile is swift or versatile."Agile process model" refers to a software development
approach based on iterative development.
Agile methods break tasks into smaller iterations, or parts do not directly involve long term planning.
The project scope and requirements are laid down at the beginning of the development process.
Plans regarding the number of iterations, the duration and the scope of each iteration are clearly
defined in advance.
Each iteration is considered as a short time "frame" in the Agile process model, which typically lasts
from one to four weeks. The division of the entire project into smaller parts helps to minimize the
project risk and to reduce the overall project delivery time requirements. Each iteration involves a
team working through a full software development life cycle including planning, requirements
analysis, design, coding, and testing before a working product is demonstrated to the client.
2. Design the requirements: When you have identified the project, work with stakeholders to define
requirements. You can use the user flow diagram or the high-level UML diagram to show the work of
new features and show how it will apply to your existing system.
3. Construction/ iteration: When the team defines the requirements, the work begins. Designers and
developers start working on their project, which aims to deploy a working product. The product will
undergo various stages of improvement, so it includes simple, minimal functionality.
4. Testing: In this phase, the Quality Assurance team examines the product's performance and looks
for the bug.
5. Deployment: In this phase, the team issues a product for the user's work environment.
6. Feedback: After releasing the product, the last step is feedback. In this, the team receives
feedback about the product and works through the feedback.
● When a customer is ready to have a meeting with a software team all the time.
1. Frequent Delivery
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Disadvantages(Cons) of Agile Model:
1. Due to the shortage of formal documents, it creates confusion and crucial decisions taken
throughout various phases can be misinterpreted at any time by different team members.
2. Due to the lack of proper documentation, once the project completes and the developers
allotted to another project, maintenance of the finished project can become a difficulty.
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
● Integration testing: It helps to identify bugs at the interfaces of different
functionalities. Extreme programming suggests that the developers should achieve
continuous integration by building and performing integration testing several times a
day.
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Scrum :
SCRUM is an agile development process focused primarily on ways to manage tasks in team-based
development conditions.
Scrum uses an iterative and incremental development model, with shorter duration of iterations.
Scrum is relatively simple to implement and focuses on quick and frequent deliveries.
● Scrum Master: The scrum can set up the master team, arrange the meeting and remove
obstacles for the process
● Product owner: The product owner makes the product backlog, prioritizes the delay and is
responsible for the distribution of functionality on each repetition.
● Scrum Team: The team manages its work and organizes the work to complete the sprint or
cycle.
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Sprint
The heart of Scrum is a Sprint, a time-box of two weeks or one month during which a potentially
releasable product increment is created. A new Sprint starts immediately after the conclusion of the
previous Sprint. Sprints consist of the Sprint planning, daily scrums, the development work, the
● The Daily Scrum Meeting is a 15-minute time-boxed event for the Scrum Team to
● A Sprint Review is held at the end of the Sprint to inspect the Increment and make
● The Sprint Retrospective occurs after the Sprint Review and prior to the next Sprint
Planning. In this meeting, the Scrum Team is to inspect itself and create a plan for
Scrum meetings : are short (typically 15-minute) meetings held daily by the Scrum team. Three
key questions are asked and answered by all team members
• What did you do since the last team meeting?
• What obstacles are you encountering?
• What do you plan to accomplish by the next team meeting?
Demos : deliver the software increment to the customer so that functionality that has been
implemented can be demonstrated and evaluated by the customer. It is important to note that the
demo may not contain all planned functionality, but rather those functions that can be delivered
within the time-box that was established.
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Kanban - Agile :
Agile Kanban is Agile Software Development with Kanban approach. In Agile Kanban, the Kanban
board is used to visualize the workflow. The Kanban board is normally put up on a wall in the
project room. The status and progress of the story development tasks is tracked visually on the
Kanban Board
Kanban board is used to depict the flow of tasks across the value stream. The Kanban board −
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Advantages of Kanban board
The major advantages of using a Kanban board are −
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
The tasks and stories are represented by Kanban cards. The current status of each task is known by
displaying the cards in separate columns on the board. The columns are labeled as To Do, Doing,
and Done. Each task moves from To Do to Doing and then to Done.
Kanban Board is updated on a daily basis as the team progresses through the development.
WIP Limit
The label in the Doing column also contains a number, which represents the maximum number of
tasks that can be in that column at any point of time. i.e., the number associated with the Doing
Pull Approach
Pull approach is used as and when a task is completed in the Doing column. Another card is pulled
Self-directing
In Agile Development, the team is responsible for planning, tracking, reporting and communicating
in the project. Team is allowed to make decisions and is accountable for the completion of the
development and product quality. This is aligned to the characteristic of empowerment of the team
in Kanban.
Continuous Flow
In Agile development, there is no gate approach and the work flows across the different functions
without wait-time. This contributes to minimizing the cycle time characteristic of Kanban.
Visual Metrics
In Agile Kanban, the metrics are tracked visually using −
● Kanban Board
● Burndown Chart
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Uses of Kanban board
Kanban Board is used to −
● Measure the cycle times that can be used to optimize average cycle time.
As Kanban Board is updated daily, it contains all the information that is required by the Burndown
charts.
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel