Presentation is loading. Please wait.

Presentation is loading. Please wait.

Complexity Time: 2 Hours.

Similar presentations


Presentation on theme: "Complexity Time: 2 Hours."— Presentation transcript:

1 Complexity Time: 2 Hours

2 Agenda The Inherent Complexity of Software
On Designing Complex Systems

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

4 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.

5 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.

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

7 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.

8 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.

9 The Difficulty of Managing the Development Process

10 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.

11 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.

12 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.

13 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.

14 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.

15 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)

16 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.

17 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)

18 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.


Download ppt "Complexity Time: 2 Hours."

Similar presentations


Ads by Google