CSE1301 Computer Programming: Lecture 21 Software Engineering.

Slides:



Advertisements
Similar presentations
© 2005 by Prentice Hall Chapter 13 Finalizing Design Specifications Modern Systems Analysis and Design Fourth Edition Jeffrey A. Hoffer Joey F. George.
Advertisements

Structured Design. 2 Design Quality – Simplicity “There are two ways of constructing a software design: One is to make it so simple that there are obviously.
1 CSE1301 Computer Programming: Lecture 23 Algorithm Design (Part 1)
CSCE 121, Sec 200, 507, 508 Software Engineering Fall 2010 Prof. Jennifer L. Welch.
1 CSE1301 Computer Programming Lecture 25: Software Engineering.
1 CSE1301 Computer Programming Lecture 26: Case Study.
1 CSE1301 Computer Programming: Lecture 15 Flowcharts and Debugging.
CSE1301 Computer Programming: Lecture 28 Transaction Processing.
Jump to first page 1 System Design (Finalizing Design Specifications) Chapter 3d.
1 CSE1301 Computer Programming Lecture 12 Algorithm Design.
1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging.
1 CSE1301 Computer Programming Lecture 12: Algorithm Design.
1 CSE1301 Computer Programming: Lecture 25 Software Engineering 2.
CSE1301 Computer Programming: Revision. Topics Type of questions What do you need to know? About the exam Exam technique Sample questions.
CSE1301 Computer Programming: Lecture 29 Group Project: “Quabble”
CSE1301 Computer Programming: Lecture 16 Algorithm Design: Components.
The Project AH Computing. Functional Requirements  What the product must do!  Examples attractive welcome screen all options available as clickable.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Computer Science: An Overview Tenth Edition by J. Glenn Brookshear Chapter.
1 CSE1301 Computer Programming: Lecture 25 Group Project: "Hunt the Wumpus”
COMP An Introduction to Computer Programming : University of the West Indies COMP6015 An Introduction to Computer Programming Lecture 02.
System Implementation System Implementation - Mr. Ahmad Al-Ghoul System Analysis and Design.
SDLC: System Development Life Cycle Dr. Bilal IS 582 Spring 2006.
Chapter 9: Coupling & Cohesion Omar Meqdadi SE 273 Lecture 9 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Chapter 9 Moving to Design. The Structured Approach To Designing The Application Architecture Module-an identifiable component of a computer program that.
Managing the development and purchase of information systems (Part 1)
Copyright © 2015 Pearson Education, Inc. Chapter 7: Software Engineering.
SDLC: System Development Life Cycle Dr. Dania Bilal IS 582 Spring 2007.
Modularity Lecture 4 Course Name: High Level Programming Language Year : 2010.
RELATIONAL FAULT TOLERANT INTERFACE TO HETEROGENEOUS DISTRIBUTED DATABASES Prof. Osama Abulnaja Afraa Khalifah
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Cohesion and Coupling CS 4311
System Implementation
Chapter 7 Software Engineering. © 2005 Pearson Addison-Wesley. All rights reserved 7-2 Chapter 7: Software Engineering 7.1 The Software Engineering Discipline.
Chapter 7 Software Engineering Introduction to CS 1 st Semester, 2015 Sanghyun Park.
Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in.
© 2006 ITT Educational Services Inc. SE350 System Analysis for Software Engineers: Unit 10 Slide 1 Chapter 13 Finalizing Design Specifications.
The basics of the programming process The development of programming languages to improve software development Programming languages that the average user.
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.
1 CSE1301 Computer Programming Lecture 24: Software Engineering.
Algorithms and Programming Functions Lecture 28. Summary of Previous Lecture while statement for statement break statement Nested loops.
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
Chapter 7: Software Engineering
Design and Planning Or: What’s the next thing we should do for our project?
Chapter 16 Quality Assurance Through Software Engineering Systems Analysis and Design Kendall & Kendall Sixth Edition.
Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing.
Slide 1 Service-centric Software Engineering. Slide 2 Objectives To explain the notion of a reusable service, based on web service standards, that provides.
Chapter 13 Finalizing Design Specifications
Systems Design.  Application Design  User Interface Design  Database Design.
Week 6: Software Design HNDIT Software Engineering Software Design Learning Outcomes  Understand the activities involved in the Design process.
Chapter 9: Coupling & Cohesion Omar Meqdadi SE 273 Lecture 9 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
1 CSE1301 Computer Programming: Lecture 16 Flow Diagrams and Debugging.
1 Modern Systems Analysis and Design Hoffer, George & Valacich Chapter 13 Finalizing Design Specifications Course: Physical System Design and Implementation.
Basic Characteristics of Object-Oriented Systems
Software Engineering Salihu Ibrahim Dasuki (PhD) CSC102 INTRODUCTION TO COMPUTER SCIENCE.
Chapter 7: Software Engineering
Programming Logic and Design Seventh Edition
Coupling and Cohesion Rajni Bhalla.
System Design Ashima Wadhwa.
System Design and Modeling
Software Design Mr. Manoj Kumar Kar.
Structure Charts Agenda: Use of Structure Charts Symbols How to create.
Coupling and Cohesion By Bonnie Ngu.
Service-centric Software Engineering
Improving the Design “Can the design be better?”
Structure Charts Agenda: What are Structure Charts
Chapter 7 Software Engineering.
Chapter 13 Finalizing Design Specifications
Cohesion and Coupling.
Presentation transcript:

CSE1301 Computer Programming: Lecture 21 Software Engineering

Topics Software Engineering tools and techniques –Prototyping Structure Charts Coupling –Control coupling –Data coupling Reading: Brookshear 6-2, 6-3

Software Engineering Structured development of software systems –Examples: software for banking, stock exchange, space probe control, toll charge, operating system, games Tools and Techniques –Structured process rather than trial-and-error. –Important goal: eliminate errors. “Engineering” –Zero tolerance to error. –Pre-fabricated components. –Re-usable components.

Software Engineering Tasks –project planning (cost, schedule, personnel) –project management –documentation –prototyping and simulation –interface design –programming –testing Computer-Aided Software Engineering (CASE) Tools

Components of the Software Development Process:  Define the problem clearly  Analyse the problem  Design an algorithm  top-down / bottom-up design  Document the system  Code (Implement) the algorithm  Test the code Recall:

Development Approach: Water-Fall Model AnalysisDesignImplementTest Requires that each stage be completed before beginning next stage.

Development Approach: Incremental Model AnalysisDesignImplementTest Increments from simplified version with limited functionality to complete system. At each stage: prototype.

Prototyping Construction of simplified version of parts of the proposed system that can be analyzed before further development. Types of items that can be prototyped: –screen and report format, database and file structures, system protocols. Types of prototyping –throwaway, evolutionary

Modularity Top-down analysis and design. Break problem down into manageable sub-problems.

Modularity Top-down analysis and design. Break problem down into manageable sub-problems.

Structure Chart Pictorial representation of a modular structure –each module represented by a rectangle –arrows represent dependencies between modules

Coupling Links and dependencies between modules Control coupling: –when one module passes control to another –Examples: function call, return Data coupling: –sharing of data between modules. –Examples: function parameters, return values

Example 1 Structure chart with labels showing data coupling inviteToParty ( name, date, venue ) { ringUp ( name ) askToParty (date, venue ) sayGoodbye ( name ) } askToPartysayGoodbyeringUp inviteToParty name date venue name venue control coupling data coupling

searchAddrBook ringUp ( name ) { set number to result of searchAddrBook ( name ) pick up the phone dial number say “Hello name, it’s Jim” } Example 2 Structure chart with labels showing data coupling ringUp etc... name number name return value

Notes on Coupling Aim: maximize module independence = minimize coupling. Use of global variables is a form of implicit data coupling: dangerous! –It is NOT recommended to have global variables in your program.

Notes on Coupling How is control coupling represented in code? –Function call: When a function is called, control is passed to that function. –Function return: When the code in a function has been executed, control is returned to the code that called the function. How is data coupling represented in code? –Parameters: Data sent to a function via parameters. –Return Values: Data returned from function using "return".

Cohesion Internal binding within function. Logical cohesion (weaker) –Internal elements perform activities that are logically similar. –Example: I/O function Functional cohesion (stronger) –all parts are geared towards single activity Aim: high intra-module cohesion

Example 1 contact ( company, message, mode ) { if mode is by fax { sendFax ( company, message) } else if mode is by { send ( company, message) } Cohesive.

Example 2 Not cohesive. contact ( company, message, mode ) { if mode is by fax { sendFax ( company, message) } else if mode is by { send ( company, message) } printAddressBook ( ) }

Structure Chart Examples: MaxAndMin IsPalindrome ContinuingFraction Factorial

Function interactions Some systems are not hierarchical in nature. –Two functions interacting as equals. –Superior function relies on subordinates to perform its task. –Recursive functions are not well represented --- need to have loops.

Summary Modularity is crucial for developing large software projects Structure charts represent functions and the dependencies between them Software Engineering topics continued in Lectures and Group project. To be continued...