1
Formal Method in
Software Engineering
RAHEEM ULLAH
Today Topics: 2
What is software?
What is software Engineering ?
Challenges in software Engineering?
Software process and Life Cycle
i) waterfall Life Cycle
ii) Agile Development
Formal Method Introduction
What is software ? 3
Software is a set of instructions used to operate computers and execute specific tasks. It
is the opposite of hardware, which describes the physical aspects of a computer. Software is
a generic term used to refer to applications, scripts and programs that run on a device.
Two type of software
1) System Software
2) Application Software (Custom Software)
Software Engineering ? 4
Software engineering is defined as a process of analyzing user requirements and then
designing, building, and testing software application which will satisfy those requirements.
Software engineers need education on specification, design, turning designs into
programs, software inspections and testing. The education should enable the software
engineer to produce well-structured programs that are fit for purpose.
Challenges in software Engineering? 5
Software engineering employs a well defined and systematic approach to develop
software. This approach is considered to be the most effective way of producing high-quality
software. However, despite this systematic approach in software development, there are still
some serious challenges faced by software engineering. Some of these challenges are listed
below.
1) Rapid technology advancement
2) Increasing customer demands (Changes from customer)
3) Time limitations
4) Limited infrastructure/resources
5) Conflicts with software testing teams
Software process and Life Cycle ? 6
Software development process is the process of dividing
software development work into smaller, parallel or sequential steps or
subprocesses to improve design , product management and project
management . It is also known as a software development life
cycle (SDLC).
The processes steps such as defining requirements, processes for project
estimation and planning, processes for design, implementation, testing.
Continued 7
The software process assets in an organization generally consist of:
– A software development policy for the organization
a) The software development policy helps to regulate software development and code management in your
organization. A disorganized software development process can result in wasted time and wasted developer
resources. Creating a software development practice with an eye to efficiency and reuse is key to cost savings.
– Process maps that describe the flow of activities
A process map is a planning and management tool that visually describes the flow of work. Using process mapping
software, process maps show a series of events that produce an end result.
– Procedures and guidelines that describe the processes in more detail
– Checklists to assist with the performance of the process
– Templates for the performance of specific activities (e.g. design, testing)
– Training Materials
Continued 8
The processes employed to develop high-quality software generally include:
– Project management process
– Requirements process
– Design process
– Coding process
– Peer-review process
– Testing process
– Supplier selection and management processes
– Configuration management process
– Audit process
– Measurement process
– Improvement process
Customer support and maintenance processes
Process Model 9
A software process model is an abstraction (a technique for arranging complexity of
computer systems) of the actual process, which is being described. It
can also be defined as a simplified representation of a software process. Each model represents
a process from a specific perspective.
1) Waterfall Model
The Waterfall Model was the first Process Model to be introduced. It is also referred to as
a linear-sequential life cycle model. It is very simple to understand and use. In a waterfall
model, each phase must be completed before the next phase can begin and there is no
overlapping in the phases. The Waterfall model is the earliest SDLC approach that was used for
software development.
Waterfall Model Design 10
Agile philosophy 11
Philosophy : a theory or attitude that acts as a guiding principle for behaviour. (17 people)
Values : basic and fundamental beliefs that guide or motivate attitudes or actions.
principles: a basic truth or law or assumption.
Agile Fours Values are :
1) Individuals and Interactions
2) working software
3) Customer Collaboration
4) Responding to Changes
Agile 12 Priciples 12
1) Customer satisfaction by early and continuous delivery of valuable software
2) Welcome changing requirements, even in late development
3) working software is deliverd frequently (weeks rather than months)
4) close, daily cooperation between business people and developers
5) projects are built around motivated individuals, who should be truested
6) fact to face conversation is the best form of communication(co-location)
7) working software is the principal measure of progress
8) sustainable development, able to maintain a costant pace
9) continuous attention to technical excellence and good design
10) simplicity—the art of maximizing the amount of work not done----- is essential
11) best architectures, requirements, and desing emerge from self organizing teams
12) Regularly, the team reflects on how to become more effective, and adjusts accordingly
13
Thank you