3. Grading Criteria
• Cheater never prosper
• Be faithful
Evaluation Method Marks Weightage out of 100
Lab Class Learning Outcome 30%
Final Term Exam 50%
Sessional
(Quiz, Class Participation)
20%
4. Course OutlineLecture# Duration Topics Covered
Week#1 03 hrs. Introduction to class and course, discussion about the course contents, reference materials grading
scheme, paper pattern, assignment, quizzes, class presentation
Week#2 03 hrs. Introduction to Software Engineering, challenges in Software engineering, Software Engineering vs
Other Engineering, Software Process Models, Software Project Management
Week#3 03 hrs. Software reliability, availability, dependability, software defects, computer security, safety critical
systems
Week#4 03 hrs. Overview of formal method, introduction, need of formal methods, industrial usage of formal
methods, industrial techniques and tools for formal methods, proofs in formal methods, model
checking, usability of formal methods
Week#5 03 hrs. Set, relation and function, introduction to set theory, computer representation of sets, relations,
types of relation, function of relations, functions and application of functions
Week#6 03 hrs. Propositional and predicate logic, introduction, proposition logic, truth tables, propositional calculus
and its proofs
Week#7 03 hrs. Introduction to Predicate calculus, sketch of formalization of predicate calculus, properties and
application of predicate calculus, limitation of propositional calculus
Week#8 03 hrs. Overview of research, How to do research, Where to start? Discussion on selecting a research topic for
research paper presentation, assignment about paper presentation, Revision of mid-term course.
(Mid-Term Exam)
5. Course Outline
Week#9 03 hrs. Discussion on mid-term solution and generic mistakes made by students in exam.
Week#10 03 hrs. Advanced topics in logic, temporal logic and fuzzy logic, temporal logic, logic and
artificial intelligence.
Week#11 03 hrs. Z formal specification language, introduction, sets, relations, functions, sequence,
schemas and schemas compositions, proofs in z, industrial applications of z, hands on
experience of difference use-cases.
Week#12 03 hrs. Discussion on papers presentation, issues related to presentation, dummy
presentation
Week#13 03 hrs. Model checking, introduction to model checking, Introduction to Petri-nets,
Advantages and disadvantages of low and high level petri-nets, CTL and LTL modeling
concurrent systems, linear temporal systems, computational tree logic, tools for
model checking, industrial application of model checking
Week#14 03 hrs. Industrial tools for model checking, introduction, tools for z specification, tools for
modeling checking, tools for UML, Hands on experience on tools with difference case
studies and scenarios.
Week#15 03 hrs. Formal Research Paper Presentation. On the spot analysis of work and presentation
skills.
Week#16 03 hrs. Revision and discussion about the course, feedback from the class and thorough
question answer session for final-term paper.
6. Course Learning Outcomes
6
Upon completion of the course, students will be able to:
Apply the concepts of standard mathematical logic to
produce proofs or refutations of well-formed
propositions or arguments phrased in English or in a
variety of formal notations (first order logic, petri-nets
and Z).
Write formal specifications and contracts in Z.
Given an inductive definition of a simple data
structure, write a recursive definition of a given simple
operation on data of that type. Given some such
recursively defined operations, prove simple
properties of these functions using the appropriate
structural induction principle.
7. Recommended Resources
7
Text book
Concise Guide to Formal Methods | Theory,
Fundamentals and Industry Applications
(2017, Springer International Publishing)
Other
Understanding Formal Methods by Jean-
François Monin (2003)
Using Z Specification, Refinement, and Proof
by Jim Woodcock and Jim Davies
8. Introduction
Mongolian Hordes Approach (1950)
The completed code will always be full of
defects.
The coding should be finished quickly to
correct these defects.
Design as you code approach
8
9. Software Failure
Standish Report
Software Complication
Inherently complex
No silver bullets to resolve the issues
Failure
Life, time and $$$$
9
11. What Is Software Engineering?
IEEE 610.12
Software engineering is the application of a
systematic, disciplined, quantifiable approach
to the development, operation, and
maintenance of software; that is, the
application of engineering to software, and the
study of such approaches
Mathematics as foundation
11
12. Software Process Models
The choice of a particular software
development life cycle is determined from
the particular needs of the specific project.
The processes employed are fit for
purpose
12
15. Spiral Life Cycle Model
Requirements Evolution
Project spiral
Iterative based prototyping
Objectives and analysis of risk
Update to the requirements
Design
Code
Testing
User review (prototype) for each spiral
15
16. Spiral Life Cycle Model
Joint Application
Model (JAD)
Usability and look and
feel of the application
is a key concern.
Decision makers are in
a room
Traditionally 2
weeks/iteration
Rapid Application
Model (RAD)
Fixed time-frame
Expose iteration
underdevelopment to
the end user at earlier
stage.
Sacrifice functionality
w.r.t iteration time
Traditionally 2-
4weeks/iteration
16
17. Rational Unified Process
UML based process
Can handle incomplete requirements
Focus on risk analysis
17
18. Agile Development
Changes are welcomed
Infant requirement
Strong collaboration
Take 50% of requirement and do that
100%
18
19. What are Formal Methods?
Rigorous mathematically-based
techniques and tools for the
specification, development, and
verification of software and hardware
systems.
Unambiguous nature of mathematics
avoid problems of imprecisely worded
natural language.
19
The “Mongolian Hordes” management myth is the belief that adding more programmers to asoftware project that is running late will allow it to catch-up.
The reality is that adding people to alate software project actually makes it later.
Starts with requirements gathering and definition. It is followed by the system specification (with the functional and non-functional requirements), the design and implementation of the software, and comprehensive testing. The software testing generally includes unit, system and user acceptance testing.
.The waterfall model is employed for projects where the requirements can be identified early in the project life cycle or are known in advance
Right one are performed wrt left one. i.e uni testing is done by considering left one and so on.
the requirements are not fully known at project initiation,
For each design code and test risk analysis is done and review+feedback is share. This process is repeated till the project is completed.
JAD: This is important in Web-based development and in the development of a graphical user interface (GUI). The implementation of part of the system helps in gaining a better understanding of the requirements of the system, and this feeds into subsequent development cycles. process repeats until the requirements and the software product are fully complete
Requirements are gathered as use cases, where the use cases describe the functional requirements from the point of view of the user of the system.
Use cases also drive the development process, as the developers create a series of design and implementation models that realize the use cases.
The developers review each successive model for conformance to the use-case model, and the test team verifies that the implementation correctly implements the use cases.
– Feedback and adaptation employed in decision-making– User stories and sprints are employed– Stories are either done or not done (no such thing as 50% done)– Iterative and incremental development is employed– An iteration has a fixed length (i.e. time boxing is employed)– Entire software development life cycle is employed for the implementation of each story– Change is accepted as a normal part of life in the Agile world
– Delivery is made as early as possible.– Refactoring and evolutionary design Employed – Continuous integration is employed– Short cycle times– Emphasis on quality– Stand-up meetings– Plan regularly– Direct interaction preferred over documentation– Rapid conversion of requirements into working functionality– Early decision-making
assuming the original specification is correct and the proofs of correctness of each refinement step are valid, then there is a very high degree ofconfidence in the correctness of the implemented software.