Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

MicroKernel Pattern Presented by Sahibzada Sami ud din Kashif Khurshid.
ARCHITECTURES FOR ARTIFICIAL INTELLIGENCE SYSTEMS
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Object-Oriented Software Construction Bertrand Meyer 2nd ed., Prentice Hall, 1997.
1 Software Design Introduction  The chapter will address the following questions:  How do you factor a program into manageable program modules that can.
What is Software Design?  Introduction  Software design consists of two components, modular design and packaging.  Modular design is the decomposition.
CS 501: Software Engineering Fall 2000 Lecture 16 System Architecture III Distributed Objects.
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
C++ fundamentals.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
The Design Discipline.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
HW/SW/FW Allocation – Page 1 of 14CSCI 4717 – Computer Architecture CSCI 4717/5717 Computer Architecture Allocation of Hardware, Software, and Firmware.
CMSC 345 Fall 2000 Unit Testing. The testing process.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
Chapter 6 Operating System Support. This chapter describes how middleware is supported by the operating system facilities at the nodes of a distributed.
An Introduction to Software Architecture
CSE 303 – Software Design and Architecture
Design patterns. What is a design pattern? Christopher Alexander: «The pattern describes a problem which again and again occurs in the work, as well as.
Ceg860 (Prasad)L6MR1 Modularity Extendibility Reusability.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 09. Review Introduction to architectural styles Distributed architectures – Client Server Architecture – Multi-tier.
OBJECT ORIENTED SYSTEM ANALYSIS AND DESIGN. COURSE OUTLINE The world of the Information Systems Analyst Approaches to System Development The Analyst as.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
SOFTWARE SYSTEMS DEVELOPMENT 4: System Design. Simplified view on software product development process 2 Product Planning System Design Project Planning.
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
Silberschatz, Galvin and Gagne  2002 Modified for CSCI 399, Royden, Operating System Concepts Operating Systems Lecture 7 OS System Structure.
Drexel University CS 451 Software Engineering Winter Yuanfang Cai Room 104, University Crossings
Large Scale Software Systems Derived from Dr. Fawcett’s Notes Phil Pratt-Szeliga Fall 2010.
Systems Analysis and Design in a Changing World, 3rd Edition
Design Concepts and Principles Instructor: Dr. Jerry Gao.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
9 Systems Analysis and Design in a Changing World, Fourth Edition.
Computing and SE II Chapter 9: Design Methods and Design Models Er-Yu Ding Software Institute, NJU.
1 CMPT 275 High Level Design Phase Modularization.
SOFTWARE DESIGN. INTRODUCTION There are 3 distinct types of activities in design 1.External design 2.Architectural design 3.Detailed design Architectural.
University of Toronto at Scarborough © Kersti Wain-Bantin CSCC40 system architecture 1 after designing to meet functional requirements, design the system.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
February 8, 2006copyright Thomas Pole , all rights reserved 1 Lecture 3: Reusable Software Packaging: Source Code and Text Chapter 2: Dealing.
From the customer’s perspective the SRS is: How smart people are going to solve the problem that was stated in the System Spec. A “contract”, more or less.
Software Design Derived from Dr. Fawcett’s slides CSE784 – Software Studio Fall 2009.
OBJECT-ORIENTED TESTING. TESTING OOA AND OOD MODELS Analysis and design models cannot be tested in the conventional sense. However, formal technical reviews.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
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.
Design Concepts ch-8
Appendix 1 - Packages Jim Fawcett copyright (c)
CSE691 Software Models and Analysis.
Software Design.
7. Modular and structured design
Dependency Analysis Use Cases
The Development Process of Web Applications
Chapter ? Quality Assessment
Lecture 1: Introduction to JAVA
Software Design Mr. Manoj Kumar Kar.
Part 3 Design What does design mean in different fields?
Software Quality Engineering
Dependency Analysis Use Cases
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Software models - Software Architecture Design Patterns
Software Engineering with Reusable Components
An Introduction to Software Architecture
Chapter 3 Software Architecture and Specification
Software Architecture
Presentation transcript:

Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009

Software Issues: Overview  Definitions  Software Design Objectives Overview Software Quality Deal with Complexity Management of Change Software Reuse Design in the Application Domain  Conclusions

Definitions  Unit – Smallest encapsulated piece of processing (function, method, procedure)  Information Cluster – A set of public and private units used for every access to hidden data with: Complex structure Sensitive Security Device Dependence  Class – A pattern for an information cluster providing declarations of types and accessibility of units and data in instances of a class  Object – An instance of a class

Definitions  Module – An implementation of an information cluster A single file in C#. Two files in C or C++ Structures functions and data into a public interface and a private implementation  Program – A set of modules which can be compiled and linked into one execution image  Software System – A collection of cooperating programs to achieve some goal May share data and/or resources

Software Design Objectives  Develop high quality software: Correct, Robust, Extendible and has reasonable performance  Reuse software components Use software again without modification  Manage change When changing one component we want to minimize effects on other components  Deal with complexity Support a hierarchy of layers and the partitioning of software into relatively independent components

Software Design Objectives  Support Software Design in the Application Domain Design in terms of processing activities rather than computer activities computer platform compiler application designer source code

Objectives: Software Quality  Correctness Program exactly performs in accordance to it’s specifications  Robustness Program can function under abnormal conditions on: Inputs, outputs, data transformations, environment  Extendibility Program can be adapted to meet other specifications

Objectives: Software Quality  Reusability Component can be reused without modification for new application  Compatibility Component can be combined, without modification, with other components  Performance Use of platform resources and elapsed time to complete task is as small as practical

Software Quality Factors: Assertions  Correctness Programs should be composed of small, relatively independent, functions and modules  Robustness Use encapsulation to trap errors and keep them from propagating throughout the system  Extendibility Compose programs of nearly independent modules which can be augmented with expanded functions and data records

Software Quality Factors: Assertions  Reusability Implementation details should be hidden behind simple, fixed and easily understood public interfaces  Compatibility Public interfaces should be well designed, providing standard sockets used to connect to other components  Performance Increasing modularity often diminishes performance due to overhead of passing data though public interfaces and the invocation of several function call layers

Objectives: Deal with Complexity  A 40 million SLOC operating system such as Windows XP is so complex that not one person can understand the entire thing.  It requires expert knowledge of diverse fields: Hardware interaction Protocol standards such as  file systems  networking  media Window managers Custom compilers Process scheduling Concurrency  Other large systems require knowledge of a complex application domain For example, medical imaging requires expert knowledge of physics and mathematics and numerical methods

Objectives: Deal with Complexity  Building large systems like an operating system or medical imaging system require consummate knowledge of the application domain and a though understanding of the platform and mastery of powerful but complex tools  That’s the easy part!  The hard part is to conceive, structure, design, implement and test a system so complex that it requires 500 person years to complete and yet achieve conceptual integrity

Dealing with Complexity: Modularity  The purpose of a module or class is to implement a small, simple, logical model  Modularization Purpose: Build a software system out of cohesive, reliable modules  Modularization consists of dividing a program into modules which can be compiled separately

Objectives: Management of Change  Changes occur in all phases of software development Analysis Design Implementation Integration Test  Changes occur due to: Instability of requirements Inconsistencies of interfaces Latent errors in coding Failure to satisfy performance and functional requirements  With modular design and encapsulation Changes do not have ripple effects

Objectives: Software Reuse  Hardware reuse has been widely accomplished Standard integrated circuits: multiplexors, ALUs, processors, memory, … Standard Boards: processor boards, communication boards  Reuse has not been nearly as successful in the software industry Reuse: Operating Systems, Compilers, Standard Libraries Most application code developed from scratch With Object Oriented Design we can build objects nearly equivalent to software integrated circuits

Objectives: Design in the Application Domain  Modules and Classes model logical behavior of real world entities  Internal complexity is hidden in private implementation  Names and behaviors of modules and classes should be based on: The application model (top level components) Specifics of a solution model (bottom level components)

Conclusions  Use modular structure for all but the simplest programs supports developing correct software  Keep functions and modules small and relatively independent supports correctness and extensibility  Encapsulate processing details behind public interfaces supports extensibility and robustness

Conclusions  Make public interfaces as simple and understandable as possible Supports software reuse  Make the interface conform to some to some abstraction (e.g. sales account) Choose names of public functions to support the abstraction Make processing support what a client would expect of the abstraction  Document the public interface in the source code Supports software reuse

References  Objectives: Software Quality slide adapted from: Object Oriented Software Construction, Bertrand Meyers, Prentice Hall, 1988