Software Engineering Principles

Slides:



Advertisements
Similar presentations
Constructing a Task List ITSW 1410 Presentation Media Software Instructor: Glenda H. Easter.
Advertisements

Copyright © 2008 Cengage Learning Understanding Generalist Practice, 5e, Kirst-Ashman/Hull 316.
Software Design Fundamentals
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
1 Software Processes A Software process is a set of activities and associated results which lead to the production of a software product. Activities Common.
Object-Oriented Software Development CS 3331 Fall 2009.
Software Process Model
The software process A software process is a set of activities and associated results which lead to the production of a software product. This may involve.
ISNE101 Dr. Ken Cosh. Recap  We’ve been talking about Software…  Application vs System Software  Programming Languages  Vs Natural Languages  Syntax,
Introduction to Software Engineering Lecture 4 André van der Hoek.
© Janice Regan, CMPT 102, Sept CMPT 102 Introduction to Scientific Computer Programming The software development method algorithms.
Ch3: Software Engineering Principles 1 What is a principle?  Definition:  Goals of accounting principles:  Goals of software engineering principles?
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Process Models.
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
9 1 Chapter 9 Database Design Database Systems: Design, Implementation, and Management, Seventh Edition, Rob and Coronel.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Chapter 3 Software Processes.
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
OO Analysis and Design CMPS OOA/OOD Cursory explanation of OOP emphasizes ▫ Syntax  classes, inheritance, message passing, virtual, static Most.
UML - Development Process 1 Software Development Process Using UML (2)
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
CLEANROOM SOFTWARE ENGINEERING.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Topic 3 Partially based on lecture notes written by.
RUP Implementation and Testing
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.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Software Processes lecture 8. Topics covered Software process models Process iteration Process activities The Rational Unified Process Computer-aided.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 3 Slide 1 Software Processes l Coherent sets of activities for specifying, designing,
COMP 354 Software Engineering I Section BB Summer 2009 Dr Greg Butler
University of Palestine software engineering department Testing of Software Systems Testing throughout the software life cycle instructor: Tasneem Darwish.
SOFTWARE DESIGN.
Overview of Formal Methods. Topics Introduction and terminology FM and Software Engineering Applications of FM Propositional and Predicate Logic Program.
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Notes of Rational Related cyt. 2 Outline 3 Capturing business requirements using use cases Practical principles  Find the right boundaries for your.
UHD::3320::CH121 DESIGN PHASE Chapter 12. UHD::3320::CH122 Design Phase Two Aspects –Actions which operate on data –Data on which actions operate Two.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
An Introduction to Software Engineering
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Data Structures Using C++ 2E
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
Topic 4 - Database Design Unit 1 – Database Analysis and Design Advanced Higher Information Systems St Kentigern’s Academy.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Lectures 2 & 3: Software Process Models Neelam Gupta.
Design CS 470 – Software Engineering I Sheldon X. Liang, PH.D.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
Ch. 31 Software Engineering Principles CSC 3910 Software Engineering Time: 1:30 to 2:20Meeting Days: MWFLocation: Oxendine 1256 Textbook: Fundamentals.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
Basic Characteristics of Object-Oriented Systems
© Chinese University, CSE Dept. Software Engineering / Topic 3: Software Engineering Principles Your Name: _____________________ Computer Science.
DESIGN PROCESS AND CONCEPTS. Design process s/w design is an iterative process through which requirements are translated into a “blueprint” for constructing.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
Advanced Computer Systems
The Development Process of Web Applications
CSCI-235 Micro-Computer Applications
Software Processes (a)
Software Processes.
Chapter 1 Introduction(1.1)
Presentation transcript:

Software Engineering Principles Ch. 3

Outline Principles form the basis of methods, techniques, methodologies and tools Seven important principles that may be used in all phases of software development Modularity is the cornerstone principle supporting software design Case studies Ch. 3

Application of principles Principles apply to process and product Principles become practice through methods and techniques often methods and techniques are packaged in a methodology methodologies can be enforced by tools Ch. 3

A visual representation Ch. 3

Key principles Rigor and formality Separation of concerns Modularity Abstraction Anticipation of change Generality Incrementality Ch. 3

Rigor and formality 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 Formality is rigor at the highest degree software process driven and evaluated by mathematical laws Ch. 3

Examples: product Mathematical (formal) analysis of program correctness Systematic (rigorous) test data derivation Ch. 3

Example: process Rigorous documentation of development steps helps project management and assessment of timeliness Ch. 3

Separation of concerns To dominate complexity, separate the issues to concentrate on one at a time "Divide & conquer" (divide et impera) Supports parallelization of efforts and separation of responsibilities Ch. 3

Example: process Go through phases one after the other (as in waterfall) Does separation of concerns by separating activities with respect to time Ch. 3

Example: product Keep product requirements separate functionality performance user interface and usability Ch. 3

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

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

A visual representation high coupling low coupling Ch. 3

Abstraction Identify the important aspects of a phenomenon and ignore its details Special case of separation of concerns 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 Ch. 3

Abstraction ignores details Example: equations describing complex circuit (e.g., amplifier) allows designer to reason about signal amplification Equations may approximate description, ignoring details that yield negligible effects (e.g., connectors assumed to be ideal) Ch. 3

Abstraction yields models For example, when requirements are analyzed we produce a model of the proposed application The model can be a formal or semiformal description It is then possible to reason about the system by reasoning about the model Ch. 3

An example Programming language semantics described through an abstract machine that ignores details of the real machines used for implementation abstraction ignores details such as precision of number representation or addressing mechanisms Ch. 3

Abstraction in process When we do cost estimation we only take some key factors into account We apply similarity with previous systems, ignoring detail differences Ch. 3

Anticipation of change Ability to support software evolution requires anticipating potential future changes It is the basis for software evolvability Example: set up a configuration management environment for the project (as we will discuss) Ch. 3

Generality 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 Carefully balance generality against performance and cost Sometimes a general problem is easier to solve than a special case Ch. 3

Incrementality Process proceeds in a stepwise fashion (increments) Examples (process) 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 deliver a first prototype and then incrementally add effort to turn prototype into product Ch. 3

Case study: compiler Compiler construction is an area where systematic (formal) design methods have been developed e.g., BNF for formal description of language syntax Ch. 3

Separation of concerns example When designing optimal register allocation algorithms (runtime efficiency) no need to worry about runtime diagnostic messages (user friendliness) Ch. 3

Modularity Compilation process decomposed into phases Lexical analysis Syntax analysis (parsing) Code generation Phases can be associated with modules Ch. 3

Representation of modular structure boxes represent modules directed lines represent interfaces Ch. 3

Module decomposition may be iterated further modularization of code-generation module Ch. 3

Abstraction Applied in many cases abstract syntax to neglect syntactic details such as begin…end vs. {…} to bracket statement sequences intermediate machine code (e.g., Java Bytecode) for code portability Ch. 3

Anticipation of change Consider possible changes of source language (due to standardization committees) target processor I/O devices Ch. 3

Generality Parameterize with respect to target machine (by defining intermediate code) Develop compiler generating tools (compiler compilers) instead of just one compiler Ch. 3

Incrementality Incremental development deliver first a kernel version for a subset of the source language, then increasingly larger subsets deliver compiler with little or no diagnostics/optimizations, then add diagnostics/optimizations Ch. 3

Case study (system engineering): elevator system In many cases, the "software engineering" phase starts after understanding and analyzing the "systems engineering” issues The elevator case study illustrates the point Ch. 3

Rigor&formality (1) Quite relevant: it is a safety critical system Define requirements must be able to carry up to 400 Kg. (safety alarm and no operation if overloaded) emergency brakes must be able to stop elevator within 1 m. and 2 sec. in case of cable failures Later, verify their fulfillment Ch. 3

Separation of concerns Try to separate safety performance usability (e.g, button illumination) cost although some are strongly related cost reduction by using cheap material can make solution unsafe Ch. 3

A modular structure buttons at floor i Control apparatus B3 Elevator Ch. 3

Module decomposition may be iterated Ch. 3

Abstraction The modular view we provided does not specify the behavior of the mechanical and electrical components they are abstracted away Ch. 3

Anticipation of change, generality Make the project parametric wrt the number of elevators (and floor buttons) Ch. 3