Date post: | 31-Oct-2014 |
Category: |
Education |
Upload: | ashok-mohanty |
View: | 14 times |
Download: | 4 times |
Software Software EngineeringEngineeringBy:
Ashok Mohanty
Reader, Dept. of Mechanical Engg.
College of Engg. & technology, BhubaneswarCollege of Engg. & technology, Bhubaneswar
1
This ppt is based on:1.Software Engineering, Jibitesh Mishra & Ashok Mohanty, Pearson
Education
2.Software Engineering, Pressman, McGrawHill
3.Guide to Software Engineering Body of Knowledge (SWEBOK),IEEE Computer Society’s Professional Practices Committee, 2004
©Ashok Mohanty,
Topics to be discussed
• Characteristics of commercial software• Emergence of Software Engineering • Core aspects of software engineering
• Software processes• Software Development Life Cycle Models
• Types of software requirements• Methods and Activities in Requirement Engineering • Structure of Software Requirement Specification (SRS)
• Approaches to Software Engineering• Function Oriented (FO) approach• Object Oriented (OO) approach
2
©Ashok Mohanty,
Software is a general term for Programs & Data
Characteristics of commercial Software• Developed for some clients under formal contracts• Software is designed based on some specification• Developed in teams and not by individuals• Includes detailed documentation• Meant for users• Requires some modification from time to time.• Requires some modification from time to time.• Does not wear out but has a lifespan, after which it becomes
obsolete.• Software failure may create catastrophe. So software is designed
for utmost reliability.• A computer system is prone to misuse or sabotage. So software
is designed to be temper-proof
3
©Ashok Mohanty,
Software DevelopmentDesign and development of software requires great amount ofeffort, time and money
Computer programming is just one part of the process.
It requires a systematic approach that includes• Comprehensive methods• Tools for efficient execution of methods• Procedures for quality assurance• Coordination and control
4
• Coordination and controlIt also involves people and their management.
All these engineering aspects relating to software developmenthave combined together to evolve as a disciplinecalled Software Engineering.
Manufactured product � Industrial EngineeringSoftware product � Software Engineering ©Ashok Mohanty,
Software CrisisDuring 1970s, large numbers of software projects failed mostlydue to human factors. This problem was referred to as the“software crisis”.
Study by Comptroller General of the United States (1979): 2% of software worked on delivery3% worked only after some corrections45% delivered, but never successfully used20% used, only after major modification/ reworked20% used, only after major modification/ reworked30% were paid for, never completed/ delivered
Software Crisis led to Software Engineering
Software Engineering• Systematic approach to software development• Application of engineering principles• Provides a set of methods, tools, and procedures• Ensures consistent software quality
5
©Ashok Mohanty,
Core Aspects of SE
The subject ‘Software Engineering’ is
inter-disciplinary in nature.
Software development requires
active involvement and participation of software
users and developers.users and developers.It requires domain knowledge of various fields including
computer science and area for which software being made.
Product, Process, People, and Project are the four core aspects of software development.
6
©Ashok Mohanty,
SE includes 10 Knowledge Areas
1. Software requirements2. Software design3. Software construction4. Software testing5. Software maintenance
6. Software configuration mgmt.7. Software engg. Management8. Software engg. process9. Software engg. tools &methods 10. Software quality
7
SE knowledge derived from 8 subject areas
1. Computer Engineering
2. Computer Science
3. Management
4. Mathematics
5. Project Management
6. Quality Management
7. Software Ergonomics
8. Systems Engineering
©Ashok Mohanty,
Software Processrefers to methods of developing software
It has four major component processes1. Software Development Process2. Software Project Management Process3. SoftwareConfigurationManagementProcess3. SoftwareConfigurationManagementProcess4. Software Process Management Process
Software Development ProcessIt is a structured set of activities that transformthe userrequirements into a quality software product.
8
©Ashok Mohanty,
Sequential Process Models Iterative Process Models
Process Model
Sequential Process Model Iterative Process Model
Sequential Process Models Iterative Process Models
Software is developed in asequence of stagesStages are:
Analysis, Design,Coding, Testing, etc.
A prototype is developed using thesequential process.After one part is completed, allactivities are repeated fordeveloping the next part.
9
©Ashok Mohanty,
Sequential Process Models
The Waterfall modelTraditional sequential process modelSoftware development takes place in well defined phases
1. System Engineering2. Requirement Analysis3. Design
4. Implementation or Coding5. Verification or testing6. Maintenance
TheV-modelExtension of Waterfall modelStipulates various kinds of testing, like unit (module) testing andintegration testing.Information from earlier phases also used for testing
10
3. Design 6. Maintenance
©Ashok Mohanty,
Iterative Process Models
Prototyping ModelIt is of two types
Throw-away prototypingUsed for checking software
requirement specification
Evolutionary prototypingInitial working model of software basedon outline specification. This prototypeis evaluated and refined in number ofstagesto getfinal product.stagesto getfinal product.
Spiral model: Each cycle consists of four step
1. Planning 2. Risk Analysis 3. Engineering 4. ValidationSpiral model emphasizes on risk management.
Iterative Waterfall Model: It overcomes the limitations of
Waterfall Model by adding an “iterative” loop. After end of each phase, itsprevious phases are revisited to modify requirements and to remove errors.
11
©Ashok Mohanty,
Software is developed to perform certainFunctions. Functions is stipulated by Software requirements
(It provides the basis for software development.)
Requirement Engineering (RE)is a systematic approach for determining
Software Requirement Specifications (SRS)
6 types of software requirement specifications• Functional requirement• Design requirement• Implementation requirement• Interface requirement• Performance requirement• Physical requirement.
12
©Ashok Mohanty,
Requirement Engineering Activities1. Inception Understanding the situation that have initiated
the software projectIdentification of stakeholders
2. Elicitation Seeking information about the software, system and business (through interview,
questionnaire, record review, observation, etc). Provides initial user requirements
13
Provides initial user requirements
3. Elaboration Developing a refined technical model ofsoftware functions, features & constraints
4. Negotiation Making tradeoff & fixing priorities
5. Validation Requirement specification assessed forcorrectness & quality
©Ashok Mohanty,
Typical Structure of SRS Document
1. Introduction
1.1 Name & purpose of software; 1.2 Scope, benefits, objectives, and goals; 1.3 Typesof audience/ users
2. Overall Description
2.1 Product Perspective: Context and origin (how initiated?); Block diagram of overallsystem to which software relates; 2.2 Product Features: Major features and significantfunctions; Organization of functions/ modules; 2.3 Category/ types of users; 2.4Performance Requirements; 2.5 Operating Environment: Hardware platform, operatingsystem, database system, etc.; 2.6 Design and Implementation Constraints; 2.7 Security,safety and privacy Requirements; 2.8 User Documentation; 2.9 Assumptions
©Ashok Mohanty, <[email protected]> 15
3. Software Features: (Detailed software features)
3.1 Name of feature; 3.2 Description of feature & its priority; 3.3 Sequences of useractions & system responses; 3.4 Functional Requirements
4. External Interface Requirements
4.1 User Interfaces; 4.2 Hardware Interfaces; 4.3 Software Interfaces; 4.4Communications Interfaces
5. Other Non-functional Requirements
5.1 Performance Requirements; 5.2 Safety and Security Requirements; 5.3 Softwarequality attributes; 5.4 Other requirements if any
6. Appendix:
6.1 Glossary of terms; 6.2 List of issues; 6.3 Figures and diagrams
Software development process Software development process
Comprises of following activities.
System Analysis or Requirement Analysis
Software Design
Implementation or CodingImplementation or Coding
Testing or Inspection
Maintenance or Adaptation
Activities are performed according to a plan.
16
©Ashok Mohanty,
Approaches to Software EngineeringSystem for which software is to be developed is successively broken down (decomposed) into parts and arranged in to hierarchy.
Decomposition is a convenient way of handling any complex problem. complex problem.
TWO approaches to Software Engineering
1. Function-Oriented (FO) Approach 2. Object-Oriented (OO) Approach
Similarity: System factored into parts in both approaches
Difference: lies in the basis on which the system is factored17
Function Oriented vs Object Orient
FO approach focus is on functions or processesFunctions � Sub-functions � more Sub-functions
OO approach focus is on objects or entities
18
OO approach focus is on objects or entitiesObject � Parts (child-objects) � more parts (child-objects)
FO emphasis on ‘what system does (verb)OO emphasis on ‘what system consists of (noun)’.
©Ashok Mohanty,
Example of academic institution
Functions Entities that do the functions
Impart teaching on theory Teachers, Classroom, Syllabus
Impart teaching on practical Teachers, Laboratories, Syllabus
Conduct examination Examination section, Classroom,
19
FO approach concentrates on functions. OO approach focuses on objects that do the functions.
Conduct examination Examination section, Classroom, Question-setter, Invigilators, etc.
Evaluate students’ performance
Examination section, Examiners, etc.
©Ashok Mohanty,
Function Oriented ApproachFO approach is traditional. It supports structuredprogrammingA structured programconsists of functions (modules) organized in ahierarchy.
Higher level function invokes lower level function.Data is either local or global
20
Global Data
Calls
Function 1
Function 2
Function 3
Operates on
Local Data
Local Data
Local Data
Calls
Operates on©Ashok Mohanty,
FO methodology is also called‘Structured System Analysis and Design (SSAD)’.
Structured analysis is done to determine:
– Functions to be performed– Data to be manipulated– Constraints on functions and data
Functional specification specifies ‘what the software is expected to
21
Functional specification specifies ‘what the software is expected todo?’ It provides the basis for design of software.
Structured Design is done to develop design
specification.Design specification is the blue print for constructing thesoftware.Design specification is translated into a program code.
©Ashok Mohanty,
Tools used in SSADTools Purpose
Data Flow Diagram (DFD)
Process mapping of system
Data Dictionary List of different data items used insystem
ER Diagram Data modelling
Process Specification Depictsproceduresusedin system
22
Process Specification Tools
Depictsproceduresusedin system
State Transition Diagram (ST Diagram)
Depicts chronological events andcorresponding systemstates
Structure chart Depicts modular design of a program
Structured English/ Pseudocode
Depicts logic of program
Structured Design
Structured Analysis
Environmental Model
• Statement of Purpose• Context Diagram• Event List
Behavioural Model
Implementation Model
•Structure chart•Interface design
23
• Data Flow Diagram• Data Dictionary • ER diagram• Process specification• State Transition Diagram
•Interface design•Data design•Module specification
Function Oriented Approach to Software Development©Ashok Mohanty,
Overview of Object Oriented Approach
World is made up of entities or objects. So analysis and design a system in terms of objects is closer to the real world modelling.
The object oriented approach uses object oriented programming concepts.
24
concepts.
Object consists of data structures combined with relevant functions (method)
An object is invoked by its method. Invocation of a method may change either the properties of the object or invoke some other object.
©Ashok Mohanty,
Object 1
MethodsData
Object 3
Methods
Object 4
Methods
Object 2
MethodsData
All arrows represent Invokes
MethodsData
MethodsData
Messages passing within Objects
In OO approach, system functionality is expressed in terms ofoperations or services associated with each object.
Object Oriented Analysis & Design (OOAD)The OOAD comprises of
Object Oriented Analysis (OOA)Object Oriented Design (OOD)
Documentation Tool• Unified Modelling Language (UML)’ is a
documentation tool used in OOAD methodology documentation tool used in OOAD methodology • UML has evolved from the work of Grady Booch,
James Rumbaugh, Ivar Jacobsen, and others at Rational Corporation in 1997.
• At present, the UML has almost become an industry standard documentation tool.
• UML comprises of number of diagrams ©Ashok Mohanty,
Steps of OOA•Define User Viewof Requirements•Identify Analysis Objects and their Characteristics•Determine Object Dynamics•Determine Object Interactions and relationship
Diagrams used in OOA.Use case diagram Describes how users interact with processes
Class diagram It is used to refine the use case diagram and define a
27
Class diagram It is used to refine the use case diagram and define adetailed design of the system
State diagram Represents different states that objects in the systemundergo during their life cycle
Activity diagram Describes the process flow of the system
Sequence diagram Represents interaction between objects
Collaboration diagram Groups together interactions between objects.
Fundamental questions in OOD•What objects do we need?•What behaviours are required?•How do we distribute behaviour over the set of objects?
Classes, Attributes, Methods and Associations
Static Modelling’
28
Designed for implementation in OOD
Identified in OOA
Objects also performsome action. Defining thebehaviour (methods) of objects is called the‘Dynamic Modelling’.
©Ashok Mohanty,
Name of diagram PurposeComponentdiagram
Represents high-level parts that make up thesystem.
Deployment Capturesconfigurationof runtime elements
Diagrams in OOD
29
Deploymentdiagram
Capturesconfigurationof runtime elementsof application
Package Holds model elements such as classes, statemachines and use cases.
Subsystem Represents a portion of a systemthat can beimplemented as a distinct component
©Ashok Mohanty,
The OOAD comprises ofObject Oriented Analysis (OOA)Object Oriented Design (OOD)
But there is overlapping of both these phasese.g, Class diagram and Object diagram are included inOOA. But these are also useful in OOD..
30
OO CodingOO DesignOO Analysis
©Ashok Mohanty,
SSAD vs OOADSame basic steps
– Understand the problem– Specify requirements (WHAT)– Design the solution (HOW)– Write the code– Test and deploy
Similar types of tasks
31
Similar types of tasks – Elicitation of requirements – Documentation of requirements– Identification of software modules– Design of software modules– Acceptance tests
Similar project management issues e.g. Planning, Estimating, Monitoring & Control, Communicating
How OO Approach is different?• Different View of the System• Integration of Data and Method• Different Documentation Tools• Real World Focus• Approach to Project Life Cycle• Approachto ProgramCoding
32
• Approachto ProgramCoding• Approach to Component Reuse• Approach to Software Maintenance
FO methodology is more suitable for data intensive softwareprojects, whereas OO methodology is more suitable forsoftware project that requires complex algorithm/ processinglogic.
©Ashok Mohanty,
References
1. Software Engineering,Jibitesh Mishra & Ashok Mohanty,Pearson Education
2. Software Engineering,,
33
2. Software Engineering,Pressman,McGrawHill
3. Guide to Software Engineering Body of Knowledge,IEEE Computer Society’s Professional Practices Committee, 2004
©Ashok Mohanty,