Refinement (computing)

A hex dump of an executable real mode loader

Generic term of computer science that encompasses various approaches for producing correct computer programs and simplifying existing programs to enable their formal verification.

- Refinement (computing)

28 related topics

Relevance

Formal methods

In computer science, specifically software engineering and hardware engineering, formal methods are a particular kind of mathematically rigorous techniques for the specification, development and verification of software and hardware systems.

Charles Babbage, sometimes referred to as the "father of computing".

For example, proofs of properties or refinement from the specification to a program may be undertaken.

Formal specification

In computer science, formal specifications are mathematically based techniques whose purpose are to help with the implementation of systems and software.

Charles Babbage, sometimes referred to as the "father of computing".

Another approach is to use probably correct refinement steps to transform a specification into a design, which is ultimately transformed into an implementation that is correct by construction.

Scrum (software development)

Framework for developing, delivering, and sustaining products in a complex environment, with an initial emphasis on software development, although it has been used in other fields including research, sales, marketing and advanced technologies.

Scrum Agile events, based on The 2020 Scrum Guide
Scrum framework
The Scrum process
A daily scrum in the computing room. This centralized location helps the team start on time.
A sample burndown chart for a completed sprint, showing remaining effort at the end of each day.
A sample burn-up chart for a release, showing scope completed each sprint (MVP = Minimum Viable Product)

Although not originally a core scrum practice, backlog refinement (formerly called grooming) was added to the Scrum Guide and adopted as a way of managing the quality of product backlog items entering a sprint.

Agile software development

In software development, agile (sometimes written Agile) practices include requirements discovery and solutions improvement through the collaborative effort of self-organizing and cross-functional teams with their customer(s)/end user(s), adaptive planning, evolutionary development, early delivery, continual improvement, and flexible responses to changes in requirements, capacity, and understanding of the problems to be solved.

Pair programming, an agile development technique used by XP.
Software development life-cycle support
Agile Unified Process (AUP) is based on Unified Process (an iterative and incremental software development process framework)
Agile Brazil 2014 conference

Teams should be prepared to move forward with only those stories in which they have confidence, then during the iteration continue to discover and prepare work for subsequent iterations (often referred to as backlog refinement or grooming).

Specification (technical standard)

A specification often refers to a set of documented requirements to be satisfied by a material, design, product, or service.

Systems engineering techniques are used in complex projects: spacecraft design, computer chip design, robotics, software integration, and bridge building. Systems engineering uses a host of tools that include modeling and simulation, requirements analysis and scheduling to manage complexity.

An alternative approach is to use provably correct refinement steps to transform a specification into a design, and ultimately into an actual implementation, that is correct by construction.

B-Method

Method of software development based on B, a tool-supported formal method based on an abstract machine notation, used in the development of computer software.

The TEAF Matrix of Views and Perspectives.

Compared to Z, B is slightly more low-level and more focused on refinement to code rather than just formal specification — hence it is easier to correctly implement a specification written in B than one in Z. In particular, there is good tool support for this.

Refinement calculus

A hex dump of an executable real mode loader

The refinement calculus is a formalized approach to stepwise refinement for program construction.

Ralph-Johan Back

Finnish computer scientist.

Back originated the refinement calculus, an important approach to the formal development of programs using stepwise refinement, in his 1978 PhD thesis at the University of Helsinki, On the Correctness of Refinement Steps in Program Development.

Program transformation

Any operation that takes a computer program and generates another program.

Lovelace's description from Note G.

A generalisation of semantic equivalence is the notion of program refinement: one program is a refinement of another if it terminates on all the initial states for which the original program terminates, and for each such state it is guaranteed to terminate in a possible final state for the original program.

Jim Woodcock

British computer scientist.

Charles Babbage, sometimes referred to as the "father of computing".

His research interests include: strong software engineering, Grand Challenge in dependable systems evolution, unifying theories of programming, formal specification, refinement, concurrency, state-rich systems, mobile and reconfigurable processes, nanotechnology, Grand Challenge in the railway domain.