Software Engg - Week-03
Software Engg - Week-03
https://www.knowledgehut.com/blog/agile/agile-project-management-vs-traditional-project-management
https://www.youtube.com/watch?v=5RocT_OdQcA
Agile?
In this fast-moving world, project management has become one of the most important pillars that are helping
businesses run without any glitch in their processes.
Both small- and large-scale organizations around the world depend on project management systems to deliver
their products/services successfully.
Whether it is team workflow management or timing, these tools help to ensure that the processes flow in a
hassle-free manner while achieving the desired goals.
Despite the presence of different project management approaches, Agile is considered as one of the most
practical and flexible software development mechanisms that exist today.
4. Embrace change
Expect the system requirements to change and so design the system to accommodate
these changes.
5. 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 methods have been particularly successful for two
kinds of system development.
• 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
Agile development techniques
1. Extreme Programming (Xp)
2. Scrum
Extreme Programming (Xp)
• Extreme Programming (XP) is an First agile software development framework that aims to
produce higher quality software.
• It is lightweight methodology for small to medium sized team developing software in the face of
rapidly changing requirements.
• Xp always Emphasis on technical aspects of software development.
• XP is a set of engineering practices.
The extreme programming release cycle
Extreme programming practices
Small releases:
Incremental planning: The minimal useful set of Simple design; Enough
Requirements are recorded on functionality that provides design is carried out to
story cards and the stories to business value is developed meet the current
be included in a release are first. Releases of the system requirements and no
determined by the time are frequent and incrementally
available and their relative more.
priority. The developers break add functionality to the first
these stories into development release.
Extreme programming practices
Refactoring
Test-first development Pair programming
All developers are
An automated unit test expected to refactor the Developers work in pairs,
framework is used to code continuously as checking each other’s
write tests for a new piece soon as possible code work and providing the
of functionality before improvements are found. support to always do a
that functionality itself is This keeps the code good job.
implemented. simple and maintainable.
Extreme programming practices
On-site customer
Collective ownership Continuous integration A representative of the end-
Sustainable pace user of the system (the
The pairs of developers As soon as the work on a
work on all areas of the Large amounts of overtime customer) should be available
task is complete, it is are not considered full time for the use of the XP
system, so that no islands integrated into the whole acceptable as the net effect is team. In an extreme
of expertise develop and system. After any such programming process, the
all the developers take often to reduce code quality
responsibility for all of the
integration, all the unit and medium term customer is a member of the
tests in the system must productivity development team and is
code. Anyone can change responsible for bringing
anything. pass. system requirements to the
team for implementation.
Influential XP practices
• Key practices
• User stories for specification
• Refactoring
• Test-first development
• Pair programming
User-Story
User-Story
User-Story
User-Story
User-Story
A ‘prescribing medication’ story
Examples of task cards for prescribing medication
Refactoring
• A fundamental precept of traditional software engineering is that you should design for change.
• Extreme programming, however, has discarded this principle on the basis that designing for
change is often wasted effort.
• changes will always have to be made to the code being developed. To make these changes easier,
the developers of XP suggested that the code being developed should be constantly refactored.
Refactoring
• Refactoring improves the software structure and readability and so avoids the structural
deterioration that naturally occurs when software is changed.
• class PizzaDelivery:
• def getgrades(self):
• return 'A' if self.moretheneight() else B
• def ismorethaneight(self):
• return self.number > 8
• This could be refactored as:
• class PizzaDelivery:
• def getgrades(self):
• return self.number > 8 ? A : B
Test-first development
• XP testing features:
• 1. test-first development,
• 2. incremental test development from scenarios,
• 3. user involvement in the test development and validation,
• 4. the use of automated testing framework
https://www.youtube.com/watch?v=zFJdQYn9u_8
Test-first development
1. The developer accepts a unit of work and writes a set of tests that will prove that the code
actually functions correctly at a unit level.
2.They then run the tests. The tests should fail because the code to solve the business
problem embedded in the unit of work has not been written. If the tests pass, rewrite
them so that they fail (assuming someone else has not fixed the problem).
3.Write the code needed to solve the problem. Run the test suite again. If the tests pass you
are done.
Test-driven development
• Writing tests before code clarifies the requirements
to be implemented.
• Tests are written as programs rather than data so
that they can be executed automatically. The test
includes a check that it has executed correctly.
• Usually relies on a testing framework such as Junit.
The software increment that is delivered from a sprint. The idea is that this
should be “potentially shippable,” which means that it is in a finished state.
This is a list of “to do” items that the Scrum team must tackle. They may be
feature definitions for the software, software requirements, user stories, or
descriptions of supplementary tasks that are needed
The Product Owner can be a customer but might also be a product manager in
a software company or other stakeholder representative
A daily meeting of the Scrum team that reviews progress and prioritizes work
to be done that day.