Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in.

Slides:



Advertisements
Similar presentations
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.
Advertisements

10 Software Engineering Foundations of Computer Science ã Cengage Learning.
©Brooks/Cole, 2003 Chapter 10 Software Engineering.
Chapter 3: Modularization
Chapter 2: Modularization
Communication between modules, cohesion and coupling
1 Software Design Introduction  The chapter will address the following questions:  How do you factor a program into manageable program modules that can.
Programming Logic and Design Fourth Edition, Introductory
What is Software Design?  Introduction  Software design consists of two components, modular design and packaging.  Modular design is the decomposition.
Copyright Irwin/McGraw-Hill Software Design Prepared by Kevin C. Dittman for Systems Analysis & Design Methods 4ed by J. L. Whitten & L. D. Bentley.
1 CSE1301 Computer Programming: Lecture 23 Algorithm Design (Part 1)
© Copyright 2011 John Wiley & Sons, Inc.
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
Jump to first page 1 System Design (Finalizing Design Specifications) Chapter 3d.
Software Engineering For Beginners. General Information Lecturer, Patricia O’Byrne, office K115A. –
Software Engineering For Beginners. General Information Lecturer, Patricia O’Byrne. – Times: –See noticeboard outside.
Modules, Hierarchy Charts, and Documentation
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
1 CSE1301 Computer Programming: Lecture 25 Software Engineering 2.
DCT 1123 PROBLEM SOLVING & ALGORITHMS INTRODUCTION TO PROGRAMMING.
University of Toronto at Scarborough © Kersti Wain-Bantin CSCC40 system design 1 what is systems design? preparation of the system’s specifications with.
System Implementation System Implementation - Mr. Ahmad Al-Ghoul System Analysis and Design.
Chapter 7 Software Engineering Objectives Understand the software life cycle. Describe the development process models.. Understand the concept of modularity.
Chapter 7 Software Engineering Objectives Understand the software life cycle. Describe the development process models. Understand the concept of modularity.
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.
INTRODUCTION TO PROGRAMMING STRUCTURE Chapter 4 1.
Simple Program Design Third Edition A Step-by-Step Approach
Introduction to Computers
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
Coupling and Cohesion Pfleeger, S., Software Engineering Theory and Practice. Prentice Hall, 2001.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
Chapter 3 Developing an algorithm. Objectives To introduce methods of analysing a problem and developing a solution To develop simple algorithms using.
Software Engineering Quality What is Quality? Quality software is software that satisfies a user’s requirements, whether that is explicit or implicit.
SE: CHAPTER 7 Writing The Program
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.
Chapter 1 Program design Objectives To describe the steps in the program development process To introduce the current program design methodology To introduce.
Introduction to Computer Application (IC) MH Room 517 Time : 7:00-9:30pm.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
First Steps in Modularization. Simple Program Design, Fourth Edition Chapter 8 2 Objectives In this chapter you will be able to: Introduce modularization.
CCSB223/SAD/CHAPTER131 Chapter 13 Designing the System Internals.
First Steps in Modularization. Simple Program Design, Fourth Edition Chapter 8 2 Objectives In this chapter you will be able to: Introduce modularization.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
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.
Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing.
SOFTWARE ENGINEERING Lecture 6 Networks and Communication Department 1.
Systems Design.  Application Design  User Interface Design  Database Design.
Computer Science: A Structured Programming Approach Using C1 Objectives ❏ To design and implement programs with more than one function ❏ To be able to.
Chapter 9: Coupling & Cohesion Omar Meqdadi SE 273 Lecture 9 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Program Design. Simple Program Design, Fourth Edition Chapter 1 2 Objectives In this chapter you will be able to: Describe the steps in the program development.
PROGRAMMING FUNDAMENTALS INTRODUCTION TO PROGRAMMING. Computer Programming Concepts. Flowchart. Structured Programming Design. Implementation Documentation.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in.
SOFTWARE DESIGN & SOFTWARE ENGINEERING Software design is a process in which data, program structure, interface and their details are represented by well.
Coupling and Cohesion Schach, S, R. Object-Oriented and Classical Software Engineering. McGraw-Hill, 2002.
Further Modularization, Cohesion, and Coupling. Simple Program Design, Fourth Edition Chapter 9 2 Objectives In this chapter you will be able to: Further.
Coupling and Cohesion Rajni Bhalla.
System Design and Modeling
System Design.
مقدمه اي بر مهندسي نيازمنديها
Improving the Design “Can the design be better?”
Programming Logic and Design Fourth Edition, Comprehensive
Software Design Lecture : 9.
Communication between modules, cohesion and coupling
Introduction to Computers
Presentation transcript:

Chapter 10 Software Engineering

Understand the software life cycle. Describe the development process models. Understand the concept of modularity in software engineering. Understand the importance of quality in software engineering. After reading this chapter, the reader should be able to: O BJECTIVES Understand the role of documentation in software engineering.

software engineering software engineering – the establishment and use of sound engineering methods and principles to obtain reliable software. Software is more of an art than a science. The Art of Computer Programming  3-volume series  Knuth, in late 1960s and early 1970s

SOFTWARELIFECYCLESOFTWARELIFECYCLE 10.1

Figure 10-1 System life cycle

Figure 10-2 System development phases

Analysis Phase Define requirements that specify what the proposed system is to accomplish. Define requirements that specify what the proposed system is to accomplish. Four steps Four steps 1. Define the user 2. Define the Needs (user) 3. Define the Requirements (system) 4. Define the Method

Design Phase Define how the system will accomplish what was defined in the analysis phase. Define how the system will accomplish what was defined in the analysis phase. Modularity – the system is divided into small moudles. Modularity – the system is divided into small moudles.

Implementation Phase Create the actual programs. Create the actual programs. Flowchart Flowchart Pseudocode Pseudocode Coding Coding

Testing Phase can be a tedious and time-consuming part of program development. can be a tedious and time-consuming part of program development. White Box Testing – is the responsibility of the programmer, who knows exactly what is going on inside the program. White Box Testing – is the responsibility of the programmer, who knows exactly what is going on inside the program. Black Box Testing – done by the system test engineer and the user. Black Box Testing – done by the system test engineer and the user.

DEVELOPMENTPROCESSMODELSDEVELOPMENTPROCESSMODELS 10.2

Figure 10-3 Waterfall model A phase cannot be started until the previous phase is completed. A phase cannot be started until the previous phase is completed.

Figure 10-4 Incremental model 1st version – 1st version –  a simplified version does not include the details.  Main module with calls to empty submodules. 2nd version – 2nd version –  Add submodules one by one

MODULARITYMODULARITY 10.3

Modularity Breaking a large project into smaller parts that can be understood and handled easily. Breaking a large project into smaller parts that can be understood and handled easily.  Structure chart – used in procedural programming to show the relationship between procedures or functions.  Class diagram – used in object-oriented programming to show the relationship between classes.

Modularity Coupling – is a measure of how tightly two modules are bound to each other Coupling – is a measure of how tightly two modules are bound to each other The more tightly coupled, the less independent they are. The more tightly coupled, the less independent they are. Loose coupling is desirable Loose coupling is desirable

Coupling Data coupling – passes only the minimum required data from the calling function to the called function. Data coupling – passes only the minimum required data from the calling function to the called function. Stamp coupling – the parameters are composite objects such as arrays. Stamp coupling – the parameters are composite objects such as arrays. Control coupling – the passing of flags that may be used to direct the logic flow of a function. Control coupling – the passing of flags that may be used to direct the logic flow of a function. Global coupling – uses global variables to communicate between two or more functions. Global coupling – uses global variables to communicate between two or more functions. Content coupling – one function refers directly to the data or statement in another function. Content coupling – one function refers directly to the data or statement in another function.

Cohesion Cohesion – is a measure of how closely the processes in a program are related. Cohesion – is a measure of how closely the processes in a program are related. 1. Functional cohesion – a module contains only one process. 2. Sequential Cohesion – contains two or more related tasks that are closely tied together, usually with the output of one flowing as input to the other. 3. Communicational Cohesion – combines processes that work on the same data.

Cohesion 4. Procedural Cohesion – combines unrelated processes that are linked by a control flow. 5. Temporal Cohesion – combines unrelated processes that always occur together. 6. Logical Cohesion – combines processes that are related only by the entity that controls them. 7. Coincidental Cohesion – combines processes that are unrelated.

QUALITYQUALITY 10.4

Quality software satisfies the user’s explicit and implicit requirements, satisfies the user’s explicit and implicit requirements, is well documented, is well documented, meets the operating standards of the organization, and meets the operating standards of the organization, and runs efficiently on the hardware for which it was developed. runs efficiently on the hardware for which it was developed.

Figure 10-5 Quality factors

Operability – basic operation Operability – basic operation  Accuracy – a system that is not accurate is worse than no system at all.  Efficiency - performance  Reliability  Security  Timeliness  Usability (user)

Quality factors Maintainability – keep a system running correctly and up to date. Maintainability – keep a system running correctly and up to date.  Changeability – program’s complexity and structure  Correctability – mean time to recovery, which is the time it takes to get a program back in operation after it fails.  Flexibility – how easy to make changes  Testability -

Quality factors Transferability – move data/system from one platform to another and reuse code. Transferability – move data/system from one platform to another and reuse code.  Code Reusability – functions reused in different programs  Interoperability – sending data to other systems  Portability – move software from one hardware platform to another.

Quality circle Figure 10-6 Quality is a continuous concept that, like a circle, never ends. Quality is a continuous concept that, like a circle, never ends.

DOCUMENTATIONDOCUMENTATION 10.5

Documentation User Documentation - manual User Documentation - manual System Documentation System Documentation  Define the package itself.  Written so that the package can be maintained and modified by people other than the original developers.