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

Slides:



Advertisements
Similar presentations
Software Engineering Principles
Advertisements

Software Design Fundamentals
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.
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?
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Architecture Quality. Outline Importance of assessing software architecture Better predict the quality of the system to be built How to improve.
Mastering OOA/OOD with UML. Contents Introduction Requirements Overview OOAOOD.
Chapter 3 Software Processes.
The Software Development Life Cycle: An Overview
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
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.
An Introduction to Programming and Object-Oriented Design Using Java By Jaime Niño and Fred Hosch Slides by Darwin Baines and Robert Burton.
Software Engineering Principles Ch. 31. Outline Principles form the basis of methods, techniques, methodologies and tools Seven important principles that.
المحاضرة الثالثة. Software Requirements Topics covered Functional and non-functional requirements User requirements System requirements Interface specification.
An Introduction to Software Architecture
Chapter 1 Introduction Dr. Frank Lee. 1.1 Why Study Compiler? To write more efficient code in a high-level language To provide solid foundation in parsing.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
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
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.
Lecture 7: Requirements Engineering
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
An Introduction to Software Engineering. Communication Systems.
Unit-1 Introduction Prepared by: Prof. Harish I Rathod
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.
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
1. 2 Preface In the time since the 1986 edition of this book, the world of compiler design has changed significantly 3.
1 Compiler Design (40-414)  Main Text Book: Compilers: Principles, Techniques & Tools, 2 nd ed., Aho, Lam, Sethi, and Ullman, 2007  Evaluation:  Midterm.
Introduction to Compiling
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Compiler Introduction 1 Kavita Patel. Outlines 2  1.1 What Do Compilers Do?  1.2 The Structure of a Compiler  1.3 Compilation Process  1.4 Phases.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Topic 4 - Database Design Unit 1 – Database Analysis and Design Advanced Higher Information Systems St Kentigern’s Academy.
Lectures 2 & 3: Software Process Models Neelam Gupta.
©SoftMoore ConsultingSlide 1 Structure of Compilers.
1 Asstt. Prof Navjot Kaur Computer Dept PRESENTED BY.
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.
Presented by : A best website designer company. Chapter 1 Introduction Prof Chung. 1.
Basic Characteristics of Object-Oriented Systems
© Chinese University, CSE Dept. Software Engineering / Topic 3: Software Engineering Principles Your Name: _____________________ Computer Science.
Principles of Programming & Software Engineering
Advanced Computer Systems
Algorithms and Problem Solving
Chapter 1 Introduction.
Introduction to Compiler Construction
The Development Process of Web Applications
Software Processes (a)
Software Design Mr. Manoj Kumar Kar.
Chapter 1 Introduction.
Compiler Lecture 1 CS510.
An Introduction to Software Architecture
Presentation transcript:

Ch 031 Software Engineering Principles

Ch 032 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 033 Some definitions Methods: –General guidelines that govern the execution of some activity; methods are rigorous, systematic, and disciplined approaches. Technique: –Techniques and methods are used interchangeably. –Techniques are more technical and mechanical than methods; often they also have more restricted applicability. –Methods and techniques are packaged to form methodology. Methodology: –used to promote a certain approach to solving a problem by pre-selecting the methods and techniques to be used. Tools: –Developed to support the application of techniques, methods, and methodologies.

Ch 034 A visual representation Principles apply to process and product Principles become practice through methods and techniques

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

Ch 036 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 037 Examples: product Mathematical (formal) analysis of program correctness –By specifying the program using a formal specification (Z, B-method, Temporal logic,..) and check specific properties. Systematic (rigorous) test data derivation: –Test data that covers most significant cases.

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

Ch 039 Separation of concerns Tackles with the complexity of large systems, by separating different issues to concentrate on one at a time (Divide & Conquer) Supports parallelization of efforts and separation of responsibilities. Separation of concern at functional and non- functional activities: –Functional (views): function, data, network, deployment, process, etc. –Non-functional (qualities): correctness, efficiency, reliability, etc.

Ch 0310 Example: process / product Process: go through phases one after the other (as in waterfall) –Applies separation of concerns by separating activities with respect to time Product: keep product requirements separate –functionality –performance –user interface and usability

Ch 0311 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 0312 Cohesion and coupling Each module should be highly cohesive –module must be understandable as a meaningful unit (i.e., it provides a single functionality) –Elements (i.e., functions) of a module are closely related to one another, in terms of sharing similar attributes. Modules should exhibit low coupling –modules have low interactions with others –understandable separately –More maintainable, low change propagation

Ch 0313 A visual representation high coupling low coupling

Ch 0314 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 0315 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 0316 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 0317 An example Programming language grammar described through an abstract syntax (e.g., statement, expression, term) ignores details of different programs that can be generated by the same grammar. –abstraction ignores details such as precision of number representation or addressing mechanisms

Ch 0318 Abstraction in process When we do cost estimation we only take some key factors into account We reuse the results of previous similar cases for the new cost estimation, and ignore the differences among similar cases.

Ch 0319 Anticipation of change A basis for software evolution that requires anticipating potential future changes Examples: –Set up a configuration management environment for the project to take care of different changes in future (vs. having a fix system configuration). –Anticipate the expansion of a company by considering reserve fields for the attributes of different stakehoders in the company. –In desinging MicroProcessors, several registered are reserved for future expansions (versions) of the processor.

Ch 0320 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 E.g., defining a general tree traversal algorithm that receives a tree and a method of traversal (pre-order, in-order, post-order) to traverse every tree. As opposed to define three different methods. Even more general, to desing an Iterator algorithm.

Ch 0321 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 and other (non-functional) qualities. –deliver a first prototype and then incrementally add effort to turn prototype into product

Ch 0322 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 Case Study: Compiler

Ch 0323 Separation of concerns: examples Functional qualities: –When designing different components of a compiler, you concentrate on one at a time. For example, in designing lexical scanner to tokenize program’s text, you don’t consider the method of parsing (e.g., LR, LL, or LALR parser). Non-functional qualities: –When designing optimal register allocation algorithms (runtime efficiency) no need to worry about runtime diagnostic messages (user friendliness) Case Study: Compiler

Ch 0324 Modularity example Compilation process decomposed into phases –Lexical analysis –Syntax analysis (parsing) –Code generation Phases can be associated with modules Case Study: Compiler

Ch 0325 Representation of modular structure Boxes represent modules, and arrows represent flow of data Case Study: Compiler Language grammar

Ch 0326 Module decomposition may be iterated further modularization of code-generation module Case Study: Compiler

Ch 0327 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 Case Study: Compiler

Ch 0328 Anticipation of change Consider possible changes of: –source language (due to standardization committees) –target processor –I/O devices Case Study: Compiler

Ch 0329 Generality Parameterize with respect to target machine (by defining intermediate code) Develop compiler generating tools (compiler compilers) instead of just one compiler: –Given a language Grammar the tool produces a language to parse Case Study: Compiler

Ch 0330 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 Case Study: Compiler

Ch 0331 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 Case Study: Elevator

Ch 0332 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 Case Study: Elevator

Ch 0333 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 Case Study: Elevator

Ch 0334 A modular structure Elevator Control apparatus B3 B2 B1 buttons at floor i Case Study: Elevator

Ch 0335 Module decomposition may be iterated Elevator Engine Brakes Cabin Internal Buttons Control apparatus Case Study: Elevator

Ch 0336 Abstraction The modular view we provided does not specify the behavior of the mechanical and electrical components –they are abstracted away Case Study: Elevator

Ch 0337 Anticipation of change, generality Make the project parametric with respect to the number of elevators (and floor buttons) El eva tors C ontr o l appa ra t u s F loor butt ons Case Study: Elevator