You are on page 1of 44

SE-200

Software Engineering
Dr. Qurat-ul-Ain
Recap

❖ Process models describe a sequence of


activities:
○ Waterfall model, incremental development,
and reuse-oriented development

❖ Software process are the activities


involved in producing a software system
○ Requirements engineering
○ Design & Implementation
○ Software Validation
○ Software Evolution
2
Objectives

✓ Agile Methods

✓ Agile development
techniques

✓ Agile project
management
Problems of Plan-driven Models

❖ User Requirement

❖ Market Shift

5
Rapid Software Development

❖ Rapid development and delivery is now


often the most important requirement for
software systems
❖ Software has to evolve quickly to reflect
changing business needs.
❖ Plan-driven development is essential for
some types of system but does not meet
these business needs.

6
Agile Development

❖ Program specification, design and


implementation are inter-leaved
❖ developed as a series of versions or
increments
❖ Frequent delivery of new versions for
evaluation
❖ Extensive tool support (e.g. automated
testing tools)
❖ Minimal documentation – focus on
working code
7
1. There are iterations within activities
2. Extensive documentation between activities

1. Iterations occur across activities


❖ 2. Requirements and designs are
developed together

8

Agile Methods

9
Agile Methods

❖ overheads involved in software design


methods of the 1980s and 1990s led to the
creation of agile methods
○ Focus on the code rather than the design
○ Are based on an iterative approach to
software development
○ Are intended to deliver working software
quickly and evolve this quickly to meet
changing requirements.

10
❖ Agile
methods allow the team to focus on the
development rather than design and
documentation

11
“Agile Methods – Values” 12
Agile Methods - Principles
When to use the Agile
Method?
When to use the Agile
Method?

❖ Product
development where a software
company is developing a small or
medium-sized product for scale.
○ Virtually all software products and apps
are now developed using an agile approach
❖ Custom system development within an
organization,
○ clear commitment from the customer
○ few external rules and regulations 15

Agile Development
Techniques

16
Extreme Programming - XP
❖ goodpractices i.e. pair programming,
iterative development taken to an
extreme

17
Extreme Programming

18
Extreme Programming

19
Extreme Programming - Practices

20
Components of XP process model

User Stories

Planning Design

Software
Increment
Testing Coding

Acceptance Testing - Refactoring


- Pair Programming
21
User Stories


▪ User requirements are expressed as
user stories or scenarios.
▪ These are written on cards and the
development team break them down
into implementation tasks.

22
Case Study: MentCare
❖ MentCare is a patient information system
to support mental health care is a medical
information system that maintains
information about patients suffering from
mental health problems and the treatments
that they have received.
❖ It makes use of a centralized database of
patient information but has also been
designed to run on a PC, so that it may be
accessed and used from sites that do not
have secure network connectivity.
23
24
Task 1: Change dose of
prescribed medication

Task 2: Prescribe new


medication

Task 3: Formulary selections

Task 4: Dose Checking

1. Using the formulary id, check the generic drug name


2. Look up the formulary
3. Retrieve the max and min dose
4. Check the prescribed dose against the allowed range
5. Raise error in case of mismatch
User Stories - Limitations

❖ The principal problem with user stories is


completeness
❖ Experienced users are often so familiar
with their work that they leave things out
when describing it.

26
Refactoring


▪ the programming team look for possible
improvements to the software and
implements them immediately

27
Refactoring
❖ Programming team look for possible
software improvements and make these
improvements even where there is no
immediate need for them.
❖ This improves the understandability of
the software and so reduces the need for
documentation.
❖ Changes are easier to make because the
code is well-structured and clear.
❖ However, some changes requires
architecture refactoring and this is much
more expensive.
Example(s) of Refactoring
❖ re-organization of a class hierarchy to remove
duplicate code.
❖ renaming attributes
and methods
❖ inline code

29
Refactoring - Limitations

❖ Sometimes development pressure means


that refactoring is delayed because the
time is devoted to the implementation of
new functionality.
❖ Some new features and changes cannot
readily be accommodated by code-level
refactoring and require that the
architecture of the system be modified.

30
Test-first
Development


▪ testing is automated and is central to
the development process, and
development cannot proceed until all
tests have been successfully executed.

31
Test-first Development
❖ test is written before the code….. you
can run the test as the code is being
written and discover problems during
development.
❖ User involvement in test development
and validation

32
Test 4: Dose Checking

Input:
1. A number representing mgs of single dose
2. A number representing frequency of single dose
Tests:
1. Single dose is correct but frequency is high
2. Single dose is too high or too low
3. Dose frequency is too high or too low 33
4. Dose frequency is in range
Output:
1. Ok
2. Error indicating the dose is out of range
Test-first Development - Limitations

❖ Programmers prefer programming to


testing and sometimes they take short
cuts when writing tests

❖ testscan be very difficult to write


incrementally.

❖ difficult to judge the completeness of a set


of tests.

34
Pair Programming

35
Pair Programming

❖ It supports the idea of collective


ownership and responsibility for the
system.
❖ Its an informal and continuous method of
code inspection
❖ It encourages refactoring to improve the
software structure. i.e. pairs benefit
immediately from the refactoring so they
are likely to support the process.

36
Extreme Programming Problems

❖ Extreme programming has a technical


focus and is not easy to integrate with
management practice in most
organizations.
❖ Consequently, while agile development
uses practices from XP, the method as
originally defined is not widely used.

37

Agile Project
Management

38
Scrum

❖ Scrum is a framework for managing


process that ensures planned
development, external visibility to what is
going on and documentation

❖ Scrum focuses on project management


and teamwork, while XP focuses on code
quality and individual programmers'
work.
39
Scrum - Advantages

❖ The product is broken down into a set of


manageable and understandable chunks.
❖ Unstable requirements do not hold up
progress.
❖ Whole team have visibility of everything
and team communication is improved.
❖ Customers see on-time delivery of
increments and gain feedback
❖ Trust between customers and developers

41
Distributed Scrum

42
Summary

❖ Agile Methods

❖ Extreme Programming

❖ Scrum

43
Thanks!
Any comment/questions?

44

You might also like