SEC Spring2022 Lecture#3
SEC Spring2022 Lecture#3
SEC Spring2022 Lecture#3
1
Software Engineering – I (CSC291)
Lecture 03
Principle Description
Customer involvement Customers should be closely involved throughout the development process. Their role is
provide and prioritize new system requirements and to evaluate the iterations of the
system.
Incremental delivery The software is developed in increments with the customer specifying the requirements
to be included in each increment.
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.
• Plan-driven development
• A plan-driven approach to software engineering is based around
separate development stages with the outputs to be produced at
each of these stages planned in advance.
• Not necessarily waterfall model – plan-driven, incremental
development is possible
• Iteration occurs within activities.
• 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.
Incremental planning Requirements are recorded on story cards and the stories to be included in a
release are determined by the time available and their relative priority. The
developers break these stories into development ‘Tasks’.
Small releases The minimal useful set of functionality that provides business value is
developed first. Releases of the system are frequent and incrementally add
functionality to the first release.
Simple design Enough design is carried out to meet the current requirements and no more.
Test-first development An automated unit test framework is used to write tests for a new piece of
functionality before that functionality itself is implemented.
Refactoring All developers are expected to refactor the code continuously as soon as
possible code improvements are found. This keeps the code simple and
maintainable.
Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
Extreme programming practices [2/2]
Pair programming Developers work in pairs, checking each other’s work and providing the support
to always do a good job.
Collective ownership The pairs of developers work on all areas of the system, so that no islands of
expertise develop and all the developers take responsibility for all of the code.
Anyone can change anything.
Continuous integration As soon as the work on a task is complete, it is integrated into the whole system.
After any such integration, all the unit tests in the system must pass.
Sustainable pace Large amounts of overtime are not considered acceptable as the net effect is
often to reduce code quality and medium term productivity
On-site customer A representative of the end-user of the system (the customer) should be available
full time for the use of the XP team. In an extreme programming process, the
customer is a member of the development team and is responsible for bringing
system requirements to the team for implementation.
• XP testing features:
• Test-first development.
• Incremental test development from scenarios.
• User involvement in test development and validation.
• Automated test are used to run all component tests each time
that a new release is built.
• What is Scrum?
• ‘SCRUM’ originally derives from a strategy in the game of rugby where it denotes
“getting an out of play ball back into the game” with teamwork.
• SCRUM enables OO through advanced iterative, incremental development within a
controlled environment. It allows organizations to build the best possible OO systems
possible.
• SCRUM is one of many different types of Agile Software Development Frameworks
that you can use in the real world to deliver working software. It is all about people and
not technological solutions
• Scrum Roles
• Product Owner
• Scrum Master
• Scrum Team
• Sprint
• Daily Scrum
• Product Backlog
• Sprint Backlog
• Scrum Meeting Rules
Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz
Abbasi
Teamwork in Daily Scrum
• Customer
• Participate in tasks related to product Backlog items
• Management
• In charge of final decision making
• Participate in setting of goals and requirements
• E.g. management is involved in selecting Product Owner
• Advantages
• Productivity increases
• Continuous improvement
• Leverages the chaos
• Disadvantages
• Scrum requires constant monitoring both quantitatively and
qualitatively
• People are resistant to change
• Costly
Software Engineering Concepts-CSC291-Spring-2022 Mr. Tehseen Riaz Abbasi
CONCLUSION