Concepts inUsing predicate abstraction to reduce object-oriented programs for model checking
Model checking
In computer science, model checking refers to the following problem: Given a model of a system, test automatically whether this model meets a given specification. Typically, the systems one has in mind are hardware or software systems, and the specification contains safety requirements such as the absence of deadlocks and similar critical states that can cause the system to crash. Model checking is a technique for automatically verifying correctness properties of finite-state systems.
more from Wikipedia
Object-oriented programming
Object-oriented programming (OOP) is a programming paradigm using "objects" ¿ data structures consisting of data fields and methods together with their interactions ¿ to design applications and computer programs. Programming techniques may include features such as data abstraction, encapsulation, messaging, modularity, polymorphism, and inheritance. Many modern programming languages now support OOP, at least as an option.
more from Wikipedia
Predicate abstraction
In logic, predicate abstraction is the result of creating a predicate from an open sentence. If Q(x) is any formula with x free then the predicate formed from that sentence is (¿x. Q), where ¿ is an abstraction operator. The resultant predicate (¿x. Q) is a monadic predicate capable of taking a term t as argument as in (¿x. Q)(t), which says that the object denoted by 't' has the property of being such that Q. The law of abstraction states (¿x.
more from Wikipedia
Abstract interpretation
In computer science, abstract interpretation is a theory of sound approximation of the semantics of computer programs, based on monotonic functions over ordered sets, especially lattices. It can be viewed as a partial execution of a computer program which gains information about its semantics without performing all the calculations.
more from Wikipedia
Abstraction (computer science)
In computer science, abstraction is the process by which data and programs are defined with a representation similar in form to its meaning, while hiding away the implementation details. Abstraction tries to reduce and factor out details so that the programmer can focus on a few concepts at a time. A system can have several abstraction layers whereby different meanings and amounts of detail are exposed to the programmer.
more from Wikipedia
Software developer
A software developer is a person concerned with facets of the software development process. Their work includes researching, designing, developing, and testing software. A software developer may take part in design, computer programming, or software project management. They may contribute to the overview of the project on the application level rather than component-level or individual programming tasks.
more from Wikipedia
Requirements analysis
Requirements analysis in systems engineering and software engineering, encompasses those tasks that go into determining the needs or conditions to meet for a new or altered product, taking account of the possibly conflicting requirements of the various stakeholders, such as beneficiaries or users.
more from Wikipedia
Software engineering
Software engineering (SE) is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software. It is the application of engineering to software because it integrates significant mathematics, computer science and practices whose origins are in engineering.
more from Wikipedia