Analysis and Design of Software Systems Practical Session 01. System Layering

Similar documents
INFORMATION TECHNOLOGY

Abstraction in Computer Science & Software Engineering: A Pedagogical Perspective

Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces

Contents. Introduction and System Engineering 1. Introduction 2. Software Process and Methodology 16. System Engineering 53

Principles of integrated software development environments. Learning Objectives. Context: Software Process (e.g. USDP or RUP)

Chapter 1. Dr. Chris Irwin Davis Phone: (972) Office: ECSS CS-4337 Organization of Programming Languages

Instructional Design Framework CSE: Unit 1 Lesson 1

Modern Databases. Database Systems Lecture 18 Natasha Alechina

Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages

Skills for Employment Investment Project (SEIP)

Using Library Dependencies for Clustering

Client/server is a network architecture that divides functions into client and server

What is a database? COSC 304 Introduction to Database Systems. Database Introduction. Example Problem. Databases in the Real-World

IMPROVING JAVA SOFTWARE THROUGH PACKAGE STRUCTURE ANALYSIS

CS Standards Crosswalk: CSTA K-12 Computer Science Standards and Oracle Java Programming (2014)

Performance Comparison of Persistence Frameworks

An Eclipse Plug-In for Visualizing Java Code Dependencies on Relational Databases

Application Centric Infrastructure Object-Oriented Data Model: Gain Advanced Network Control and Programmability

A Database Re-engineering Workbench

What is Data Virtualization? Rick F. van der Lans, R20/Consultancy

Program Understanding in Software Engineering

Case Studies of Running the Platform. NetBeans UML Servlet JSP GlassFish EJB

Course Description. Prerequisites. CS-119/119L, Section 0137/0138 Course Syllabus Program Design & Development - Fall 2015

White Paper: 1) Architecture Objectives: The primary objective of this architecture is to meet the. 2) Architecture Explanation

A Modular Approach to Teaching Mobile APPS Development

Technical Report. Implementation and Performance Testing of Business Rules Evaluation Systems in a Computing Grid. Brian Fletcher x

Developing Web Browser Recording Tools. Using Server-Side Programming Technology

Chapter 12 Programming Concepts and Languages

XML- New meta language in e-business

Chapter 7: Software Engineering

Topics. Introduction to Database Management System. What Is a DBMS? DBMS Types

NASSI-SCHNEIDERMAN DIAGRAM IN HTML BASED ON AML

2667A - Introduction to Programming

Database System Concepts

Open Source egovernment Reference Architecture Osera.modeldriven.org. Copyright 2006 Data Access Technologies, Inc. Slide 1

What is Data Virtualization?

Gadget: A Tool for Extracting the Dynamic Structure of Java Programs

DataDirect XQuery Technical Overview

Architecture Design Version1.0. Architecture Design CUSTOMER RELATION MANAGEMENT SYSTEM Version 1.0

CS 4240: Principles of Software Design. Course Introduction. Tom Horton

RDS Building Centralized Monitoring and Control

Computer Information Systems (CIS)

The EMSX Platform. A Modular, Scalable, Efficient, Adaptable Platform to Manage Multi-technology Networks. A White Paper.

MapReduce. MapReduce and SQL Injections. CS 3200 Final Lecture. Introduction. MapReduce. Programming Model. Example

Acknowledgement. Software Engineering. CS 3141: Team Software Project Introduction

1 File Processing Systems

ICOM 6005 Database Management Systems Design. Dr. Manuel Rodríguez Martínez Electrical and Computer Engineering Department Lecture 2 August 23, 2001

XML Processing and Web Services. Chapter 17


Objectives. Distributed Databases and Client/Server Architecture. Distributed Database. Data Fragmentation

How To Use X Query For Data Collection

Managing XML Documents Versions and Upgrades with XSLT

SERVICE-ORIENTED MODELING FRAMEWORK (SOMF ) SERVICE-ORIENTED SOFTWARE ARCHITECTURE MODEL LANGUAGE SPECIFICATIONS

HTML5. Turn this page to see Quick Guide of CTTC

Chapter 13: Program Development and Programming Languages

Principles of Database. Management: Summary

The Data Grid: Towards an Architecture for Distributed Management and Analysis of Large Scientific Datasets

Design and Functional Specification

STFC Sandwich Student Placement Software Engineer for ISIS Business Applications

Introduction. Introduction: Database management system. Introduction: DBS concepts & architecture. Introduction: DBS versus File system

APPLYING CASE BASED REASONING IN AGILE SOFTWARE DEVELOPMENT

UltraQuest Cloud Server. White Paper Version 1.0

ASP &.NET. Microsoft's Solution for Dynamic Web Development. Mohammad Ali Choudhry Milad Armeen Husain Zeerapurwala Campbell Ma Seul Kee Yoon

Developing a MapReduce Application

Table Of Contents. 1. GridGain In-Memory Database

Modeling Web Applications Using Java And XML Related Technologies

Instructor Özgür ZEYDAN BEU Dept. of Enve. Eng. CIV 112 Computer Programming Lecture Notes (1)

1.1 The Nature of Software... Object-Oriented Software Engineering Practical Software Development using UML and Java. The Nature of Software...

Structure of Presentation. The Role of Programming in Informatics Curricula. Concepts of Informatics 2. Concepts of Informatics 1

Introduction to the Analysis and Management Framework

INTERNET DOMAIN NAME SYSTEM

REGULATIONS FOR THE DEGREE OF BACHELOR OF SCIENCE IN BIOINFORMATICS (BSc[BioInf])

Introduction: Database management system

DeBruin Consulting. Key Concepts of IBM Integration Broker and Microsoft BizTalk

Enterprise SSO Manager (E-SSO-M)

Programming Languages

DIABLO VALLEY COLLEGE CATALOG

Performance Monitoring and Analysis System for MUSCLE-based Applications

Canadian Technology Accreditation Criteria (CTAC) INFORMATION TECHNOLOGY - TECHNOLOGIST Technology Accreditation Canada (TAC)

zen Platform technical white paper

ARCHITECTURAL DESIGN OF MODERN WEB APPLICATIONS

Contents The College of Information Science and Technology Undergraduate Course Descriptions

Real-World Object-Oriented Design Experience for Computer Science Students

Hadoop: A Framework for Data- Intensive Distributed Computing. CS561-Spring 2012 WPI, Mohamed Y. Eltabakh

1. Introduction 1.1 Methodology

Domain modeling: Leveraging the heart of RUP for straight through processing

02-201: Programming for Scientists

Chapter 1: Introduction

Learning outcomes. Knowledge and understanding. Competence and skills

Projectory A Framework for teaching Object Oriented Design and Object Oriented Programming

Web Applications: Overview and Architecture

Automatic Text Analysis Using Drupal

Technical Writing - Software Engineering Life Cycle Review

White Paper: 5GL RAD Development

Symplified I: Windows User Identity. Matthew McNew and Lex Hubbard

How To Improve Performance In A Database

AD-HOC QUERY BUILDER

Acknowledgments. p. 55

Guiding Principles for Modeling and Designing Reusable Services

Automatic generation of fully-executable code from the Domain tier of UML diagrams

Transcription:

Analysis and Design of Software Systems Practical Session 01 System Layering

Outline Course Overview Course Objectives Computer Science vs. Software Engineering Layered Architectures Selected topics in Java Swing Parsing XML file 2

Course Objectives E1 3 E2 1. Planning a new Information System in Engineering methods. One assignment (5%) 2. Functional Approach for A&D Two assignments, 5% each 3. Object-Oriented Approach for A&D Two assignments, 5% each A total of 5 assignments consisting 25% of the course s grade. Test consisting 75% of your grade, OPEN MATERIAL! Please study accordingly. 3

Administration E1 3 E2 My email is guyrap@cs.bgu.ac.il. Use it! Office Hours: Wednesday, 16:00-18:00, 37/304. Assignments are submitted electronically to FTP, in pairs! Please report problems with submission dates as early as possible (that includes students with reservoir duties). Reservoir soldiers I need your release slips, not the invitations. 4

Computer Science stops here. Computer science is no more about computers than astronomy is about telescopes, biology is about microscopes or chemistry is about beakers and test tubes. Science is not about tools, it is about how we use them and what we find out when we do." This quote is actually from Fellows, M.R., and Parberry, I., "SIGACT trying to get children excited about CS", January 1993, Computing Research News. Focus is often about algorithms independent of a particular programming language (or implementation at all ). 5

Software Engineering starts here. Software Engineering (SE) is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software It is also defined as a systematic approach to the analysis, design, assessment, implementation, test, maintenance and reengineering of software, that is, the application of engineering to software. The term software engineering first appeared in 1968, and was meant to provoke thought regarding the perceived "software crisis" at the time. Recommended Viewing: Glenn Vanderburg s Real Software Engineering confreaks.net/videos/282-lsrc2010-real-software-engineering 6

Example CS Problem: Narrow-Shallow-Low-Light Trees with and without Steiner Points Michal Elkin, Shay Solomon SODA'11 Best Student Paper Award, 2011! 7

Example SE Problem: Your senior programmer Alice has called-in sick today. How do you keep the project s progress? And without introducing new errors into the system? Software Engineering occurs when people meet programming.. 8

That does not mean people do both Of course there are computer scientists who consider the engineering side and software engineers who consider the algorithmic side. But in our course we shall focus mainly on engineering. Let s move on to our first example of applying an engineering concept unto software development. 9

System Architecture Architecture High level design of large software systems. Captures the gross structure of a system. Defines software system in terms of components and interactions among those components. Why not write all of our code in a single file? Programmer-friendliness Code readability Flexibility edit or replace parts of the code currently in use. What can we do to further pursue the above objectives? 10

Introducing: Layered Systems A layered system is organized hierarchically; each layer provides services to the layer above it and consumes services from the layer below it. Why layers??? Modularity: Separations of concerns Increased maintainability In a pure layered system: Layers are hidden to all except adjacent layers. 11

Layered Systems (Cont.) In a pure layered system: Layers are hidden to all except adjacent layers. Pure layered system Not pure layered system 12

NOT Layered Systems There is more to layers than the ability to draw separate parts on top of each other. Layers are not a function of just who-uses-what, but are the result of a conscious design decision that allocates software to layers based on considerations such as coupling, cohesion, and likelihood of changes. 13

The Three Layers Architecture On the left: an example implementation of a system devoted to sales. Presentation can be GUI, CLI, forms in a browser Some people distinguish the middle layer into Application Layer (Controller layer queries, UI hooks, etc.) and Domain Layer (Business Logic data classes, algorithms). Data layer can be XML, SQL, Mnesia, etc 14

Presentation (GUI) Layer Contains the software components responsible for presenting the user with an application interface, which reasonably facilitates interaction of the user with the software product. Which tools are you familiar with? 15

Introducing: NetBeans IDE NetBeans is a Java Integrated Development Environment which supports building GUI environments in a very programmer-friendly manner, utilizing SWING. NetBeans employs the GUI that builds a GUI work environment. Unlike in OOP, in this course we expect you to create a Functional GUI but do not emphasize writing it by hand. If this is the first time you re writing Java GUI, this might help you a lot. Final project will demand GUI. http://www.netbeans.org 16

Domain Logic Layer (Application or Business Logic Layer) Provides the services that implement the functionality offered by the application. This layer is the heart of the system (application). During this course we will further elaborate on this layer. The development process in this course is focused on this layer. 17

Persistence layer Provides the services required to ensure the persistence of the data involved in the execution of the application. We will use Extensible Markup Language (XML). Why? 18

Why XML? Plain text document indicating an order for 12 Birdsong Clocks, SKU 244: 19

Why XML? (cont.) An XML document indicating an order for 12 Birdsong Clocks, SKU 244: Which is better?? 20

Why XML? (cont.) XML is more understandable to humans. Given proper names for nodes and attributes, the data s schema is more understandable. XML is more understandable to machines. That is, almost every programming language now ships with an XML parser as part of it s standard library! XML is more generic An XML parser can parse data for many applications. We can easily add nodes and sub-nodes to an XML document, and add more attributes to these nodes the same way we add attributes to our data classes. 21

Library Application The XML file contain information about Library, Books and Magazines. The application read data from XML, and write data to XML again. 22

Library Application: Architecture Presentation Layer MainFrame class Domain Logic Layer Persistence Layer XMLUtilityManagment class XML actiononlibary class Paper class Book class Magazine class Library class DataManipulate class 23

Improvement: Data Mapper The Data Mapper is a layer of software that acts as a mediator between the Domain logic and the Persistence (Data source). Using Data Mapper, the in-memory objects need have no knowledge that there's even a database present. The domain logic (middle layer) will include no SQL interface code, and certainly no knowledge of the database schema. The database schema is always ignorant of the objects that use it. 24

One Last Note: Modeling Tools During the course you will be requested to hand your assignments with diagrams included. Class Diagrams Sequence Diagrams State Machine Diagrams There are many available tools to create these artifacts. We recommend you use Visual Paradigm (license can be downloaded from the website). Direct link (updated 26-10-2011): www.visual-paradigm.com/downloads/vpsuite/vp_suite_windows.exe 25

Summary Layers partitioning is a common practice to separate concerns and increase maintainability. The system normally could be separated to Presentation, Domain logic, and Persistence. The Data Mapper is a layer of software that acts as a mediator between the in-memory objects and the database. Questions? 26