Software Engineering, Lecture 4 Mohamed Elshaikh.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 12 Slide 1 Distributed Systems Design 2.
9.5 Software Architecture
SWE 316: Software Design and Architecture
PZ13B Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ13B - Client server computing Programming Language.
Technical Architectures
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology.
Introduction To System Analysis and Design
CSE 240 Lecture 8. © Lethbridge/Laganière 2001 Chapter 5: Modelling with classes2 Overview Begin discussing Chapter 3 - Reuse.
Software Reuse, Frameworks, and Client-server Systems September 8, 2005 Motivation for Software Reuse Frameworks Definition Object Oriented Model Client-server.
Software Frameworks for Acquisition and Control European PhD – 2009 Horácio Fernandes.
Notion of a Project Notes from OOSE Slides - modified.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 1 Let’s get started. Let’s start by selecting an architecture from among.
Systems Architecture, Fourth Edition1 Internet and Distributed Application Services Chapter 13.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology.
Software – Part 3 V.T. Raja, Ph.D., Information Management College of Business Oregon State University.
System Architecture: Desing alternatives and methodologies.
Course Instructor: Aisha Azeem
Design Patterns academy.zariba.com 1. Lecture Content 1.What are Design Patterns? 2.Creational 3.Structural 4.Behavioral 5.Architectural 6.Design Patterns.
What is Software Architecture?
Chapter 6 – Architectural Design Lecture 2 1Chapter 6 Architectural design.
Introduction To System Analysis and design
The Design Discipline.
L6 - March 1, 2006copyright Thomas Pole , all rights reserved 1 Lecture 6: Software Packaging: Dynamically Integrable Components and Text Ch.
Taken from Chapter 3 of Object-Oriented Software Engineering: Practical Software Development using UML and Java by T. Lethbridge and R. Laganiere Basing.
Internet Software Development Lecture 14: Basing Software Development on Reusable Technology From: Object-Oriented Software Engineering, by Lethbridge.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
Jaeki Song ISQS6337 JAVA Lecture 16 Other Issues in Java.
9.4 Software Architecture
©Ian Sommerville 2000 Software Engineering, 6th edition. Slide 1 Component-based development l Building software from reusable components l Objectives.
DAT602 Database Application Development Lecture 12 C/S Model Database Application.
COT 4600 Operating Systems Fall 2009 Dan C. Marinescu Office: HEC 439 B Office hours: Tu-Th 3:00-4:00 PM.
Introduction To System Analysis and Design
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
CSE 303 – Software Design and Architecture LECTURE 4.
SE-02 COMPONENTS – WHY? Object-oriented source-level re-use of code requires same source code language. Object-oriented source-level re-use may require.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology 1.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology.
CE Operating Systems Lecture 3 Overview of OS functions and structure.
© Lethbridge/Laganière 2005 Chap. 3: Basing Development on Reusable Technology The Client-Server Architecture A distributed system is a system in.
Software Design Patterns (1) Introduction. patterns do … & do not … Patterns do... provide common vocabulary provide “shorthand” for effectively communicating.
CSC 480 Software Engineering Lecture 18 Nov 6, 2002.
Architectural Design of Distributed Applications Chapter 13 Part of Design Analysis Designing Concurrent, Distributed, and Real-Time Applications with.
Object-Oriented Software Engineering Practical Software Development using UML and C++ / Java Chapter 3: Basing Software Development on Reusable Technology.
Client/Server Computing
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology.
Lecture 13.  Failure mode: when team understands requirements but is unable to meet them.  To ensure that you are building the right system Continually.
CSC 480 Software Engineering High Level Design. Topics Architectural Design Overview of Distributed Architectures User Interface Design Guidelines.
Slide 1 Service-centric Software Engineering. Slide 2 Objectives To explain the notion of a reusable service, based on web service standards, that provides.
Design and implementation Chapter 7 – Lecture 1. Design and implementation Software design and implementation is the stage in the software engineering.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
1. USER & CUSTOMER 2.BASING DEVELOPMENT ON SOLID PRINCIPALS AND REUSABLE TECH.
Introduction. System Design Hardware/Software Platform Selection Software Architectures Database Design Human-Computer Interaction (HCI) Interface Object.
CHAP-1 OBJECT ORIENTED SYSTEM DESIGN (IT-703)
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
Subtopics: 1. Frameworks :Reusable systems 2. Design Patterns 1.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology.
Introduction to Design Patterns
Software Design and Architecture
Chapter 3: Windows7 Part 4.
Ch > 28.4.
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Lecture 1: Multi-tier Architecture Overview
Chapter 5 Architectural Design.
Information system analysis and design
Presentation transcript:

Software Engineering, Lecture 4 Mohamed Elshaikh

Lecture out lines Software development on reusable technology Reuse: building on the work and experience of others Incorporating reusability and reuse into software engineering Frameworks: reusable subsystems The client-server architecture

Reusability What is reusability?  SE are to avoid re developing what already developed ”REUSE”.  SE should make thier brojects reusable. Adopting existing system to meet your needs.

Types of reusability Reuse of expertise Reuse of standard designs and algorithms Reuse of libraries of classes or procedures Reuse of powerful commands built into languages and operating systems Reuse of frameworks Reuse of complete applications (COTS)

Incorporating reusability and reuse in SE. Reuse and design for reusability should be part of the culture of software development organizations But there are problems to overcome: Why take the extra time needed to develop something that will benefit other projects/customers? Management may only reward the efforts of people who create the visible ‘final products’. Reusable software are often created in a hurry and without enough attention to quality.

Cont. Developers tend not develop high quality reusable components, so there is often little to reuse (vicious) To solve the problem, recognize that:  This vicious cycle costs money  Investment in reusable code is important  Attention to quality of reusable components is essential So that potential reusers have confidence in them The quality of a software product is only as good as its lowest-quality reusable component  Developing reusable components can often simplify design

Frameworks Reusable subsystems. Excellante way to promot reusable systems. A framework is a reusable software that implements a generic solution to generlized problem. It provides common facilities applicable to different application programs.

3.3 Frameworks: Reusable Subsystems A framework is reusable software that implements a generic solution to a generalized problem.  It provides common facilities applicable to different application programs. Principle: Applications that do different, but related, things tend to have quite similar designs

Frameworks to promote reuse A framework is intrinsically incomplete  Certain classes or methods are used by the framework, but are missing (slots)  Some functionality is optional Allowance is made for developer to provide it (hooks)  Developers use the services that the framework provides Taken together the services are called the Application Program Interface (API)

Object-oriented frameworks In the object oriented paradigm, a framework is composed of a library of classes.  The API is defined by the set of all public methods of these classes.  Some of the classes will normally be abstract

Examples of frameworks  A framework for payroll management  A framework for frequent buyer clubs  A framework for university registration  A framework for e-commerce web sites  A framework for controlling microwave ovens

Types of frameworks A horizontal framework provides general application facilities that a large number of applications can use A vertical framework (application framework) is more ‘complete’ but still needs some slots to be filled to adapt it to specific application needs

3.4 The Client-Server Architecture A distributed system is a system in which:  computations are performed by separate programs  … normally running on separate pieces of hardware  … that co-operate to perform the task of the system. Server:  A program that provides a service for other programs that connect to it using a communication channel

Cont. Client  A program that accesses a server (or several servers) to obtain services  A server may be accessed by many clients simultaneously

Sequence of activities in a client- server system 1.The server starts running 2.The server waits for clients to connect. (listening) 3.Clients start running and perform operations — Some operations involve requests to the server 4.When a client attempts to connect, the server accepts the connection (if it is willing) 5.The server waits for messages to arrive from connected clients 6.When a message from a client arrives, the server takes some action in response, then resumes waiting 7.Clients and servers continue functioning in this manner until they decide to shut down or disconnect

A server program communicating with two client programs

Alternatives to the client server architecture  Have a single program on one computer that does everything  Have no communication Each computer performs the work separately  Have some mechanism other than client- server communication for exchanging information E.g. one program writes to a database; the other reads from the database

Advantages of client-server systems The work can be distributed among different machines The clients can access the server’s functionality from a distance The client and server can be designed separately They can both be simpler

Cont. All the data can be kept centrally at the server Conversely, data can be distributed among many different geographically-distributed clients or servers The server can be accessed simultaneously by many clients Competing clients can be written to communicate with the same server, and vice-versa

Question should be answered by the end of this lecture Define the following terms: – Reusability – Framework – Client server What are the types of reusability? Why the developer tends not to create a reusable system?

Give a suggestion to make the following systems reusable: – Bank system – Examination system – Book store system Give ten examples for a framework systems? Give five activities should be berformed in client server system by: – Server – Client

Write the logical steps to perform the following task: – A server accept or reject a client to access – Client attempting to access a server – Server forwarding a client message Give three alternative architectures to the client server one? What are the advantages of the client server architectures?