11 Extreme Programming Flashcards
what is the agile manifesto
- individuals and interaction over process and tools
- working software over comprehensive documentation
- respond to changes over following plan
- customer collaboration over contract negotiation
what is extreme programming
- extreme approach to iterative development
- new versions may be built several times a day
- increments delivered every 2 weeks
- test driven development
extreme programming flow
- select user stories
- breakdown stories to task
- plan releases
- develop/integrate software
- release software
- evaluate system
extreme programming principles
- small and frequent releases
- clear commitment of customer engagement in development
- pair programming and collective ownership
- constant refactoring
customers in extreme programming
- customers are part of the team and responsible for the development
- development team breaks down information of implementation of task for scheduling and budgeting
- improves understandability of software
- changes are easier to make as code is well structured
what is pair programming
- programmers sit together to develop code
- develop common ownership of code, and spread knowledge
- serve as informal review process as each line is looked at by 2 people
- encourage refactoring
extreme programming problems
- programmers prefer to write code, not test
- some tests are hard to design incrementally
- difficult to judge completeness of test
what are the scrum phases
- initial phase
- series of sprints
- project closure phase
change management
- software change is inevitable
- new request emerge when software is used
- business environment changes
- error must be fixed
- new equipment must be accommodated
- improvement to reliability and performance - ensure that system evolution is manageable
- priority given to most urgent, cost effective changes
change management process
- analyse cost benefit of proposed change
- approve worthwhile changes
- track changes
software change steps
- change request
- impact analysis
- release planning
- change implementation
- system release
factors in change analysis
- consequences of not making change
- benefit of change
- number of users affected by change
- cost of making change
- product release cycle
what is software maintenance
- modify software after release
- do not normally involve major changes to system architecture
- modify existing components and adding new components
types of software maintenance
- fault repairs
- fix bugs and correct deficiencies to meet requirement - environmental adaptation
- to operate in a different environment from its initial implementation - functionality addition and modification
- to satisfy new requirements
maintenance cost
- usually 2x - 100x greater than development cost
- affected by technical and non-technical factors
- ageing software have higher maintenance cost
maintenance problems
- new team needs to understand the program being maintained
- separating maintenance and development means no incentive for developers to write maintainable software
- program maintenance work is unpopular
- maintenance staff is often inexperienced
- aged software are heard to change
maintenance predictions
- maintainability
- maintenance cost
- system changes
what does software license cover
- ownership
- end usage rights
- distributions rights
- engineering rights
- warranties and liability
roles in licensing
- producer
- author
- owner
- distributor
- developer
- contributor - consumer
- infrastructure engineer
- end user
- developer
what can software license be applied to
- source code
- binaries
- documentation
- outputs
software warranty and liability
warranty asserts duration of time for ensuring software functions by providers
liability clause is for who is responsible if software causes damage
categories of software (free or not free)
- freeware
- non chargeable copyrighted - shareware
- delivered without charge but continues usage subject to payment - proprietary
- non free
reputational issues
- access to end user information
- only issuing update to licensed users
- installing monitoring software to detect violations
- modifying/ disabling devices running unlicensed software
- taking legal actions