Software Engineering Chapter 3

Ace your homework & exams now with Quizwiz!

Customer involvement

Customer should closely involved throughtout the development process. Their role is to provide and prioritize system requirements and to evaluate the iteration of the system

XP

customer or user is part of the XP team and is reponsible for making decision on the requirements

pair programming

Developers work in pairs, checking each other's work and providing the support to always do a good job.

simple design

Enough design is carried out to meet the current requirements and no more.

Embrace change

Expect the system to change and so design the system to accomodate these change

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 are the most effective, when the system can be developed with a small co located team who can communicate informally. This may not be possible for large system that requires larger development teams so plan driven approach may be used

How large is the system that is being developed?

Xp

In ___, programmers work in pair, sitting together to develop code

Agile methods

Is an incremental delivery strategy, where you deliver software to customer and get rapid feedback from them, realistic? Is so, consider using __

Plan driven approach

Is it important to have a very detailed specification and design before moving to implementation? If so you probably need to use ___

Pair programming

It encourages refactoring as the whole team can benefit from this

- It can be difficult to keep the interest of the customer involved in the process - Team members may be unsuited to the intense involvement that characterises the agile methods - Prioritizing change may be difficult where there are multiple stakeholders - Maintaining simplicity requires extra work - Contract may be a problem as with other approaches to iterative development

Problems with Agile Methods

Refactoring

Programming team look for possible software improvements and make these improvements even where there is no immediate need for them.

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'.

Agile development

Specification, design, implementation and testing are interleaved and outputs from the process development are decided through a process negotiation during the software development process

Agile methods

The aim is to Reduce overheads in the software process and to be able to respond quickly to changing requirements with excessive work

Agile or plan driven approach

The decision wether to use an ____ to development should depend on the type of software being developed, the capabilities of the development team and the culture of the company developing the system

Customer involvement, incremental delivery, people not process, embrace change, maintain simplicity

The principles of agile methods

customer

The role of 'this' in the testing process is to help develop acceptance tests for the stories that are to be implemented in the next release of the system

Pair programming

This helps develop common ownership of the code and spreads knowledge accross the team

Refactoring

This improves the understandability of the software and so reduces the need for documentation

- incremental delivery is supported through small, frequent system releases - customer involvement means full-time engagement with the team - people not process through pair programming, collective ownership and process that avoid long working hours - change is supported through regular system releases - maintaining simplicity through constant refactoring of code

XP and agile principles

incremental planning, small releases, simple design, test first development, refactoring

extreme programming practices (a)

Measurements

suggest that development productivity with pair programming is similar to that of two people working independently

extreme programming

takes an 'extreme' approach to iterative development

sample releases

the minimal useful set of functionality that provides business value are developed first. Releases of the system are frequent and incrementlly add functionality to the first release

collective ownership

the pairs of developers work in all areas of the system, so that no islands of expertise develop and all developers take responsibility for all of the code. Anyone can change anything.

- are software that are developed using agile approach maintainable, are given emphasis on the development process of minimizing formal documentation? - can agile methods be used effectively for evolving system in reponse to changing customer requirements

2 key issues (agile methods and software maintenance)

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.

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.

Tests

Are written as programs rather than data so that they can be executed automatically

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.

Testing is automated

As_____, there is always a set of tests that can be quickly and easily executed

sustainable pace

Large amounts of overtime are not considered acceptable as the net effect is often to reduce code quality and medium term productivity

Extreme programming

is a well-known agile methods that integrates a range of good programming practivces such as frequent releases of software, continuous software improvement and customer participatiob in the development team

Testing

is central to XP and XP has developed an approach where the program is tested after every change has been made

Pair Programming

is not necessarily inefficient and there is evidence that a pair working together is more effiecient than 2 programmers working separately

Rapid development and delivery

is now often the most important requirement for software system

if the system has to be approved by external regulator, then you will probably be required to produce detailed documentation as part of the system safety case

is the system subject to external regulation?

Test automation

means that test are written in an executable components before the task is implemented

Pair Programming

programmers sit together at the same workstation to develop the software

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 - plna driven, incremental devlopment is possible - Iteration occurs within activities

Agile methods and software maintenance

- most organizations spend more on maintaining existing software than they do on new software development. So, if agile methods are to be successful, they have to support maintenance as well ad original development - Problems may arise if development team cannot be maintained

extreme programming

- new version may be built several time a day - increments are delivered to customer every 2 weeks - all test must be run for every build and build is only accepted if tests run successfully

Agile method applicability

- product development where a software company is developing a small or medium-sized product dor sale - custom system development within an organization, where there is a clear commitment from the customer to become involved in the development process - bec of their focus on small, tightly-integrated teams, there are prob in scaling agile methods to large systems

Rapid software development

- specification, design and implementation are interleaved - system is developed as series of versions with stakeholders involved in version evaluation - user interface is developed using an IDE and graphical toolset

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.

Pair programming

It serves as an informal review processes as each line of code is looked at by more than 1 person

Customer

is a member of the development team and is responsible for bringing system requirements to the team for implementation.

People not process

The skills of the development team should recognized and exploited. Team member should be left to develop their own way of working without prescriptive processes

Incremental delivery

The system is developed with the customer specifying the requirements to be included in each increments

Pairs

are creted dynamically so that all team members work with each during the development process

Changes

are easier to make because the code is well structured and clear

User requirements

are expressed as scenarios or user stories

Agile methods

are incremental development methods that focus on rapid development, frequent release of software, reducing process overheads and producing high quality code. They involve the customer directly in the development process

traditional engineering organizations have a culture of plan -base development, this is the norm in engineering

are there cultural or organizational issues that may affect system development?

extreme programming

best known and most widely used method

Customer

chooses the stories for inclusion in the next release based on their prioritize and the schedule estimated

it is sometimes argued that agile methods require higher level skills than plan-driven approach in which programmers simply translate a detailed design into code

how good is the designers and programmers in the development team?

if the development team is distributed or if the development is being outsource, then you may need to develop design documents to communicate across the development team

how is the development team organized?

long lifetime system may require more design documentation to communicate the original intentions of the system developers to the support team

what is the expected system lifetime?

agile methods rely on good tools to keep track of an evolving design

what technologies are available to support system development

Plan driven approaches may be required for systems that requires a lot of analysis before implementation

what type of system is being developed?


Related study sets

Unit 7 Thermochemistry GenChem Study Guide

View Set

Medical Terminology Final Exam Review

View Set

STATS 1.1 1.2 1.3 2.1 2.3 2.4 2.5

View Set

Retailing & Omnichannel Marketing: Fit Life

View Set

CH 9 - Nursing Theory: The Basis for Professional Nursing

View Set

Real Estate Investment Trusts (REITS)

View Set