Software Design Principles and Guidelines
|
|
|
- Justin Williams
- 10 years ago
- Views:
Transcription
1 Design Principles and Guidelines Overview CS 342: Object-Oriented Software Development Lab Software Design Principles and Guidelines David L. Levine Christopher D. Gill Department of Computer Science Washington University, St. Louis Design Principles Important design concepts Useful design principles Evaluation criteria Development Methodologies Traditional approaches Extreme programming Design Guidelines Motivation Common Design Mistakes Design Rules Copyright c Dept. of Computer Science, Washington University 1 Motivation: Goals of the Design Phase Decompose System into Modules i.e., identify the software architecture Modules are abstractions that should: be independent, have well-specified interfaces, and have high cohesion and low coupling. Determine Relations Between Modules Identify module dependencies Determine the form of intermodule communication, e.g., global variables parameterized function calls shared memory RPC or message passing Motivation: Goals of the Design Phase (cont d) Specify Module Interfaces Interfaces should be well-defined facilitate independent module testing improve group communication Describe Module Functionality Informally e.g., comments or documentation Formally e.g., via module interface specification languages Copyright c Dept. of Computer Science, Washington University 2 Copyright c Dept. of Computer Science, Washington University 3
2 Primary Design Phases Key Design Concepts and Principles Preliminary Design External design describes the real-world model Architectural design decomposes the requirement specification into software subsystems Detailed Design Formally specify each subsystem Further decomposed subsystems, if necessary Note: in design phases the orientation moves from customer to developer from what to how Important design concepts and design principles include: Decomposition Abstraction Subset Identification Information Hiding Virtual Machine Structuring Modularity Separating Policy and Mechanism Hierarchy Main purpose of these concepts and principles is to manage software system complexity and improve software quality factors. Copyright c Dept. of Computer Science, Washington University 4 Copyright c Dept. of Computer Science, Washington University 5 Decomposition Decomposition (cont d) Decomposition is a concept common to all life-cycle and design techniques. Basic concept is very simple: 1. Select a piece of the problem (initially, the whole problem) 2. Determine its components using the mechanism of choice, e.g., functional vs data structured vs object-oriented 3. Show how the components interact 4. Repeat steps 1 through 3 until some termination criteria is met (e.g., customer is satisfied, run out of money, etc.;-)) Some guiding decomposition principles Because design decisions transcend execution time, modules might not correspond to execution steps... Decompose so as to limit the effect of any one design decision on the rest of the system Remember, anything that permeates the system will be expensive to change Modules should be specified by all information needed to use the module and nothing more Copyright c Dept. of Computer Science, Washington University 6 Copyright c Dept. of Computer Science, Washington University 7
3 Abstraction Abstraction (cont d) Abstraction provides a way to manage complexity by emphasizing essential characteristics and suppressing implementation details. Allows postponement of certain design decisions that occur at various levels of analysis, e.g., Representational/Algorithmic considerations Architectural/Structural considerations External/Functional considerations Three basic abstraction mechanisms Procedural abstraction e.g., closed subroutines Data abstraction e.g., ADTs Control abstraction iterators, loops, multitasking, etc. Copyright c Dept. of Computer Science, Washington University 8 Copyright c Dept. of Computer Science, Washington University 9 Information Hiding Information Hiding (cont d) Motivation: details of design decisions that are subject to change should be hidden behind abstract interfaces, i.e., modules. Information hiding is one means to enhance abstraction. Modules should communicate only through well-defined interfaces. Each module is specified by as little information as possible. If internal details change, client modules should be minimally affected (may require recompilation and relinking, however...) Information to be hidden includes: Data representations i.e., using abstract data types Algorithms e.g., sorting or searching techniques Input and Output Formats Machine dependencies, e.g., byte-ordering, character codes Policy/mechanism distinctions i.e., when vs how e.g., OS scheduling, garbage collection, process migration Lower-level module interfaces e.g., Ordering of low-level operations, i.e., process sequence Copyright c Dept. of Computer Science, Washington University 10 Copyright c Dept. of Computer Science, Washington University 11
4 Modularity Modularity (cont d) A Modular System is a system structured into highly independent abstractions called modules. Modularity is important for both design and implementation phases. Module prescriptions: Modules should possess well-specified abstract interfaces. Modules should have high cohesion and low coupling. Modularity facilitates certain software quality factors, e.g.: Extensibility - well-defined, abstract interfaces Reusability - low-coupling, high-cohesion Compatibility - design bridging interfaces Portability - hide machine dependencies Modularity is an important characteristic of good designs because it: allows for separation of concerns enables developers to reduce overall system complexity via decentralized software architectures enhances scalability by supporting independent and concurrent development by multiple personnel Copyright c Dept. of Computer Science, Washington University 12 Copyright c Dept. of Computer Science, Washington University 13 Modularity (cont d) Modularity (cont d) A module is A software entity encapsulating the representation of an abstraction, e.g., anadt A vehicle for hiding at least one design decision A work assignment for a programmer or group of programmers a unit of code that has one or more names has identifiable boundaries can be (re-)used by other modules encapsulates data hides unnecessary details can be separately compiled (if supported) A module is not necessarily a subroutine or arbitrary pieces of code... All ADTs are modules Note all modules are ADTs, however. e.g., groups of functionally related procedures (such as sorting) can form a module, but not be an ADT. Copyright c Dept. of Computer Science, Washington University 14 Copyright c Dept. of Computer Science, Washington University 15
5 Modularity (cont d) A module interface consists of several sections: Imports Services requested from other modules Exports Services provided to other modules Access Control not all clients are equal! (e.g., C++ s distinction between protected/private/public) Heuristics for determining interface specification define one specification that allows multiple implementations anticipate change e.g., use structures and classes for parameters Modularity Dimensions Modularity has several dimensions and encompasses specification, design, and implementation levels: Criteria for evaluating design methods with respect to modularity Modular Decomposability Modular Composability Modular Understandability Modular Continuity Modular Protection Principles for ensuring modular designs: Language Support for Modular Units Few Interfaces Small Interfaces (Weak Coupling) Explicit Interfaces Information Hiding Copyright c Dept. of Computer Science, Washington University 16 Copyright c Dept. of Computer Science, Washington University 17 Criteria for Evaluating Modular Designs Modular Decomposability Does the method aid decomposing a new problem into several separate subproblems? (e.g., top-down functional design) Modular Composability Does the method aid constructing new systems from existing software components? (e.g., bottom-up design) Modular Understandability Are modules separately understandable by a human reader, e.g., how tightly coupled are they? Criteria for Evaluating Modular Designs (cont d) Modular Continuity Do small changes to the specification affect a localized and limited number of modules? Modular Protection Are the effects of run-time abnormalities confined to a small number of related modules? Copyright c Dept. of Computer Science, Washington University 18 Copyright c Dept. of Computer Science, Washington University 19
6 Principles for Ensuring Modular Designs Principles for Ensuring Modular Designs (cont d) Language Support for Modular Units Modules must correspond to syntactic units in the language used. Few Interfaces Every module should communicate with as few others as possible. Small Interfaces (Weak Coupling) If any two modules communicate at all, they should exchange as little information as possible. Explicit Interfaces Whenever two modules A and B communicate, this must be obvious from the text of A or B or both. Information Hiding All information about a module should be private to the module unless it is specifically declared public. Copyright c Dept. of Computer Science, Washington University 20 Copyright c Dept. of Computer Science, Washington University 21 The Open/Closed Principle The Open/Closed Principle (cont d) A satisfactory module decomposition technique should yield modules that are both open and closed: Open Module: is one still available for extension. This is necessary because the requirements and specifications are rarely completely understood from the system s inception. Closed Module: is available for use use by other modules, usually given a well-defined, stable description and packaged in a library. This is necessary because otherwise code sharing becomes unmanageable because reopening a module may trigger changes in many clients. Traditional design techniques and programming languages do not offer an elegant solution to the problem of producing modules that are both open and closed. Object-oriented methods utilize inheritance and dynamic binding to solve this problem. Copyright c Dept. of Computer Science, Washington University 22 Copyright c Dept. of Computer Science, Washington University 23
7 Case Study: Arithmetic Expression Evaluation Initial specification: write a four-function calculator utility that evaluates arithmetic expressions of the form: ( ) * 30.0 / Typical solution in Ada, Pascal, or C makes use of enumerated types and a case or switch statement, e.g., enum op_type { ADD, SUB, MUL, DIV }; //... void apply (op_type op_code, double v1, double v2) { switch (op_code) { case ADD: //... case SUB: //... case MUL: //... case DIV: //... } } Copyright c Dept. of Computer Science, Washington University 24 Case Study: Arithmetic Expression Evaluation (cont d) However, problems arise when the calculator s functionality is enhanced by adding new operations, e.g., extending it to handle complete C or C++ expression syntax. Programs that utilize case analysis and enumerated types are often difficult to update, enhance, and maintain. OOD/OOP provide a more flexible and extensible solution using inheritance and dynamic binding. Copyright c Dept. of Computer Science, Washington University 25 Virtual Machine Structuring A virtual machine architecture is used to decompose system into smaller, more manageable units. A virtual machine provides an extended software instruction set Extensions provide additional data types and associated software instructions Modeled after hardware instruction set primitives that work on a limited set of data types Virtual Machine Structuring (cont d) A virtual machine component provides a set of operations that are useful in developing a family of similar systems Reusability is limited if virtual machine operations merely correspond to steps in processing from input to output, i.e., use the shopping list approach. It is difficult to obtain good performance at level N, if levels below N are not implemented efficiently. Virtual machines allow incremental extensions But beware of overly narrow interfaces in lower layer virtual machines... Copyright c Dept. of Computer Science, Washington University 26 Copyright c Dept. of Computer Science, Washington University 27
8 Virtual Machine Structuring (cont d) Good examples of virtual machine concept: Computer Architectures e.g., compiler! assembler! obj code! microcode! gates, transistors, signals, etc. Communication protocol stacks, e.g., ISO, TCP/IP Operating systems, e.g., Mach, BSD UNIX, e.g., HARDWARE MACHINE instruction set restartable instructions interrupts/traps interrupt/trap handlers blocking interrupts interrupt stack SOFTWARE VIRTUAL MACHINE set of system calls restartable system calls signals signal handlers masking signals signal stack Hierarchy Motivation: reduces module interactions by restricting the topology of relationships A relation defines a hierarchy if it partitions units into levels (note connection to virtual machines) Level 0 is the set of all units that use no other units Level i is the set of all units that use at least one unit at level é i and no unit at level ç i. Hierarchical structure forms basis of design Facilitates independent development Isolates ramifications of change Allows rapid prototyping Copyright c Dept. of Computer Science, Washington University 28 Copyright c Dept. of Computer Science, Washington University 29 Hierarchy (cont d) The Uses Relation Relations that define hierarchies: Uses Is-Composed-Of Is-A Has-A The first two are general to all design methods, the latter two are more particular to object-oriented design and programming. X Uses Y if the correct functioning of X depends on the availability of a correct implementation of Y Note, uses is not necessarily the same as invokes: Some invocations are not uses e.g., error logging Some uses don t involve invocations e.g., message passing, interrupts, shared memory access A uses relation does not necessarily yield a hierarchy (avoid cycles...) Copyright c Dept. of Computer Science, Washington University 30 Copyright c Dept. of Computer Science, Washington University 31
9 The Uses Relation (cont d) Allow X to use Y when: X is simpler because it uses Y e.g., Standard C library routines Y is not substantially more complex because it is not allowed to use X i.e., hierarchies should be semantically meaningful there is a useful subset containing Y and not X i.e., allows sharing and reuse of Y there is no conceivably useful subset containing X but not Y i.e., Y is necessary for X to function correctly. The Uses Relation, (cont d) How should recursion be handled? Group X and Y as a single entity in the uses relation. A hierarchy in the uses relation is essential for designing non-trivial reusable software systems. Note that certain software systems require some form of controlled violation of a uses hierarchy e.g., asynchronous communication protocols, call-back schemes, signal handling, etc. Upcalls are one way to control these non-hierarchical dependencies Rule of thumb : Start with an invocation hierarchy and eliminate those invocations ( calls ) that are not uses relationships. Copyright c Dept. of Computer Science, Washington University 32 Copyright c Dept. of Computer Science, Washington University 33 The Is-Composed-Of Relation The is-composed-of relationship shows how the system is broken down in components. X is-composed-of fx i g if X is a group of units x i that share some common purpose The system structure graph description can be specified by the iscomposed-of relation such that: non-terminals are virtual code terminals are the only units represented by actual (concrete) code The Is-Composed-Of Relation, (cont d) Many programming languages support the is-composed-of relation via some higher-level module or record structuring technique. Note: the following are not equivalent: 1. level (virtual machine) 2. module (an entity that hides a secret) 3. a subprogram (a code unit) Modules and levels need not be identical, as a module may have several components on several levels of a uses hierarchy. Copyright c Dept. of Computer Science, Washington University 34 Copyright c Dept. of Computer Science, Washington University 35
10 The Is-A and Has-A Relations Separate Policy and Mechanism These two relationships are associated with object-oriented design and programming languages that possess inheritance and classes. Is-A or Descendant relationship class X possesses Is-A relationship with class Y if instances of class X are specialization of class Y. e.g., a square is a specialization of a rectangle, which is a specialization of a shape... Has-A or Containment relationship class X possesses a Has-B relationship with class Y if instances of class X contain one or more instance(s) of class Y. e.g., a car has an engine and four tires... Very important design principle, used to separate concerns at both the design and implementation phases. Multiple policies can be implemented by shared mechanisms. e.g., OS scheduling and virtual memory paging Same policy can be implemented by multiple mechanisms. e.g., FIFO containment can be implemented using a stack based on an array, or a linked list, or... e.g., reliable, non-duplicated, bytestream service can be provided by multiple communication protocols. Copyright c Dept. of Computer Science, Washington University 36 Copyright c Dept. of Computer Science, Washington University 37 Program Families and Subsets Program Families and Subsets (cont d) Program families are a collection of related modules or subsystems that form a framework e.g., BSD UNIX network protocol subsystem. Note,a framework is a set of abstract and concrete classes. Program families are natural way to detect and implement subsets. Reasons for providing subsets include cost, time, personnel resources, etc. Identifying subsets: Analyze requirements to identify minimally useful subsets. Also identify minimal increments to subsets. Advantages of subsetting: Facilitates software system extension and contraction Promotes reusability Anticipates potential changes Note: it is most important to design for flexibility, not necessarily for generality... Copyright c Dept. of Computer Science, Washington University 38 Copyright c Dept. of Computer Science, Washington University 39
11 Program Families and Subsets (cont d) Families provide integrated support for different services for different markets, e.g., different alphabets, different vertical applications, different I/O formats different hardware or software platforms e.g., compilers or OSs different resource trade-offs e.g., speed vs space different internal resources e.g., shared data structures and library routines different external events e.g., UNIX I/O device interface backward compatibility e.g., sometimes it is important to retain bugs! A General Design Process Given a specification, design involves an iterative decision making process with the following general steps: List the difficult decisions and decisions likely to change Design a module specification to hide each such decision Make decisions that apply to whole program family first Modularize most likely changes first Then modularize remaining difficult decisions and decisions likely to change Design the uses hierarchy as you do this (include reuse decisions) Copyright c Dept. of Computer Science, Washington University 40 Copyright c Dept. of Computer Science, Washington University 41 A General Design Process (cont d) General steps (cont d) Treat each higher-level module as a specification and apply above process to each Continue refining until all design decisions are: hidden in a module contain easily comprehensible components provide individual, independent, low-level implementation assignments Traditional Development Methodologies Waterfall Model Specify, analyze, implement, test (in sequence) Assumes that requirements can be specified up front Spiral Model Supports iterative development Attempts to assess risks of changes Rapid Application Development Build a prototype Ship it :-) Copyright c Dept. of Computer Science, Washington University 42 Copyright c Dept. of Computer Science, Washington University 43
12 extreme Programming Stresses customer satisfaction, and therefore, involvement Provide what the customer wants, as quickly as possible Provide only what the customer wants Encourages changes in requirements Relies on testing XP Practices Planning, designing, coding, testing User Story Requirements System Prototype Technology Spike Time extreme Programming: Planning Planning Game Risk Estimates Change in Requirements, Risk, or Developement Environment Commitment Schedule based on Iteration Start with user stories Written by customers, to specify system requirements Minimal detail, typically just a few sentences on a card Expected development time: 1 to 3 weeks each, roughly Planning game creates commitment schedule for entire project Each iteration should take 2-3 weeks Copyright c Dept. of Computer Science, Washington University 44 Copyright c Dept. of Computer Science, Washington University 45 extreme Programming: Designing Defer design decisions as long as possible Advantages: Simplifies current task (just build what is needed) You don t need to maintain what you haven t built Time is on your side: you re likely to learn something useful by the time you need to decide Tomorrow may never come: if a feature isn t needed now, it might never be needed Disadvantages: Future design decisions may require rework of existing implementation Ramp-up time will probably be longer later Therefore, always try to keep designs as simple as possible extreme Programming: Coding Pair programming Always code with a partner Always test as you code Pair programming pays off by supporting good implementation, reducing mistakes, and exposing more than one programmer to the design/implementation If any deficiencies in existing implementation are noticed, either fix them or note that they need to be fixed. Copyright c Dept. of Computer Science, Washington University 46 Copyright c Dept. of Computer Science, Washington University 47
13 extreme Programming: Testing Unit tests are written before code. Code must pass both its unit test and all regression tests before committing. In effect, the test suite defines the system requirements. Significant difference from other development approaches. If a bug is found, a test for it must be added. If a feature isn t tested, it can be removed. extreme Programming: Information Sources Kent Beck, Extreme Programming Explained: Addison-Wesley, ISBN , Embrace Change, Kent Beck, Extreme Programming, C++ Report 11:5, May 1999, pp John Vlissides, XP, interview with Kent Beck in the Pattern Hatching Column, C++ Report 11:6, June 1999, pp Kent Beck, Embracing Change with Extreme Programming, IEEE Computer 32:10, October 1999, pp Copyright c Dept. of Computer Science, Washington University 48 Copyright c Dept. of Computer Science, Washington University 49 Design Guidelines: Motivation Design is the process of organizing structured solutions to tasks from a problem domain. This process is carried out in many disciplines, in many ways. There are many similarities and commonalities among design processes. There are also many common design mistakes... The following pages provide a number of design rules. Remember, these rules are simply suggestions on how to better organize your design process, not a recipe for success! Common Design Mistakes Depth-first design only partially satisfy the requirements experience is best cure for this problem... Directly refining requirements specification leads to overly constrained, inefficient designs Failure to consider potential changes always design for extension and contraction Making the design too detailed this overconstrains the implementation Copyright c Dept. of Computer Science, Washington University 50 Copyright c Dept. of Computer Science, Washington University 51
14 Common Design Mistakes (cont d) Ambiguously stated design misinterpreted at implementation Undocumented design decisions designers become essential to implementation Inconsistent design results in a non-integratable system, because separately developed modules don t fit together. Rules of Design Make sure that the problem is well-defined All design criteria, requirements, and constraints, should be enumerated before a design is started. This may require a spiral model approach. What comes before how i.e., define the service to be performed at every level of abstraction before deciding which structures should be used to realize the services. Separate orthogonal concerns Do not connect what is independent. Important at many levels and phases... Copyright c Dept. of Computer Science, Washington University 52 Copyright c Dept. of Computer Science, Washington University 53 Rules of Design (cont d) Design external functionality before internal functionality. First consider the solution as a black-box and decide how it should interact with its environment. Then decide how the black-box can be internally organized. Likely it consists of smaller black-boxes that can be refined in a similar fashion. Keep it simple. Fancy designs are buggier than simple ones; they are harder to implement, harder to verify, and often less efficient. Problems that appear complex are often just simple problems huddled together. Our job as designers is to identify the simpler problems, separate them, and then solve them individually. Rules of Design (cont d) Work at multiple levels of abstraction Good designers must be able to move between various levels of abstraction quickly and easily. Design for extensibility A good design is open-ended, i.e., easily extendible. A good design solves a class of problems rather than a single instance. Do not introduce what is immaterial. Do not restrict what is irrelevant. Use rapid prototyping when applicable Before implementing a design, build a high-level prototype and verify that the design criteria are met. Copyright c Dept. of Computer Science, Washington University 54 Copyright c Dept. of Computer Science, Washington University 55
15 Rules of Design (cont d) Details should depend upon abstractions Abstractions should not depend upon details Principle of Dependency Inversion The granule of reuse is the same as the granule of release Only components that are released through a tracking system can be effectively reused Classes within a released component should share common closure That is, if one needs to be changed, they all are likely to need to be changed i.e., what affects one, affects all Rules of Design (cont d) Classes within a released component should be reused together That is, it is impossible to separate the components from each other in order to reuse less than the total The dependency structure for released components must be a DAG There can be no cycles Dependencies between released components must run in the direction of stability The dependee must be more stable than the depender The more stable a released component is, the more it must consist of abstract classes A completely stable component should consist of nothing but abstract classes Copyright c Dept. of Computer Science, Washington University 56 Copyright c Dept. of Computer Science, Washington University 57 Rules of Design (cont d) Rules of Design (cont d) Where possible, use proven patterns to solve design problems When crossing between two different paradigms, build an interface layer that separates the two Don t pollute one side with the paradigm of the other Software entities (classes, modules, etc) should be open for extension, but closed for modification The Open/Closed principle Bertrand Meyer Derived classes must usable through the base class interface without the need for the user to know the difference The Liskov Substitution Principle Copyright c Dept. of Computer Science, Washington University 58 Copyright c Dept. of Computer Science, Washington University 59
16 Rules of Design (cont d) Make it work correctly, then make it work fast Implement the design, measure its performance, and if necessary, optimize it. Maintain consistency between representations e.g., check that the final optimized implementation is equivalent to the high-level design that was verified. Also important for documentation... Don t skip the preceding rules! Clearly, this is the most frequently violated rule!!! ;-) Copyright c Dept. of Computer Science, Washington University 60
Software Quality Factors OOA, OOD, and OOP Object-oriented techniques enhance key external and internal software quality factors, e.g., 1. External (v
Object-Oriented Design and Programming Deja Vu? In the past: Structured = Good Overview of Object-Oriented Design Principles and Techniques Today: Object-Oriented = Good e.g., Douglas C. Schmidt www.cs.wustl.edu/schmidt/
Software Design Principles and Guidelines
Software and Guidelines Douglas C. Schmidt [email protected] Vanderbilt University, St. Louis www.cs.wustl.edu/schmidt/ May 25, 2003 and Guidelines Overview Important design concepts Useful design
Engineering Process Software Qualities Software Architectural Design
Engineering Process We need to understand the steps that take us from an idea to a product. What do we do? In what order do we do it? How do we know when we re finished each step? Production process Typical
How To Develop Software
Software Engineering Prof. N.L. Sarda Computer Science & Engineering Indian Institute of Technology, Bombay Lecture-4 Overview of Phases (Part - II) We studied the problem definition phase, with which
Functional Decomposition Top-Down Development
Functional Decomposition Top-Down Development The top-down approach builds a system by stepwise refinement, starting with a definition of its abstract function. You start the process by expressing a topmost
Software Engineering
Software Engineering Lecture 06: Design an Overview Peter Thiemann University of Freiburg, Germany SS 2013 Peter Thiemann (Univ. Freiburg) Software Engineering SWT 1 / 35 The Design Phase Programming in
Fourth generation techniques (4GT)
Fourth generation techniques (4GT) The term fourth generation techniques (4GT) encompasses a broad array of software tools that have one thing in common. Each enables the software engineer to specify some
Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives
Introduction to Programming and Algorithms Module 1 CS 146 Sam Houston State University Dr. Tim McGuire Module Objectives To understand: the necessity of programming, differences between hardware and software,
Chapter 8 Approaches to System Development
Systems Analysis and Design in a Changing World, sixth edition 8-1 Chapter 8 Approaches to System Development Table of Contents Chapter Overview Learning Objectives Notes on Opening Case and EOC Cases
Introduction to Embedded Systems. Software Update Problem
Introduction to Embedded Systems CS/ECE 6780/5780 Al Davis logistics minor Today s topics: more software development issues 1 CS 5780 Software Update Problem Lab machines work let us know if they don t
Questions? Assignment. Techniques for Gathering Requirements. Gathering and Analysing Requirements
Questions? Assignment Why is proper project management important? What is goal of domain analysis? What is the difference between functional and non- functional requirements? Why is it important for requirements
Software Paradigms (Lesson 1) Introduction & Procedural Programming Paradigm
Software Paradigms (Lesson 1) Introduction & Procedural Programming Paradigm Table of Contents 1 Introduction... 2 1.1 Programming Paradigm... 2 1.2 Software Design Paradigm... 3 1.2.1 Design Patterns...
Software Life Cycle Processes
Software Life Cycle Processes Objective: Establish a work plan to coordinate effectively a set of tasks. Improves software quality. Allows us to manage projects more easily. Status of projects is more
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
In the IEEE Standard Glossary of Software Engineering Terminology the Software Life Cycle is:
In the IEEE Standard Glossary of Software Engineering Terminology the Software Life Cycle is: The period of time that starts when a software product is conceived and ends when the product is no longer
Aspect-Oriented Programming
Aspect-Oriented Programming An Introduction to Aspect-Oriented Programming and AspectJ Niklas Påhlsson Department of Technology University of Kalmar S 391 82 Kalmar SWEDEN Topic Report for Software Engineering
JOURNAL OF OBJECT TECHNOLOGY
JOURNAL OF OBJECT TECHNOLOGY Online at http://www.jot.fm. Published by ETH Zurich, Chair of Software Engineering JOT, 2006 Vol. 5, No. 6, July - August 2006 On Assuring Software Quality and Curbing Software
Managing a Fibre Channel Storage Area Network
Managing a Fibre Channel Storage Area Network Storage Network Management Working Group for Fibre Channel (SNMWG-FC) November 20, 1998 Editor: Steven Wilson Abstract This white paper describes the typical
Software Development Life Cycle (SDLC)
Software Development Life Cycle (SDLC) Supriyo Bhattacharjee MOF Capability Maturity Model (CMM) A bench-mark for measuring the maturity of an organization s software process CMM defines 5 levels of process
Introduction to Software Paradigms & Procedural Programming Paradigm
Introduction & Procedural Programming Sample Courseware Introduction to Software Paradigms & Procedural Programming Paradigm This Lesson introduces main terminology to be used in the whole course. Thus,
Objectives. Chapter 2: Operating-System Structures. Operating System Services (Cont.) Operating System Services. Operating System Services (Cont.
Objectives To describe the services an operating system provides to users, processes, and other systems To discuss the various ways of structuring an operating system Chapter 2: Operating-System Structures
Acknowledgement. Software Engineering. CS 3141: Team Software Project Introduction
CS 3141: Team Software Project Introduction Ali Ebnenasir Department of Computer Science Michigan Technological University Acknowledgement Betty H.C. Cheng Software Engineering Systematic approach for
Extend the value of your core business systems.
Legacy systems renovation to SOA September 2006 Extend the value of your core business systems. Transforming legacy applications into an SOA framework Page 2 Contents 2 Unshackling your core business systems
SEEM4570 System Design and Implementation Lecture 10 Software Development Process
SEEM4570 System Design and Implementation Lecture 10 Software Development Process Software Development A software development process: A structure imposed on the development of a software product Also
Basic Trends of Modern Software Development
DITF LDI Lietišķo datorsistēmu programmatūras profesora grupa e-business Solutions Basic Trends of Modern Software Development 2 3 Software Engineering FAQ What is software engineering? An engineering
Introduction to Object-Oriented Programming
Introduction to Object-Oriented Programming Objects and classes Abstract Data Types (ADT) Encapsulation and information hiding Aggregation Inheritance and polymorphism OOP: Introduction 1 Pure Object-Oriented
The Phases of an Object-Oriented Application
The Phases of an Object-Oriented Application Reprinted from the Feb 1992 issue of The Smalltalk Report Vol. 1, No. 5 By: Rebecca J. Wirfs-Brock There is never enough time to get it absolutely, perfectly
Software development life cycle. Software Engineering - II ITNP92 - Object Oriented Software Design. Requirements. Requirements. Dr Andrea Bracciali
Software development life cycle Software life cycle: Software Engineering - II ITNP92 - Object Oriented Software Design Dr Andrea Bracciali Module Co-ordinator 4B86 [email protected] Spring 2014 (elicitation)
Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology
Peter Mileff PhD SOFTWARE ENGINEERING The Basics of Software Engineering University of Miskolc Department of Information Technology Introduction Péter Mileff - Department of Information Engineering Room
2. Analysis, Design and Implementation
2. Subject/Topic/Focus: Software Production Process Summary: Software Crisis Software as a Product: From Individual Programs to Complete Application Systems Software Development: Goals, Tasks, Actors,
An Introduction to Software Architecture
An Introduction to Software Architecture David Garlan and Mary Shaw January 1994 CMU-CS-94-166 School of Computer Science Carnegie Mellon University Pittsburgh, PA 15213-3890 Also published as An Introduction
Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages
ICOM 4036 Programming Languages Preliminaries Dr. Amirhossein Chinaei Dept. of Electrical & Computer Engineering UPRM Spring 2010 Language Evaluation Criteria Readability: the ease with which programs
Establishing Great Software Development Process(es) for Your Organization. By Dale Mayes [email protected]
Establishing Great Software Development Process(es) for Your Organization By Dale Mayes [email protected] Class: ETP-410 Embedded Systems Conference San Francisco 2005 Abstract: There are
Chapter 11: Integrationand System Testing
Object-Oriented Software Engineering Using UML, Patterns, and Java Chapter 11: Integrationand System Testing Integration Testing Strategy The entire system is viewed as a collection of subsystems (sets
SOFTWARE DESIGN TECHNIQUES. Nagalaxmi Telkar CSCI 5828 Presentation Slides
SOFTWARE DESIGN TECHNIQUES Nagalaxmi Telkar CSCI 5828 Presentation Slides CONTENTS Introduction Software Design Life Cycle Software Design Process Tackling Design Problems Architectural Design Abstract
Data Abstraction and Hierarchy
Data Abstraction and Hierarchy * This research was supported by the NEC Professorship of Software Science and Engineering. Barbara Liskov Affiliation: MIT Laboratory for Computer Science Cambridge, MA,
Quotes from Object-Oriented Software Construction
Quotes from Object-Oriented Software Construction Bertrand Meyer Prentice-Hall, 1988 Preface, p. xiv We study the object-oriented approach as a set of principles, methods and tools which can be instrumental
Lecture 1: Introduction
Programming Languages Lecture 1: Introduction Benjamin J. Keller Department of Computer Science, Virginia Tech Programming Languages Lecture 1 Introduction 2 Lecture Outline Preview History of Programming
SOFTWARE PROCESS MODELS
SOFTWARE PROCESS MODELS Slide 1 Software Process Models Process model (Life-cycle model) - steps through which the product progresses Requirements phase Specification phase Design phase Implementation
OO Design Quality Metrics
OO Design Quality Metrics An Analysis of Dependencies By Robert Martin October 28,1994 2080 Cranbrook Road Green Oaks, IL 60048 Phone: 708.918.1004 Fax: 708.918.1023 Email: [email protected] Abstract This
Patterns in Software Engineering
Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 7 GoV Patterns Architectural Part 1 1 GoV Patterns for Software Architecture According to Buschmann et al.: A pattern for software architecture
2. Analysis, Design and Implementation
2. Analysis, Design and Implementation Subject/Topic/Focus: Software Production Process Summary: Software Crisis Software as a Product: From Programs to Application Systems Products Software Development:
Object Oriented Design
Object Oriented Design Kenneth M. Anderson Lecture 20 CSCI 5828: Foundations of Software Engineering OO Design 1 Object-Oriented Design Traditional procedural systems separate data and procedures, and
Patterns in. Lecture 2 GoF Design Patterns Creational. Sharif University of Technology. Department of Computer Engineering
Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 2 GoF Design Patterns Creational 1 GoF Design Patterns Principles Emphasis on flexibility and reuse through decoupling of classes. The underlying
Chap 1. Introduction to Software Architecture
Chap 1. Introduction to Software Architecture 1. Introduction 2. IEEE Recommended Practice for Architecture Modeling 3. Architecture Description Language: the UML 4. The Rational Unified Process (RUP)
Structure of Presentation. The Role of Programming in Informatics Curricula. Concepts of Informatics 2. Concepts of Informatics 1
The Role of Programming in Informatics Curricula A. J. Cowling Department of Computer Science University of Sheffield Structure of Presentation Introduction The problem, and the key concepts. Dimensions
Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces
Software Engineering, Lecture 4 Decomposition into suitable parts Cross cutting concerns Design patterns I will also give an example scenario that you are supposed to analyse and make synthesis from The
Managing Variability in Software Architectures 1 Felix Bachmann*
Managing Variability in Software Architectures Felix Bachmann* Carnegie Bosch Institute Carnegie Mellon University Pittsburgh, Pa 523, USA [email protected] Len Bass Software Engineering Institute Carnegie
Module 2. Software Life Cycle Model. Version 2 CSE IIT, Kharagpur
Module 2 Software Life Cycle Model Lesson 4 Prototyping and Spiral Life Cycle Models Specific Instructional Objectives At the end of this lesson the student will be able to: Explain what a prototype is.
Effective Java Programming. efficient software development
Effective Java Programming efficient software development Structure efficient software development what is efficiency? development process profiling during development what determines the performance of
AP Computer Science A - Syllabus Overview of AP Computer Science A Computer Facilities
AP Computer Science A - Syllabus Overview of AP Computer Science A Computer Facilities The classroom is set up like a traditional classroom on the left side of the room. This is where I will conduct my
A Case Study of the Systems Engineering Process in Healthcare Informatics Quality Improvement. Systems Engineering. Ali M. Hodroj
A Case Study of the Systems Engineering Process in Healthcare Informatics Quality Improvement By Ali M. Hodroj Project Report submitted to the Faculty of the Maseeh School of Engineering and Computer Science
Levels of Software Testing. Functional Testing
Levels of Software Testing There are different levels during the process of Testing. In this chapter a brief description is provided about these levels. Levels of testing include the different methodologies
COSC 3351 Software Design. Recap for the first quiz. Edgar Gabriel. Spring 2008. For the 1 st Quiz
COSC 3351 Software Design Recap for the first quiz Spring 2008 For the 1 st Quiz Three large topic areas: UML syntax and diagrams Software architectural styles Object oriented design principles A couple
Component Based Software Engineering: A Broad Based Model is Needed
Component Based Software Engineering: A Broad Based Model is Needed Allen Parrish ([email protected]) Brandon Dixon ([email protected]) David Hale ([email protected]) Department of Computer Science
Ingegneria del Software Corso di Laurea in Informatica per il Management. Object Oriented Principles
Ingegneria del Software Corso di Laurea in Informatica per il Management Object Oriented Principles Davide Rossi Dipartimento di Informatica Università di Bologna Design goal The goal of design-related
Real Time Programming: Concepts
Real Time Programming: Concepts Radek Pelánek Plan at first we will study basic concepts related to real time programming then we will have a look at specific programming languages and study how they realize
A Capability Maturity Model (CMM)
Software Development Life Cycle (SDLC) and Development Methods There are some enterprises in which a careful disorderliness is the true method. Herman Melville Capability Maturity Model (CMM) A Capability
The Rules 1. One level of indentation per method 2. Don t use the ELSE keyword 3. Wrap all primitives and Strings
Object Calisthenics 9 steps to better software design today, by Jeff Bay http://www.xpteam.com/jeff/writings/objectcalisthenics.rtf http://www.pragprog.com/titles/twa/thoughtworks-anthology We ve all seen
Requirements engineering
Learning Unit 2 Requirements engineering Contents Introduction............................................... 21 2.1 Important concepts........................................ 21 2.1.1 Stakeholders and
Module 10. Coding and Testing. Version 2 CSE IIT, Kharagpur
Module 10 Coding and Testing Lesson 23 Code Review Specific Instructional Objectives At the end of this lesson the student would be able to: Identify the necessity of coding standards. Differentiate between
Name of pattern types 1 Process control patterns 2 Logic architectural patterns 3 Organizational patterns 4 Analytic patterns 5 Design patterns 6
The Researches on Unified Pattern of Information System Deng Zhonghua,Guo Liang,Xia Yanping School of Information Management, Wuhan University Wuhan, Hubei, China 430072 Abstract: This paper discusses
Applying 4+1 View Architecture with UML 2. White Paper
Applying 4+1 View Architecture with UML 2 White Paper Copyright 2007 FCGSS, all rights reserved. www.fcgss.com Introduction Unified Modeling Language (UML) has been available since 1997, and UML 2 was
Chapter 1. Dr. Chris Irwin Davis Email: [email protected] Phone: (972) 883-3574 Office: ECSS 4.705. CS-4337 Organization of Programming Languages
Chapter 1 CS-4337 Organization of Programming Languages Dr. Chris Irwin Davis Email: [email protected] Phone: (972) 883-3574 Office: ECSS 4.705 Chapter 1 Topics Reasons for Studying Concepts of Programming
Software maintenance. Software Maintenance. Fundamental problems. Maintenance activities. Lehman/Belady model of evolution. Topics
Software maintenance Software Maintenance Key problems/issues Historical models and data Program Defined in IEEE Standard 1219 as: The modification of a software product after delivery to correct faults,
TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW
Year 2014, Vol. 1, issue 1, pp. 49-56 Available online at: http://journal.iecuniversity.com TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW Singh RANDEEP a*, Rathee AMIT b a* Department of
THE IMPACT OF INHERITANCE ON SECURITY IN OBJECT-ORIENTED DATABASE SYSTEMS
THE IMPACT OF INHERITANCE ON SECURITY IN OBJECT-ORIENTED DATABASE SYSTEMS David L. Spooner Computer Science Department Rensselaer Polytechnic Institute Troy, New York 12180 The object-oriented programming
Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University
Software Engineering Introduction & Background Department of Computer Science Kent State University Complaints Software production is often done by amateurs Software development is done by tinkering or
Reusable Knowledge-based Components for Building Software. Applications: A Knowledge Modelling Approach
Reusable Knowledge-based Components for Building Software Applications: A Knowledge Modelling Approach Martin Molina, Jose L. Sierra, Jose Cuena Department of Artificial Intelligence, Technical University
And the Models Are 16-03-2015. System/Software Development Life Cycle. Why Life Cycle Approach for Software?
System/Software Development Life Cycle Anurag Srivastava Associate Professor ABV-IIITM, Gwalior Why Life Cycle Approach for Software? Life cycle is a sequence of events or patterns that are displayed in
Chapter 1: Operating System Models 1 2 Operating System Models 2.1 Introduction Over the past several years, a number of trends affecting operating system design are witnessed and foremost among them is
Course MS10975A Introduction to Programming. Length: 5 Days
3 Riverchase Office Plaza Hoover, Alabama 35244 Phone: 205.989.4944 Fax: 855.317.2187 E-Mail: [email protected] Web: www.discoveritt.com Course MS10975A Introduction to Programming Length: 5 Days
Programming Languages
Programming Languages Qing Yi Course web site: www.cs.utsa.edu/~qingyi/cs3723 cs3723 1 A little about myself Qing Yi Ph.D. Rice University, USA. Assistant Professor, Department of Computer Science Office:
Test Driven Development of Embedded Systems Using Existing Software Test Infrastructure
Test Driven Development of Embedded Systems Using Existing Software Test Infrastructure Micah Dowty University of Colorado at Boulder [email protected] March 26, 2004 Abstract Traditional software development
ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science
ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science Program Schedule CTech Computer Science Credits CS101 Computer Science I 3 MATH100 Foundations of Mathematics and
Abstraction in Computer Science & Software Engineering: A Pedagogical Perspective
Orit Hazzan's Column Abstraction in Computer Science & Software Engineering: A Pedagogical Perspective This column is coauthored with Jeff Kramer, Department of Computing, Imperial College, London ABSTRACT
CSCI E 98: Managed Environments for the Execution of Programs
CSCI E 98: Managed Environments for the Execution of Programs Draft Syllabus Instructor Phil McGachey, PhD Class Time: Mondays beginning Sept. 8, 5:30-7:30 pm Location: 1 Story Street, Room 304. Office
Life-Cycle Model. Software Life-Cycle Models. Software Development in Theory. Software Development in Practice
Life-Cycle Model Software Life-Cycle Models Xiaojun Qi It specifies the various phases/workflows of the software process, such as the requirements, analysis (specification), design, implementation, and
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science updated 03/08/2012 Unit 1: JKarel 8 weeks http://www.fcps.edu/is/pos/documents/hs/compsci.htm
Software Design Document (SDD) Template
(SDD) Template Software design is a process by which the software requirements are translated into a representation of software components, interfaces, and data necessary for the implementation phase.
SOFTWARE ENGINEERING INTERVIEW QUESTIONS
SOFTWARE ENGINEERING INTERVIEW QUESTIONS http://www.tutorialspoint.com/software_engineering/software_engineering_interview_questions.htm Copyright tutorialspoint.com Dear readers, these Software Engineering
Java (12 Weeks) Introduction to Java Programming Language
Java (12 Weeks) Topic Lecture No. Introduction to Java Programming Language 1 An Introduction to Java o Java as a Programming Platform, The Java "White Paper" Buzzwords, Java and the Internet, A Short
Module 10. Coding and Testing. Version 2 CSE IIT, Kharagpur
Module 10 Coding and Testing Lesson 26 Debugging, Integration and System Testing Specific Instructional Objectives At the end of this lesson the student would be able to: Explain why debugging is needed.
SOFTWARE ENGINEERING IT 0301 Semester V B.Nithya,G.Lakshmi Priya Asst Professor SRM University, Kattankulathur
SOFTWARE ENGINEERING IT 0301 Semester V B.Nithya,G.Lakshmi Priya Asst Professor SRM University, Kattankulathur School of Computing, Department of IT 1 2 Process What is it? A series of predictable steps
CS Standards Crosswalk: CSTA K-12 Computer Science Standards and Oracle Java Programming (2014)
CS Standards Crosswalk: CSTA K-12 Computer Science Standards and Oracle Java Programming (2014) CSTA Website Oracle Website Oracle Contact http://csta.acm.org/curriculum/sub/k12standards.html https://academy.oracle.com/oa-web-introcs-curriculum.html
Umbrella: A New Component-Based Software Development Model
2009 International Conference on Computer Engineering and Applications IPCSIT vol.2 (2011) (2011) IACSIT Press, Singapore Umbrella: A New Component-Based Software Development Model Anurag Dixit and P.C.
Karunya University Dept. of Information Technology
PART A Questions 1. Mention any two software process models. 2. Define risk management. 3. What is a module? 4. What do you mean by requirement process? 5. Define integration testing. 6. State the main
PART IV Performance oriented design, Performance testing, Performance tuning & Performance solutions. Outline. Performance oriented design
PART IV Performance oriented design, Performance testing, Performance tuning & Performance solutions Slide 1 Outline Principles for performance oriented design Performance testing Performance tuning General
Fundamentals of Java Programming
Fundamentals of Java Programming This document is exclusive property of Cisco Systems, Inc. Permission is granted to print and copy this document for non-commercial distribution and exclusive use by instructors
CS 451 Software Engineering Winter 2009
CS 451 Software Engineering Winter 2009 Yuanfang Cai Room 104, University Crossings 215.895.0298 [email protected] 1 Testing Process Testing Testing only reveals the presence of defects Does not identify
Introduction and Overview
Introduction and Overview Definitions. The general design process. A context for design: the waterfall model; reviews and documents. Some size factors. Quality and productivity factors. Material from:
Chapter 3: Operating-System Structures. System Components Operating System Services System Calls System Programs System Structure Virtual Machines
Chapter 3: Operating-System Structures System Components Operating System Services System Calls System Programs System Structure Virtual Machines Operating System Concepts 3.1 Common System Components
1 Organization of Operating Systems
COMP 730 (242) Class Notes Section 10: Organization of Operating Systems 1 Organization of Operating Systems We have studied in detail the organization of Xinu. Naturally, this organization is far from
Java Application Developer Certificate Program Competencies
Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle
F-16 Modular Mission Computer Application Software
F-16 Modular Mission Computer Application Software Achieving Cross-Platform Compatibility with Increased Productivity and Quality using the OMG s Model Driven Architecture Lauren E. Clark Chief Engineer
Layered Approach to Development of OO War Game Models Using DEVS Framework
Layered Approach to Development of OO War Game Models Using DEVS Framework Chang Ho Sung*, Su-Youn Hong**, and Tag Gon Kim*** Department of EECS KAIST 373-1 Kusong-dong, Yusong-gu Taejeon, Korea 305-701
Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111
Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages Corky Cartwright Swarat Chaudhuri November 30, 20111 Overview I In OO languages, data values (except for designated non-oo
