CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

168
CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany

Transcript of CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Page 1: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

CSC 506: Software Engineering and

Knowledge Engineering

Dr. Syed Noman Hasany

Page 2: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Course Outline

• Review of known methodologies • Analysis of software requirements • Real-time software • Software cost, quality, testing and measurements • Object programming • Knowledge engineering issues: knowledge

representation using rules, frames & logic, basics of logical inference, and basics of search.

Page 3: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

The mother of Qualities: Simplicity

• Work very hard to keep everything as simple as you can

• We all have an intuitive notion of simplicity• We recognize simplicity

• In clear and easy to understand speaking and writing• In uncluttered (neat and organized) forms• In a good teacher’s explanation• In a leader’s setting of goals and strategies

Page 4: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Simplicity

• Many of these intuitive ideas can be applied to programming as well.

• Simpler programs are easier to use, review, document and modify with the result of significantly reduced cost in all phases of the process

• Software engineering is also, in large part, about rendering artifacts readable and usable by people as well as (if not more so than) by machines.

Page 5: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Achieving Simplicity is NOT simple• Achieving simplicity sometimes requires extra work.• Documentation written from the point of view of the

writer is not nearly so useful as document written from the point of view of the reader.

• Achieving the reader’s perspective requires more work, but results in a document that is vastly simpler to understand , to reference, to use, than one that results from an author’s stream of consciousness.

• “I had happily spend two hours pondering how to make a simple sentence clearer” --- E. Dijkstra (the inventor of many software Engineering principles)

Page 6: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

What is software?

• Computer programs and associated documentation

Page 7: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Software Products Categories• Software products may be

• Generic - developed to be sold to a range of different customers

• Bespoke (custom) - developed for a single customer according to their specification

Page 8: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Software Engineering (In general)

Software engineering is an engineering disciplinea which is concerned with all

aspects of software productionb

Page 9: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Software Engineering Definitions

• Classic Definition (1969)• “The establishment and use of sound engineering

principles in order to obtain economically software that is reliable and works efficiently on real machines”

• IEEE Definition (1993)• “Software engineering (1) The application of a systematic,

disciplines, quantifiable approach to the development, operation and maintenance of software; that is the application of engineering to software. (2) The study of approaches as in (1).”

Page 10: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Difference between software engineering and computer science

• Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software.

• Computer science theories are currently insufficient to act as a complete underpinning (foundation) for software engineering.

• Software engineers must often use ad hoc approaches to develop the software. (Research is in progress and will remain in progress!)

Page 11: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

What is a software process?

• A set of activities whose goal is the development or evolution of software

• Mostly carried out by software Engineers• Generic activities in all software processes are:

• Specification - what the system should do and its development constraints

• Development - production of the software system• Validation - checking that the software is what the

customer wants• Evolution - changing the software in response to changing

demands

Page 12: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Software costs• Software costs often dominate system costs. The

costs of software on a PC are often greater than the hardware cost.

• Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs

• Software engineering is concerned with cost-effective software development

Page 13: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

What are the costs of software engineering?

• Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs

• Costs vary depending on the type of system being developed and the requirements of system attributes such as performance and system reliability

• Distribution of costs depends on the development model that is used

Page 14: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Product development costs

Specification Development System testing

25 50 75 1000

For software products that are (mostly) sold for PCs, the cost profile is likely to be different. Specification costs are relatively low. However, because they are intended for use on a range of different configurations, they must be extensively tested.

Page 15: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Activity cost distributionWaterfall model

Iterative development

Component-based software engineering

Development and evolution costs for long-lifetime systems

System evolution

10 200 30 4000

System development

Specification Design Development Integration and testing

25 50 75 1000

Specification Development Integration and testing

25 50 75 1000

Specification Iterative development System testing

25 50 75 1000

Page 16: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

What is CASE (Computer-Aided Software Engineering)

• Software systems which are intended to provide automated support for software process activities. CASE systems are often used for method support

• Upper-CASE• Tools to support the early process activities of

requirements and design

• Lower-CASE• Tools to support later activities such as programming,

debugging and testing

Page 17: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Attributes of good software• The software should deliver the required functionality

and performance to the user and should be maintainable, dependable and usable

• Maintainability• Software must evolve to meet changing needs

• Dependability• Software must be trustworthy

• Efficiency• Software should not make wasteful use of system

resources• Usability

• Software must be usable by the users for which it was designed

Page 18: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Key challenges facing Software Engineering• Coping with legacy systems, coping with increasing

diversity and coping with demands for reduced delivery times

• Legacy systems• Old, valuable systems must be maintained and updated

• Heterogeneity• Systems are distributed and include a mix of hardware

and software• Delivery

• There is increasing pressure for faster delivery of software

Page 19: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Professional and ethical responsibility

• Software engineering involves wider responsibilities than simply the application of technical skills

• Software engineers must behave in an honest and ethically responsible way if they are to be respected as professionals

• Ethical behaviour is more than simply upholding the law.

Page 20: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Plan-driven and agile processesPlan-driven processes are processes where all of

the process activities are planned in advance and progress is measured against this plan.

In agile processes, planning is incremental and it is easier to change the process to reflect changing customer requirements.

In practice, most practical processes include elements of both plan-driven and agile approaches.

There are no right or wrong software processes.

20

Page 21: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Generic Software process modelsA. The waterfall modelB. Incremental developmentC. Reuse-oriented software engineeringD. SpiralE. RUP In practice, most large systems are developed

using a process that incorporates elements from all of these models.

21

Page 22: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

A. The waterfall model

22

Page 23: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Waterfall model problemsThe main drawback of the waterfall model is the difficulty of

accommodating change after the process is underway. In principle, a phase has to be complete before moving onto the next phase.

Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements.◦ Therefore, this model is only appropriate when the

requirements are well-understood and changes will be fairly limited during the design process.

◦ Few business systems have stable requirements.The waterfall model is mostly used for large systems engineering

projects where a system is developed at several sites.◦ In those circumstances, the plan-driven nature of the waterfall

model helps coordinate the work.

23

Page 24: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

B. Incremental development

24

Page 25: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Incremental development

• In outline description, customers identify the services to be provided by the system.

• Concurrent means in parallel.• Incremental development in some form is now the

most common approach for the development of application systems. This approach can be either plan-driven, agile, or, more usually, a mixture of these approaches.

• In a plan-driven approach, the system increments are identified in advance;

• if an agile approach is adopted, the early increments are identified but the development of later increments depends on progress and customer priorities.

25

Page 26: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

C. Reuse-oriented software engineeringBased on systematic reuse where systems are

integrated from existing components or COTS (Commercial-off-the-shelf) systems.

Process stages◦ Component analysis;◦ Requirements modification;◦ System design with reuse;◦ Development and integration.

Reuse is now the standard approach for building many types of business system

26

Page 27: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Reuse-oriented software engineering

27

Page 28: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

D. Boehm’s spiral model

A risk-driven software process framework proposed by Boehm (1988).

Process is represented as a spiral rather than as a sequence of activities with backtracking.

Each loop in the spiral represents a phase in the process (the innermost loop might be concerned with system feasibility, the next loop with requirements definition, the next loop with system design, and so on)

No fixed phases such as specification or design - loops in the spiral are chosen depending on what is required.

Chapter 2 Software Processes 28

Page 29: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Boehm’s spiral model of the software process

29

Page 30: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Risk

• Risk simply means something that can go wrong. For example, if the intention is to use a new programming language, a risk is that the available compilers are unreliable or do not produce sufficiently efficient object code.

• Risks lead to proposed software changes and project problems such as schedule and cost overrun, so risk minimization is a very important project management activity.

Page 31: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

E. The Rational Unified Process

A modern hybrid generic process model derived from the work on the UML and associated process.

Hybrid because it brings together aspects of the 3 generic process models discussed previously.

Phases in the RUP are more closely related to business rather than technical concerns.

Normally described from 3 perspectives◦ A dynamic perspective that shows phases over time;◦ A static perspective that shows process activities;◦ A practice perspective that suggests good practice.

Chapter 2 Software Processes 31

Page 32: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Phases in the Rational Unified Process

Chapter 2 Software Processes 32

Page 33: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

RUP phases (dynamic)Inception

◦ Establish the business case for the system.Elaboration

◦ The goals of the elaboration phase are to develop an understanding of the problem domain, establish an architectural framework for the system, develop the project plan, and identify key project risks. On completion of this phase you should have a requirements model for the system, which may be a set of UML use-cases, an architectural description, and a development plan for the software.

Construction◦ System design, programming and testing.

Transition◦ Deploy the system in its operating environment.

Chapter 2 Software Processes 33

Page 34: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

RUP iteration

• In-phase iteration• Each phase is iterative with results developed

incrementally.

• Cross-phase iteration• As shown by the loop in the RUP model, the whole set

of phases may be enacted/passed incrementally.

Chapter 2 Software Processes 34

Page 35: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Requirements• The requirements are the descriptions of the system

services and constraints that are generated during the requirements engineering process.

• It may range from a high-level abstract statement of a service or of a system constraint to a detailed mathematical functional specification.

35

Page 36: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Requirements engineering• The process of establishing:

• the services that the customer requires from a system and • the constraints under which it operates and is developed.

• The outcome is a requirements document, which may be part of the system development contract.

36

Page 37: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

User and system requirements: example

37

Page 38: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

1. Functional and non-functional requirementsFunctional requirements

Statements of services the system should provide, how the system should react to particular inputs and how the system should behave in particular situations.

May state what the system should not do.Non-functional requirements

Constraints on the services or functions offered by the system such as timing constraints, constraints on the development process, standards, etc.

Often apply to the system as a whole rather than individual features or services.

Domain requirementsConstraints on the system from the application domain (e.g.

medical domain)

38

Page 39: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Functional requirements for the MHC-PMSA user shall be able to search the appointments lists

for all clinics.The system shall generate each day, for each clinic, a

list of patients who are expected to attend appointments that day.

Each staff member using the system shall be uniquely identified by his or her 8-digit employee number.

39

Page 40: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Non-functional requirements implementationNon-functional requirements may affect the overall

architecture of a system rather than the individual components.

For example, to ensure that performance requirements are met, you may have to organize the system to minimize communications between components.

A single non-functional requirement, such as a security requirement, may generate a number of related functional requirements that define system services that are required.

40

Page 41: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Types of nonfunctional requirement

41

Page 42: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Non-functional classificationsProduct requirements

Requirements which specify that the delivered product must behave in a particular way e.g. execution speed, reliability, etc.

Organisational requirements Requirements which are a consequence of organisational policies

and procedures development process requirements that specify the programming language, the development environment or process standards to be used, and environmental requirements that specify the operating environment of the system.

External requirements Requirements which arise from factors which are external to the

system and its development process e.g. interoperability requirements, legislative requirements, etc.

42

Page 43: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Examples of nonfunctional requirements in the MHC-PMS

43

Product requirementThe MHC-PMS shall be available to all clinics during normal working hours (Mon–Fri, 0830–17.30). Downtime within normal working hours shall not exceed five seconds in any one day.

Organizational requirementUsers of the MHC-PMS system shall authenticate themselves using their health authority identity card.

External requirementThe system shall implement patient privacy provisions as set out in HStan-03-2006-priv.

Page 44: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

The software requirements documentThe software requirements document is the official

statement of what is required of the system developers.

Should include both a definition of user requirements and a specification of the system requirements.

It is NOT a design document. As far as possible, it should set of WHAT the system should do rather than HOW it should do it.

44

Page 45: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Users of a requirements document

45

Page 46: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Traceability

• Part of requirement management process

• Technique to provide relationship between requirement design and final implementation

• How and why system development products satisfy stakeholders requirements

• Ability to discover the history of every feature of a system

• A quality factor

• Many standards (2167-A then 498) require the development of traceability documents

Page 47: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

The Role of Traceability in Systems Development

• Definition of traceability:• "The degree to which a relationship can be established between

two or more products of the development process, especially products having a predecessor-successor or master-subordinate relationship to one another; for example, the degree to which the requirements and design of a given software component match." (IEEE 610.12-1990)

• Experience has shown that the ability to trace requirements through the stages of specification, architecture, design, implementation, and testing is a significant factor in assuring a quality software implementation.

Page 48: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

The Traceability Relationship

• A traceability relationship is a relationship between two project elements.

• A traceability relationship is a type of dependency relationship between elements.

• A dependency relationship states that a change in one element (A) may affect another element (B), but the reverse is not necessarily true.

Page 49: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

A model of traceability

Syst_components

Verification_procedRequirement Developed_for

DeriveAllocated_to

External_System

Performed_onsatisfy

Interface_with

Page 50: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

A Generalized Traceability Model

Page 51: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Traceability Matrix: User Needs versus Features

Page 52: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Traceability Matrix: User Needs versus Features

• After establishing all known need–feature relationships, there is again a need to examine the traceability matrix for potential indications of error.

• If inspection of a row fails to detect any Xs, a possibility exists that no feature is yet defined to respond to a user need.

• If inspection of a column fails to detect any Xs, a possibility exists that a feature has been included for which there is no defined product need.

Page 53: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Representation – Traceability Table

• Show the relationships between requirements or between requirements and other activities

• Table can be set up to show links between several different elements

A good Example: http://www.softwaretestinghelp.com/requirements-traceability-matrix/

Page 54: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Simple Traceability List• A simplified form of a traceability matrix may be used

where, along with each requirement description, one or more lists of the identifiers of related requirements are maintained

Page 55: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Using Traceability Tools

• Offer a simple user-guided procedure to "point and click" through the explicit relationships that may exist between two elements of the lifecycle.

• Allow building large matrices required for more sophisticated projects and to examine the data automatically for many of the types of potential red flags.

• Provide support for some of the implicit forms of traceability (e.g. use case to use-case realization), and provide navigational mechanisms and other methods to help assure that the implementation is correct as the application evolves.

Page 56: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Proceeding without Traceability Tools • Many of the matrix relationships could be easily

handled with a spreadsheet.

• The problem with spreadsheets, however, is maintenance, especially in extensive hierarchies of relationships.

• The other alternative is to use a database.

Page 57: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

System modelingSystem modeling is the process of developing

abstract models of a system, with each model presenting a different view or perspective of that system.

• A picture is a replacement of thousands of words.

57

Page 58: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Data driven behavioral model• Many business systems are data processing

systems that are primarily driven by data. They are controlled by the data input to the system with relatively little external event processing. Their processing involves a sequence of actions on that data and the generation of an output.

• For example, a phone billing system will accept information about calls made by a customer, calculate the costs of these calls, and generate a bill to be sent to that customer.

58

Page 59: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Data Flow Diagrams (DFDs)• Used for data-driven modelling • Data flow diagrams (DFDs) are one of the

diagramming techniques(graphical models) used in structured systems analysis and design

• Data flow diagrams show:• Data flowing through a system to or from users (external

entities)• The processes that transform the data• The data stores that hold the data

59

Page 60: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

DFD Elements• Process

• Activity/function that is performed for some specific business reason. Names start with a verb and ending with a noun (e.g., “Determine request quantity”).

• Data Flow• A data flow is a single piece of data (e.g., quantity available)

(also called a data element), should be named with a noun.• Data Store

• collection of data that is stored in some way, named with a noun and is assigned an identification number.

• External Entity• a person, organization, organization unit, or system that is

external to the system, but interacts with it.60

Page 61: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

61

Data Flow Diagram Symbols

Page 62: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

DFD Levels Decomposition is the process of

modeling the system and its components in increasing levels of detail. Context DFD

Overview of the organizational system. Level-0 DFD

Representation of system’s major processes at high level of abstraction.

Level-1 DFD

Results from decomposition of Level 0 diagram. Level-n DFD

Results from decomposition of Level n-1 diagram.62

Page 63: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Context Diagram

Context diagram shows the system boundaries, external entities that interact with the system, and major information flows between entities and the system.NOTE: only one process symbol, and no data stores

shown.63

Page 64: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Level-0 DFD

Level-0 DFD shows the system’s major processes, data flows, and data stores at a high level of abstraction.

Processes are labeled 1.0, 2.0, etc. These will be decomposed into more primitive (lower-level) DFDs. Depletion means reduction.

64

Page 65: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Level-1 DFD

Level-1 DFD shows the sub-processes of one of the processes in the Level-0 DFD.

This is a Level-1 DFD for Process 4.0.

Processes are labeled 4.1, 4.2, etc. These can be further decomposed in more primitive (lower-level) DFDs if necessary. 65

Page 66: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Level-n DFD

Level-n DFD shows the sub-processes of one of the processes in the Level n-1 DFD.

This is a Level-2 DFD for Process 4.3.Processes are labeled 4.3.1, 4.3.2, etc. If this is the

lowest level of the hierarchy, it is called a primitive DFD.

66

Page 67: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

DFD Diagramming Rules Process

No process can have only outputs or only inputs. Processes must have both outputs and inputs.

Process labels should be verb phrases.67

Page 68: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

DFD Diagramming Rules Data Store

Data Store labels should be noun phrases.

All flows to or from a data store must move through a process.

68

Page 69: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

DFD Diagramming Rules Source/Sink

Source and Sink labels should be noun phrases.

No data moves directly between external entities without going through a process.

Interactions between external entities without intervening processes are outside the system and therefore not represented in the DFD.

69

Page 70: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Bidirectional flow between process and data store is represented by two separate arrows.

Forked data flow must refer to exact same data item (not different data items) from a common location to multiple destinations.

DFD Diagramming Rules Data Flow

70

Page 71: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Joined data flow must refer to exact same data item (not different data items) from multiple sources to a common location.

Data flow cannot go directly from a process to itself, must go through intervening processes.

DFD Diagramming Rules Data Flow

71

Page 72: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Some Common Errors

72

Page 73: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Balancing Balancing involves insuring that

information presented at one level of a DFD is accurately represented in the next level DFD.

73

Page 74: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Balancing the DFD

74

Page 75: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Unbalanced DFD

This is unbalanced because the process of the context diagram has only one input but the Level-0 diagram has two inputs.

1 input

1 output

2 inputs

1 output

75

Page 76: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Balanced DFD

These are balanced because the numbers of inputs and outputs of context diagram process equal the number of inputs and outputs of Level-0 diagram. 76

Page 77: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Balanced DFD (cont.)

These are balanced because the numbers of inputs and outputs to Process 1.0 of the Level-0 diagram equals the number of inputs and outputs to the Level-1 diagram.

1 input

4 outputs

77

Page 78: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

An Example: Tune Source(from System analysis and design, by Dennis, Wixom, Roth; 5th Ed.)

• Tune Source is a company headquartered in southern California, known as the place to go to find rare audio recordings.

• Tune Source currently has a website that enables customers to search for and purchase CDs. This site was initially developed by an Internet consulting firm and is hosted by a prominent local Internet Service Provider (ISP) in Los Angeles. The IT department at Tune Source has become experienced with Internet technology as it has worked with the ISP to maintain the site.

78

Page 79: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

An Example: Tune Source(from System analysis and design, by Dennis, Wixom, Roth; 5th Ed.)

• Business Need: • This project has been initiated to increase sales by creating the

capability of selling digital music downloads to customers through kiosks(stalls) in our stores, and over the Internet using our website.

• Business Requirements: • Using the Web or in-store kiosks, customers will be able to search

for and purchase digital music downloads. The specific functionality that the system should have includes the following:

• Search for music in our digital music archive.• Listen to music samples.• Purchase individual downloads at a fixed fee per download.• Establish a customer subscription account permitting unlimited

downloads for a monthly fee.• Purchase music download gift cards.

79

Page 80: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

An Example: Tune Source(from System analysis and design, by Dennis, Wixom, Roth; 5th Ed.)

80

Page 81: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

81

Page 82: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

82

Page 83: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

83

Find errors??

Page 84: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

UML• The Unified Modeling Language is a set of 14 different

diagram types that may be used to model software systems.

• It emerged from work in the 1990s on object-oriented modeling where similar object-oriented notations were integrated to create the UML. A major revision (UML 2) was finalized in 2004.

• The UML is universally accepted as the standard approach for developing models of software systems. Variants have been proposed for more general system modeling.

84

Page 85: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Why DFDs aren’t used in O-O• In DFDs a clear separation is made between processes

and stored data.• It is assumed that all data is ‘visible’ to any process

that needs to access it.• In an O-O system the processes that operate on data

are the methods of the classes that contain the data as attributes.

• Data is encapsulated within objects, and may be hidden too.

8585

Page 86: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

UML diagrams• The UML has many diagram types and so supports the creation of many

different types of system model. However, a survey in 2007 (Erickson and Siau, 2007) showed that most users of the UML thought that five diagram types could represent the essentials of a system:

1. Activity diagrams, which show the activities involved in a process or in data processing.

2. Use case diagrams, which show the interactions between a system and its environment.

3. Sequence diagrams, which show interactions between actors and the system and between system components.

4. Class diagrams, which show the object classes in the system and the associations between these classes.

5. State diagrams, which show how the system reacts to internal and external events.

86

Page 87: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

UML diagrams• Fortunately, four UML diagramming techniques have

come to dominate object-oriented projects: • Use case diagrams, • Class diagrams, • Sequence diagrams, and • Behavioral state machine diagrams.

• The other diagramming techniques are useful for their particular purposes, but these four techniques form the core of UML as used in practice today

87

Page 88: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

UML diagrams• The use case diagram is always created first, but the order in which the

other diagrams are created depends upon the project and the personal preferences of the analysts.

• Then class diagrams, sequence diagrams, and behavioral state machine diagrams are used to further define the evolving system from various perspectives.

• Most analysts start either with the class diagrams (showing what objects contain and how they are related, much like ERDs) or the sequence diagrams (showing how objects dynamically interact, much like DFDs), but in practice, the process is iterative.

• Developing sequence diagrams often leads to changes in the class diagrams and vice versa, so analysts often move back and forth between the two, refining each in turn as they define the system. Generally speaking, behavioral state machine diagrams are developed later, after the class diagrams have been refined.

88

Page 89: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Interaction modelsModeling user interaction is important as it helps to

identify user requirements. Modeling system-to-system interaction highlights the

communication problems that may arise. Modeling component interaction helps us understand

if a proposed system structure is likely to deliver the required system performance and dependability.

Use case diagrams and sequence diagrams may be used for interaction modeling.

89

Page 90: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Use case modelingUse cases were developed originally to support

requirements elicitation and now incorporated into the UML.

Each use case represents a discrete task that involves external interaction with a system.

Actors in a use case may be people or other systems.

90

Page 91: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Use cases in the MHC-PMS involving the role ‘Medical Receptionist’

91

Page 92: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Creating a Use Case Diagram• Identify Use Cases• Draw the System Boundary• Place the Use Cases on the Diagram• Identify the Actors• Add Association Relationships

92

Page 93: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Use Case Relationships

• Relationships• Represent communication between actor and use

case• Depicted by line or double-headed arrow line• Also called association relationship

• Other Types of Relationships for Use Cases• Generalization (From child to parent)• Include• Extend

93

Page 94: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Use Case Relationships

94

Page 95: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Use Case Relationships

• Include Relationship• Represents the inclusion of the functionality of

one use case within another • Common use case included in other use

cases (avoids duplicate functionality)• Arrow is drawn from the base use case to the

used use case• Write << include >> above arrowhead line• Include = reuse of functionality

95

Page 96: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Use Case Relationships

• Extend relationship• Represents the extension of the use case to

include optional functionality • Arrow is drawn from the extension use case to

the base use case• Write << extend >> above arrowhead line• Extends = new and/or optional functionality

• For example “assess fee” for ATM user drawing money from X-banks’ ATM where he does not have the account!

96

Page 97: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Sequence diagramsSequence diagrams are part of the UML and are used

to model the interactions between the actors and the objects within a system.

A sequence diagram shows the sequence of interactions that take place during a particular use case or use case instance.

The objects and actors involved are listed along the top of the diagram, with a dotted line drawn vertically from these.

Interactions between objects are indicated by annotated arrows.

97

Page 98: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

98

Page 99: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Elements of a Sequence Diagram• Actors and objects participating in the sequence are

placed across the top of the diagram, depicted by actor symbols from the use case diagram or unlabeled rectangles.

• For each of the objects, the name of the class that they are an instance of is given after the object’s name.

• A dotted line runs vertically below each actor and object to denote the lifeline of the actors/objects over time.

99

Page 100: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Elements of a Sequence Diagram• A thin, rectangular box, called the execution occurrence, is

overlaid onto the lifeline to show when the classes are sending and receiving messages.

• A message is a communication between objects that conveys information, with the expectation that activity will ensue, and messages passed between objects are shown by solid lines connecting two objects, called links.

• The arrow on the link shows which way the message is being passed, and any argument values for the message are placed in parentheses next to the message’s name. The order of messages goes from top to bottom, so messages located higher on the diagram represent messages that occur earlier in the sequence, versus the lower messages that occur later.

100

Page 101: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Elements of a Sequence Diagram• There are times that a message is sent only if a

condition is met. In those cases, the condition is placed between a set of [], such as [Authorization Ok]

• It is possible to explicitly show the return from a message, with a return link, a dashed message. However, adding return links tends to clutter the diagram. Therefore, unless the return links add a lot of information to the diagram, they should be omitted.

• The interaction operator alt means that the combined fragment represents a choice or alternatives of behavior.

101

Page 102: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Sequence diagram for “View patient information”

102

Page 103: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Description of the sequence diagram

a. The medical receptionist triggers the ViewInfo method in an instance P of the PatientInfo object class, supplying the patient’s identifier, PID. P is a user interface object, which is displayed as a form showing patient information.

b. The instance P calls the database to return the information required, supplying the receptionist’s identifier to allow security checking.

c. The database checks with an authorization system that the user is authorized for this action.

d. If authorized, the patient information is returned and a form on the user’s screen is filled in. If authorization fails, then an errormessage is returned.

103

Page 104: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Sequence diagram for Transfer Data

104Chapter 5 System modeling

Page 105: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Description of the sequence diagram1. The receptionist logs on to the PRS.

2. There are two options available. These allow the direct transfer of updated patient information to the PRS and the transfer of summary health data from the MHC-PMS to the PRS.

3. In each case, the receptionist’s permissions are checked using the authorization system.

4. Personal information may be transferred directly from the user interface object to the PRS. Alternatively, a summary record may be created from the database and that record is then transferred.

5. On completion of the transfer, the PRS issues a status message and the user logs off.

105

Page 106: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Real-time system• A real-time system is a software system where the

correct functioning of the system depends on the results produced by the system and the time at which these results are produced

• A ‘soft’ real-time system is a system whose operation is degraded if results are not produced according to the specified timing requirements

• A ‘hard’ real-time system is a system whose operation is incorrect if results are not produced according to the timing specification

Page 107: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Stimulus/Response Systems• Given a stimulus, the system must produce a

response within a specified time• Periodic stimuli. Stimuli which occur at predictable

time intervals• For example, a temperature sensor may be polled 10

times per second

• Aperiodic stimuli. Stimuli which occur at unpredictable times

• For example, a system power failure may trigger an interrupt which must be processed by the system

Page 108: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

System elements

• Sensors control processes• Collect information from sensors. May buffer

information collected in response to a sensor stimulus

• Data processor• Carries out processing of collected information

and computes the system response• Actuator control

• Generates control signals for the actuator

Page 109: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Sensor/actuator processes

Dataprocessor

Actuatorcontrol

Actuator

Sensorcontrol

Sensor

Stimulus Response

Page 110: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

R-T systems design process• Identify the stimuli to be processed and the

required responses to these stimuli• For each stimulus and response, identify the timing

constraints• Aggregate the stimulus and response processing

into concurrent processes. A process may be associated with each class of stimulus and response

Page 111: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

R-T systems design process• Design algorithms to process each class of stimulus

and response. These must meet the given timing requirements

• Design a scheduling system which will ensure that processes are started in time to meet their deadlines

• Integrate using a real-time executive or operating system

Page 112: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Timing constraints

• May require extensive simulation and experiment to ensure that these are met by the system

• May mean that certain design strategies such as object-oriented design cannot be used because of the additional overhead involved

• May mean that low-level programming language features have to be used for performance reasons

Page 113: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Real-time executives• Real-time executives are specialised operating

systems which manage the processes in the RTS• Responsible for process management and resource

(processor and memory) allocation• May be based on a standard RTE kernel which is

used as it is i.e. unchanged or modified for a particular application

• Does not include facilities such as file management.

14

Page 114: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Executive components• Real-time clock

• Provides information for process scheduling.

• Interrupt handler• Manages aperiodic requests for service.

• Scheduler• Chooses the next process to be run.

• Resource manager• Allocates memory and processor resources.

• Despatcher• Starts process execution.

Page 115: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Real-time executive components

Process resourcerequirements

Scheduler

Schedulinginformation

Resourcemanager

Despatcher

Real-timeclock

Processesawaitingresources

Readylist

Interrupthandler

Availableresource

list

Processorlist

Executingprocess

Readyprocesses

Releasedresources

Page 116: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Process priority• The processing of some types of stimuli must

sometimes take priority• Interrupt level priority. Highest priority which is

allocated to processes requiring a very fast response

• Clock level priority. Allocated to periodic processes• Within these, further levels of priority may be

assigned

Page 117: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Interrupt servicing• Control is transferred automatically to a

pre-determined memory location• This location contains an instruction to jump to an

interrupt service routine• Further interrupts are disabled, the interrupt

serviced and control returned to the interrupted process

• Interrupt service routines MUST be short, simple and fast

Page 118: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Periodic process servicing

• In most real-time systems, there will be several classes of periodic process, each with different periods (the time between executions), execution times and deadlines (the time by which processing must be completed)

• The real-time clock ticks periodically and each tick causes an interrupt which schedules the process manager for periodic processes

• The process manager selects a process which is ready for execution

Page 119: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Process switching

• The scheduler chooses the next process to be executed by the processor. This depends on a scheduling strategy which may take the process priority into account

• The resource manager allocates memory and a processor for the process to be executed

• The despatcher takes the process from ready list, loads it onto a processor and starts execution

Page 120: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Program testing• Testing is intended to show that a program does what

it is intended to do and to discover program defects before it is put into use.

• When software is tested, a program may be execute using artificial data.

• Can reveal the presence of errors NOT their absence.• Testing is part of a more general verification and

validation process, which also includes static validation techniques.

120

Page 121: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Testing process goals• Validation testing

• To demonstrate to the developer and the system customer that the software meets its requirements

• A successful test shows that the system operates as intended.

• Defect testing• To discover faults or defects in the software where its

behavior is incorrect or not in conformance with its specification

• A successful test is a test that makes the system perform incorrectly and so exposes a defect in the system.

121

Page 122: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

• Verification: "Are we building the product right”.

• The software should conform to programs specification.

• Validation: "Are we building the right product”.

• The software should do what the user really requires.

Verification vs validation

122

Page 123: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Software inspections• These involve people examining the source

representation with the aim of discovering anomalies and defects.

• Inspections not require execution of a system so may be used before implementation.

• Inspection is done to any representation of the system (requirements, design, configuration data, test data, etc.).

123

Page 124: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Inspection and Testing

124

Page 125: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

A model of the software testing process

125

Page 126: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Stages of testingA. Development testing: the system is tested during

development to discover bugs and defects. B. Release testing: a separate testing team test a

complete version of the system before it is released to users.

C. User testing: users or potential users test the system in their own environment.

126

Page 127: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Development testing• Development testing includes all testing activities that

are carried out by the team developing the system. • Unit testing: Individual program units or object classes are

tested. E.g. Testing class of summarize_data• Component testing: Several individual units are integrated to

create composite components. Main focus on testing component interfaces. E.g. Testing report generation

• System testing: some or all components are integrated and the system is tested as a whole. Main focus on testing component interactions.

127

Page 128: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Automated testing• Unit testing can be automated so that tests are run and

checked without manual intervention.• A test automation framework (such as JUnit) is available to

write and run program tests. • The tests are embedded in a separate program that runs

the tests and invokes the system that is being tested. Using this approach, it is possible to run hundreds of separate tests in a few seconds.

128

Page 129: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Automated test components• A setup part, where you initialize the system with

the test case, namely the inputs and expected outputs.

• A call part, where you call the object or method to be tested.

• An assertion part where you compare the result of the call with the expected output. If the assertion evaluates to true, the test has been successful if false, then it has failed.

129

Page 130: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Test-driven development• Test-driven development (TDD) is an approach to

program development in which you inter-leave testing and code development.

• Tests are written before code and ‘passing’ the tests is the critical driver of development.

• Code is developed incrementally along with a test for that increment; moving to the next increment is allowed when the developed code passes its test.

130

Page 131: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Test-driven development

131

"Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure." -- Martin Fowler

Page 132: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

TDD process activities• Start by identifying the increment of functionality that

is required. This should normally be small and implementable in a few lines of code.

• Write a test for this functionality and implement this as an automated test.

• Run the test, along with all other tests that have been implemented. Initially, you have not implemented the functionality so the new test will fail.

• Implement the functionality and re-run the test. • Once all tests run successfully, you move on to

implementing the next chunk of functionality.

132

Page 133: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Benefits of test-driven development• Code coverage

• Every code segment that you write has at least one associated test so all code parts written has at least one test.

• Regression testing • A regression (deterioration) test suite (group) is developed

incrementally as a program is developed. • Simplified debugging

• When a test fails, it should be obvious where the problem lies. The newly written code needs to be checked and modified.

• System documentation • The tests themselves are a form of documentation that describe

what the code should be doing.

133

Page 134: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

B. Release testing• Release testing is the process of testing a particular

release of a system that is intended for use outside of the development team.

• The primary goal is to convince the supplier of the system that it is good enough for use.

• Release testing, therefore, has to show that the system delivers its specified functionality, performance and dependability, and that it does not fail during normal use.

• It is usually a black-box testing process where tests are only derived from the system specification.

134

Page 135: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Release testing and system testing

• Release testing is like system testing, but…• Important differences:

• A separate team that has not been involved in the system development, should be responsible for release testing.

• System testing by the development team should focus on discovering bugs in the system (defect testing). The objective of release testing is to check that the system meets its requirements and is good enough for external use (validation testing).

135

Page 136: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Release testing types• Requirements-based testing• Scenario testing• Performance testing

136

Page 137: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

B1. Requirements based testing• Requirements-based testing involves examining each

requirement and developing a test or tests for it.• MHC-PMS requirements:

• If a patient is known to be allergic to any particular medication, then prescription of that medication shall result in a warning message being issued to the system user.

• If a prescriber chooses to ignore an allergy warning, they shall provide a reason why this has been ignored.

137

Page 138: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Requirements tests: Example• Set up a patient record with no known allergies. Prescribe medication for

allergies that are known to exist. Check that a warning message is not issued by the system.

• Set up a patient record with a known allergy. Prescribe the medication to that the patient is allergic to, and check that the warning is issued by the system.

• Set up a patient record in which allergies to two or more drugs are recorded. Prescribe both of these drugs separately and check that the correct warning for each drug is issued.

• Prescribe two drugs that the patient is allergic to. Check that two warnings are correctly issued.

• Prescribe a drug that issues a warning and overrule that warning. Check that the system requires the user to provide information explaining why the warning was overruled.

138

Page 139: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

B2. Scenario Testing• A scenario is a story that describes one way in which

the system might be used. • Scenarios should be realistic and real system users

should be able to relate to them.• In a short paper on scenario testing, Kaner (2003)

suggests that a scenario test should be a narrative story that is credible and fairly complex.

139

Page 140: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Scenario Testing Example

• It tests a number of features of the MHC-PMS:1. Authentication by logging on to the system.2. Downloading and uploading of specified patient records to a laptop.3. Home visit scheduling, etc…

140

Page 141: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

B3. Performance testing• Performance testing is concerned both with

demonstrating that the system meets its requirements and discovering problems and defects in the system.

• Performance tests usually involve planning a series of tests where the load is steadily increased until the system performance becomes unacceptable.

• Stress testing is a form of performance testing where the system is deliberately overloaded to test its failure behavior.

141

Page 142: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Performance testing: pros and cons• In performance testing, this means stressing the

system by making demands that are outside the design limits of the software. This is known as ‘stress testing’.

• For example, say you are testing a transaction processing system that is designed to process up to 300 transactions per second. You start by testing with fewer than 300 transactions per second. You then gradually increase the load beyond 300 transactions per second until it is well beyond the maximum design load of the system and the system fails.

142

Page 143: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Performance testing: pros and cons• It tests the failure behavior of the system.• It is particularly relevant to distributed systems

based on a network of processors. These systems often exhibit severe degradation when they are heavily loaded.

143

Page 144: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

User testing• User or customer testing is a stage in the testing

process in which users or customers provide input and advice on system testing.

• User testing is essential, even when comprehensive system and release testing have been carried out.

• The reason for this is that influences from the user’s working environment have a major effect on the reliability, performance, usability and robustness of a system. These cannot be replicated in a testing environment.

144

Page 145: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Types of user testing• Alpha testing

• Users of the software work with the development team to test the software at the developer’s site.

• Beta testing• A release of the software is made available to users to allow

them to experiment and to raise problems that they discover with the system developers.

• Acceptance testing• Customers test a system to decide whether or not it is ready

to be accepted from the system developers and deployed in the customer environment. Primarily for custom systems.

145

Page 146: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Plan-driven vs Agile approach

• Agile approach to software development consider design and implementation to be the central activities in the software process. They incorporate other activities, such as requirements elicitation and testing, into design and implementation.

• By contrast, a plan-driven approach to software engineering identifies separate stages in the software process with outputs associated with each stage. The outputs from one stage are used as a basis for planning the following process activity.

146

Page 147: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Plan-driven vs Agile approach

147

Page 148: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Agile methods and acceptance testing• In agile methods, the user/customer is part of the

development team and is responsible for making decisions on the acceptability of the system.

• Tests are defined by the user/customer and are integrated with other tests in that they are run automatically when changes are made.

• There is no separate acceptance testing process.• Main problem here is whether or not the embedded

user is ‘typical’ and can represent the interests of all system stakeholders.

148

Page 149: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Knowledge

• What is knowledge?• Knowledge is the sort of information that

people use to solve problems. • Knowledge includes:

• facts, concepts, procedures, models, heuristics, examples.

• Knowledge may be:• specific or general• exact or fuzzy• procedural or declarative

Page 150: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Expert systems

• What is an expert system?• A particular kind of knowledge-based system• One in which the knowledge, stored in the knowledge

base, has been taken from an expert in some particular field.

• Therefore, an expert system can, to a certain extent, act as a substitute for the expert from whom the knowledge was taken.

Page 151: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Knowledge in Expert Systems

Conventional Programming

Knowledge-Based Systems

Algorithms

+ Data Structures

= Programs

Knowledge

+ Inference

= Expert System

Page 152: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

152

Components of Knowledge Base System

Knowledge base

Inference engine

User interface

Explanation and

reasoning

Self-learning

Figure 1.10: General structure of KBS

Enriches the system with self-learning capabilities

Provides explanation and

reasoning facilities

Knowledge base is a repository of domain knowledge and metaknowledge.

Inference engine is a software program that infers the knowledge available in

the knowledge base.

Page 153: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

What is logic?• Logic determines whether it is justified to reason

from given assumptions to a conclusion

• note: a logician cannot determine whether it rains• he can conclude it rains from the assumptions if I hear

drips on the roof, then it rains and I hear drips on the roof• There exist many logics.

Page 154: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Logic• The basis of logic programming is formal logic.• Logic determines whether it is justified to reason from

given assumptions to a conclusion.• A proposition can be thought of as a logical statement

that may or may not be true.• Symbolic logic can be used for the three basic needs

of formal logic: • To express propositions, • To express the relationships between propositions, and • To describe how new propositions can be inferred from

other propositions that are assumed to be true.

Page 155: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Proposition• A statement in some language that can be evaluated

to either true or false (cannot be both at a time).

Example propositions:• It is raining.• 5 + 5 = 10.• Turkey is in Asia.

Not propositions:• Where are you?• Oh no!• You are not.

Page 156: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Connectives• The syntax of propositional logic is made up of

propositions and connectives.• Propositions are combined through connectives.

The main connectives of propositional logic are:• Conjunction (and): Λ • Disjunction (or): v • Negation (not): ¬ • Implication (if..then): → • Equivalence / Bi-implication(if and only if): ↔

Page 157: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Modus Ponens• (Latin term means) Affirming the antecedent • This takes the following form:

p → q, p ╞ q• Essentially, this argument states that given the

premise p → q, and the premise p then we must conclude q.

Premises: - If it is raining then ground is wet (p → q),- It is raining (p),

Conclusion:- Therefore, the ground is wet (q).

Page 158: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Modus Tollens

• Denying the consequent• Another important derivation rule is modus tollens (also known

as the contraposition) have the following form:p → q, ¬q ╞ ¬p

• Example:

Premises: - If it is raining then the ground is wet (p → q),- The ground is not wet (¬q)

Conclusion:- Therefore, it is not raining (¬p).

Page 159: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Entailment

Example: {¬q, p q} ╞ ¬p

means that ¬p is true, iff both ¬q and p q are true. Thus, the premises entail the conclusion.

p q

T

T

F

F

T

F

T

F

F

F

T

T

F

T

F

T

T

F

T

T

(p q)¬p ¬q

Truth Table

For a set of formulae which are true, then as a logical consequence of this, some particular formula must also be true.

╞ is an Entailment Operator.

Page 160: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

EntailmentLines 1, 2 and 3 all have false truth assignments so

we disregard them.This means that we are left with one assignment,

where all assignments for the formula are true. i.e. ¬q is true, p q is true and ¬p is true.

Therefore, ¬p is entailed by {¬q, p q} , or more formally: {¬q, p q} ╞ ¬p

Exercise

Can we entail otherwise in modus tollens?

Page 161: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

The Origins of Prolog• "Programming with Logic"• ?- consult(goodman).• 'consult()‘ is a build-in command of PROLOG. It just load

your file and compile it. When you see 'yes', that is to say PROLOG has accepted your program.

Page 162: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Knowledge Base 1woman(mia).

woman(jody).

woman(yolanda).

playsAirGuitar(jody).

party.

© Patrick Blackburn, Johan Bos & Kristina Striegnitz

?- woman(mia).true?- playsAirGuitar(jody).true?- playsAirGuitar(mia).false

Page 163: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Knowledge Base 2happy(yolanda).

listens2music(mia).

listens2music(yolanda):- happy(yolanda).

playsAirGuitar(mia):- listens2music(mia).

playsAirGuitar(yolanda):- listens2music(yolanda).

© Patrick Blackburn, Johan Bos & Kristina Striegnitz

Head body/goal

There are five clauses in this knowledge base:two facts, and three rules.

The end of a clause is marked with a full stop.

There are three predicates in this knowledge base:happy, listens2music, and playsAirGuitar

fact

factrule

rule

rule

Page 164: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Knowledge Base 2happy(yolanda).

listens2music(mia).

listens2music(yolanda):- happy(yolanda).

playsAirGuitar(mia):- listens2music(mia).

playsAirGuitar(yolanda):- listens2music(yolanda).

© Patrick Blackburn, Johan Bos & Kristina Striegnitz

?- playsAirGuitar(mia).yes?- playsAirGuitar(yolanda).yes

Page 165: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Knowledge Base 3happy(vincent).

listens2music(butch).

playsAirGuitar(vincent):- listens2music(vincent), happy(vincent).

playsAirGuitar(butch):- happy(butch).

playsAirGuitar(butch):- listens2music(butch).

© Patrick Blackburn, Johan Bos & Kristina Striegnitz

?- playsAirGuitar(vincent). no?- playsAirGuitar(butch). yes

The comma “," expresses conjunction in Prolog

Page 166: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Expressing Disjunctionhappy(vincent).

listens2music(butch).

playsAirGuitar(vincent):- listens2music(vincent), happy(vincent).

playsAirGuitar(butch):- happy(butch).

playsAirGuitar(butch):- listens2music(butch).

© Patrick Blackburn, Johan Bos & Kristina Striegnitz

happy(vincent).listens2music(butch).playsAirGuitar(vincent):- listens2music(vincent), happy(vincent).playsAirGuitar(butch):- happy(butch); listens2music(butch).

Page 167: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Variables• A sequence of characters of upper-case letters, lower-

case letters, digits, or underscore, starting with either an uppercase letter or an underscore

• Examples:

X, Y, Variable, Vincent, _tag

© Patrick Blackburn, Johan Bos & Kristina Striegnitz

Page 168: CSC 506: Software Engineering and Knowledge Engineering Dr. Syed Noman Hasany.

Variableswoman(mia).woman(jody).woman(yolanda).

loves(vincent, mia).loves(marsellus, mia).loves(pumpkin, honey_bunny).loves(honey_bunny, pumpkin).

© Patrick Blackburn, Johan Bos & Kristina Striegnitz

?- woman(X).X=mia;X=jody;X=yolanda;no