CSC Advanced Object Oriented Programming, Spring Overview

Similar documents
Systems Analysis and Design in a Changing World, Fourth Edition

History of object-oriented approaches

CS487 Midterm Exam Summer 2005

OBJECT ORIENTED SYSTEM DEVELOPMENT Software Development Dynamic System Development Information system solution Steps in System Development Analysis

UNIT-I Introduction of Object Oriented Modeling

Managing Change and Complexity

Architectural Blueprint

Systems Analysis & Design

Incremental development A.Y. 2018/2019

CASE TOOLS LAB VIVA QUESTION

Object-Oriented Systems. Development: Using the Unified Modeling Language

Lecture 13 Introduction to Software Architecture

Architectural Blueprint The 4+1 View Model of Software Architecture. Philippe Kruchten

ITC213: STRUCTURED PROGRAMMING. Bhaskar Shrestha National College of Computer Studies Tribhuvan University

Introduction to Software Engineering

Chapter 1: Programming Principles

PC204. Lecture 5 Programming Methodologies. Copyright 2000 by Conrad Huang and the Regents of the University of California. All rights reserved.

Requirements and Design Overview

Activities Common to Software Projects. Software Life Cycle. Activities Common to Software Projects. Activities Common to Software Projects

*ANSWERS * **********************************

Chapter 1: Principles of Programming and Software Engineering

A STUDY OF OBJECT ORIENTED ANALYSIS AND DESIGN

CSC 330 Object Oriented Software Design. Software Analysis Phase

CSC 330 Object Oriented Software Design Software Analysis Phase Object-Oriented Paradigm Object-Oriented Analysis cont d

Appendix A - Glossary(of OO software term s)

Introduction To Software Development CSC Spring 2019 Howard Rosenthal

Introduction... ix. Chapter 1: Exploring Fundamental Programming Concepts... 1

OBJECT-ORIENTED MODELING AND DESIGN. Introduction

Information Systems. Software Engineering. MCQ - Part 2

Session 8: UML The Unified Modeling (or the Unstructured Muddling) language?

CISC 322 Software Architecture

Software Verification and Validation (VIMMD052) Introduction. Istvan Majzik Budapest University of Technology and Economics

Course 3 7 March

Unit 6 - Software Design and Development LESSON 7 CODE STRUCTURES

Introduction to Object Oriented Analysis and Design

Software Development Methodologies

Object-Oriented and Classical Software Engineering DESIGN 11/12/2017. CET/CSC490 Software Engineering Design CHAPTER 14. Stephen R. Schach.

Software Development Methodologies

CS2353 OBJECT ORIENTED ANALYSIS AND DESIGN UNIT- I

Lab Manual. Object Oriented Analysis And Design. TE(Computer) VI semester

System Development Life Cycle Methods/Approaches/Models

Chapter 4. Sahaj Computer Solutions Object Oriented Systems Development 1

Object-Oriented Technology. Rick Mercer

Objectives. Connecting with Computer Science 2

Designing Component-Based Architectures with Rational Rose RealTime

CHAPTER 1. Topic: UML Overview. CHAPTER 1: Topic 1. Topic: UML Overview

Programmazione. Prof. Marco Bertini

Lecture Notes UML UNIT-II. Subject: OOAD Semester: 8TH Course No: CSE-802

SRI VENKATESWARA COLLEGE OF ENGINERRING AND TECHNOLOGY THIRUPACHUR,THIRUVALLUR UNIT I OOAD PART A

The software lifecycle and its documents

CSC Advanced Object Oriented Programming, Spring Specification

Software Processes. Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 1

This tutorial also elaborates on other related methodologies like Agile, RAD and Prototyping.

1: Software Development and.net. An approach to building software

The Unified Modeling Language User Guide

1. Software Systems Complexity, OO Paradigm, UML

Software Engineering from a

The Process of Software Architecting

Introduction to Software Engineering (ESE : Einführung in SE) Prof. O. Nierstrasz

Software Engineering Lifecycles. Controlling Complexity

Chapter 4 Objectives

Object Model. Object Orientated Analysis and Design. Benjamin Kenwright

Requirement Analysis

1. i. What are the 3 major components of a information system and show their relationship input output

SOFTWARE LIFE-CYCLE PROCESSES From Waterfall to Extreme Programming

Introduction to the Object Model

What s a BA to do with Data? Discover and define standard data elements in business terms

Darshan Institute of Engineering & Technology for Diploma Studies Rajkot Unit-1

LESSONS LEARNED FROM THE INDIANA UNIVERSITY ELECTRONIC RECORDS PROJECT. How to Implement an Electronic Records Strategy

Object-Oriented Analysis Techniques Coad s OOA Technique Short History Terminological Comparison Postscript and Remarks

Review of Basic Software Design Concepts. Fethi Rabhi SENG 2021

UNIT-I CHAPTER-1. An Overview of Object Oriented Systems Development

Week 9 Implementation

Reducing the costs of rework. Coping with change. Software prototyping. Ways to Cope with change. Benefits of prototyping

Lecture 17: (Architecture V)

CHAPTER 9 DESIGN ENGINEERING. Overview

Rational Software White paper

INTERACTION ARCHITECTURAL MODELING. Lecture 9 Interaction Architectureal Modeling

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING CS SOFTWARE ENGINEERING

Software Process. Software Process

SOFTWARE LIFE-CYCLE MODELS 2.1

Software Engineering (CSC 4350/6350) Rao Casturi

MCQS for Midterm cs504 Combined by Anees Ahmad

Tutorial 1 Answers. Question 1

Software Development. Modular Design and Algorithm Analysis

VETRI VINAYAHA COLLEGE OF ENGINEERING AND TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

Lecture 2 Software Engineering and Design

Lecture 2: Software Engineering (a review)

CMSC 435: Software Engineering Section 0201

ADD 3.0: Rethinking Drivers and Decisions in the Design Process

The Unified Modeling Language (UML)

Introduction to UML. (Unified Modeling Language)

Topic 01. Software Engineering, Web Engineering, agile methodologies.

INTERNAL ASSESSMENT TEST III Answer Schema

A Tutorial on Agent Based Software Engineering

BDSA Introduction to OOAD. Jakob E. Bardram

Programming Languages and Program Development

VO Software Engineering

Software Architectures

Ch 1: The Architecture Business Cycle

Transcription:

CSC 520 - Advanced Object Oriented Programming, Spring 2018 Overview

Brief History 1960: Simula first object oriented language developed by researchers at the Norwegian Computing Center. 1970: Alan Kay and his research group developed a computer named Dynabook and the first pure object-oriented programming language Smalltalk, for programming the Dynabook. 1980s: Grady Booch published a paper titled Object Oriented Design that presented the programming language Ada.

Object-Oriented Programming (OOP) a method of implementation in which programs are organized as cooperative collections of objects, each of which represents an instance of some class, and whose classes are all members of a hierarchy of classes united via inheritance relationships Grady Booch

Features of Object-Oriented Programming Bottom-up approach in program design Programs organized around objects, grouped in classes Focus on data and methods that operate on the object s data Interaction between objects through message passing Reusability of design through creation of new classes by adding features to existing classes

Object-Oriented Analysis (OOA) Object-oriented analysis is a method of analysis that examines requirements from the perspective of the classes and objects found in the vocabulary of the problem domain. Grady Booch

Tasks in Object-Oriented Analysis Identifying objects Organizing the objects by creating an object model diagram Defining the attributes of objects Defining the behavior of objects Describing how the objects interact

Object-Oriented Design (OOD) a method of design encompassing the process of object-oriented decomposition and a notation for depicting both logical and physical as well as static and dynamic models of the system under design. Grady Booch

Object-Oriented Design (OOD) Object-Oriented Design involves implementation of the conceptual model produced during object-oriented analysis. The analysis model, which is technology-independent, is mapped to how the system can be built with concrete technologies The implementation details usually include: Restructuring the class data (if necessary) Implementation of the methods Implementation of the control Implementation of the associations

Software Development Methodology A software development methodology is a repeatable process that can be followed through the software development lifecycle. A software methodology should specify what should be produced as the process is followed. A software methodology usually includes techniques for resource management, planning, scheduling and other management tasks. Most software development methodologies are designed for teams of developers producing large amounts of software.

Benefits of Software Development Methodologies Can help impose discipline on the coding process. Can increase understanding of the problem and improve the quality of the solution. Can help find conceptual and practical mistakes before they are coded. Can help produce code that is more extensible, more reusable, and easier to debug.

Benefits of Methodologies At Large Scale Documentation Reduced latency Improved chances to deliver on time and within budget Better communication between users, sales people, managers, and developers Repeatability

Issues Methodologies Address Planning Scheduling Resourcing Workflows Activities Roles Artifacts Education

Classical Phases in Software Production Requirements Analysis Design Specification Implementation Testing Deployment Maintenance

Requirements Phase Requirements capture is about discovering what we are to achieve. It has two main aspects: Business modeling: understanding the context in which the software will operate. System requirements modeling (functional specification): deciding the capabilities the software will have. Questions: What is the context? What are we trying to achieve?

Analysis Phase Analysis is understanding and verifying the relevant entities, their properties, and their inter-relationships. Questions: What entities are we dealing with? How can we be sure we have the correct entities?

Design Phase Design is making decisions about the software and how it will be deployed. System design involves breaking the system into logical subsystems and physical subsystems, deciding how subsystems will communicate, and choosing the technologies. Subsystem design is about deciding how to make a logical subsystem into effective, efficient, and feasible code. Questions: How are we going to solve the problem? What hardware and software will the finished system need? How are we going to implement the solution?

Specification Phase A specification is an unambiguous description of the way the components of the software system should be used and how they behave if used properly. Questions: What rules govern the interfaces between system components? Can we remove ambiguity and ensure correctness?

Implementation Phase Implementation is about writing the code form the subsystems. Questions: How can we code the components to meet the specification?

Testing Phase Testing is ensuring that the system requirements are met by the implementation. Questions: Does the finished system satisfy the requirements?

Deployment Phase Deployment is concerned with getting the software and hardware to the end users, along with documentation and training materials. Questions: What do system administrators have to do? How can we educate the end users?

Maintenance Phase Maintenance involves finding and fixing bugs after the system is live. Questions: Can we find and fix faults? Can we improve the system?

The Waterfall Methodology The waterfall methodology originated in manufacturing and construction industries. In the waterfall methodology, each phase is completed and verified before the next phase is started. This is oftentimes unrealistic because software systems do not behave like physical systems.

Where the Waterfall Methodology is Useful When repeating a specific kind of development with only minor differences. As a framework for learning different techniques used in software development. As a single pass through a spiral methodology. As a framework for an iterative methodology. For the quick development of small projects with small numbers of developlers.

Examples of Small Projects Software Prototype: an experiment built to try out functionality of the finsihed product. Production prototype: similar to a prototype, but some code is retained. Proof-of-concept: a project designed to demonstrate the feasibility of some technology. Rapid Application Development (RAD): assembly of small systems using object-oriented techniques.

Other Software Methodologies Spiral: perform the sequence of phases multiple times Iterative: revisit previous phases with information obtained from later phases Incremental: deliver versions with increasing functionality Combined: use elements of each of the previous methodologies

Object-Oriented Methodologies Object-oriented methodologies typically address: The philosophy behind each phase The workflows and individual activities within each phase The artifacts that should be produced Dependencies between the artifacts Notations for the different kinds of artifacts The need to model static structure and dynamic behavior

Reasons to Employ Development Tools Traceability Change History Multiuser access control Reduced redundancy Consistency checking Network operation Testing artifacts for correctness

The Unified Modeling Language (UML) The Unified Modeling Language (UML) is a standard way to visualize the design of a system. Example UML diagrams per phase: Requirements Activity diagrams Communication diagrams Use case diagrams Analysis Class diagrams Communication diagrams Design Deployment diagrams Class diagrams Sequence diagrams