Agile development
MC Agile methods focus on A) The design rather than the code B) the code rather than the design
B) the code rather than the design
___________who do not have experience of agile methods may be reluctant to accept the risk of a new approach. A) Customers B) Developers C) Project Managers
C) Project Managers
What is the best known and most widely used agile method?
Extreme Programming (XP) is the best known and most widely used agile method which takes an 'extreme' approach to iterative development.
Programmers prefer programming to testing and sometimes they take short cuts when writing tests. Discuss an example of this.
For example, they may write incomplete tests that do not check for all possible exceptions that may occur.
What can be a pitfall for when it comes to refactoring
some changes requires architecture refactoring and this is much more expensive.
_____________ is concerned with using agile methods for developing large software systems that cannot be developed by a small team. a) Scaling up b) Scaling out
A) Scaling up
list the 5 principles of the agile methods
Customer involvement incremental delivery people not process embrace change maintain simplicity
_____________ often have quality procedures and standards that all projects are expected to follow and, because of their bureaucratic nature, these are likely to be incompatible with agile methods. A) Developers B) Customers C) Project Managers D) Large Companies
D) Large Companies
When and why were the Agile methods created ?
Dissatisfaction with the overheads involved in software design methods of the 1980s and 1990s led to the creation of agile methods.
What is pair programming
In XP, programmers work in pairs, sitting together to develop code.
What is the refactoring process in XP
In the refactoring process, the programming team looks for possible software improvements and make these improvements even where there is no immediate need for them.
Example of an automated test framework
Junit
True or False in agile development specification, design and implementation are _____________
interleaved
Incremental development is supported through small, frequent system releases.
T
T/F All previous and new tests are run automatically when new functionality is added, thus checking that the new functionality has not introduced errors
T
T/F Conventional wisdom in software engineering is to design for change. therefore it is worth spending time and effort anticipating changes as this reduces costs later in the life cycle.
T
T/F New versions may be built several times per day using the agile method
T
How are test written in this scenario?
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 J unit.
Which of these is the aim of the agile method?
The aim of agile methods is to reduce overheads in the software process (e.g. by limiting documentation) and to be able to respond quickly to changing requirements without excessive rework
Why is pair programming helpful
This helps develop common ownership of code and spreads knowledge across the team. It serves as an informal review process as each line of code is looked at by more than 1 person. It encourages refactoring as the whole team can benefit from this.
Why is Refactoring helpful
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.
How are user requirements expressed in this process?
User requirements can be expressed as scenarios or user stories.
T/F Programming team look for possible software improvements and make these improvements only if there is immediate need for them.
F Programming team look for possible software improvements and make these improvements **even** if there is immediate need for them.
T/F Agile methods are based on an non-iterative approach to software development
F Agile methods are based on an non-iterative approach to software development
You don't need to test every single release
F Every single release needs to be tested before being sent out
T/F In XP, Only a programming team is responsible for making decisions on requirements.
F The customer is directly involved with the decision making.
Increments are rarely delivered to customers
F increments are delivered to customers on a regular basis
T/F Changes can be reliably anticipated in XP
F with XP changes cannot be reliably anticipated. Rather, it proposes constant code improvement (refactoring) to make changes easier when they have to be implemented.
True or false In rapid development system is developed as a single version with stakeholders not involved in the evaluation.
False system is developed as a series of versions with stakeholders involved in version evaluation.
When scaling agile methods it is essential to maintain agile fundamentals. What are some of those fundamentals?
Flexible planning, frequent system releases, continuous integration, test-driven development and good team communications.
Some tests can be very difficult to write incrementally. Discuss an example of this.
For example, in a complex user interface, it is often difficult to write unit tests for the code that implements the 'display logic' and workflow between screens.
Why can it be helpful to write tests before coding
Writing tests before code clarifies the requirements to be implemented
Testing is_______to XP a) Just another part b) Central c) not necessary
b) Central XP has developed an approach where the program is tested after every change has been made.
1) The system being developed is very large and needs a large development team. 2) The system can be developed by a small team that can communicate informally.
1) A 2) P
Which ones of the following statement about the agile method are true? 1) It is easy to keep the interest of customers who are involved in the process. 2) Team members may be unsuited to the intense involvement that characterizes agile methods. 3) Prioritizing changes are easy 4)Maintaining simplicity requires extra work.T 5)Contracts may be a problem as with other approaches to iterative development.T
1) F It can be difficult to keep the interest of the costumers involved 2 T 3 F Making a decision about which changes to prioritize can be quite difficult 4) T 5) T
1) Are specification and design very detailed ? 2) incremental delivery strategy ideal.
1) P 2) A
1) Require a lot of analysis before system is released. 2) Advanced technologies are available to support system development?
1) P 2) A
Mark A for agile development and P for plan driven development 1) based around separate development stages with the outputs to be produced at each of these stages planned in advance. there are iteration occurs within activities. 2) Specification, design, implementation and testing are interleaved and the outputs from the development process are decided through a process of negotiation during the software development process A
1) P 2) A
1)There are cultural or organizational issues that may affect the system development? P 2)It is sometimes argued that agile methods require programmers with higher skill levels A 3)If a system has to be approved by an external regulator and requires detailed specification P
1) P 2) A 3) P
What are the steps to the extreme programming release cycle
1) Selecting stories for the release 2) Breaking down stories to ask 3) planning release 4) evaluating the system 5) releasing the software 6)developing/integrating and testing the software
MC how are user interfaces developed? A) User interfaces are often developed using an IDE and graphical tool-set. B) Using a graphics tablet C) copy and pasting pictures from google
A) User interfaces are often developed using an IDE and graphical tool-set.
What are some of the benefits of test automation?
As testing is automated, there is always a set of tests that can be quickly and easily executed Whenever any functionality is added to the system, the tests can be run and problems that the new code has introduced can be caught immediately.
There may be cultural resistance to agile methods, especially in those organizations that have a long history of using _______ systems engineering processes. A) Modern B) Traditional Conventional
B) Traditional Conventional
_________________ is concerned with how agile methods can be introduced across a large organization with many years of software development experience. a.Scaling up b. Scaling out
B) scaling out
Why is the agile method not realistic for large system development
Because of their focus on small, tightly-integrated teams, there are problems in scaling agile methods to large systems.
Agile methods seem to work best when team members have a __________. However, within large organizations, there are likely to be a wide range of _______. A) Values B) good understanding C) Skill level
C) skill level
Why would we want the agile method to cope with larger, longer projects?
Large systems and their development processes are often constrained by external rules and regulations limiting the way that they can be developed. Large systems have a long procurement and development time. It is difficult to maintain coherent teams who know about the system over that period as, inevitably, people move on to other jobs and projects. Large systems usually have a diverse set of stakeholders. It is practically impossible to involve all of these different stakeholders in the development process
What is the most important requirement for software systems? why?
Rapid development and delivery. Business operate in a fast changing environments, it is impractical to produce a set of stable software requirements, Software has to evolve quickly to reflect changing business needs.
List 3 examples of refactoring
Re-organization of 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.
What can be a good reason for scaling up agile methods?
Scaling up agile methods involves changing these to cope with larger, longer projects where there are multiple development teams, perhaps working in different locations.
T/F For large systems development, it is not possible to focus only on the code of the system. You need to do more up-front design and system documentation
T
What does test automation mean?
Test automation means that tests are written as executable components before the task is implemented
List the 4 XP testing features mentioned the slides:
Test-first development. Incremental test development from scenarios. User involvement in test development and validation. Automated test harnesses are used to run all component tests each time that a new release is
List some scenarios when is the agile method realistically applicable
When software company is developing a small or medium-size 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 and where there are not a lot of external rules and regulations that affect the software.