Complexity Time: 2 Hours.

Slides:



Advertisements
Similar presentations
ARCHITECTURES FOR ARTIFICIAL INTELLIGENCE SYSTEMS
Advertisements

Object-Oriented Software Development CS 3331 Fall 2009.
Unified Modeling Language
1/31 CS 426 Senior Projects Chapter 1: What is UML? Chapter 2: What is UP? [Arlow and Neustadt, 2005] January 22, 2009.
1 CS 426 Senior Projects Chapter 1: What is UML? Chapter 2: What is UP? [Arlow and Neustadt, 2002] January 26, 2006.
Course Instructor: Aisha Azeem
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Introduction to Software Engineering CEN 4010.
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
Objects and Components. The adaptive organization The competitive environment of businesses continuously changing, and the pace of that change is increasing.
An Introduction to Software Architecture
CSCI-383 Object-Oriented Programming & Design Lecture 1.
SOFTWARE DESIGN.
SOFTWARE SYSTEMS DEVELOPMENT 4: System Design. Simplified view on software product development process 2 Product Planning System Design Project Planning.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
Approaching a Problem Where do we start? How do we proceed?
1 Introduction to Software Engineering Lecture 1.
OOAD Unit – I OBJECT-ORIENTED ANALYSIS AND DESIGN With applications
Chapter 6 CASE Tools Software Engineering Chapter 6-- CASE TOOLS
Software Prototyping Rapid software development to validate requirements.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
PC204 Lecture 5 Programming Methodologies Copyright 2000 by Conrad Huang and the Regents of the University of California. All rights reserved.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
21/1/ Analysis - Model of real-world situation - What ? System Design - Overall architecture (sub-systems) Object Design - Refinement of Design.
CHPATER Agenda Software Development  Challenges of Software Development Software Engineering Software Development Life Cycle  Water-fall.
1 Software Requirements Descriptions and specifications of a system.
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
 The Object Oriented concepts was evolved for solving complex problems. Object- oriented software development started in the 1980s. Object-oriented design.
Object Oriented Systems Design
Chapter 2 Object-Oriented Paradigm Overview
Interface Concepts Modeling Core Team
Pragmatics 4 Hours.
Prototyping in the software process
CSCE 548 Secure Software Development Risk-Based Security Testing
Software Prototyping.
What is Wrong with Models?
Software Requirements
Course Outcomes of Object Oriented Modeling Design (17630,C604)
The Development Process of Web Applications
What is UML? What is UP? [Arlow and Neustadt, 2005] October 5, 2017
Unified Modeling Language
DATA MODELS.
J. Michael, M. Shing M. Miklaski, J. Babbitt Naval Postgraduate School
Iterative design and prototyping
Software Engineering (CSI 321)
Abstract descriptions of systems whose requirements are being analysed
Software Design Methodology
HCI in the software process
The design process Software engineering and the design process for interactive systems Standards and guidelines as design rules Usability engineering.
The design process Software engineering and the design process for interactive systems Standards and guidelines as design rules Usability engineering.
Software Processes.
Tools of Software Development
World-Views of Simulation
Chapter 6 – Architectural Design
Need for the subject.
DESIGNING YOUR SYSTEM.
Chapter 5 Architectural Design.
HCI in the software process
An Introduction to Software Architecture
4+1 View Model of Software Architecture
Algorithms and Problem Solving
HCI in the software process
Automated Analysis and Code Generation for Domain-Specific Models
4+1 View Model of Software Architecture
Chapter 5 Architectural Design.
Human Computer Interaction Lecture 14 HCI in Software Process
Object-Oriented Analysis and Design
Chapter 6: Architectural Design
UML  UML stands for Unified Modeling Language. It is a standard which is mainly used for creating object- oriented, meaningful documentation models for.
DESIGN CONCEPTS AND PRINCIPLES
Presentation transcript:

Complexity Time: 2 Hours

Agenda The Inherent Complexity of Software On Designing Complex Systems

Structure of Complex Systems Structure of a Personal Computer Structure of Plants and Animals Structure of Matter

The Inherent Complexity of Software Defining Software Complexity Not all software are complex. Limited purpose, and Short life time are not complex. Can be thrown rather than replacing or maintaining them. Industrial-strength software are Complex. Driven by events in physical world, limitations of resources, maintaining integrity of thousands of records, concurrent updates, control of real-world entities.

The Inherent Complexity of Software (Continued) Such software tend to have: Long life span Dependence of multiple users on such systems. The characteristic of Industrial-strength software is that it is intensely difficult for an individual developer to understand the preciseness of the design. Complexity can be mastered but we can never make it go away.

Most Complex Software The Hurd micro kernel The Apollo navigation system. A complete AI system (Futuristic)

Why software is Inherently Complex Complexity derives from four elements: The complexity of the problem domain The difficulty of managing the development process The flexibility possible through software The problems of characterizing the behavior of discrete systems.

The Complexity of the Problem Domain Raw functionality + non-functional requirements (usability, performance, cost, reliability) The external complexity is due to the communication gap. (lack of expertise in the domain) The mechanism to take requirements is usually loads of text and diagrams. Requirements change during development process because of the software development project changes rules of the problem. Solution: See design documents and prototypes. Maintenance, Evolution and Preservation.

The Difficulty of Managing the Development Process

Shield users from vast external complexities, provide illusion of simplicity. Less code, reusing frameworks of existing design and code. Multiple modules leading to multiple developers leading to more complex communication and difficult coordination. Management challenge is to maintain a unity and integrity of design.

The Flexibility Possible through Software Developer is free to use any kind of abstraction required for software. Construction industry, uniform building codes and standards for quality of raw materials. Few standards exist in the software industry and hence it is a labour-intensive business.

The Problems of Characterizing the Behaviour of Discrete Systems Present state of the system is defined by large number of variables, their current values, current addresses and calling stack of the each process. If system is designed using a continuous function then we say that small changes in input results in small change in output. Behaviour in one part of the system should have minimum impact on the behaviour of the another. External events to software has a potential of placing the system in to new state and mapping to this state is not deterministic.

Rise in software-related failures in complex systems. Vigorous testing is done, but exhaustive testing is not possible, because modeling the behaviour of a complex system is difficult.

On Designing Complex Systems Engineering as a Science and Art As an artist when the task is to design an entirely new system (Such as Reactive systems and Systems for command and control) As an scientist when requirements stress the software technology in multiple dimensions. In large library of reusable components, software engineer must assemble these in innovative ways.

The Meaning of Design Design provides path from requirements to implementation. Purpose of the design is to construct a system that: Satisfies a given functional specification Conforms to limitations of the target medium Meets implicit and explicit requirements on performance and resource usage Satisfies implicit and explicit design criteria Satisfies restrictions on the design process itself (Code length, cost, tools)

The Importance of Model Building Each model in a system, describes the specific aspect of the system under construction. Often we need more than one kind of model to describe the system properties. Example: When designing a PC, Component model, Physical layout, static and dynamic connections, timing diagrams are used.

The Elements of Software Design Methodologies Design of software systems involve an incremental and iterative approach. Design methodologies can be classified into 3 categories: Top-down structured approach Data-driven approach Object-oriented approach Despite differences, they have common elements: Notation (language for expressing each model), Process (activities for orderly construction) and Tools (eliminates tedium in model building and enforces rules)

The Models of Object-Oriented Development Object-oriented analysis and design leads to object- oriented decomposition. Software are resilient to change. Correctness of the software because of separation of state space. Reduces risks inherent in developing complex systems.