SE Module 1
SE Module 1
-Mrudul Arkadi
Module 1 Introduction to Software Engineering
• Embedded software resides within a product or system. E.g. digital function of dashboard display
in a car.
• Product-line software : specific capability for use by many different customers (word processing,
graphics, database management)
{Modern reusable components encapsulate data and processing into software parts
to be reused by different programs. E.g. graphical user interface, pull-down menus
etc.}
10
Software Engineering is required
• To manage Large software
• For more Scalability
• Cost Management
• To manage the dynamic nature of software
• For better quality Management
Software Engineering definition
The IEEE definition:
Level 1 : Initial
Level 2 : Repeatable
Level 3 : Defined
• Process standardization
• Proper documentation, SOP including engineering and
management process
• Training program for new staff
• Basic risk management
Capability Maturity Model (CMM)
Level 4 : Managed
• Quantitative measurement
• Ensuring following defined SOP’s
• Predicable time and cost
Capability Maturity Model (CMM)
Level 5 :Optimizing
Ref: OER
Software process model
• Process models prescribe a distinct set of activities, actions, tasks,
milestones, and work products required to engineer high quality
software.
Build and Fix Model
• Product is constructed without specification or any attempt at design.
• developers simply build a product that is reworked as many times as
necessary to satisfy the client.
• Maintenance is high.
Problems :
scheduled time and cost exceeded
user expectations not met
poor quality
Solution :
Models
Generic Process Model
• Communication
– Involves communication among the customer and other stake holders;
encompasses requirements gathering
• Planning
– Establishes a plan for software engineering work; addresses technical tasks,
resources, work products, and work schedule
• Modeling (Analyze, Design)
– Encompasses the creation of models to better under the requirements and the
design
• Construction (Code, Test)
– Combines code generation and testing to uncover errors
• Deployment
– Involves delivery of software to the customer for evaluation and feedback
18 july
framework activities
• carried out
irrespective of the
process model chosen
by the organization.
1. Communication
2. Planning
3. Modeling
4. Construction
5. Deployment
software development life cycle
• A life cycle model maps the various activities performed on a software
product from its inception to retirement.
• describes entry and exit criteria for each phase
• Need ?
– s/w development process should be systematic and disciplined
– To avoid chaos and project failure
– Without software life cycle models, it becomes tough for software
project managers to monitor the progress of the project.
Stage1: Planning and requirement analysis
• The senior members of the team perform it with inputs from all the
stakeholders and domain experts in the industry.
• Business analyst and Project organizer set up a meeting with the client to
gather all the data like what the customer wants to build, who will be the
end user, what is the objective of the product.
• it helps ensure that the right people are involved in the right
activities at the right times.
43
Cont..
• Integration and Testing:
All the units developed in the implementation phase are integrated into a system after
testing of each unit. Post integration the entire system is tested for any faults and failures.
• Deployment of system:
Once the functional and non functional testing is done, the product is deployed or released
into the market.
• Maintenance:
There are some issues which come up in the client environment. To fix those issues patches
are released. Also to enhance the product some better versions are released.
Maintenance is done to deliver these changes in the customer environment
44
The Waterfall Model with feedback
• Easy to Understand.
• Testing Methods like planning, test designing happens well before
coding.
• This saves a lot of time. Hence a higher chance of success over the
waterfall model.
• Avoids the downward flow of the defects.
• Works well for small plans where requirements are easily
understood.
Disadvantages of V-Model:
C- Communication
P - Planning
M – Modeling
C - Construction
D - Deployment
Incremental Process Model
For example,
1. word-processing software developed using the incremental paradigm might deliver
basic file management, editing, and document production functions in the first
increment;
• If requirements are well understood and project scope is constrained, the RAD process
enables a development team to create a “fully functional system” within very short time
periods (e.g., 60 to 90 days)
59
Cont..
60
Phases in RAD model
• Business modeling: The information flow is identified between various business functions.
• Data modeling: Information gathered from business modeling is used to define data objects that
are needed for the business.
• Process modeling: Data objects defined in data modeling are converted to achieve the business
information flow to achieve some specific business objective.
• Application generation: Automated tools are used to convert process models into code and the
actual system.
• Testing and turnover: Test new components and all the interfaces.
61
RAD Features
• Rapid application
63
Disadvantages of RAD Model
• Depends on strong team and individual performances for identifying business
requirements.
• Only system that can be modularized can be built using RAD
• Requires highly skilled developers/designers.
• High dependency on modelling skills
• Inapplicable to cheaper projects as cost of modeling and automated code
generation is very high.
64
When to use RAD model:
• RAD should be used when there is a need to create a system that can be modularized
in 2-3 months of time.
• It should be used if there’s high availability of designers for modeling and the budget is
high enough to afford their cost along with the cost of automated code generating
tools.
65
Evolutionary Process Model
• Produce an increasingly more complete version of the software with
each iteration.
• By using this prototype, the client can get an “actual feel” of the system.
• Prototyping is an attractive idea for complicated and large systems for which
there is no manual process or existing system to help determining the
requirements.
67
Cont..
68
Cont..
69
Advantages of Prototype model:
70
Disadvantages of Prototype model:
71
When to use Prototype model:
• Prototype model should be used when the desired system needs to have a lot of interaction
with the end users.
• Typically, online systems, web interfaces have a very high amount of interaction with end
users, are best suited for Prototype model.
• Prototyping ensures that the end users constantly work with the system and provide a
feedback which is incorporated in the prototype to result in a useable system.
• They are excellent for designing good human computer interface systems.
72
Quick recap - SDLC Models
• Prescriptive model
1. Waterfall ( with feedback)
2. V model (modified waterfall model)
3. Incremental model
3.1 RAD model
• Evolutionary
1. Prototype
2. Spiral Model
3. Concurrent Development Model
Evolutionary Process Model : Spiral Model
• The spiral model is similar to the incremental model, with more
emphasis placed on risk analysis.
74
Cont..
75
Spirals
• Customer communication: tasks required to establish effective communication
between developer and customer.
• Planning: tasks required to define resources, timelines, and other project related
information. Requirements are gathered during the planning phase.
• Risk analysis: tasks required to assess both technical and management risks. If any
risk is found during the risk analysis then alternate solutions are suggested and
implemented.
• Engineering: In this phase software is developed, along with testing at the end of
the phase.
• Construction and release: tasks required to construct, test, install, and provide user
support (e.g., documentation and training).
• Customer evaluation: This phase allows the customer to evaluate the output of the
project to date before the project continues to the next spiral.
76
Advantages of Spiral model:
77
Disadvantages of Spiral model
• Time spent for evaluating risks too large for small or low-risk
projects.
• Time spent planning, resetting objectives, doing risk analysis and
prototyping may be excessive.
• The model is complex .
• Risk assessment expertise is required.
• Spiral may continue indefinitely.
78
When to use Spiral model:
79
Evolutionary Process Model : Concurrent Process Model
• The term concurrent mean “done at the same time”. It is used in all s/w process
models
• If we take waterfall model as an example, we dont know state of each phase, only
after the phase is over, you get a work product or a document.
• Suppose we want to know the state of activities of the design phase and at the
same time we want to know about testing phase activities. Then we need
concurrent engineering.
• The concurrent process model shows the current state of activities, tasks and their
associated states that remain in different phases.
80
Cont..
• ‘Design Phase’ may be at an ‘awaiting state’ and ‘customer communication’ is in
‘under revision’ state. The customer wants some changes to the design, then
‘communication’ goes to ‘awaiting changes’ and ‘design’ goes to the under-
development stage again.
• The benefit of this model is that project managers know each phase is what state
and why.
• Main Point – Maintain information about each phase at the activity level.
• The concurrent model is appropriate for system engineering project where different
engineering teams are involved.
81
Cont..
82
Advantages of concurrent process model
84
Disadvantages of concurrent process model
85
20jul
What is Agility?
• Agile is ability to move quickly and easily.
• Swift or versatile
86
Lets compare
Requirements gathering
Design the requirements
Construction/ iteration
Testing/ Quality assurance
Deployment
Feedback
Agile model phases
1. Requirements gathering:
• define the requirements.
• explain business opportunities
• plan the time and effort needed to build the project.
• evaluate technical and economic feasibility.
3. Construction/ iteration:
• Designers and developers will now start working on their project, which aims to
deploy a working product.
• The product will undergo various stages of improvement.
Agile model phases
4. Testing:
• Quality Assurance team examines the product's performance
• looks for the bug if any.
5. Deployment:
• team issues a product for the user's work environment.
6. Feedback:
• the team receives feedback about the product and works through the
feedback
When to use agile model?
• Project size is large
• Frequent changes are required
• Highly qualified team in available
• Customer is ready to have meeting with software team all the
time
• If project is with flexible time and budget
Agile Principles
The following principles are based on the Agile .
1. Our highest priority is to satisfy the customer through early and continuous delivery
of valuable software.
96
Cont..
4. Business people and developers must work together daily throughout
the project.
97
Cont..
8. Agile processes promote sustainable development. (development that meets the needs
of the present without compromising the ability of future generations to meet their own
needs.)
98
Cont..
• 10. Simplicity--the art of maximize result and less hard work by removing
unnecessary tasks and prioritizing activities
• 11. The best architectures, requirements, and designs emerge from self-organizing
and experienced teams.
• 12. At regular intervals, the team reflects on how to become more effective, then
tunes and adjusts its behaviour accordingly.
99
Difference between Traditional & Agile Method
Traditional Agile
100
Extreme Programming (XP)
• “Agile Development” is an umbrella term for several iterative and
incremental software development methodologies.
Designing
• using Software Class Responsibilities and Collaboration (CRC) Cards that allow
for a departure from the traditional procedural mindset and make possible
object oriented technology. Such cards allow all members of the project team
to contribute ideas, and collate the best ideas into the design.
Extreme Programming (XP)
Coding
• gives priority to the actual coding over all other tasks such as documentation to
ensure that the customer receives something substantial in value at the end of the
day.
• Standards related to coding include:
● Developing the code based on the agreed metaphors and standards, and adopting a
policy of collective code ownership.
● Pair programming or developing code by two programmers working together on a
single machine, aimed at producing higher quality code at the same or less cost.
● Strict adherence to 40-hour workweeks with no overtime. This ensures the
developers work in the peak of their mental and physical faculties.
● Frequent integration of the code to the dedicated repository, with only one pair
integrating at a time to prevent conflicts, and optimization at the end.
Extreme Programming (XP)
Testing
• Extreme program integrates testing with the development phase rather
than at the end of the development phase.
• All codes have unit tests to eliminate bugs, and the code passes all such
unit tests before release.
• Another key test is customer acceptance tests, based on the customer
specifications. Acceptance test run at the completion of the coding, and
the developers provide the customer with the results of the acceptance
tests along with demonstrations.
Extreme Programming (XP)
Listening
a continuous mechanism of customer involvement through feedback
during the development phase. Apart from the customer, the developer
also receives feedback from the project manager.
The basis of feedback is the customer acceptance tests. Each feedback of
the customer that specifies revised requirement becomes the basis of a
new design, and the process of design-coding-tests-listening repeats itself.
If the customer remains satisfied with the test results the iteration ends
there, and the design for the new iteration starts, which again follows the
design-coding-testing-listening cycle.
Scrum
• An agile software product development strategy that
organizes software developers as a team to reach a common
goal — creating a ready-for-market product
• Product Backlog: list of prioritized features and its completion
status to keep the product is organized.
118
Kanban Process
1. Every request received is put on the Kanban board.
2. A column on the board represents a stage(Received, Acknowledged, In-progress ,Done )
3. The received stage could be called a “Backlog” also.
4. Kanban board could be a simple whiteboard on which sticky notes could be used with
ticket details or an electronic Kanban board could be used.
5. The board can give a signal in case the bugs/ tickets are stuck in one stage for a long.
6. For electronic boards, one can configure the Kanban board in a way that tickets/ user
stories along with the time stamp are visible.
7. For whiteboards that are maintained manually, the team can enter the date/ time.
8. Lead time is what customer sees, it starts when request is made and ends when it is
actually delivered.
Principles of Kanban
• Start with the existing process -Unlike Scrum, there’s no
specific process or roles defined in Kanban.
• Agree to continue evolutionary and incremental changes
• Admire current roles, processes, responsibilities & titles
• Leadership at all levels
Kanban Practices
• Limit WIP
• Visualize: Visualizing the workflow and making it visible is
important so as to know how work proceeds.
• Manage flow :By managing the flow vigorously, the incremental,
continuous, and evolutionary modifications to the system can be
assessed to have negative or positive effects on the system.
• Implement Feedback Loops
• Make Policies Explicit:Until the mechanism of a process is not
made clear, it is difficult to hold a debate and discuss ways to
improve it
Cont..
122
Limit WIP (work in progress)
Bottlenecks
become
clearly visible
in real time.
123
Kanban Board Example
• Thank you