Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

Software Engineering Key design concepts Design heuristics Design practices.
Lecture 6: Software Design (Part I)
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
COMPSCI 105 S Principles of Computer Science 12 Abstract Data Type.
Design Concepts and Principles
Software Requirements Engineering
Introduction to Software Engineering Lecture 4 André van der Hoek.
Software Engineering and Design Principles Chapter 1.
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
Ch3: Software Engineering Principles 1 What is a principle?  Definition:  Goals of accounting principles:  Goals of software engineering principles?
Jump to first page 1 System Design (Finalizing Design Specifications) Chapter 3d.
Illinois Institute of Technology
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.
1 CS115 Class 7: Architecture Due today –Requirements –Read Architecture paper pages 1-15 Next Tuesday –Read Practical UML.
School of Computer ScienceG53FSP Formal Specification1 Dr. Rong Qu Introduction to Formal Specification
1 ES 314 Advanced Programming Lec 2 Sept 3 Goals: Complete the discussion of problem Review of C++ Object-oriented design Arrays and pointers.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
 1. Introduction  2. Development Life-Cycle  3. Current Component Technologies  4. Component Quality Assurance  5. Advantages and Disadvantages.
MADALINA CROITORU Software Engineering week 4 Madalina Croitoru IUT Montpellier.
Chapter 5CSA 217 Design in Construction Chapter 5 1.
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.
Business Process Management. Key Definitions Process model A formal way of representing how a business operates Illustrates the activities that are performed.
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
1 Chapter 5 Practice: A Generic View Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
COMP 354 Software Engineering I Section BB Summer 2009 Dr Greg Butler
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
SOFTWARE DESIGN.
SOFTWARE DESIGN Design Concepts Design is a meaningful engineering representation of something that is to be built It can be traced to a customer’s requirements.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
SE: CHAPTER 7 Writing The Program
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Chapter 7 Software Engineering Introduction to CS 1 st Semester, 2015 Sanghyun Park.
An Object-Oriented Approach to Programming Logic and Design Fourth Edition Chapter 6 Using Methods.
Design Concepts By Deepika Chaudhary.
Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in.
SOFTWARE DESIGN. INTRODUCTION There are 3 distinct types of activities in design 1.External design 2.Architectural design 3.Detailed design Architectural.
Introduction to Design. What is Design? 2 minutes Pairs.
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.
Software Design Process
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
CSE 303 – Software Design and Architecture
Week 6: Software Design HNDIT Software Engineering Software Design Learning Outcomes  Understand the activities involved in the Design process.
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.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
© Chinese University, CSE Dept. Software Engineering / Topic 3: Software Engineering Principles Your Name: _____________________ Computer Science.
CSCE 240 – Intro to Software Engineering Lecture 3.
Software Design.
7. Modular and structured design
CompSci 280 S Introduction to Software Development
Software Testing.
Lecture 9- Design Concepts and Principles
Software Quality Engineering
Objects First with Java
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
CS223: Software Engineering
Lecture 9- Design Concepts and Principles
Software Design Lecture : 8
John D. McGregor Module 6 Session 1 More Design
What Is Good Software(Program)?
Chapter 5 Architectural Design.
Presentation transcript:

Software Engineering Principles

SE Principles Principles are statements describing desirable properties of the product and process.

SE Principles Principles are statements describing desirable properties of the product and process. Focus on both process and product are needed to deliver software systems. –Cannot focus on just one. –We control process in an effort to control the quality of the product.

SE Principles Principles are statements describing desirable properties of the product and process. Focus on both process and product are needed to deliver software systems. –Cannot focus on just one. –We control process in an effort to control the quality of the product. Control of process will not ensure a quality product.

Question When you build a software system, what things do you keep in mind as you develop the system?

Principles Separation of Concerns Complexity Abstraction Modularity Information Hiding Anticipation of Change Rigor and Formality Generality

Separation of Concerns Deal with different individual aspects of a problem, concentrating on each separately. If possible, separate problem into unrelated parts. –e.g. separate the user interface from the data access code Not always possible –e.g. design decisions such as memory size affect things like error recovery policies

How to Separate Separate the concerns: –Isolate the issues –Deal with each issue separately

How to Separate Separate the concerns: –Isolate the issues –Deal with each issue separately How to isolate: –Time: (eg software lifecycles) –Qualities (eg focus on correctness. Focus on performance) –Views of software (eg data flow, flow of control) –Parts of system (see modularity)

Problem: How can you assure the entire system is good if you only look at pieces? –May miss global optimizations if we only look at pieces. Design at a high level, then decompose

Complexity Loosely, the amount of time or resources needed to solve a problem In our context, the software attributes that affect the effort needed to implement or change software (Not the same as complexity studied in CS3)

Complexity Two attributes are size and structure Structure includes things like –Number of operators –Level of nesting –Interactions between components –Structure of data representation

Complexity General rule: the more the software needs to do, the more complex it becomes

Abstraction Identify the important aspects of some phenomenon and ignore the details It is our only tool for mastering complexity. –variables as abstraction of memory –Memory as an abstraction of circuits –Circuits as an abstraction of electron probability distributions –electron probability distributions as abstractions of subatomic particles –comments should provide abstraction of program code

Traversing Levels of Abstraction As a developer, you must be able to traverse levels of abstraction easily. Example: Customer calls on phone and says, “the accounts payable report is broken.” You must be able to start at this level of abstraction, then work down succeeding levels to get to the uninitialized variable in the PROCA routine.

Modularity Break system into modules Two phases –Deal with details of module in isolation –Deal with overall characteristics of all modules and their relationships Bottom up: (order listed) –Good reuse and composeability Top down: (inverse order) –good decomposition and modularity, independent parts

Desirable Characteristics High cohesion, low coupling. Cohesion: Coupling:

Desirable Characteristics High cohesion, low coupling. Cohesion: clustering of related parts. –All parts in a module work towards a common goal. Coupling: interrelation between modules. –We'd like to see code that is grouped into modules with minimal interaction between modules.

Information Hiding Hide at least some design decisions inside components Other components cannot depend on these design decisions This leads to lower coupling Example: hide a data structure inside an object: no other object need know if it’s a linked list, array, or hash table

Anticipation of change Useful software changes. –Students don’t get much experience in college Ability to evolve is not free. –Effort is required to identify where changes might occur –Effort is required to design so that changes can be implemented easily (low coupling). Change affects process also: –Employee turnover –Process improvement

Rigor and Formality Rigor: Strict precision; Exactness. Formality is the highest degree of rigor. –One can be rigorous without being formal. Example: an intro calculus textbook is usually rigorous, but not formal. The proofs are just sketches. Hardly ever are the proofs done in a formal mathematical logic.

Rigor and Formality -cont Rigor: Strict precision; Exactness. Formality is the highest degree of rigor. –One can be rigorous without being formal. Example: an intro calculus textbook is usually rigorous, but not formal. The proofs are just sketches. Hardly ever are the proofs done in a formal mathematical logic. We can specify rigorously in natural language. –not amenable to tools. We can specify formally in a logical language. –may be amenable to tools.

Creativity vs Rigor Software development is creative. –Creative processes tend to be neither precise nor accurate. Rigor is necessary to produce reliable products. Rigor enables creativity in engineering. Rigor varies in degree: use the appropriate amount. –Eg doghouse vs skyscraper

Rigor vs. Formality Typically, only the source and object codes are formal. (formal language, formal semantics) We may need to resort to formality at times. –Correctness proofs. We may choose to use formality. –Formal specifications (Z, Petri nets) But in all cases, we want rigor.

Generality When asked to solve a problem, look for the more general problem. The more general problem might be as easy to solve. The solution is then a candidate for reuse. Big tradeoffs here. –Text books say be as general as possible. –Practice says be more specific. –In practice, the more general, the harder, slower, more complex. Not always the case. –The more general, the more reusable.

Groups For each of the eight principles –Come up with an example in some software you know about.