Software Engineering Principles Ch. 31. Outline Principles form the basis of methods, techniques, methodologies and tools Seven important principles that.

Slides:



Advertisements
Similar presentations
Software Engineering Principles
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Object-Oriented Software Development CS 3331 Fall 2009.
10 Software Engineering Foundations of Computer Science ã Cengage Learning.
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.
Chapter 2 – Software Processes
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Design Concepts and Principles
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.
The Role of Software Engineering Brief overview of relationship of SE to managing DSD risks 1.
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
Ch3: Software Engineering Principles 1 What is a principle?  Definition:  Goals of accounting principles:  Goals of software engineering principles?
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
9 1 Chapter 9 Database Design Database Systems: Design, Implementation, and Management, Seventh Edition, Rob and Coronel.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Chapter 3 Software Processes.
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
Chapter 2: Approaches to System Development
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
CLEANROOM SOFTWARE ENGINEERING.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
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.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 A Discipline of Software Design.
Ch 031 Software Engineering Principles. Ch 032 Outline Principles form the basis of methods, techniques, methodologies and tools Seven important principles.
CSE 303 – Software Design and Architecture
©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.
Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering.
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
©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
Software Engineering Management Lecture 1 The Software Process.
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,
Software Design Deriving a solution which satisfies software requirements.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Design Concepts and Principles Instructor: Dr. Jerry Gao.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
Review of Software Process Models Review Class 1 Software Process Models CEN 4021 Class 2 – 01/12.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Systems Analysis and Design in a Changing World, Fourth Edition
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
Software Design Process
Chapter 2 – Software Processes Lecture 1 Chapter 2 Software Processes1.
© 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.
CSE 303 – Software Design and Architecture
Review of Parnas’ Criteria for Decomposing Systems into Modules Zheng Wang, Yuan Zhang Michigan State University 04/19/2002.
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Lectures 2 & 3: Software Process Models Neelam Gupta.
Ch. 31 Software Engineering Principles CSC 3910 Software Engineering Time: 1:30 to 2:20Meeting Days: MWFLocation: Oxendine 1256 Textbook: Fundamentals.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
© Chinese University, CSE Dept. Software Engineering / Topic 3: Software Engineering Principles Your Name: _____________________ Computer Science.
Software Design and Development Development Methodoligies Computing Science.
The Software Lifecycle Stuart Faulk. Definition Software Life Cycle: evolution of a software development effort from concept to retirement Life Cycle.
Advanced Computer Systems
The Development Process of Web Applications
The Systems Engineering Context
Software Processes (a)
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
Presentation transcript:

Software Engineering Principles Ch. 31

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. 32

Software Engineering Principles Some important & general principles for developing successful sw will be discussed Deal w/ both the process & the product Either the process or the product to the exclusion of other? right process right product Ch. 33 yields help choosing

Software Engineering Principles Relationship btw principles, methods, and techniques –principle: general&abstract statements describing desirable properties –method: general guidelines governing execution of some activity Rigorous, systematic, and disciplined approaches –technique: technical, mechanical, and restricted applciations methods + techniques  methodology –methodology: a certain approach for solving a problem by preselected methods & techniques to be used often methods and techniques are packaged in a methodology –tools: support the application of techniques, methods, and methodologies Ch. 34

A visual representation Ch. 35 Qualities: reliability & evolvability  creates basic need for sw eng. affects our discussion in principles, methods, and techniques because of non-expert users or a critical application

Key principles of sw development Rigor and formality Separation of concerns Modularity Abstraction Anticipation of change Generality Incrementality Not an exhaustive list! They are all related. Ch. 36

Rigor and formality SW development is a creative activity A creative process: be neither precise nor accurate, follow the inspiration of the moment in unstructured manner Rigor: precision & exactness  a necessary complement to creativity in engineering By a rigorous approach –repeatedly produce reliable products –control their costs –increase confidence in reliability Rigor does not need to constrain creativity, rather enhance it –Can only be confident of a creative process after a rigorous assessment of results Ch. 37

Rigor and formality Paradox: rigor is an intuitive principle and cannot be defined rigorously –Various degrees of rigor can be achieved –The highest degree is formality Formality: a stronger requirement  drive & evaluate by mathematical laws –implies rigor, but not vice versa! There is no need to be always formal during design, but the engineer must know how & when to be formal For example; –scheduler of a real-time OS –security component of an e-commerce system Ch. 38 need formal description of fcns & formal approach for assessment

Rigor and formality Definition by natural language must be done rigorously Also can be done by a language of logical statements formally ! Programming  a formal approach ! Programs  formal objects Ch. 39

Examples Product –Mathematical (formal) analysis of program correctness –Systematic (rigorous) test data derivation Process –Rigorous documentation of development steps helps project management and assessment of timeliness Ch. 310

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 –e.g., divide work for different people w/ different skills (managerial & technical) Ch. 311 Product featuresDevelopment processEconomic & financial matters Offered functionsDevelopment environmentCost of the product Expected reliabilityOrganization of temasInitial budget Efficiency in space&time SchedulingForeseen completion time Relationship w/ environment Design strategies Error recovery mechanisms

Separation of concerns Concerns are interrelated though –e.g., design choice of swapping data to disk increases cost, changes recovery mechanism Strategy: isolate issues not closely related w/ only relevant details of relates issues Ways to separate concerns (in terms of) –Time allows precise planning of activities underlying motivation of the sw life cycle models –Quality e.g., a priori correctness of a sw and then restructure to improve performance –Views e.g., when applying reqs, concentrate separately on flow of data & flow of control synchronizing activities –Parts / size a need to dominate sw production complexity Ch. 312

Separation of concerns Inherent disadvantage of separtion of concerns is to miss global optimization that would be possible by teackling concerns together If two issues are intrinsically intertwined –make an overall design –then effectively separate issues –e.g., multiple on-line transactions accessing a database (correctness & performance  intertwined) first design: lock database for each transaction  what if one transaction takes too long alternative design: divide each transaction into parts –transactions are performed truly  issue of correctness –each atomic transaction is fast enough  issue of performance –! Separated concerns Ch. 313

Example Product –Keep product requirements separate functionality performance user interface and usability Process –Go through phases one after the other (as in waterfall) Does separation of concerns by separating activities with respect to time Ch. 314

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 Composition  bottom-up desing Decomposition  top-down approach Ch. 315

Modularity Main benefits of modularity 1.Capability of decomposing a complex system into simpler pieces 2.Capability of composing a complex system from existing modules 3.Capability of understanding the system in terms of its pieces 4.Capability of modifying a system by modifying only a small number of its pieces Ch. 316

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. 317

A visual representation Ch. 318 high couplinglow coupling

Abstraction Identify the important aspects of a phenomenon and ignore its details Special case of separation of concerns –e.g., 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 The type of abstraction to apply depends on purpose Ch. 319

Abstraction ignores details For example; –equations describing complex circuit (e.g., amplifier) allows designer to reason about signal amplification Further abstraction –equations may approximate description, ignoring details that yield negligible effects (e.g., connectors assumed to be ideal) Ch. 320

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. 321

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. 322

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. 323

Anticipation of change Distinguishes sw th most from other idustrial productions –A sw app is developed w/o its requirements are not entirely understood Ability to support software evolution requires anticipating potential future changes It is the basis for software evolvability For example; –set up a configuration management environment for the project (as we will discuss) Ch. 324

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 –Merge two sorted lists w/ no identical values –If you apply generalization: sort also lists containing identical values  higher reusability Carefully balance generality against performance and cost Sometimes a general problem is easier to solve than a special case –Off-the-shelf products –Automobiles & textile industry Next step: application servers Ch. 325

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. 326

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. 327

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

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

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

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

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. 332

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

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

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. 335

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. 336

Rigor & formality 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. 337

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. 338

A modular structure Ch. 339 Elevator Control apparatus B3 B2 B1 buttons at floor i

Module decomposition may be iterated Ch. 340

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

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

Concluding remarks We analyzed seven principles They are cornerstones of sw design –However, they are abstract Principles are important because –As technology evolves methods and techniques will evolve, less rapidly than tools –Principles will remain stable constituting the foundation upon which all the rest may be built Ch. 343