Software Engineering
Software Engineering
Software should be written in such a way so that it can evolve to meet the changing
Maintainability needs of customers. This is a critical attribute because software change is an inevitable
requirement of a changing business environment.
Software should not make wasteful use of system resources such as memory and
Efficiency processor cycles. Efficiency therefore includes responsiveness, processing time,
memory utilisation, etc.
Software must be acceptable to the type of users for which it is designed. This means
Acceptability
that it must be understandable, usable and compatible with other systems that they use.
Software Engineering
A Layered Technology
tools
methods
process model
a “quality” focus
■ Any engineering approach must rest on organizational commitment to quality which fosters a continuous process improvement culture.
■ Process layer as the foundation defines a framework with activities for effective delivery of software engineering technology. Establish the
context where products (model, data, report, and forms) are produced, milestone are established, quality is ensured and change is managed.
■ Method provides technical how-to’s for building software. It encompasses many tasks including communication, requirement analysis, design
modeling, program construction, testing and support.
■ Tools provide automated or semi-automated support for the process and methods.
Software Process
❖A process is a collection of activities, actions and tasks
that are performed when some work product is to be
created. It is not a rigid prescription for how to build
computer software. Rather, it is an adaptable approach
that enables the people doing the work to pick and
choose the appropriate set of work actions and tasks.
❖Purpose of process is to deliver software in a timely
manner and with sufficient quality to satisfy those who
have sponsored its creation and those who will use it.
Software Process
❖ Communication: communicate with customer to understand objectives and gather
requirements
❖ Planning: creates a “map” defines the work by describing the tasks, risks and
resources, work products and work schedule.
❖ Modeling: Create a “sketch”, what it looks like architecturally, how the constituent
parts fit together and other characteristics.
❖ Construction: code generation and the testing.
❖ Deployment: Delivered to the customer who evaluates the products and provides
feedback based on the evaluation.
❖ These five framework activities can be used to all software development regardless of
the application domain, size of the project, complexity of the efforts etc, though the
details will be different in each case.
❖ For many software projects, these framework activities are applied iteratively as a
project progresses. Each iteration produces a software increment that provides a
Five Activities of a Generic Process
subset of overall software features and functionality.
framework
Definition of Software Process
Both do the same work with different depth and formality. Choose the task sets that achieve the goal and still maintain quality and agility.
❖Standard CMMI Assessment Method for Process Improvement (SCAMPI) — provides a five step process assessment model that
incorporates five phases: initiating, diagnosing, establishing, acting and learning.
❖CMM-Based Appraisal for Internal Process Improvement (CBA IPI)—provides a diagnostic technique for assessing the relative
maturity of a software organization; uses the SEI CMM as the basis for the assessment [Dun01]
❖SPICE—The SPICE (ISO/IEC15504) standard defines a set of requirements for software process assessment. The intent of the
standard is to assist organizations in developing an objective evaluation of the efficacy of any defined software process. [ISO08]
❖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.
[Ant06]
Prescriptive Models
❖ Originally proposed to bring order to chaos.
❖ Prescriptive process models advocate an orderly approach to software engineering. However, will
some extent of chaos (less rigid) be beneficial to bring some creativity?
It is the oldest paradigm for SE. When requirements are well defined and reasonably stable, it
leads to a linear fashion.
(problems: 1. rarely linear, iteration needed. 2. hard to state all requirements explicitly. Blocking state. 3. code will not be released
until very late.)
The classic life cycle suggests a systematic, sequential approach to software development.
The Waterfall Model
The Waterfall Model Cont……
❖ Most organizations usually define:
standards on the outputs (deliverables) produced at the end of every phase
entry and exit criteria for every phase.
❖ They also prescribe specific methodologies for:
specification,
design,
testing,
project management, etc.
The Waterfall Model Cont……
1. Feasibility Study:
• The main goal of this phase is to determine whether it would be financially and technically
feasible to develop the software.
• The feasibility study involves understanding the problem and then determine the various
possible strategies to solve the problem.
M1 M2
M3 M4
System Testing
Quick
plan
communication
Modeling
Quick design
Deployment Construction
delivery & of prototype
feedback Construction
of prototype
6. Evolutionary Models: The Spiral Model
❖ It couples the iterative nature of prototyping with the controlled and systematic aspects of the waterfall
model and is a risk-driven process model generator that is used to guide multi-stakeholder concurrent
engineering of software intensive systems.
❖ Two main distinguishing features: one is 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.
❖ A series of evolutionary releases are delivered. During the early iterations, the release might be a model or
prototype. During later iterations, increasingly more complete version of the engineered system are
produced.
❖ The first circuit in the clockwise direction might result in the product specification; subsequent passes
around the spiral might be used to develop a prototype and then progressively more sophisticated versions
of the software. Each pass results in adjustments to the project plan. Cost and schedule are adjusted based
on feedback. Also, the number of iterations will be adjusted by project manager.
❖ Good to develop large-scale system as software evolves as the process progresses and risk should be
understood and properly reacted to. Prototyping is used to reduce risk.
❖ However, it may be difficult to convince customers that it is controllable as it demands considerable risk
assessment expertise.
The Spiral Model
The Spiral Model
When to use Spiral Model:
1.When there is a budget constraint and risk evaluation is important.
2.For medium to high-risk projects.
3.Long-term project commitment because of potential changes to economic priorities as the
requirements change with time.
4.Customer is not sure of their requirements which is usually the case.
5.Requirements are complex and need evaluation to get clarity.
6.New product line which should be released in phases to get enough customer feedback.
7.Significant changes are expected in the product during the development cycle.
The Spiral Model
Advantages:
1. High amount of risk analysis hence, avoidance of risk is enhanced.
2. Good for large projects
3.Strong approval and documentation control
4.High Customer Satisfaction: Customer can see the development of the product at the early phase of
the software development and thus, they habituated with the system by using it before completion of the
total product.
Disadvantages :
1.Complex: The Spiral Model is much more complex than other SDLC models.
2.Expensive: Spiral Model is not suitable for small projects as it is expensive.
3. Risk Analysis: The successful completion of the project is very much dependent on Risk Analysis.
Without very highly experienced experts, it is going to be a failure to develop a project using this model.
Three Concerns on Evolutionary Processes
❖ First concern is that prototyping poses a problem to project planning because
of the uncertain number of cycles required to construct the product.
❖ Second, it does not establish the maximum speed of the evolution. If the
evolution occur too fast, without a period of relaxation, it is certain that the
process will fall into chaos. On the other hand if the speed is too slow then
productivity could be affected.
❖ Third, software processes should be focused on flexibility and extensibility
rather than on high quality. We should prioritize the speed of the
development over zero defects. Extending the development in order to reach
high quality could result in a late delivery of the product when the
opportunity niche has disappeared.
Concurrent Model
❖ Allow a software team to represent iterative and concurrent elements of any of the process
models. For example, the modeling activity defined for the spiral model is accomplished
by invoking one or more of the following actions: prototyping, analysis and design.
❖ The Figure shows modeling may be in any one of the states at any given time. For
example, communication activity has completed its first iteration and in the awaiting
changes state. The modeling activity was in inactive state, now makes a transition into the
under development state. If customer indicates changes in requirements, the modeling
activity moves from the under development state into the awaiting changes state.
❖ Concurrent modeling is applicable to all types of software development and provides an
accurate picture of the current state of a project. Rather than confining software
engineering activities, actions and tasks to a sequence of events, it defines a process
network. Each activity, action or task on the network exists simultaneously with other
activities, actions or tasks. Events generated at one point trigger transitions among the
states.
Concurrent Model
Still Other Process Models
❖ Component based development—the process to apply when reuse is a
development objective ( like spiral model)
❖ Formal methods—emphasizes the mathematical specification of
requirements ( easy to discover and eliminate ambiguity, incompleteness
and inconsistency)
❖ Aspect Oriented software development (AOSD)—provides a process and
methodological approach for defining, specifying, designing, and
constructing aspects
❖ Unified Process—a “use-case driven, architecture-centric, iterative and
incremental” software process closely aligned with the Unified Modeling
Language (UML) to model and develop object-oriented system iteratively
and incrementally.
7. Rational Unified Process (RUP)
❖ RUP is a software development process for object-oriented models. It is
also known as the Unified Process Model. It is created by Rational
corporation and is designed and documented using UML (Unified
Modeling Language).
❖ This process is included in IBM Rational Method Composer (RMC)
product. IBM (International Business Machine Corporation) allows us to
customize, design, and personalize the unified process.
❖ RUP is proposed by Ivar Jacobson, Grady Bootch, and James Rambaugh.
Some characteristics of RUP include use-case driven, Iterative (repetition
of the process), and Incremental (increase in value) by nature, delivered
online using web technology, can be customized or tailored in modular and
electronic form, etc. RUP reduces unexpected development costs and
prevents wastage of resources.
The Unified Process (UP)
elaboration
inception
The Unified Process (UP)
1. Inception –
Communication and planning are main.
Identifies Scope of the project using use-case model allowing managers to estimate costs and time
required.
Customers requirements are identified and then it becomes easy to make a plan of the project.
Project plan, Project goal, risks, use-case model, Project description, are made.
Project is checked against the milestone criteria and if it couldn’t pass these criteria then project
can be either cancelled or redesigned.
2. Elaboration –
Planning and modeling are main.
Detailed evaluation, development plan is carried out and diminish the risks.
Revise or redefine use-case model (approx. 80%), business case, risks.
Again, checked against milestone criteria and if it couldn’t pass these criteria then again project can
be cancelled or redesigned.
Executable architecture baseline.
The Unified Process (UP)
3.Construction –
Project is developed and completed.
System or source code is created and then testing is done.
Coding takes place.
4.Transition –
Final project is released to public.
Transit the project from development into production.
Update project documentation.
Beta testing is conducted.
Defects are removed from project based on feedback from public.
5.Production –
Final phase of the model.
Project is maintained and updated accordingly.
UP Phases
UP Work Products
8. Component Assembly Model
9.Rapid application development model (RAD)
❖ The Rapid Application Development Model was first proposed by IBM in
1980’s. The critical feature of this model is the use of powerful development
tools and techniques.
❖ A software project can be implemented using this model if the project can be
broken down into small modules wherein each module can be assigned
independently to separate teams. These modules can finally be combined to
form the final product.
❖ Development of each module involves the various basic steps as in waterfall
model i.e. analyzing, designing, coding and then testing, etc.
❖ Another striking feature of this model is a short time span i.e. the time frame
for delivery(time-box) is generally 60-90 days.
9.Rapid application development model (RAD)
The Manifesto for Agile Software Development
That is, while there is value in the items on the right, we value the items on
the left more.”
Kent Beck et al
What is “Agility”?
❖ Effective (rapid and adaptive) response to change (team members, new technology,
requirements)
❖ Effective communication in structure and attitudes among all team members, technological
and business people, software engineers and managers。
❖ Drawing the customer into the team. Eliminate “us and them” attitude. Planning in an
uncertain world has its limits and plan must be flexible.
❖ Organizing a team so that it is in control of the work performed
❖ Eliminate all but the most essential work products and keep them lean.
❖ Emphasize an incremental delivery strategy as opposed to intermediate products that gets
working software to the customer as rapidly as feasible.
What is “Agility”?
Yielding …
❖ Rapid, incremental delivery of software
❖ The development guidelines stress delivery over analysis and design
although these activates are not discouraged, and active and
continuous communication between developers and customers.
Why and What Steps are“Agility” important?
❖ A well-designed agile process may “flatten” the cost of change curve by coupling
incremental delivery with agile practices such as continuous unit testing and pair
programming. Thus team can accommodate changes late in the software project without
dramatic cost and time impact.
Agility and the Cost of Change
An Agile Process
1.Our highest priority is to satisfy the customer through early and continuous delivery of valuable
software.
2.Welcome changing requirements, even late in development. Agile processes harness change for the
customer's competitive advantage.
3.Deliver working software frequently, from a couple of weeks to a couple of months, with a preference
to the shorter timescale.
4.Business people and developers must work together daily throughout the project.
5.Build projects around motivated individuals. Give them the environment and support they need, and
trust them to get the job done.
6.The most efficient and effective method of conveying information to and within a development team is
face–to–face conversation.
7.Working software is the primary measure of progress.
Agility Principles - II
8.Agile processes promote sustainable development. The sponsors, developers, and users
should be able to maintain a constant pace indefinitely.
9.Continuous attention to technical excellence and good design enhances agility.
10. Simplicity – the art of maximizing the amount of work not done – is essential.
11. The best architectures, requirements, and designs emerge from self–organizing teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes
and adjusts its behavior accordingly.
Human Factors
❖ The process molds to the needs of the people and team, not the other way
around
❖ key traits must exist among the people on an agile team and the team
itself:
Competence. ( talent, skills, knowledge)
Common focus. ( deliver a working software increment )
Collaboration. ( peers and stakeholders)
Decision-making ability. ( freedom to control its own destiny)
Fuzzy problem-solving ability.(ambiguity and constant changes, today problem may not be tomorrow’s problem)
Mutual trust and respect.
Self-organization. ( themselves for the work done, process for its local environment, the work schedule)
Extreme Programming (XP)
❖ The most widely used agile process, originally proposed by Kent Beck in 2004. It uses an object-oriented
approach.
❖ XP Planning
Begins with the listening, leads to creation of “user stories” that describes required output, features, and
functionality. Customer assigns a value(i.e., a priority) to each story.
Agile team assesses each story and assigns a cost (development weeks. If more than 3 weeks, customer asked
to split into smaller stories)
Working together, stories are grouped for a deliverable increment next release.
A commitment (stories to be included, delivery date and other project matters) is made. Three ways: 1. Either
all stories will be implemented in a few weeks, 2. high priority stories first, or 3. the riskiest stories will be
implemented first.
After the first increment “project velocity”, namely number of stories implemented during the first release is
used to help define subsequent delivery dates for other increments. Customers can add stories, delete existing
stories, change values of an existing story, split stories as development work proceeds.
Extreme Programming (XP)
❖ A software development method Originally proposed by Schwaber and Beedle (an activity
occurs during a rugby match) in early 1990.
❖ Scrum—distinguishing features
Development work is partitioned into “packets”
Testing and documentation are on-going as the product is constructed
Work units occurs in “sprints” and is derived from a “backlog” of existing changing prioritized requirements
Changes are not introduced in sprints (short term but stable) but in backlog.
Meetings are very short (15 minutes daily) and sometimes conducted without chairs ( what did you do since
last meeting? What obstacles are you encountering? What do you plan to accomplish by next meeting?)
“demos” are delivered to the customer with the time-box allocated. May not contain all functionalities. So
customers can evaluate and give feedbacks.
Scrum
Crystal
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 successful completion of
a good quality software.
Capability Maturity Model
Level-2: Repeatable –
❖ 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 which are developed by third parties.
❖ Software Quality Assurance- It guarantees a good quality software product by following
certain rules and quality standard guidelines while development.
Capability Maturity Model
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.
❖ Intergroup Coordination- It consists of planned interactions between different development teams
to ensure efficient and proper fulfillment of customer needs.
❖ Organization Process Definition- It’s key focus is on the development and maintenance of the
standard development processes.
❖ Organization Process Focus- It includes activities and practices that should be followed to
improve the process capabilities of an organization.
❖ Training Programs- It focuses on the enhancement of knowledge and skills of the team members
including the developers and ensuring an increase in work efficiency.
Capability Maturity Model
Level-4: Managed –
❖ At this stage, quantitative quality goals are set for the organization for software products as
well as software processes.
❖ The measurements made help the organization to predict the product and process quality
within some limits defined quantitatively.
❖ Software Quality Management- It includes the establishment of plans and strategies to
develop a quantitative analysis and understanding of the product’s quality.
❖ Quantitative Management- It focuses on controlling the project performance in a quantitative
manner.
Capability Maturity Model
Level-5: Optimizing –
❖ This is the highest level of process maturity in CMM and focuses on continuous process
improvement in the organization using quantitative feedback.
❖ Use of new tools, techniques and evaluation of software processes is done to prevent
recurrence of known defects.
❖ Process Change Management- Its focus is on the continuous improvement of organization’s
software processes to improve productivity, quality and cycle time for the software product.
❖ Technology Change Management- It consists of identification and use of new technologies to
improve product quality and decrease the product development time.
❖ Defect Prevention- It focuses on identification of causes of defects and to prevent them from
recurring in future projects by improving project defined process.
Q&A
THANKS