1980s: 1990s: OO design: added inheritance, multiple inheritance, and polymorphism to ADT.

Similar documents
Notes on The Sciences of the Artificial Adapted from a shorter document written for course (Deciding What to Design) 1

Implementing a tool to Support KAOS-Beta Process Model Using EPF

PROCESS USE CASES: USE CASES IDENTIFICATION

Introduction to Modeling and Simulation. Conceptual Modeling. OSMAN BALCI Professor

GACE Computer Science Assessment Test at a Glance

Operational Knowledge Management: a way to manage competence

Designing a Rubric to Assess the Modelling Phase of Student Design Projects in Upper Year Engineering Courses

Software Maintenance

On the Combined Behavior of Autonomous Resource Management Agents

Knowledge Elicitation Tool Classification. Janet E. Burge. Artificial Intelligence Research Group. Worcester Polytechnic Institute

ReinForest: Multi-Domain Dialogue Management Using Hierarchical Policies and Knowledge Ontology

Identifying Novice Difficulties in Object Oriented Design

Is operations research really research?

Specification and Evaluation of Machine Translation Toy Systems - Criteria for laboratory assignments

A Pipelined Approach for Iterative Software Process Model

Emergency Management Games and Test Case Utility:

Parallel Evaluation in Stratal OT * Adam Baker University of Arizona

Chamilo 2.0: A Second Generation Open Source E-learning and Collaboration Platform

How to set up gradebook categories in Moodle 2.

PESIT SOUTH CAMPUS 10CS71-OBJECT-ORIENTED MODELING AND DESIGN. Faculty: Mrs.Sumana Sinha No. Of Hours: 52. Outcomes

Assessment. the international training and education center on hiv. Continued on page 4

Requirements-Gathering Collaborative Networks in Distributed Software Projects

USER ADAPTATION IN E-LEARNING ENVIRONMENTS

CS 1103 Computer Science I Honors. Fall Instructor Muller. Syllabus

On-Line Data Analytics

Teaching Algorithm Development Skills

ACADEMIC AFFAIRS GUIDELINES

Emma Kushtina ODL organisation system analysis. Szczecin University of Technology

Software Development: Programming Paradigms (SCQF level 8)

Problem and Design Spaces during Object-Oriented Design: An Exploratory Study

Introduction to Simulation

UML MODELLING OF DIGITAL FORENSIC PROCESS MODELS (DFPMs)

phone hidden time phone

Team Love <3. Because it s all about heart.

AGENDA LEARNING THEORIES LEARNING THEORIES. Advanced Learning Theories 2/22/2016

CEFR Overall Illustrative English Proficiency Scales

Embedded Real-Time Systems

An Open Framework for Integrated Qualification Management Portals

Ontological spine, localization and multilingual access

The CTQ Flowdown as a Conceptual Model of Project Objectives

Objects Identification in Object-Oriented Software Development - A Taxonomy and Survey on Techniques

Document number: 2013/ Programs Committee 6/2014 (July) Agenda Item 42.0 Bachelor of Engineering with Honours in Software Engineering

An Interactive Intelligent Language Tutor Over The Internet

Evaluation of Usage Patterns for Web-based Educational Systems using Web Mining

Evaluation of Usage Patterns for Web-based Educational Systems using Web Mining

A Neural Network GUI Tested on Text-To-Phoneme Mapping

Patterns for Adaptive Web-based Educational Systems

An OO Framework for building Intelligence and Learning properties in Software Agents

Computerized Adaptive Psychological Testing A Personalisation Perspective

Learning Methods for Fuzzy Systems

DYNAMIC ADAPTIVE HYPERMEDIA SYSTEMS FOR E-LEARNING

AQUA: An Ontology-Driven Question Answering System

Designing a Computer to Play Nim: A Mini-Capstone Project in Digital Design I

Kamaldeep Kaur University School of Information Technology GGS Indraprastha University Delhi

Formative Assessment in Mathematics. Part 3: The Learner s Role

Wheelchair Rugby. The performance of skills and techniques in isolation/unopposed situations

Infrared Paper Dryer Control Scheme

CREATING SHARABLE LEARNING OBJECTS FROM EXISTING DIGITAL COURSE CONTENT

What is a Mental Model?

Protocol for using the Classroom Walkthrough Observation Instrument

Using Task Context to Improve Programmer Productivity

Academic literacies and student learning: how can we improve our understanding of student writing?

Organizational Knowledge Distribution: An Experimental Evaluation

Knowledge based expert systems D H A N A N J A Y K A L B A N D E

MULTIMEDIA Motion Graphics for Multimedia

Litterature review of Soft Systems Methodology

Teaching-Material Design Center: An ontology-based system for customizing reusable e-materials

WSU Five-Year Program Review Self-Study Cover Page

CS Course Missive

Radius STEM Readiness TM

LITERACY ACROSS THE CURRICULUM POLICY

MINISTRY OF EDUCATION

A cognitive perspective on pair programming

ADVANCED MACHINE LEARNING WITH PYTHON BY JOHN HEARTY DOWNLOAD EBOOK : ADVANCED MACHINE LEARNING WITH PYTHON BY JOHN HEARTY PDF

Applying Fuzzy Rule-Based System on FMEA to Assess the Risks on Project-Based Software Engineering Education

Computer Science (CS)

The use of mathematical programming with artificial intelligence and expert systems

Learning Object-Oriented Programming in Python: Towards an Inventory of Difficulties and Testing Pitfalls

Integrating simulation into the engineering curriculum: a case study

Abstractions and the Brain

Towards a Collaboration Framework for Selection of ICT Tools

Engagement of Teaching Intensive Faculty. What does Engagement mean?

21 st Century Skills and New Models of Assessment for a Global Workplace

COUNSELLING PROCESS. Definition

Seminar - Organic Computing

Effective Supervision: Supporting the Art & Science of Teaching

Introduction and Motivation

Lecture 1: Machine Learning Basics

University of Groningen. Systemen, planning, netwerken Bosman, Aart

"On-board training tools for long term missions" Experiment Overview. 1. Abstract:

MARKETING MANAGEMENT II: MARKETING STRATEGY (MKTG 613) Section 007

Process Assessment Issues in a Bachelor Capstone Project

Human Emotion Recognition From Speech

DIGITAL GAMING & INTERACTIVE MEDIA BACHELOR S DEGREE. Junior Year. Summer (Bridge Quarter) Fall Winter Spring GAME Credits.

FUZZY EXPERT. Dr. Kasim M. Al-Aubidy. Philadelphia University. Computer Eng. Dept February 2002 University of Damascus-Syria

OCR LEVEL 3 CAMBRIDGE TECHNICAL

How to Read the Next Generation Science Standards (NGSS)

Learning or lurking? Tracking the invisible online student

Blended E-learning in the Architectural Design Studio

Customised Software Tools for Quality Measurement Application of Open Source Software in Education

Transcription:

1980s: OO design: added inheritance, multiple inheritance, and polymorphism to ADT. 1990s: Architecture Patterns Frameworks Kits etc. In process added complexity and increased some types of connectivity. Lots of claimed advantages -- so far empirical evaluation is not supporting them well.

Software Design Principles Design is a creative, problem-solving activity. No recipe for doing it - always need some type of "magic". Quality and expertise of designers is determinant for success. Simon: An expert has over 50,000 chunks of domain knowledge at hand. Solving a problem involves mapping into knowledge available. The larger this knowledge and the more accessible, the more successful the process will be.

Software Design Principles (2) Brooks, Curtis: Successful software development often depends on small number of exceptional designers who "think on a system level." Curtis: Such people might not be particularly good programmers. Design problem: How to decompose system into parts each with a lower complexity than system as a whole while minimizing interaction between the parts such that the parts together solve the problem. No universal way of doing this.

Four Primary Design Principles 1. Separation of concerns Deal with separate aspects of a problem separate. 2. Abstraction Identify important aspects of a phenomenon and ignore details that are irrelevant at this stage. Hierarchical abstraction: build hierarchical layers of abstraction Procedural (functional) abstraction Data abstraction Control abstraction (abstract from precise sequence of events handled, e.g., nondeterminacy)

Four Primary Design Principles (2) 3. Simplicity Emphasis on software that is clear, simple, and therefore easy to check, understand, and modify. 4. Restricted visibility Locality of information

General Software Design Concepts Implementations of the general principles Decomposition Can decompose with respect to time order, data flow, logical groupings, access to a common resource, control flow, or some other criterion. Functional decomposition seems to be a natural way for people to solve problems as evidenced by its wide use. Top-down decomposition: start at high levels of abstraction and progress to levels of greater and greater detail. Bottom-up: form and layer groups of instruction sequences until work way up to a complete solution.

General Software Design Concepts (2) Decomposition (con t.) Iterative decision making process: List difficult decisions and decisions likely to change Design a module specification to hide each such decision Break module into further design decisions. Continue refining until all design decisions hidden in a module Program Families: design for flexibility, not generality

General Software Design Concepts (3) Virtual Machines A module provides a virtual machine: a set of operations that can be invoked in a variety of ways and orders to accomplish a variety of tasks. Don t think of systems in terms of components that correspond to steps in processing. Do provide a set of virtual machines that are useful for writing many programs. Information Hiding Each design unit hides internal details of processing activities. Design units communicate only through well-defined interfaces. Each design unit specified by as little information as possible If internal details change, client units should need no change

General Software Design Concepts (4) Modularity Separation of concerns: 1. Deal with details of each module in isolation (ignoring details of other modules) 2. Deal with overall characteristics of all modules and their relationships in order to integrate them into a coherent system. Base on hierarchy and abstraction: Abstraction handled through information hiding Hierarchy by defining uses and is-composed-of relations Minimize connectivity

General Software Design Concepts (5) Modularity (con t.) Sample things to modularize and encapsulate: abstract data types algorithms (e.g., sort) input and output formats processing sequence machine dependencies (e.g., character codes) policies (e.g., when and how to do garbage collection) external interfaces (hardware and software) Benefits: Allows understanding each part of a system separately Aids in modifying system May confine search for a malfunction to a single module.

Design Methods Set of guidelines, heuristics, and procedures on how to go about designing a system. Usually offer a notation to express result of design process. Trying to provide a systematic means for organizing the design process and its products. Design method may be based on: Functional decomposition Data flow Data structures Control flow Objects Vary in degree of prescriptiveness

David Budgen, Software Design Methods: Life Belt or Leg Iron (IEEE Software, Sept/Oct. 99) Will the adoption of a design method help the software development process (be a "life belt") or is there significant risk that its use will lead to suboptimum solution (be a "leg iron")? Argument: Two general design characteristics: 1. "Wicked" nature of any design process: Adopting a particular solution approach to a problem may make task of solving it more intractible, i.e., the design process is not neutral. 2. Expert designers engage in opportunistic behavior: As solution s form emerges, problem solving strategy is adapted to meet new characteristics that are revealed, i.e., expert designers do not follow a single method.

These challenge the belief that good software engineering design solutions will most likely come from systematically following a prescriptive procedural method. 60s and 70s: people recognized that a systematic approach to development needed to cope with large-scale projects. Needed a way to promulgate and encourage the adoption of desirable practices. A procedural form (do this, then do this, then this...) lent itself to this role. Also easily conveyed through books and courses, easy to teach, easy to write exam questions. Yourdan, Michael Jackson, etc. Met some real needs. By late 70s, use of procedural form was entrenched.

But some good practices that did not lend themselves to such a form, e.g., information hiding (for which no satisfactory form of procedural development practice has yet been devised). Reaction in 80s to shortcomings was to "pile more on" More diagrammatical forms More models More complexity "Arguably, much of this complexity stems from the paradox of object orientation, which seems to provide excellent paradigms for analysis and implementation, but present major difficulties for the designer." In 90s, attempts to develop other paradigms for transferring design knowledge, e.g., patterns and architectures.

Peculiarity of software design: extent to which commercial interests have dominated the codifying of associated practices More widely known design methods have been developed and marketed largely by consultants and commercial organizations. Not true for requirements or testing Suggests a real need for design skills, but does not create an objective forum for evaluation. Conclusions: Life belt has become waterlogged and acting more like a leg iron. Need to stop pretending that software design is largely a matter of following a set of well-defined activities. Recognize it as a creative process that requires us to develop design skills needed to build software systems of the future. How do we identify, grow, and encourage those talents needed for the great designers who will create elegant and effective solutions to problems?