COMP 354 Software Engineering I Section BB Summer 2009 Dr Greg Butler

Slides:



Advertisements
Similar presentations
Software Engineering Principles
Advertisements

Lecture 6: Software Design (Part I)
COMPSCI 105 S Principles of Computer Science 12 Abstract Data Type.
1COM6030 Systems Analysis and Design © University of Sheffield 2005 COM 6030 Software Analysis and Design Lecture 2- Software Process Models and Project.
Multimedia Specification Design and Production 2013 / Semester 1 / week 7 Lecturer: Dr. Nikos Gazepidis
Design Concepts and Principles
Introduction to Software Engineering Lecture 4 André van der Hoek.
Dynamic Systems Development Method (DSDM)
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
1 SYSTEM and MODULE DESIGN Elements and Definitions.
Ch3: Software Engineering Principles 1 What is a principle?  Definition:  Goals of accounting principles:  Goals of software engineering principles?
Fall 2007CS 2251 Software Engineering Intro. Fall 2007CS 2252 Topics Software challenge Life-cycle models Design Issues Documentation Abstraction.
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.
SOFTWARE PROJECT MANAGEMENT AND COST ESTIMATION © University of LiverpoolCOMP 319slide 1.
Introduction to Software Testing
Software engineering Process models Pavel Agejkin.
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
Rapid Prototyping Model
1COM6030 Systems Analysis and Design © University of Sheffield 2005 COM 6030 Software Analysis and Design Lecture 2- Software Process Models and Project.
Chapter 2 The process Process, Methods, and Tools
The Rational Unified Process
ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Topic 3 Partially based on lecture notes written by.
SEMINAR ON :. ORGANISATION Organizations are formal social units devoted to attainment of specific goals. Organizations use certain resources to produce.
Ch 031 Software Engineering Principles. Ch 032 Outline Principles form the basis of methods, techniques, methodologies and tools Seven important principles.
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.
An Introduction to Software Architecture
CSE 303 – Software Design and Architecture
CS540 Software Design Lecture 8 1 Lecture 8: Structured Design Anita S. Malik Adapted from Schach (2004) Chapter 13 and Appendix.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
1 Software Design Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13, 5 th edition and Ch. 10, 6 th edition.
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
1 Software Design Overview Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13.
Relational Databases and Transaction Design Lecture 27.
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
Software Testing and Quality Assurance Software Quality Assurance 1.
Chapter 12: Design Phase n 12.1 Design and Abstraction n 12.2 Action-Oriented Design n 12.3 Data Flow Analysis n Data Flow Analysis Example n
Design Concepts and Principles Instructor: Dr. Jerry Gao.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
CCSB223/SAD/CHAPTER131 Chapter 13 Designing the System Internals.
Introduction to Design. What is Design? 2 minutes Pairs.
PROC-1 1. Software Development Process. PROC-2 A Process Software Development Process User’s Requirements Software System Unified Process: Component Based.
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
Software Design Process
CSE 303 – Software Design and Architecture
Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing.
Week 6: Software Design HNDIT Software Engineering Software Design Learning Outcomes  Understand the activities involved in the Design process.
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.
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.
© Chinese University, CSE Dept. Software Engineering / Topic 3: Software Engineering Principles Your Name: _____________________ Computer Science.
SOFTWARE DESIGN & SOFTWARE ENGINEERING Software design is a process in which data, program structure, interface and their details are represented by well.
C_ITIP211 LECTURER: E.DONDO. Unit 1 : The Systems Development Environment.
Slide 3.1 © The McGraw-Hill Companies, 2002 SOFTWARE LIFE-CYCLE MODELS.
7. Modular and structured design
Coupling and Cohesion Rajni Bhalla.
The Development Process of Web Applications
Software Life Cycle “What happens in the ‘life’ of software”
Lecture 9- Design Concepts and Principles
Software Design Mr. Manoj Kumar Kar.
CS 425/625 Software Engineering Software Processes
Object-Oriented and Classical Software Engineering Sixth Edition, WCB/McGraw-Hill, 2005 Stephen R. Schach
Chapter 1 The Systems Development Environment
Software life cycle models
Lecture 9- Design Concepts and Principles
Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002 Stephen R. Schach
Software Design Lecture : 8
An Introduction to Software Architecture
CS310 Software Engineering Lecturer Dr.Doaa Sami
PPT and video are due no later than February 15, 2019
Presentation transcript:

COMP 354 Software Engineering I Section BB Summer 2009 Dr Greg Butler

Principles of Software Engineering Rigour and Formality Separation of Concerns Modularity Abstraction Anticipation of Change Generality Incrementality

Rigour and Formality rigour is achieved by conforming to given constraints eg using a given format for the requirements document documenting input and output of each procedure/function limits on number and size of modules following company standards for the development process rigour is a necessary complement to creativity in SE it provides shape, direction, precision, & the ability to compare and measure there are many levels of rigour formality is highest degree of rigour requires the process to be driven and evaluated by mathematical laws

Separation of Concerns Separation of Concerns means treating individual aspects of a problem separately --- the aim: master complexity Separation in time eg do requirements analysis before design creative design in the morning, meetings in afternoon do necessary learning and study during the week, explore personal interests on weekends Separation by qualities eg deal with correctness, then deal with efficiency Separation by views eg data flow through a system, control/decision making within system concurrency and synchronization, timing restrictions of a real time system Each view highlights different concerns Separation into parts eg decompose system into modules, treat module internals separately

Modularity productprocess Modularity is when a product or process is composed of components/modules + greatly aids separation of concerns better understandability easier to change modules reusable + high cohesion within a module when all its elements are strongly related ie there is a very good reason why they are together + low coupling between modules coupling measures the interdependence between modules eg module A and module B share a variable x --- high coupling

Abstraction Abstraction is the separation of important aspects from unimportant aspects A model is an abstraction it ignores certain details it concentrates on relevant facts What is important/relevant varies depending on the use made of the model

Anticipation of Change Change will occur! Requires special effort to prepare for change/evolution of software documentation, modularization configuration management of processes document the process modularize the process of personnel documentation training

Generality more general = able to handle more cases use of general purpose tools, eg awk more general program may be simpler and reusable fewer special cases in specification able to handle a broader range of inputs/uses

Incrementality increment = a small step/change incremental prototyping identify a useful, but small, subset of the problem and implement it build a sequence of prototypes by adding features one at a time finally have a complete system advantages: early delivery of a (sub)system early feedback from users later (more complicated) features may not be necessary more time to think about complicated features separation of concerns

Remember what causes problems in SE Requirements Architecture Change Complexity