Introduction To Software Engineering: Engr. Hafiza Sundus Waleed
Introduction To Software Engineering: Engr. Hafiza Sundus Waleed
Introduction To Software Engineering: Engr. Hafiza Sundus Waleed
Introduction to Software
Engineering
• Minimize documentation
By using informal communications rather than formal meetings with
written documents
What is Agility
• Effective response to change
software being built, changes to the team members, changes because of
new technology,
People not process The skills of the development team should be recognized and
exploited. Team members should be left to develop their own ways of
working without prescriptive processes.
Embrace change Expect the system requirements to change and so design the
system to accommodate these changes.
Maintain simplicity Focus on simplicity in both the software being developed and in the
development process. Wherever possible, actively work to
eliminate complexity from the system.
Agile method applicability
• Product development where a software company is
developing a small or medium-sized product for sale.
• Custom system development within an organization
where there is a clear commitment from the customer to become involved in
the development process
where there are not a lot of external rules and regulations that affect the
software.
Agile development
Specification, design, implementation and testing are inter-leaved
Outputs from the development process are decided through a process of
negotiation during the software development process.
Agile vs. Plan-driven Methods
Agile methods Plan-driven methods
Low criticality High criticality
Senior developers Junior developers
Requirements do not
Requirements change often
change often
Small number of Large number of
developers developers
Culture that responds to Culture that demands
change order
Agile Methods
Well-known agile software development methods and/or
process frameworks include:
Extreme programming (XP)
Scrum
Dynamic systems development method (DSDM)
Agile Modeling
Agile Unified Process (AUP)
Extreme programming
• Perhaps the best-known and most widely used agile
method.
• Extreme Programming (XP) takes an ‘extreme’ approach
to iterative development.
New versions may be built several times per day;
Increments are delivered to customers every 2 weeks;
All tests must be run for every build and the build is only accepted if tests
run successfully.
Agile principles in XP
• Incremental development is supported through small,
frequent system releases.
Requirements are based on simple customer stories or scenarios
• Encourage refactoring
Design: 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.
Design: Examples of refactoring
• Re-organization of a class hierarchy to remove duplicate
code.
• Cleaning-up and renaming attributes and methods to
make them easier to understand.
• The replacement of inline code with calls to methods that
have been included in a program library.
Eclipse include tools for refactoring which simplify the process of finding
dependencies between code sections and making global code modifications