Software Engineering CS403 Unit-I
Software Engineering CS403 Unit-I
Software Engineering CS403 Unit-I
Research, Indore
www.acropolis.in
Software Engineering
(CS 403)
❖Understand all SDLC Phases and software process models for given
project.
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.
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.
framework
21 February 2022 shivshankarrajput@acropolis.in 21
Umbrella Activities
Complement the five process framework activities and help team manage and control progress, quality,
change, and risk.
❖ Software project tracking and control: assess progress against the plan and take actions to maintain
the schedule.
❖ Risk management: assesses risks that may affect the outcome and quality.
❖ Software quality assurance: defines and conduct activities to ensure quality.
❖ Technical reviews: assesses work products to uncover and remove errors before going to the next
activity.
❖ Measurement: define and collects process, project, and product measures to ensure stakeholder’s
needs are met.
❖ Software configuration management: manage the effects of change throughout the software process.
❖ Reusability management: defines criteria for work product reuse and establishes mechanism to
achieve reusable components.
❖ Work product preparation and production: create work products such as models, documents, logs,
forms and lists.
⮚the overall flow of activities, actions, and tasks and the interdependencies among them
⮚the degree to which actions and tasks are defined within each framework activity
⮚the degree to which work products are identified and required
⮚the manner which quality assurance activities are applied
⮚the manner in which project tracking and control activities are applied
⮚the overall degree of detail and rigor with which the process is described
⮚the degree to which the customer and other stakeholders are involved with the project
⮚the level of autonomy given to the software team
⮚the degree to which team organization and roles are prescribed
⮚Unfortunately, there have been times when these objectives were not
achieved. If prescriptive models are applied dogmatically and without
adaptation, they can increase the level of bureaucracy.
❖ Myth 2: Until I get the program running, I have no way of assessing its quality.
❖ Reality: technical review are a quality filter that can be used to find certain classes of software defects from the
inception of a project.
❖ Myth 3: software engineering will make us create voluminous and unnecessary documentation and will invariably
slow us down.
❖ Reality: it is not about creating documents. It is about creating a quality product. Better quality leads to a reduced
rework. Reduced work results in faster delivery times.
❖Many people recognize the fallacy of the myths. Regrettably, habitual attitudes and methods foster poor
management and technical practices, even when reality dictates a better approach .
21 February 2022 shivshankarrajput@acropolis.in 32
How It all Starts
❖SafeHome:
⮚Every software project is precipitated by some business
need—
▪ the need to correct a defect in an existing application;
▪ the need to the need to adapt a ‘legacy system’ to a changing business environment;
▪ the need to extend the functions and features of an existing application, or
▪ the need to create a new product, service, or system.
Dr. M. Zhu
Software Engineering: A Practitioner’s Approach, 7/e
by Roger S. Pressman
❖In order to convert knowledge into software, dialogues are needed between
users and designers, between designers and tools to bring knowledge into
software.
Both do the same work with different depth and formality. Choose the task sets that achieve the goal and still maintain quality and
agility.
63
❖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]
64
65
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. 68
72
21 February 2022 shivshankarrajput@acropolis.in
Activities during Feasibility Study
❖Perform a cost/benefit analysis:
⮚to determine which solution is the best.
⮚you may determine that none of the solutions is
feasible due to:
▪ high cost,
▪ resource constraints,
▪ technical reasons.
73
21 February 2022 shivshankarrajput@acropolis.in
Requirements Analysis and Specification
❖Aim of this phase:
⮚understand the exact requirements of the customer,
⮚document them properly.
❖Consists of two distinct activities:
⮚requirements gathering and analysis
⮚requirements specification.
74
21 February 2022 shivshankarrajput@acropolis.in
Goals of Requirements Analysis
❖Collect all related data from the customer:
⮚analyze the collected data to clearly understand what the
customer wants,
⮚find out any inconsistencies and incompleteness in the
requirements,
⮚resolve all inconsistencies and incompleteness.
75
21 February 2022 shivshankarrajput@acropolis.in
Requirements Gathering
❖Gathering relevant data:
⮚usually collected from the end-users through
interviews and discussions.
⮚For example, for a business accounting software:
▪ interview all the accountants of the organization to find out
their requirements.
76
21 February 2022 shivshankarrajput@acropolis.in
Requirements Analysis Cont....
❖The data you initially collect from the users:
⮚would usually contain several contradictions and ambiguities:
⮚each user typically has only a partial and incomplete view of the system.
❖Ambiguities and contradictions:
⮚must be identified
⮚resolved by discussions with the customers.
❖Next, requirements are organized:
⮚into a Software Requirements Specification (SRS) document.
❖Engineers doing requirements analysis and specification:
⮚are designated as analysts.
77
21 February 2022 shivshankarrajput@acropolis.in
Design
❖Design phase transforms requirements specification:
⮚ into a form suitable for implementation in some programming
language.
❖In technical terms:
⮚during design phase, software architecture is derived from the
SRS document.
❖Two design approaches:
⮚traditional approach,
⮚object oriented approach.
78
21 February 2022 shivshankarrajput@acropolis.in
Traditional Design Approach
❖Consists of two activities:
1. Structured analysis 2.Structured design
⮚Structured analysis
1.Identify all the functions to be performed.
2.Identify data flow among the functions.
3.Decompose each function recursively into sub-functions.
4.Identify data flow among the subfunctions as well.
79
21 February 2022 shivshankarrajput@acropolis.in
Structured Analysis (CONT.)
❖Carried out using Data flow diagrams (DFDs).
❖After structured analysis, carry out structured design:
⮚architectural design (or high-level design)
⮚detailed design (or low-level design).
80
21 February 2022 shivshankarrajput@acropolis.in
Structured Design
❖High-level design:
⮚decompose the system into modules,
⮚represent invocation relationships among the modules.
❖Detailed design:
⮚different modules designed in greater detail:
▪ data structures and algorithms for each module are designed.
81
21 February 2022 shivshankarrajput@acropolis.in
Object Oriented Design
❖First identify various objects (real world entities)
occurring in the problem:
⮚identify the relationships among the objects.
⮚For example, the objects in a pay-roll software may be:
▪ employees,
▪ managers,
▪ pay-roll register,
▪ Departments, etc.
82
21 February 2022 shivshankarrajput@acropolis.in
Implementation
❖During the implementation phase:
⮚each module of the design is coded,
⮚each module is unit tested
▪ tested independently as a stand alone unit, and debugged,
⮚each module is documented.
❖The purpose of unit testing:
⮚test if individual modules work correctly.
❖The end product of implementation phase:
⮚a set of program modules that have been tested individually
83
21 February 2022 shivshankarrajput@acropolis.in
Integration and System Testing
❖Different modules are integrated in a planned manner:
⮚modules are almost never integrated in one shot.
⮚Normally integration is carried out through a number of steps.
❖During each integration step,
⮚the partially integrated system is tested.
M1 M2
M3 M4
84
21 February 2022 shivshankarrajput@acropolis.in
System Testing
85
21 February 2022 shivshankarrajput@acropolis.in
Maintenance
❖Maintenance of any software product:
⮚requires much more effort than the effort to develop the product itself.
⮚development effort to maintenance effort is typically 40:60.
❖Corrective maintenance:
⮚Correct errors which were not discovered during the product development
phases.
❖Perfective maintenance:
⮚Improve implementation of the system
⮚enhance functionalities of the system.
❖Adaptive maintenance:
⮚Port software to a new environment,
▪ e.g. to a new computer or to a new operating system.
86
21 February 2022 shivshankarrajput@acropolis.in
Advantages of Waterfall Model
❖This model is very simple and is easy to understand.
❖Phases in this model are processed one at a time.
❖Each stage in the model is clearly defined.
❖This model has very clear and well undestood milestones.
❖Process, actions and results are very well documented.
❖Reinforces good habits: define-before- design,
design-before-code.
❖This model works well for smaller projects and projects where requirements
are well understood.
94
95
96
98
Quick
plan
communication
Modeling
Quick design
Deployment Construction
delivery & of prototype
feedback Construction
of prototype
101
❖ However, it may be difficult to convince customers that it is controllable as it demands considerable risk
assessment expertise.
21 February 2022 shivshankarrajput@acropolis.in
The Spiral Model
108
elaboration
inception
115
Dr. M. Zhu
■Agile Development
Slide Set to accompany
Software Engineering: A Practitioner’s Approach, 7/e
by Roger S. Pressman
shivshankarrajput@acropolis.in 119
21 February 2022
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
❖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.
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.
shivshankarrajput@acropolis.in
21 February 2022 123
Agility and the Cost of Change
❖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.
125
21 February 2022 shivshankarrajput@acropolis.in
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.
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.
128
21 February 2022 shivshankarrajput@acropolis.in
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)
129
21 February 2022 shivshankarrajput@acropolis.in
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.
131
21 February 2022 shivshankarrajput@acropolis.in
Extreme Programming (XP)
132
21 February 2022 shivshankarrajput@acropolis.in
Scrum
❖ 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.
133
21 February 2022 shivshankarrajput@acropolis.in
Scrum
❖shivshankarrajput@acropolis.in
134
21 February 2022
Crystal
135
21 February 2022 shivshankarrajput@acropolis.in
Software Process Customization and Improvement