Software Engineering
Extreme Programming
A very influential agile method, developed in the late 1990s, that introduced a range of agile development techniques.
Problem with Agile for Long-LifeTime Systems?
Agile development relies on the development team knowing and understanding what has to be done, this is a real problem as the original developers will not always work on the system
Practical Problem 3 with Scaling Agile Development
Agile methods are designed for small co-located teams yet much software development now involves worldwide distributed teams
Practical Problem 2 with scaling Agile Development
Agile methods are most appropriate for new software development rather than software maintenance. Yet the majority of software costs in large companies come from maintaining their existing software systems
Extreme Programming: 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.
3 Types of User Testing
Alpha, Beta, Acceptance
1 Problem with Test-first development
Programmers prefer programming to testing and sometimes they take short cuts when writing tests.
What is release testing?
Release testing is the process of testing a particular release of a system that is intended for use outside of the development team.
5 steps of Waterfall software process
Requirements definition, System and software design, Implementation and unit testing, Integration and system testing, Operation and maintenance.
What is Scenario Testing?
Scenario Testing involves inventing a typical usage scenario and using this to derive test cases.
What is Scrum
Scrum is an agile method that focuses on managing iterative development rather than specific agile practices
What are the fundamental Software Engineering activities?
Software specification, Software development, Software validation, and Software evolution
4 Main aspects of a software process?
Specification, Design and Implementation, Validation, and Evolution
Incremental software process
Specification, development and validation are interleaved. Can be plan-driven or agile
2 Ways of coping with requirements changin
System prototyping, and Incremental delivery
T/F Development Testing is the responsibility of the software development team.
T
T/F In Test-Driven Development tests are written before code
T
3 Extreme Programming Testing Features
Test-first development, Incremental test development, User involvement in test development and validation
Complete test coverage of a class using Object Class Testing is
Testing all operations associated with the object, Setting and interrogating all object attributes, Exercising the object in all possible states.
3 Stages of Development Testing
Unit testing, Component testing, System Testing
4 Key Influential Practices of Extreme Programming
User stories for specification, Refactoring, Test-first development,
Requirements elicitation and analysis
What do the system stakeholders require or expect from the system
Benefit of Test Automation
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
Test-driven development important note 1
Writing tests before code clarfies the requirements to be implemented.
The principle approaches to software improvement are...
agile approaches, geared to reducing process overheads, and maturity-based approaches based on better process management and the use of good software engineering practice
What is Test-Driven Development?
an approach to program development in which you inter-leave testing and code development
Software inspections are concerned with..
analysis of the static system representation to discover problems.
Refactoring is better than trying to anticipate changes because
changes cannot be reliably anticipated
Scaling Out is concerned with...
how agile methods can be introduced across a large organization with many years of software development experience.
What does a successful defect test do?
makes the system perform incorrectly and exposes a defect in the system.
What is an agile software process?
planning is incremental and it is easier to change the process to reflect changing customer requirements
Agile development methods emerged in the 1990s looking to...
radically reduce the delivery time for working software systems.
Example of refactoring
reorganization of a class hierarchy to remove duplicate code
What does a successful validation test do?
shows that the system operates as intended
Extreme programming has a ___ ___ and is not easy to integrate with management practice in most organizations.
technical focus
What is regression testing?
testing the system to check that changes have not broken previously working code
What is a software process?
the activities involved in producing a software system
What is software validation?
the process of checking that the system conforms to its specification and that it meets the real needs of the users of the system
What is requirements engineering?
the process of developing a software specification
Testing is central to Extreme programming and has developed an approach where
the program is tested after every change
What is beta testing?
the software is made available to users to allow them to experiment and to raise problems that they discover with the system developers.
What is the primary purpose of Release testing?
to convince the supplier of the system that it is good enough for use
What are design and implementation concerned with?
transforming a requirements specification into an executable software system
What is alpha testing?
users of the software work with the development team to test the software at the developers site.
Scaling Up is concerned with...
using agile methods for developing large software systems that cannot be developed by a small team
What is software evolution?
when you change existing software systems to meet new requirements. The software must evolve to remain useful
Release Testing is
where a separate team test a complete version of the system before it is released to users.
System prototyping
where a version of the system or part of the system is developed quickly to check the customers requirements and the feasibility of design decisions
What is a plan-driven software process?
where all process activities are planned in advance and progress is measured against this plan
Incremental delivery
where system increments are delivered to the customer for comment and experimentation
Development Testing is
where the system is tested during development to discover bugs and defects
User Testing is
where users or potential users of a system test the system in their own environment
Interface Design
where you define the interfaces between system components
Database Design
where you design the system data structures and how these are to represented in a database.
Architectural Design
where you identify the overall structure of the system , the principal components , their relationships and how they are distributed.
Component selection and Design
where you search for reusable components. If unavailable, you design how it will operate.
Interface misunderstanding
A calling component embeds assumptions about the behavior of the called component which are incorrect.
Interface misuse
A calling component calls another component and makes an error in its use of its interface.
4 Main Design Activities in Software Design and Implementation?
Architectural Design, Database Design, Interface Design, Component selection and Design
Requirements validation
Checking the validity of the requirements
3 Stages of Testing
Component testing, System testing, Customer testing
Agile: Customer Involvement
Customers should be closely involved throughout the development process. Their role is to provide and prioritize new system requirements.
What is Acceptance testing?
Customers test a system to decide whether or not it is ready to be accepted from the system developers and deployed.
Requirements specification
Defining the requirements in detail
3 Stages of testing
Development Testing, Release Testing, User Testing
Process change
Process changes are proposed to address some of the identified process weaknesses. These are introduced and the cycle resumes to collect data about the effectiveness of the changes
3 steps of requirement engineering process?
Elicitation/Analysis, specification, validation
Agile: embrace change
Expect the system requirements to change and so design to accommodate these changes
XP short for
Extreme Programming
T/F Inheritance makes it less difficult to design object class tests
F
Agile: maintain simplicity
Focus on simplicity in both the software being developed and in the development process. Wherever possible, work to eliminate complexity from the system.
3 main agile methods
Focus on the code rather than the design, iterative approach to software development, deliver working software quickly and evolve quickly to changing requirements
Marketing Environment
Getting a product to market early might be more important than finding defects.
3 Benefits of prototyping
Improved System usability, design quality, maintainability
Main drawback of waterfall process?
Inability to change once process is underway.
Problem with Test-sets in test-first development
It is difficult to judge the completeness of a set of tests, may not provide full coverage of cases
3 Key problems with agile maintenance
Lack of product documentation, Keeping customers involved in the development process, Maintaining the continuity of the development team
Scrum Sprint Length
Length is fixed, usually 2-4 weeks
4 attributes of good software?
Maintainability, Dependability/Security, Efficiency, Acceptability
3 main steps of process improvement process?
Measure, Analyze, Change
3 Characteristics of Extreme Programming
New versions may be built several times a day, Increments are delivered to the customer every 2 weeks, All tests must be run for every successful build and only the successful ones are kept.
3 Phases of Scrum
Outline planning, series of sprint cycles, project closure
4 Types of Interfaces in Interface Testing
Parameter Interfaces, Shared memory interfaces, Procedural Interfaces, Message passing interfaces
Waterfall software process
Plan-driven process model with separate and distinct phases of specification and development
XP Test-driven development important note 2
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.
Timing errors : Interface errors
The called and the calling component operate at different speeds and out-of-date information is accessed
Process Analyzation
The current process is assessed, and process weaknesses and bottlenecks are identified
Practical Problem 1 with scaling Agile Development
The informality of agile development is incompatible with the legal approach to contract definition that is commonly used in large companies
Agile: people not process
The skills of the development team should be recognized and exploited. Team members should be left to develop their own ways of working without prescriptive processes.
Agile: Incremental delivery
The software is developed in increments with the customer specifying the requirements to be included in each increment.
Process Measurement
These measurements form a baseline that helps you decide if process improvements have been effective
What are the 2 main goals of Program Testing?
To demonstrate to the developer and the customer that the software meets its requirements, and To discover situations in which the behavior of the software is incorrect.
What is Validation Testing for?
To demonstrate to the developer and the customer that the software meets its requirements.
What is Defect Testing for?
To discover faults or defects in the software where its behavior is incorrect.