Computer Science Notes

Notes From CS Undergrad Courses FSU

This project is maintained by awa03

Agile Software Development

Program specification, design and implementation are light and interleaved. The system is developed as a series of versions or increments with clients involved in versions specification and evaluation.

Why is it popular?

- Businesses operate in a fast changing requirement and its practically impossible to produce a set of stable software requirements - Software has to evolve quickly to reflect changes that the business needs - Agile development emerged in the late 90's and the aim was to reduce delivery time for working software systems.

Agile Manifesto - 4 Values

- Individual and interactions over processes and tools - agile helps them collaborate and solve any problems that may arise - Working Software over comprehensive documentation - Agile values documentation, but values working software more - Customer Collaboration over contract negotiation - Agile enables the coordinated teams to align better with the customer requirements - Responding to change over following a plan - Agile adapt quickly in order to deliver a quality product and ensure their clients satisfaction

Extreme Programming (XP)

- A very influential agile method, developed in the late 1990's 1) Select user stories for this release 2) break down stories into tasks 3) plan release 4) develop/ integrate / test 5) release software 6) evaluate system Repeat the above proceess...
Practice Description
Incremental planning Plan in small parts and continue the cycle
Small releases Release small portions at a time
Simple Design Make each design a simplistic component that builds to a large complex one
Test-first development Requirements being converted to test cases before software is fully developed
Refactoring Make Changes Based on these

A member of the end-user of the system should be available full time for advising the XP team

Refactoring

- Conventional wisdom in software engineering is to design for change. It is worth spending time and effort anticipating changes. - Programming team looks for possible improvements and make them where ever they are needed - 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.

Examples of Refactoring

- Re-organizing a class hierarchy to remove duplicate code - Tidying 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

Test-First Development

Testing central to XP and XP has developed an approach where the program is tested after every change that has been made - 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. - All previous and new tests are run automatically when new functionality is added thus checking that the new functionality has not introduced errors.

Pair Programming

- Pair programming involves programmers working in pairs, developing code together. - This helps develop common ownership of code and spreads knowledge across the team - It serves as an informal review process - Swap frequently - Usually pair with someone of different experience level - Takes longer / more effort than single programming, however may yield higher quality code

Scrum

- Scrum is an agile framework that focus on managing iterative development - The scrum team consists of 3 role: 1) Product Owner 2) The Development Team 3) Scrum Master - The Scrum Master represents the products stakeholders and the voice of the customer. They create a prioritized, dynamic wish list (user stories) called a product backlog and is the sole person responsible for managing it - The starting point for planning is the product backlog. which is the list of work to be done for the project - The role of the Scrum Master is to protect the development team from external distractions - The team attends Daily Meetings where all team members share information, describe their progress since the last meeting, problems that have arisen and what is planned for the following day.