© Chinese University, CSE Dept. Software Engineering / 3 - 1 Topic 3: Software Engineering Principles Your Name: _____________________ Computer Science.

Slides:



Advertisements
Similar presentations
Software Engineering Principles
Advertisements

Multimedia Specification Design and Production 2013 / Semester 1 / week 7 Lecturer: Dr. Nikos Gazepidis
CS487 Software Engineering Omar Aldawud
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
ISNE101 Dr. Ken Cosh. Recap  We’ve been talking about Software…  Application vs System Software  Programming Languages  Vs Natural Languages  Syntax,
Sharif University of Technology Session # 3.  Contents  Systems Analysis and Design Sharif University of Technology MIS (Management Information System),
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Introduction to Software Engineering Lecture 5 André van der Hoek.
Introduction to Software Engineering Lecture 4 André van der Hoek.
COMP 6710 Course NotesSlide 2-0 Auburn University Computer Science and Software Engineering Course Notes Set 2: Software Process Models Computer Science.
CSC 205, Software Engineering I 1 CSC 205 Software Engineering I Spring Quarter, 2000 Clark S. Turner, J.D., Ph.D.
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?
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
1 IS 4420 Database Fundamentals Chapter 2: Database Development Process Leon Chen.
Midterm ReviewSummer ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Midterm Review Partially.
Software Development Overview CPSC 315 – Programming Studio Spring 2009.
Software Engineering CSE470: Systems Engineering 35 Computer System Engineering Computer System Engineering is a problem-solving activity. Itemize desired.
Software Development Overview CPSC 315 – Programming Studio Spring 2008.
IMS1805 Systems Analysis Topic 2: Introduction to some key techniques for systems analysis in IS.
Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools.
University of Toronto at Scarborough © Kersti Wain-Bantin CSCC40 system design 1 what is systems design? preparation of the system’s specifications with.
Chapter 2: Approaches to System Development
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
Chapter 2 The Process.
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.
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.
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.
CSE 303 – Software Design and Architecture
INTRODUCTION What is software? What is software engineering?
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
COMP 354 Software Engineering I Section BB Summer 2009 Dr Greg Butler
Capability Maturity Models Software Engineering Institute (supported by DoD) The problems of software development are mainly caused by poor process management.
University of Palestine software engineering department Testing of Software Systems Testing throughout the software life cycle instructor: Tasneem Darwish.
CSE 219 Computer Science III Program Design Principles.
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
Software Engineering Spring (C) Vasudeva VarmaClass of 32 CS3600: Software Engineering: Process and Product* *Most of the Content drawn.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Software Development Overview CPSC 315 – Programming Studio Spring 2013.
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
Software Design Process
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
CSC480 Software Engineering Lecture 10 September 25, 2002.
Week 2: Software Process HNDIT Software Engineering Software Process.
Software Model Process
Week 6: Software Design HNDIT Software Engineering Software Design Learning Outcomes  Understand the activities involved in the Design process.
Software Engineering 1A/1B/1C/1M School of Computer and Information Science, University of South Australia Week 1, Lecture 2, Page 1 Software Engineering.
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 / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
Software Engineering Salihu Ibrahim Dasuki (PhD) CSC102 INTRODUCTION TO COMPUTER SCIENCE.
Slide 3.1 © The McGraw-Hill Companies, 2002 SOFTWARE LIFE-CYCLE MODELS.
Chapter 2: The Process. What is Process? Software Engineering Process is the glue that holds the technology layers together and enables rational and timely.
Software Development Overview
Software Design.
CompSci 280 S Introduction to Software Development
The Development Process of Web Applications
Software Quality Assurance Software Quality Factor
Software Life Cycle “What happens in the ‘life’ of software”
Software Processes (a)
Lecture 2 Revision of Models of a Software Process
Software Development Overview
Logical Architecture & UML Package Diagrams
Presentation transcript:

© Chinese University, CSE Dept. Software Engineering / Topic 3: Software Engineering Principles Your Name: _____________________ Computer Science & Engineering Department The Chinese University of Hong Kong Software Engineering

© Chinese University, CSE Dept. Software Engineering / Software Engineering Principles Figure 3.1: Contents of various topics

© Chinese University, CSE Dept. Software Engineering / Software Engineering Principles Process, Metrics & Management Topic 4: Spec Topic 5: Design Topic 6: Test & Verification Topic 3: Figure 3.1: Contents of various topics

© Chinese University, CSE Dept. Software Engineering / Software Engineering Principles  Inner layers are more _______ and abstract  Focus of lectures  Outer layes are more _______ but likely to ________ with time  Focus of tutorials  S/W eng. Principles are more likely to remain unchanged. They are driven by reliability (dependability), evolvability, and maintainability as quality requirements

© Chinese University, CSE Dept. Software Engineering / Software Engineering Principles 1.Rigor and Formality 2.Separation of Concerns 3.Modularity 4.Abstraction 5.Anticipation of Change 6.Generality 7.Incrementality

© Chinese University, CSE Dept. Software Engineering / (1) Rigor and Formality  Rigor complements, but not constrains, creativity  The highest degree of rigor is called formality ________

© Chinese University, CSE Dept. Software Engineering / (1) Rigor and Formality  Engineering design processes are formed by methods and techniques which are either rigorous or formal  The advantage of formality over rigor is that formality maybe the basis of _____________ of a formal process

© Chinese University, CSE Dept. Software Engineering / (1) Rigor and Formality  the most formal phase in s/w engineering: _____________  rigor and formality improve reliability, verifiability, maintainability, reusability, portability, understandability and interoperability => __________ oriented  rigor and formality applied to s/w _______ helps in reusability, maintainability, evolvability, timeliness and productivity

© Chinese University, CSE Dept. Software Engineering / (2) Separation of Concerns  Allows us to deal with different individual aspects of a problem for concentration  The only way to master the ____________ of a large-scale project  Separation of concerns could be achieved in terms of –time (a student’s life) –qualities (correctness vs. efficiency) –views (data flow vs. control flow) –parts (modularity)

© Chinese University, CSE Dept. Software Engineering / (2) Separation of Concerns  make some overall design decisions first –Functional correctness vs performance  separation of concerns leads to separation of responsibility for large projects E.g. options: Separate development process roles: architect + programmer + tester Separate functionalities: module A, B, C, … Separate obligations: “Chief-programmer team”

© Chinese University, CSE Dept. Software Engineering / (3) Modularity  A complex system may be divided into simpler pieces called modules (units); such a system becomes modular  Modularity allows separation of concern applied to two phases: Intra-modular phase Inter-modular phase _____________ design/implementation ____________ design/implementation

© Chinese University, CSE Dept. Software Engineering / (3) Modularity  Three goals of modularity: –decomposability: “divide and conquer” »Top-down, bottom-up A popular approach: ____________ design + ____________ implementation –composability –capability of understanding

© Chinese University, CSE Dept. Software Engineering / (3) Modularity  Key: high cohesion and low coupling –cohesion: internal connections in a module –coupling: external connections among modules coupling cohesion _____ cohesion _____ coupling _____ cohesion _____ coupling Figure 3.2: Cohesion and coupling

© Chinese University, CSE Dept. Software Engineering / (4) Abstraction  identification of the important aspects of a phenomenon  a special case of ____________________ Important aspects unimportant details separate

© Chinese University, CSE Dept. Software Engineering / (4) Abstraction  mathematical formulas and equations are abstraction of reality, e.g. __________  programs are abstractions build on top of h/w  abstraction applies to s/w processes as well as s/w products –E.g. cost estimation: using key factors of the new system –E.g. comments on the header of program files

© Chinese University, CSE Dept. Software Engineering / (5) Anticipation of Change  anticipate how and where the changes are likely to occur  to improve evolvability, maintainability, reusability

© Chinese University, CSE Dept. Software Engineering / (5) Anticipation of Change  it requires appropriate tools –configuration management ( CM )  applies to s/w process and product –Change of personnel –Project cut –Maintenance

© Chinese University, CSE Dept. Software Engineering / (6) Generality  A generalized problem might be simpler, more reusable, than the original problem. The solutions tend to be more available  more costly (time, resource)  generality is a fundamental principle of many commercial tools and packages (e.g. spread sheets, databases, word processors)  a trend for s/w products

© Chinese University, CSE Dept. Software Engineering / (7) Incrementality  It characterizes an evolutionary process that proceeds in a stepwise fashion, in increments  To develop useful early subsets first for early feedback  It is intertwined with _________________ ______________

© Chinese University, CSE Dept. Software Engineering / (7) Incrementality  incrementality applies to improve many s/w qualities  intermediate stages of an incrementally designed product are called prototypes, i.e., _____________ of the end product –rapid prototyping (vs. Waterfall model)

© Chinese University, CSE Dept. Software Engineering / Rapid Prototyping Converges on the End Result

© Chinese University, CSE Dept. Software Engineering / Extreme Programming

© Chinese University, CSE Dept. Software Engineering / Extreme Programming Process

© Chinese University, CSE Dept. Software Engineering / The Spiral Software Process Model Figure 3.3: The Spiral Model

© Chinese University, CSE Dept. Software Engineering / Topic 3 Conclusion  Seven software engineering principles: –Rigor and formality –Separation of concerns –Modularity –Abstraction –Anticipation of change –Generality –Incrementality  Applicable to all software engineering phases