Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,

Slides:



Advertisements
Similar presentations
Software Engineering Principles
Advertisements

PROCESS FRAMEWORK Lecture - 3. Topics covered PROCESS FRAMEWORK PROCESS MODELS DIFFERENCE.
Software Engineering Process
Chapter 2 The Software Process
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Chapter 2 Process Models
May 14, May 14, 2015May 14, 2015May 14, 2015 Azusa, CA Sheldon X. Liang Ph. D. Software Engineering in CS at APU Azusa Pacific University, Azusa,
Introduction to Software Engineering Lecture 4 André van der Hoek.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
CS487 Software Engineering Omar Aldawud
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Software Engineering: A Practitioner’s Approach, 6/e Chapter 2 Process: A Generic View copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Chapter 3 Software process Structure Chapter 3 Software process Structure Moonzoo Kim KAIST 1.
Software engineering Process models Pavel Agejkin.
Chapter : Software Process
Process: A Generic View
Process: A Generic View n A software process  is a roadmap to building high quality software products.  provides a framework for managing activities.
1 Software Engineering Muhammad Fahad Khan Software Engineering Muhammad Fahad Khan University Of Engineering.
UML - Development Process 1 Software Development Process Using UML (2)
Chapter 2 Software Process: A Generic View
Chapter 2 The process Process, Methods, and Tools
Chapter 2 The Process.
ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Topic 3 Partially based on lecture notes written by.
Ch 031 Software Engineering Principles. Ch 032 Outline Principles form the basis of methods, techniques, methodologies and tools Seven important principles.
Software Engineering Principles Ch. 31. Outline Principles form the basis of methods, techniques, methodologies and tools Seven important principles that.
Chapter 2 Process: A Generic View
1 Chapter 2 The Process. 2 Process  What is it?  Who does it?  Why is it important?  What are the steps?  What is the work product?  How to ensure.
Chapter 2 소프트웨어공학 Software Engineering 임현승 강원대학교
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Introduction to Software Engineering LECTURE 2 By Umm-e-Laila 1Compiled by: Umm-e-Laila.
COMP 354 Software Engineering I Section BB Summer 2009 Dr Greg Butler
Chapter 2 Process: A Generic View
Lecture 1 Introduction to Software Engineering
Software process improvement Framework for SPI SPI support groups, maturity and immaturity models Assessment and gap analysis Education and training Selection.
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Chapter 2 The Software Process Discussion of the Software Process: Process Framework,
Lecture Topics covered CMMI- - Continuous model -Staged model PROCESS PATTERNS- -Generic Process pattern elements.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Software Engineering - I
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Process: A Generic View
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
1 Software Engineering: A Practitioner’s Approach, 7/e Chapter 2 Process: A Generic View Software Engineering: A Practitioner’s Approach, 7/e Chapter 2.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
1 Chapter 2 A Generic View of Process Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
Overview of RUP Lunch and Learn. Overview of RUP © 2008 Cardinal Solutions Group 2 Welcome  Introductions  What is your experience with RUP  What is.
1 2.1 Software Engineering Software engineering is a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software;
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
PI2134 Software Engineering IT Telkom.  Layered technology  Software Process  Generic Process (by Pressman)  Fundamental activities (by Sommerville)
Software Engineering (CSI 321) Software Process: A Generic View 1.
Software Engineering CE 501 Prepared by : Ashwin Raiyani.
Ch. 31 Software Engineering Principles CSC 3910 Software Engineering Time: 1:30 to 2:20Meeting Days: MWFLocation: Oxendine 1256 Textbook: Fundamentals.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 2 Process: A Generic View Software Engineering: A Practitioner’s Approach, 6/e Chapter 2.
© Chinese University, CSE Dept. Software Engineering / Topic 3: Software Engineering Principles Your Name: _____________________ Computer Science.
1 Chapter 1 Software and Software Engineering Software Engineering: A Practitioner’s Approach, 7th edition by Roger S. Pressman.
Software Life Cycle “What happens in the ‘life’ of software”
Software Engineering (CSI 321)
Chapter 2 Process: A Generic View
Chapter 2 The Process.
For University Use Only
Chapter 2 The Process.
Software Engineering: A Practitioner’s Approach, 6/e Chapter 2 Process: A Generic View copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
Chapter 2 Process Models.
Chapter 2 Process Models
Presentation transcript:

Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques, methodologies and tools Seven important principles that may be used in all phases of software development Seven important principles that may be used in all phases of software development Apply to the software product as well as the development process Apply to the software product as well as the development process 1

Key principles Rigor and formality Rigor and formality Separation of concerns Separation of concerns Modularity Modularity Abstraction Abstraction Anticipation of change Anticipation of change Generality Generality Incrementally Incrementally 2

Rigor and formality Software engineering is a creative design activity, BUT It must be practiced systematically Software engineering is a creative design activity, BUT It must be practiced systematically Rigor is a necessary complement to creativity that increases our confidence in our developments Rigor is a necessary complement to creativity that increases our confidence in our developments Formality is rigor at the highest degree Formality is rigor at the highest degree 3

Examples: Rigor and formality Product: Product: – Formal-Mathematical analysis of program correctness – Formal-Mathematical analysis of program correctness – Rigorous-Systematic test data derivation – Rigorous-Systematic test data derivation Process: Process: – Rigorous- detailed documentation of each development step in waterfall model – Rigorous- detailed documentation of each development step in waterfall model – Formal- automated transformational process to derive program from formal specifications – Formal- automated transformational process to derive program from formal specifications 4

Separation of concerns To dominate complexity, separate the issues to concentrate on one at a time To dominate complexity, separate the issues to concentrate on one at a time – "Divide & conquer" – "Divide & conquer" Supports parallelization of efforts and separation of responsibilities Supports parallelization of efforts and separation of responsibilities 5

Examples: Process: Go through phases one after the other as in waterfall Model Process: Go through phases one after the other as in waterfall Model –Do separation of concerns by separating activities with respect to time –Do separation of concerns by separating activities with respect to time – Product: Keep different types of product requirements separate – Product: Keep different types of product requirements separate –Functionality discussed separately from the performance constraints –Functionality discussed separately from the performance constraints 6

Modularity A complex system may be divided into simpler pieces called modules A complex system may be divided into simpler pieces called modules A system that is composed of modules is called modular A system that is composed of modules is called modular Supports application of separation of concerns Supports application of separation of concerns – when dealing with a module we can ignore details of other modules – when dealing with a module we can ignore details of other modules 7

Modularity: Cohesion and coupling Each module should be highly cohesive Each module should be highly cohesive – module understandable as a meaningful unit – module understandable as a meaningful unit – Components of a module are closely related to – Components of a module are closely related to one another one another Modules should exhibit low coupling Modules should exhibit low coupling – modules have low interactions with others – modules have low interactions with others – understandable separately – understandable separately 8

An Example 9

Abstraction Identify the important aspects of a phenomenon and ignore its details Identify the important aspects of a phenomenon and ignore its details – Special case of separation of concerns – Special case of separation of concerns – The type of abstraction to apply depends on purpose – The type of abstraction to apply depends on purpose Example: the user interface of a watch (its buttons) abstracts from the watch's internals for the purpose of setting time; other abstractions needed to support repair Example: the user interface of a watch (its buttons) abstracts from the watch's internals for the purpose of setting time; other abstractions needed to support repair 10

Anticipation of change Ability to support software evolution requires anticipating Ability to support software evolution requires anticipating potential future changes potential future changes –It is the basis for software evolvability –It is the basis for software evolvability 11

Generality While solving a problem, try to discover if it is an instance of a more general problem whose solution can While solving a problem, try to discover if it is an instance of a more general problem whose solution can be reused in other cases be reused in other cases Sometimes a general problem is easier to solve than a special case Sometimes a general problem is easier to solve than a special case –Carefully balance generality against performance and cost –Carefully balance generality against performance and cost 12

Incrementality Process proceeds in a stepwise fashion (increments) Process proceeds in a stepwise fashion (increments) Examples (process) Examples (process) – deliver subsets of a system early to get early feedback from expected users, then add new features incrementally – deliver subsets of a system early to get early feedback from expected users, then add new features incrementally – deal first with functionality, then turn to performance – deal first with functionality, then turn to performance 13

14 Process: A Generic View

15 A Layered Technology Software Engineering a “quality” focus process model methods tools

16 A Process Framework Process framework Framework activities work tasks work products milestones & deliverables QA checkpoints Umbrella Activities

17 Framework Activities Communication Communication Planning Planning Modeling Modeling Analysis of requirements Analysis of requirements Design Design Construction Construction Code generation Code generation Testing Testing Deployment Deployment

18 Umbrella Activities Software project management Software project management Formal technical reviews Formal technical reviews Software quality assurance Software quality assurance Software configuration management Software configuration management Work product preparation and production Work product preparation and production Reusability management Reusability management Measurement Measurement Risk management Risk management

19 The Process Model: Adaptability the framework activities will always be applied on every project... BUT the framework activities will always be applied on every project... BUT the tasks (and degree of rigor) for each activity will vary based on: the tasks (and degree of rigor) for each activity will vary based on: the type of project the type of project characteristics of the project characteristics of the project common sense judgment; concurrence of the project team common sense judgment; concurrence of the project team

20 The CMMI Capability Maturity Model Integration (CMMI) – developed by The Software Engineering Institute (SEI) Capability Maturity Model Integration (CMMI) – developed by The Software Engineering Institute (SEI) The CMMI defines each process area in terms of “specific goals” and the “specific practices” required to achieve these goals. The CMMI defines each process area in terms of “specific goals” and the “specific practices” required to achieve these goals. Specific goals establish the characteristics that must exist if the activities implied by a process area are to be effective. Specific goals establish the characteristics that must exist if the activities implied by a process area are to be effective. Specific practices refine a goal into a set of process- related activities. Specific practices refine a goal into a set of process- related activities.

21 The CMMI Level 0: Incomplete - Process goals not satisfied Level 0: Incomplete - Process goals not satisfied Level 1: Performed - Process goals satisfied Level 1: Performed - Process goals satisfied Level 2: Managed - Process areas conforms to organizationally defined policy, resources are available, work tasks are monitored Level 2: Managed - Process areas conforms to organizationally defined policy, resources are available, work tasks are monitored Level 3: Defined - Tailored according to the organization’s standard processes Level 3: Defined - Tailored according to the organization’s standard processes Level 4: Quantitatively managed - Quantitative assessment Level 4: Quantitatively managed - Quantitative assessment Level 5: Optimized - Processes are optimized Level 5: Optimized - Processes are optimized

22 Process Patterns Process patterns define a set of activities, actions, work tasks, work products and/or related behaviors Process patterns define a set of activities, actions, work tasks, work products and/or related behaviors A template is used to define a pattern A template is used to define a pattern Typical examples: Typical examples: Customer communication (a process activity) Customer communication (a process activity) Analysis (an action) Analysis (an action) Requirements gathering (a process task) Requirements gathering (a process task) Reviewing a work product (a process task) Reviewing a work product (a process task) Design model (a work product) Design model (a work product)

23 Process Assessment The process should be assessed to ensure that it meets a set of basic process criteria that have been shown to be essential for a successful software engineering The process should be assessed to ensure that it meets a set of basic process criteria that have been shown to be essential for a successful software engineering. Many different assessment options are available: Many different assessment options are available: SCAMPI SCAMPI CBA IPI CBA IPI SPICE SPICE ISO 9001:2000 ISO 9001:2000

24 Assessment and Improvement

25 Personal Software Process (PSP) Recommends five framework activities: Recommends five framework activities: Planning Planning High-level design High-level design High-level design review High-level design review Development Development Postmortem Postmortem stresses the need for each software engineer to identify errors early and as important, to understand the types of errors stresses the need for each software engineer to identify errors early and as important, to understand the types of errors

26 Team Software Process (TSP) Each project is “launched” using a “script” that defines the tasks to be accomplished Each project is “launched” using a “script” that defines the tasks to be accomplished Teams are self-directed Teams are self-directed Measurement is encouraged Measurement is encouraged Measures are analyzed with the intent of improving the team process Measures are analyzed with the intent of improving the team process

27 The Primary Goal of Any Software Process: High Quality Remember: High quality = project timeliness Why? Less rework!