2. In software engineering,
there are many formal
methods that are used
for specifying and
verifying software
systems, and new ones
are being developed all
the time. Some of the
newer formal
methods that have
gained popularity
recently include:
Model-Driven Development (MDD)
Machine Learning-based methods
Formal Verification (FV)
Model Checking
Synthesis methods
5. Model-Driven
Development
(MDD)
advantages:
It improves the quality and productivity of
software development by reducing the gap
between the model and the implementation.
It provides a way to verify the system's
requirements and architecture.
It allows for early detection of errors and
inconsistencies in the requirements and
architecture.
It can automate repetitive and error-prone
tasks, such as code generation and testing.
It allows for traceability between the models,
the code, and the testing activities.
6. Model-Driven Development (MDD)
disadvantages:
The development of the
models can be time-
consuming and requires
specialized skills.
The models can become
complex and hard to
understand, especially for
large and complex systems.
The transformation of the
models into code may not be
accurate, and the code may
not reflect the actual behavior
of the system.
It can be difficult to maintain
the consistency and coherence
of the models over time.
10. Machine
Learning-based
methods
advantages:
They can improve
the efficiency and
effectiveness of
software design,
testing, and
verification.
They can be used
to automatically
classify software
defects and
diagnose their
causes.
They can be used
to improve the
performance of
other formal
methods such as
model checking,
and theorem
proving.
They can be used
to learn from
historical data and
adapt to changing
conditions.
11. Machine Learning-based methods
disadvantages:
They require a large amount of training data
and a suitable representation of the problem
The performance of the learned models may be
poor if the training data is not representative or
if the model is poorly designed.
It may require specialized expertise in machine
learning to apply effectively.
15. Formal Verification (FV) advantages:
It can prove the absence
of errors, such as buffer
overflows, race conditions,
and deadlocks, in a
system.
It can ensure that the
system will behave as
intended in all possible
scenarios.
It can be used to verify the
system at different levels
of abstraction, from the
highest level requirements
to the lowest level
implementation.
It can be used in
combination with other
formal methods, such as
testing and static analysis,
to achieve different goals.
16. Formal Verification (FV) disadvantages:
IT REQUIRES SPECIALIZED SKILLS
AND EXPERTISE TO USE, AND THE
TOOLS CAN BE COMPLEX AND
DIFFICULT TO USE.
IT CAN BE TIME-CONSUMING AND
COMPUTATIONALLY EXPENSIVE,
ESPECIALLY FOR LARGE AND
COMPLEX SYSTEMS.
IT CAN BE DIFFICULT TO EXPRESS
THE REQUIREMENTS AND
PROPERTIES OF A SYSTEM IN A
FORMAL NOTATION.
NOT EVERY SYSTEM CAN BE
VERIFIED FORMALLY, SOME
SYSTEMS MAY NOT HAVE A
MATHEMATICALLY PRECISE
SPECIFICATION.
20. Model Checking advantages:
It can automatically check the correctness of a system by checking its behavior
against a formal model.
It can check properties such as safety, liveness, and fairness.
It can be applied on different kind of models, like finite state machines, labelled
transition systems, Petri nets, and many other.
It can be automated and hence can save the time and resources required by
manual proof.
21. Model Checking disadvantages:
It can be computationally expensive, especially for large and
complex systems.
It can be difficult to express the requirements and properties of a
system in a formal notation.
It may not be able to check all properties of the system, some
properties may be too complex or too expensive to check.
25. Synthesis methods advantages:
THEY CAN GENERATE CORRECT-
BY-CONSTRUCTION CODE, WHICH
IS GUARANTEED TO MEET
SAFETY AND PERFORMANCE
PROPERTIES BY DESIGN.
THEY CAN BE USED TO
SYNTHESIZE BOTH SEQUENTIAL
AND CONCURRENT PROGRAMS
THEY CAN BE APPLIED ON
DIFFERENT LEVEL OF
ABSTRACTION, RANGING FROM
THE GENERATION OF
CONTROLLERS TO THE
DERIVATION OF LOW-LEVEL
CODES.
THEY CAN SAVE TIME AND
RESOURCES NEEDED TO WRITE,
TEST AND DEBUG CODE
MANUALLY.
26. Synthesis methods disadvantages:
They require specialized
skills and expertise to use,
and the tools can be
complex and difficult to use.
They can be
computationally expensive,
especially for large and
complex systems.
They may not be able to
handle all cases and
properties, some may be
too complex to be handled.
It may require significant
effort to convert the
informal specifications to a
formal ones.