Topic # 05. Software Systems Design Concepts. (Ch. 8) Analysis Model as a Bridge

Size: px
Start display at page:

Download "Topic # 05. Software Systems Design Concepts. (Ch. 8) Analysis Model as a Bridge"

Transcription

1 Topic # 05 Software Systems Design Concepts (Ch. 8) 1 Analysis Model as a Bridge 2

2 Analysis Model as a Bridge System Description (by a customer) system description List of SW System Specifications (that SW engineer understands) analysis analysis model model design design model model Lists of System Requirements (that customer still understands) System Development by SW technologists and technicians 3 Correspondence between Analysis Models and Design Models Option A ( a new system) Design model = Analysis model specs Option B (a set of small improvements of an old system) Design model = Analysis model specs + small additional design specs Option C (a set of multiple significant improvements of an old system) Design model = analysis model specs + huge number of additional design specs Addit. design Examples of analysis models specs: specs 1) 18 different types of actors (from use cases, from context DFD,...) 2) At least 560 different functions (from COs, from STD, ) Additional design specs 3) At least 11 different types of data structures -- databases, files, arrays, queues, (from Level-0 DFD, ) 4

3 FROM Analysis Model TO Design Model Class objects and processing units Analysis model (DOs, DFDs, ERDs,, STDs, activity diagrams, use cases, etc.) Maps into Design model (architecture, components, data, interfaces) Software modules 5 From Analysis Model to Design Model (details) Design Model scenar io- based element s use-cases - text use-case diagrams activity diagrams swim lane diagrams Model Analysis Model f l ow- or i e nt e d e le me nt s data flow diagrams control-flow diagrams processing narratives In t e rf a c e D e si g n Com p o n e n t - L e v e l D e sig n c l a ss- ba se d element s class diagrams analysis packages CRC models collaboration diagrams be ha v i or a l element s state diagrams sequence diagrams A r c h it e c t ura l D e sig n D a t a / Cla ss D e sig n Design Model 6

4 Design Design - is a meaningful engineering representation of something that must be built (i.e. for engineers and/or developers). In Software Engineering context, Software Design focuses on the following main areas: 1. Architecture architectural design defines the relationships between major structural elements of the software 2. Components component-level design transforms structural elements of the software architecture into a procedural description of software components (based on control specifications, process specifications and state transition diagram). 3. Data data design transforms the information domain model into the particular data structures 4. Interfaces interface design describes how the software communicates within itself,, with other systems, and with users 7 Design Model as a Bridge 8

5 Design Model as a Bridge Analysis Design Development 9 Systems Engineering-Based Approach 10

6 Software Engineer: A Profile Required by Industry A set of composition of skills of software engineer required by industry/businesses, and companies: 25 % - Analytical Skills ability to see things as systems, identify, analyze, and solve problems in an optimal way for a specific organization. (Examples of courses: CS 590, CS 593, CS 690, etc.) 25% - Technical Skills ability to understand how computers, data networks, databases, operating systems, etc. work together, as well as their potentials and limitations (Examples of courses: CS 571, CS 625, etc.) 25 % - Management Skills organization s recourse management, project include management (people and money), risk management, and change management (Examples of courses: CS 591, CS697 or CS698 Adv. Topics on SPM) 25 % - Communication Skills include effective interpersonal communication (written, verbal, visual, electronic, face-to-face conversations, presentations in front of groups), listening, group facilitation skills. (Presentations and communications in classes, course projects, team-working and discussions in your team, etc.) 11 Analytical Skills Analytical Skills include four sets of sub skills that are essential for Software Engineer: 1) Systems Thinking, 2) Organizational Knowledge 3) Problem Identification, and 4) Problem Analyzing and Solving. Systems Thinking involves identifying something as a system, visualizing the system and translating it into abstract terms, and thinking about the characteristics of the specific situation. Systems thinking is very useful in software engineering and development because software applications can be seen as subsystems in larger organizational systems, taking input from, and returning output to, their organizational environments. 12

7 A System and Its Characteristics A System is an inter-related set of components, with an identifiable boundary, working together for some purpose. Any system has nine (9) characteristics: 1) Components - irreducible parts or aggregation of parts 2) Relations (links) - dependence of one subsystem on one or more subsystems 3) Interfaces - points of system-environment and subsystem-subsystem contacts 4) Boundary - a line (probably virtual line) that separates the system from its environment 5) Inputs - whatever a system takes from its environment 6) Output s - whatever a system returns to its environment 7) A Purpose - the overall goal or function of a system 8) An Environment - everything external to a system that interacts with the system 9) Constraint(s) - limit(s) to what a system can expand, shrink, perform, etc. 13 A General Depiction of a System including 9 characteristics Environment System 14

8 Software System Architecture and Views Software architecture is commonly organized in views, which are analogous to the different types of blueprints made in building architecture. Within the ontology*) established by ANSI/IEEE , Views are instances of viewpoints, where a viewpoint exists to describe the architecture in question from the perspective of a given set of stakeholders and their concerns. *) In computer science and information science, An ontology is a formal representation of knowledge as a set of concepts within a domain, and the relationships between those concepts. Examples of SW system views in the IEEE-1471 ontology: 1) Development/structural view 2) Code/module view 3) Functional/logic view 4) Concurrency/process/thread view 5) Physical/deployment view 6) User action/feedback view 7) Data view, etc. 15 System Engineering: A Structural View System System Level (World View) A subsystem Sub.Sys. A Sub.Sys. B Sub.Sys. N... Level of Subsystems (Domains) (Subsystem or Domain View) A component Functions Data Links Inputs Outputs... A detail (attribute) Level of Elements or Components (Element or Component View)... Level of Sub-elements, Details (for ex., attributes) (Detail View) 16

9 Webster Software System: A Structural View (system, subsystems, and component design) System System Level (Webster System) A subsystem GUI Databases Security... Level of Subsystems (Domains) (Databases, GUI, Security, HELP, etc.) A component A detail (attribute) Tables Macros (DOs) Forms Queries Reports... Level of Elements or Components (tables, forms, queries, reports, macros and modules, ) ID FN LN DOB YOA Status... Level of Sub-elements, Details (for ex., attributes) (ID, First Name, Last Name, DOB, YOA, status, ) 17 Software Design: Systems Eng. Context (1/2) Design - is a meaningful engineering representation of something that must be built. In Software Engineering context, Software Design focuses on: 1) Goal. Goal of software design is to produce a model or representation that is - bug free (firmness), - suitable for its intended uses (commodity), and - pleasurable to use (delight). 2) Components + 3) Links = Architecture or Structure architectural design defines the relationships between major structural elements of the software Components component-level design transforms structural elements of the software architecture into a procedural description of software components (based on control specifications, process specifications and state transition diagram). Data Objects (modules) data design transforms the information domain model into the particular data structures 18

10 Software Design: Systems Eng. Context (2/2) 4) Interfaces interface design describes how the software communicates within itself,, with other systems, and with users 5) Inputs legal inputs by user, events (tables) part of STD 6) Outputs legal states, behavior of the system, legal actions (tables) part of STD 7) Environment technical specifications of customer s s environment 8) Constraints limits by customer of system s s functionality and specs, or limits of design process (time, cost, etc.) 9) A boundary separation of an environment (external users) and system (internals users); this is very important for security issues 19 Software Design: Fundamental Concepts 1. Abstraction data, procedure, control 2. Architecture the overall structure of the software 3. Patterns conveys the essence of a proven design solution (best cases, re-usable designs)) 4. Modularity compartmentalization of data and function 5. Information Hiding controlled interfaces 6. Functional single-minded function and low coupling Independence 7. Refinement elaboration of details for all abstractions 8. Re-factoring a reorganization technique that simplifies the design 20

11 1.1. Data Abstraction (abstractive data models not actual objects) door manufacturer model number type swing direction inserts lights type number weight opening mechanism implemented as a data object Abstraction - allows designers to simplify a problem and focus on solving a problem without being concerned about irrelevant lower level details Procedural Abstraction (solution algorithms) open details of enter algorithm implemented with a "knowledge" of the object that is associated with enter algorithm Abstraction - allows designers to simplify a problem and focus on solving a problem without being concerned about irrelevant lower level details (en example: procedural abstraction: a subroutine a named sequence of actions and events) 22

12 Examples of algorithms representations Example of algorithm s representation (extreme case = coding) Note: a) Software Engineering is NOT a coding; b) Coding is NOT Software Engineering 24

13 2. Software Architecture (details during next class) The overall structure of the software and the ways in which that structure provides conceptual integrity for a system Structural properties. This aspect of the architectural design representation defines the t components of a system (e.g., modules, objects, filters) and the manner in which those components are packaged and interact with one another. For example, objects are packaged to encapsulate both data and the processing that manipulates the data and interact via the invocation of methods. Extra-functional properties. The architectural design description should address how the design architecture achieves requirements for performance, capacity, reliability, security, adaptability, and other system characteristics. Families of related systems (reusable architectural building blocks). The architectural design should draw upon repeatable patterns that are commonly encountered in the design of families of similar systems. In essence, the design should have the ability to reuse architectural building blocks. (Details in Ch. 9) 25 System s s Architecture: an example (structural view) System System Level (World View) A subsystem Sub.Sys. A Sub.Sys. B Sub.Sys. N... Level of Subsystems (Domains) (Subsystem or Domain View) A component Functions Data Links Inputs Outputs... A detail (attribute) Level of Elements or Components (Element or Component View)... Level of Sub-elements, Details (for ex., attributes) (Detail View) 26

14 3. Patterns (Reusability of previous designs and design solutions) Design Pattern Template: Pattern name Intent Also-known known-as Motivation Applicability Structure Participants Collaborations Consequences Related patterns describes the essence of the pattern in a short but expressive name n describes the pattern and its functions lists any synonyms for the pattern provides an example of the problem notes specific design situations in which the pattern is applicable describes the classes that are required to implement the pattern describes the responsibilities of the classes that are required to implement the pattern describes how the participants collaborate to carry out their responsibilities describes the design forces that affect the pattern and the potential trade-offs that must be considered when the pattern is implemented cross-references references related design patterns *) Patterns-based SE, patterns-based analysis, patterns-based software development, pattern languages, etc. still a lot of research needed, a lot of Ph.D. dissertations 27 Patterns: Analogy in Construction Engineering (reusability of previous designs and design solutions) 28

15 Patterns: Analogy in Heavy Machinery by Caterpillar: CT660 Truck (reusability of previous designs and design solutions) Caterpillar CT660 (base model) Caterpillar CT660 (vocational truck model) Caterpillar CT660 (low loader model) Caterpillar CT660 (concrete pump model) Caterpillar CT660 (concrete mixer model) 29 3a. Patterns (details) A design pattern is a general reusable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations. 30

16 3a. Patterns (details) 31 3a. Patterns (details) 32

17 Example of Highly Reusable Base Software System Modular Design (easier to build, easier to change, easier to fix ) easier to build, easier to change, easier to fix... *) 1969, Boeing 747 *) modern cars (standard modules) *) reusable learning objects (modules of online courses) Microsoft Design Center: Industrialization and modular object-oriented software development has theoretically made it easy to tear things down and replace them. 34

18 Modular Approach of Software Systems (easier to build, easier to change, easier to fix ) 35 Modularization vs Decomposition Modularization Decomposition Modularity Decomposition is dividing a system into parts/chunks/modules of relatively uniform size. is the process of breaking down a system into its component parts. 36

19 Software Modularity: Trade-offs What is the "right" number of modules for a specific software design? cost of software module development cost module integration cost optimal number of modules number of modules 37 An example: Libraries (functions, subroutines, etc.) 38

20 Sizing Modules: Two Views One important feature of a module is its length. Longer is not better. What's inside?? MODULE How big is it?? Compilation time is expensive; the longer the module, the longer it takes to compile. Most program changes that require a recompilation of a module are for minor changes, not involving lots of code lines. Try to restrict your modules to 300 lines of code; optimal length: LOC per module If the module needs to be longer, split it into multiple sub-modules, all with a related name. Source: 39 Modular Approach to Learning Content Design: System Level Level of Subsystems (Domains) Level of Components Level of elements 40

21 BTW: Pedagogical Patterns (details) Pedagogical Patterns are high-level patterns that have been recognized in many areas of training and pedagogy such as group work, software design, human computer interaction, education and others. The concept is an extension of pattern languages. In both cases, the patterns seek to foster best practices of teaching. You may think about patterns as some kind of metadata a top-level description of data about data Information Hiding (or, Encapsulation in Programming) clients module controlled interface "secret" algorithm data structure details of external interface resource allocation policy a specific design decision 42

22 Why Information Hiding? leads to encapsulation an an attribute of high quality design results in higher quality software limits the global impact of local design decisions emphasizes communication through well-structured and controlled interfaces reduces the likelihood of side effects discourages the use of global data Advantages of Encapsulation in Programming Large software programs may be split into manageable modules Implementation details are hidden (isolated); as a result, no need ed to waste your time Subprograms and programs become more portable, and, probably, re-usable by external users Development time is shortened due to well-written, written, well-structured, well-tested sub-programs (functions, lists, files, etc.) Functional Independence Functional independence is achieved by developing modules with "single-minded" function and an "aversion" (disliking) to excessive interaction with other modules. Cohesion is an indication of the relative functional strength of a module. A cohesive module performs a single task, requiring little interaction with other components in other parts of a program. Stated simply, a cohesive module should (ideally) do just one thing. One function inside One interface Coupling is an indication of the relative interdependence among modules. Coupling depends on the interface complexity between modules, the point at which entry or reference is made to a module, and what data pass across the interface. Many functions inside Multiple different interfaces 44

23 7. Stepwise Refinement Object open walk to door; reach for knob; open door; walk through; close door. Activity Diagram (textual form) repeat until door opens turn knob clockwise; if knob doesn't turn, then take key out; find correct key; insert in lock; endif pull/push door move out of way; end repeat Instructions (code) 45 Stepwise Refinement: An example Processing unit function Algorithm Code Processing unit: main function 46

24 FROM Analysis Model TO Design Model (it is actually a refinement process) high analysis model class diagrams analysis packages CRC models collaboration diagrams dat a f low diagrams control-f low diagrams processing narratives use-cases - t ext use-case diagrams act ivit y diagrams swim lane diagrams collaborat ion diagrams st at e diagrams sequence diagrams class diagrams analysis packages CRC models collaboration diagrams dat a f low diagrams cont rol-flow diagrams processing narrat ives state diagrams sequence diagrams Requirement s: const raint s int eroperabilit y t arget s and configurat ion design model low design class realizations subsystems collaboration diagrams refinements to: design class realizat ions subsyst ems collaborat ion diagrams technical interf ace design Navigation design GUI design component diagrams design classes act ivit y diagrams sequence diagrams refinements to: component diagrams design classes act ivit y diagrams sequence diagrams design class realizat ions subsyst ems collaborat ion diagrams component diagrams design classes activity diagrams sequence diagrams deployment diagrams archit ect ure element s int erface element s component -level element s deployment -level element s process dimension 47 An example of Structural View as a refinement process System System Level (Webster System) A subsystem GUI Databases Security... Level of Subsystems (Domains) (Databases, GUI, Security, HELP, etc.) A component Tables Functions (DOs) Forms Queries A detail (attribute) Macros... Level of Elements or Components (tables, forms, queries, reports, macros and modules, ) ID FN LN DOB YOA Status... Level of Sub-elements, Details (for ex., attributes) (ID, First Name, Last Name, DOB, YOA, status, ) 48

25 The Bottom Line: FROM Analysis Model TO Design Model (based on Analysis Model of RE we will be able to create the SW System s s Design Model) Class objects and processing units Analysis model (DOs, DFDs, ERDs,, STDs, activity diagrams, use cases, etc.) Maps into Design model (architecture, components, data, interfaces) Software modules Re-factoring In software engineering, "refactoring" of source code means improving it without changing its overall results, and is sometimes informally referred to as "cleaning it up". Refactoring neither fixes bugs nor adds new functionality, though it might precede either activity. Rather, it improves the understandability of the code, changes its internal structure and design, and removes dead code. These changes are intended to make the code easier to comprehend, more maintainable, and more amenable to change. Refactoring is usually motivated by the difficulty of adding new functionality to a program or fixing a bug in it. When software is refactored, the existing design is examined for redundancy unused design elements inefficient or unnecessary algorithms poorly constructed or inappropriate data structures any other design failure that can be corrected to yield a better design. Examples of re-factoring:??? 50

26 8a. Re-factoring Techniques (not a comprehensive list at all) Techniques that allow for more abstraction: Encapsulate Field - force code to access the field with getter and setter methods Generalize Type - create more general types to allow for more code sharing Replace type-checking code with State/Strategy Replace conditional with polymorphism Techniques for breaking code apart into more logical pieces: Extract Method, to turn part of a larger method into a new method. By breaking down code in smaller pieces, it is more easily understandable. This is also applicable to functions. Extract Class moves part of the code from an existing class into a new class. Techniques for improving names and location of code: Rename Method or - changing the name into a new one that better reveals its purpose Pull Up - in OOP, move to a superclass Push Down - in OOP, move to a subclass Source: b. Re-factoring Tools (in alphabetical order) Add Parameter Change Bidirectional Association to Unidirectional Change Reference to Value Change Unidirectional Association to Bidirectional Change Value to Reference Collapse Hierarchy Consolidate Conditional Expression Consolidate Duplicate Conditional Fragments Convert Dynamic to Static Construction by Gerard M. Davison Convert Static to Dynamic Construction by Gerard M. Davison Decompose Conditional Duplicate Observed Data Eliminate Inter-Entity Bean Communication (Link Only) Encapsulate Collection Encapsulate Downcast Encapsulate Field Extract Class Extract Interface Extract Method Extract Package by Gerard M. Davison Extract Subclass Extract Superclass Form Template Method Hide Delegate Hide Method Hide presentation tier-specific details from the business tier (Link Only) Inline Class Inline Method Inline Temp Introduce A Controller (Link Only) Introduce Assertion Introduce Business Delegate (Link Only) Introduce Explaining Variable Introduce Foreign Method Introduce Local Extension Introduce Null Object Introduce Parameter Object Introduce Synchronizer Token (Link Only) Localize Disparate Logic (Link Only) Merge Session Beans (Link Only) Move Business Logic to Session (Link Only) Move Class by Gerard M. Davison Move Field Move Method Source: Parameterize Method Preserve Whole Object Pull Up Constructor Body Pull Up Field Pull Up Method Push Down Field Push Down Method Reduce Scope of Variable by Mats Henricson Refactor Architecture by Tiers (Link Only) Remove Double Negative by Ashley Frieze and Martin Fowler Remove Middle Man Remove Parameter Remove Setting Method Rename Method Replace Array with Object Replace Assignment with Initialization by Mats Henricson Replace Conditional with Polymorphism Replace Conditional with Visitor by Ivan Mitrovic Replace Constructor with Factory Method Replace Data Value with Object Replace Delegation with Inheritance Replace Error Code with Exception Replace Exception with Test Replace Inheritance with Delegation Replace Iteration with Recursion by Dave Whipp Replace Magic Number with Symbolic Constant Replace Method with Method Object Replace Nested Conditional with Guard Clauses Replace Parameter with Explicit Methods Replace Parameter with Method Replace Record with Data Class Replace Recursion with Iteration by Ivan Mitrovic Replace Static Variable with Parameter by Marian Vittek Replace Subclass with Fields Replace Temp with Query Replace Type Code with Class Replace Type Code with State/Strategy Replace Type Code with Subclasses Reverse Conditional by Bill Murphy and Martin Fowler Self Encapsulate Field Separate Data Access Code (Link Only) Separate Query from Modifier Split Loop by Martin Fowler Split Temporary Variable Substitute Algorithm Use a Connection Pool (Link Only) Wrap entities with session (Link Only) 52

27 Code Re-Factoring Tool: An Example 53 Topic # 05: Design Concepts Homework Assignment 54

28 Topic # 05 Software Design Concepts: Additional Information 55 Software Design Concepts: Davis 95 SW Design Principles 56

29 Software Design Principles = Best Practices (Davis 95) 1) ) The design process should not suffer from limited view = tunnel vision. *) a good designer should consider several (3-5) alternatives and judge them based on given requirements (for ex: technical platforms or programming languages for a new SW system) 2) The design model (s) should be traceable to the analysis model. *) a single element of the Design Model often traces to multiple requirements (for ex: a component of Design Model -- a menu item -- may have one-to to-one one correspondence with Process Specs, Control Specs, DFDs,, State Transition Diagrams, etc.) 3) The design should NOT reinvent the wheel. *) D&D time is short and resources are limited; therefore, use wellw ell-tested design patterns (software modules, learning objects) as often as possible (ex: eventually it will lead to reusable SW components) 57 Software Design Principles (cont.) 4) The design should minimize the intellectual distance between the software and the problem as it exists in the real world. *) SW design solutions should be as close (whenever possible) to the real-world problem domain as possible; (for ex: simulate user -- kids, students, professionals, etc. -- behavior and level of their knowledge and perception;) 5) The design should exhibit uniformity and integration. *) design solutions by multiple teams and designers should look like ONE-person design solutions (one person designed all components of SW) S (for ex: similar interfaces and/or components of multiple Microsoft productsp roducts) 6) The design should be structured to accommodate change. *) upcoming modifications, updates and improvements should NOT lead l to drastic changes or re-design of software system (ex: open-to to-changes design instead of closed-to to-changes design; for ex: downloadable service packs for Win 2003, Office 2003; for ex: Intel cannot replace a chip) 58

30 Software Design Principles (cont.) 7) The design should be structured to degrade gently, even when aberrant data, events, or operating conditions are encountered. *) Use messages, progress bars, etc. as often as possible (for ex: System shut-down is in progress, System is experiencing problems with BUTNO blue screen of death ) 8) Well-defined depth of details of design solutions: Design is not coding, coding is not design. *) Do not go too far in depth in design (for ex: design module in procedural languages is about lines of code only) 9) The design MUST BE assessed for quality as it is being created, not after the fact. *) There are special measures to assess design quality. 10) The design should be reviewed to minimize conceptual (semantic) errors. *) Main conceptual elements of design (omissions, ambiguity, inconsistence, useless repetitions, etc.) should be addressed at design stage not coding stage. 59 Software Design: Focus on FURPS Quality Factors Functionality feature set and program capabilities Usability human factors (aesthetics, consistency, documentation) Reliability frequency and severity of failure Performance processing speed, response time, throughput, efficiency Supportability maintainability (extensibility, adaptability, serviceability), testability, compatibility, configurability 60

31 Software Design: Guidelines that are required by Quality A design should exhibit an architecture that (1) has been created using recognizable architectural styles or patterns, (2) is composed of components that exhibit good design characteristics and (3) can be implemented in an evolutionary fashion For smaller systems, design can sometimes be developed linearly. A design should be modular; that is, the software should be logically partitioned into elements ents or subsystems A design should contain distinct representations of data, architecture, interfaces, and components. A design should lead to data structures that are appropriate for the classes to be implemented and are drawn from recognizable data patterns. A design should lead to components that exhibit independent functional characteristics. A design should lead to interfaces that reduce the complexity of connections between components and with the external environment. A design should be derived using a repeatable method that is driven by information obtained during software requirements analysis. A design should be represented using a notation that effectively communicates its meaning. 61 Software Design Engineering Goal of software design is to produce a model or representation that is - bug free (firmness), - suitable for its intended uses (commodity), and - pleasurable to use (delight). Encompasses the set of - principles, - concepts, and - practices that lead to the development of a high quality system or product Design principles establish an overriding philosophy that guides the designer as the work is performed Design concepts must be understood before the mechanics of design practice are applied Software design practices change continuously as new methods, better analysis, and broader understanding evolve 62

Design Concepts. Slide Set to accompany. Software Engineering: A Practitioner s Approach, 7/e by Roger S. Pressman

Design Concepts. Slide Set to accompany. Software Engineering: A Practitioner s Approach, 7/e by Roger S. Pressman Chapter 8 Design Concepts Slide Set to accompany Software Engineering: A Practitioner s Approach, 7/e by Roger S. Pressman Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman For non-profit educational

More information

Chapter 9 Design Engineering

Chapter 9 Design Engineering Chapter 9 Design Engineering Moonzoo Kim CS Division of EECS Dept. KAIST 1 Roadmap of SEPA covered in CS550 Ch 1 Ch 5 1. Intro to SE 2. A Generic View of Process 3. Process Models 4. An Agile View of Process

More information

Introduction to Software Engineering

Introduction to Software Engineering Introduction to Software Engineering (CS350) Lecture 09 Jongmoon Baik Design Concept 2 Design Mitch Kapor, the creator of Lotus 1-2-3, presented a software design manifesto in Dr. Dobbs Journal. He said:

More information

Slides copyright 1996, 2001, 2005, 2009, 2014 by Roger S. Pressman. For non-profit educational use only

Slides copyright 1996, 2001, 2005, 2009, 2014 by Roger S. Pressman. For non-profit educational use only Chapter 12 Design Concepts Slide Set to accompany Software Engineering: A Practitioner s Approach, 8/e by Roger S. Pressman and Bruce R. Maxim Slides copyright 1996, 2001, 2005, 2009, 2014 by Roger S.

More information

Lecture 8: Chapter 8!

Lecture 8: Chapter 8! Lecture 8: Chapter 8! Design Concepts! Slide Set to accompany Software Engineering: A Practitioner s Approach, 7/e " by Roger S. Pressman Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman For

More information

CHAPTER 9 DESIGN ENGINEERING. Overview

CHAPTER 9 DESIGN ENGINEERING. Overview CHAPTER 9 DESIGN ENGINEERING Overview A software design is a meaningful engineering representation of some software product that is to be built. Designers must strive to acquire a repertoire of alternative

More information

CSEB233: Fundamentals of Software Engineering. Software Design

CSEB233: Fundamentals of Software Engineering. Software Design CSEB233: Fundamentals of Software Engineering Software Design Objectives Explain set of design principles, concepts, and practices Describe five design models complete design specification: required for

More information

Design Concepts and Principles

Design Concepts and Principles Design Concepts and Principles Analysis to Design Data Object Description Entity- Relationship Diagram Data Flow Diagram Process Specification (PSPEC) Component level design (or) procedural design Data

More information

CS485/540 Software Engineering Design Concepts (Ch. 8)

CS485/540 Software Engineering Design Concepts (Ch. 8) CS485/540 Software Engineering Design Concepts (Ch. 8) Cengiz Günay Dept. Math & CS, Emory University Fall 2013 Some slides courtesy of Joan Smith, Roger Pressman, and the Internets Günay (Emory) Design

More information

How We Refactor, and How We Know It

How We Refactor, and How We Know It Emerson Murphy-Hill, Chris Parnin, Andrew P. Black How We Refactor, and How We Know It Urs Fässler 30.03.2010 Urs Fässler () How We Refactor, and How We Know It 30.03.2010 1 / 14 Refactoring Definition

More information

SOFTWARE ENGINEERING SOFTWARE EVOLUTION. Saulius Ragaišis.

SOFTWARE ENGINEERING SOFTWARE EVOLUTION. Saulius Ragaišis. SOFTWARE ENGINEERING SOFTWARE EVOLUTION Saulius Ragaišis saulius.ragaisis@mif.vu.lt CSC2008 SE Software Evolution Learning Objectives: Identify the principal issues associated with software evolution and

More information

Design. Introduction

Design. Introduction Design Introduction a meaningful engineering representation of some software product that is to be built. can be traced to the customer's requirements. can be assessed for quality against predefined criteria.

More information

UNIT III. Software Design

UNIT III. Software Design UNIT III Software Design Design Specification Models Data design - created by transforming the analysis information model (data dictionary and ERD) into data structures required to implement the software

More information

JUnit 3.8.1, 64. keep it simple stupid (KISS), 48

JUnit 3.8.1, 64. keep it simple stupid (KISS), 48 Index A accessor methods, 11, 152 add parameter technique, 189 190 add() method, 286 287, 291 algorithm, substituting, 104 105 AND logical operator, 172 architectural design patterns, 277 278 architecture,

More information

Chapter 9 Design Engineering

Chapter 9 Design Engineering Software Engineering: A Practitioner s s Approach, 6/e Chapter 9 Design Engineering copyright 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University Use Only May be reproduced ONLY for student

More information

06. Analysis Modeling

06. Analysis Modeling 06. Analysis Modeling Division of Computer Science, College of Computing Hanyang University ERICA Campus 1 st Semester 2017 Overview of Analysis Modeling 1 Requirement Analysis 2 Analysis Modeling Approaches

More information

Chapter : Analysis Modeling

Chapter : Analysis Modeling Chapter : Analysis Modeling Requirements Analysis Requirements analysis Specifies software s operational characteristics Indicates software's interface with other system elements Establishes constraints

More information

CSE 403 Lecture 21. Refactoring and Code Maintenance. Reading: Code Complete, Ch. 24, by S. McConnell Refactoring, by Fowler/Beck/Brant/Opdyke

CSE 403 Lecture 21. Refactoring and Code Maintenance. Reading: Code Complete, Ch. 24, by S. McConnell Refactoring, by Fowler/Beck/Brant/Opdyke CSE 403 Lecture 21 Refactoring and Code Maintenance Reading: Code Complete, Ch. 24, by S. McConnell Refactoring, by Fowler/Beck/Brant/Opdyke slides created by Marty Stepp http://www.cs.washington.edu/403/

More information

Component-Level Design. Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman. For non-profit educational use only

Component-Level Design. Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman. For non-profit educational use only Chapter 10 Component-Level Design Slide Set to accompany Software Engineering: A Practitioner s Approach, 7/e by Roger S. Pressman Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman For non-profit

More information

Component-Level Design

Component-Level Design Component-Level Design Minsoo Ryu Hanyang University Contents 1. Design Model 2. Fundamental Design Concepts 3. Component-Level Design 4. Object-Oriented Design Techniques 2 2 Data/class design Four Design

More information

Object-Oriented Systems Analysis and Design Using UML

Object-Oriented Systems Analysis and Design Using UML 10 Object-Oriented Systems Analysis and Design Using UML Systems Analysis and Design, 8e Kendall & Kendall Copyright 2011 Pearson Education, Inc. Publishing as Prentice Hall Learning Objectives Understand

More information

Design Pattern What is a Design Pattern? Design Pattern Elements. Almas Ansari Page 1

Design Pattern What is a Design Pattern? Design Pattern Elements. Almas Ansari Page 1 What is a Design Pattern? Each pattern Describes a problem which occurs over and over again in our environment,and then describes the core of the problem Novelists, playwrights and other writers rarely

More information

1 Executive Overview The Benefits and Objectives of BPDM

1 Executive Overview The Benefits and Objectives of BPDM 1 Executive Overview The Benefits and Objectives of BPDM This is an excerpt from the Final Submission BPDM document posted to OMG members on November 13 th 2006. The full version of the specification will

More information

SOFTWARE ENGINEERING SOFTWARE DESIGN. Saulius Ragaišis.

SOFTWARE ENGINEERING SOFTWARE DESIGN. Saulius Ragaišis. SOFTWARE ENGINEERING SOFTWARE DESIGN Saulius Ragaišis saulius.ragaisis@mif.vu.lt CSC2008 SE Software Design Learning Objectives: Discuss the properties of good software design including the nature and

More information

Functional Design of Web Applications. (partially, Chapter 7)

Functional Design of Web Applications. (partially, Chapter 7) Functional Design of Web Applications (partially, Chapter 7) Functional Design: An Overview Users of modern WebApps expect that robust content will be coupled with sophisticated functionality The advanced

More information

Unit 1 Introduction to Software Engineering

Unit 1 Introduction to Software Engineering Unit 1 Introduction to Software Engineering João M. Fernandes Universidade do Minho Portugal Contents 1. Software Engineering 2. Software Requirements 3. Software Design 2/50 Software Engineering Engineering

More information

Design Process Overview. At Each Level of Abstraction. Design Phases. Design Phases James M. Bieman

Design Process Overview. At Each Level of Abstraction. Design Phases. Design Phases James M. Bieman CS314, Colorado State University Software Engineering Notes 4: Principles of Design and Architecture for OO Software Focus: Determining the Overall Structure of a Software System Describes the process

More information

Software Design COSC 4353/6353 D R. R A J S I N G H

Software Design COSC 4353/6353 D R. R A J S I N G H Software Design COSC 4353/6353 D R. R A J S I N G H Week 5 Refactoring What is Refactoring? Code Smells Why Refactoring? Techniques IDEs What is Refactoring? Art of improving the design of existing code

More information

Components Based Design and Development. Unit 3: Software Design Quick Overview

Components Based Design and Development. Unit 3: Software Design Quick Overview Components Based Design and Development Computer Engineering Studies Universidad Carlos III de Madrid Unit 3: Software Design Quick Overview Juan Llorens Högskolan på Åland Finland / Universidad Carlos

More information

CS SOFTWARE ENGINEERING QUESTION BANK SIXTEEN MARKS

CS SOFTWARE ENGINEERING QUESTION BANK SIXTEEN MARKS DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING CS 6403 - SOFTWARE ENGINEERING QUESTION BANK SIXTEEN MARKS 1. Explain iterative waterfall and spiral model for software life cycle and various activities

More information

UNIT III DESIGN CONCEPTS AND PRINCIPLES

UNIT III DESIGN CONCEPTS AND PRINCIPLES UNIT III DESIGN CONCEPTS AND PRINCIPLES Design process and concepts modular design design heuristic design model and document. Architectural design software architecture data design architectural design

More information

CHAPTER 5 GENERAL OOP CONCEPTS

CHAPTER 5 GENERAL OOP CONCEPTS CHAPTER 5 GENERAL OOP CONCEPTS EVOLUTION OF SOFTWARE A PROGRAMMING LANGUAGE SHOULD SERVE 2 RELATED PURPOSES : 1. It should provide a vehicle for programmer to specify actions to be executed. 2. It should

More information

Topic # 03. Requirements to Software System: An Overview (Ch. 5 and partially Ch. 6)

Topic # 03. Requirements to Software System: An Overview (Ch. 5 and partially Ch. 6) Topic # 03 Requirements to Software System: An Overview (Ch. 5 and partially Ch. 6) 1 Understanding Requirements: An Overview This topic is an overview of Requirements Engineering (RE), and RE is the initial

More information

Curriculum Map Grade(s): Subject: AP Computer Science

Curriculum Map Grade(s): Subject: AP Computer Science Curriculum Map Grade(s): 11-12 Subject: AP Computer Science (Semester 1 - Weeks 1-18) Unit / Weeks Content Skills Assessments Standards Lesson 1 - Background Chapter 1 of Textbook (Weeks 1-3) - 1.1 History

More information

Topics in Object-Oriented Design Patterns

Topics in Object-Oriented Design Patterns Software design Topics in Object-Oriented Design Patterns Material mainly from the book Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides; slides originally by Spiros Mancoridis;

More information

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D.

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D. Software Design Patterns Jonathan I. Maletic, Ph.D. Department of Computer Science Kent State University J. Maletic 1 Background 1 Search for recurring successful designs emergent designs from practice

More information

Small changes to code to improve it

Small changes to code to improve it Small changes to code to improve it 1 Refactoring Defined A change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior

More information

CS504-Softwere Engineering -1 Solved Subjective Midterm Papers For Preparation of Midterm Exam

CS504-Softwere Engineering -1 Solved Subjective Midterm Papers For Preparation of Midterm Exam CS504-Softwere Engineering -1 Solved Subjective Midterm Papers For Preparation of Midterm Exam CS504 Subjective Midterm Examination 2011 Question No: 1 ( Marks: 3 ) Define Asynchronous Messages and Synchronous

More information

Ans 1-j)True, these diagrams show a set of classes, interfaces and collaborations and their relationships.

Ans 1-j)True, these diagrams show a set of classes, interfaces and collaborations and their relationships. Q 1) Attempt all the following questions: (a) Define the term cohesion in the context of object oriented design of systems? (b) Do you need to develop all the views of the system? Justify your answer?

More information

Design Engineering. Overview

Design Engineering. Overview Design Engineering Overview What is software design? How to do it? Principles, concepts, and practices High-level design Low-level design N. Meng, B. Ryder 2 1 Design Engineering The process of making

More information

CS 575: Software Design

CS 575: Software Design CS 575: Software Design Introduction 1 Software Design A software design is a precise description of a system, using a variety of different perspectives Structural Behavioral Packaging Requirements, Test/Validation

More information

Software Design. Software design is a blueprint or a plan for a computerbased solution for system

Software Design. Software design is a blueprint or a plan for a computerbased solution for system Software Design Software Design Software design is a blueprint or a plan for a computerbased solution for system Software design deals with transforming the customer requirements, as described by the SRS

More information

UML Fundamental. OutLine. NetFusion Tech. Co., Ltd. Jack Lee. Use-case diagram Class diagram Sequence diagram

UML Fundamental. OutLine. NetFusion Tech. Co., Ltd. Jack Lee. Use-case diagram Class diagram Sequence diagram UML Fundamental NetFusion Tech. Co., Ltd. Jack Lee 2008/4/7 1 Use-case diagram Class diagram Sequence diagram OutLine Communication diagram State machine Activity diagram 2 1 What is UML? Unified Modeling

More information

Software Engineering Lab Manual

Software Engineering Lab Manual Kingdom of Saudi Arabia Ministry Education Prince Sattam Bin Abdulaziz University College of Computer Engineering and Sciences Department of Computer Science Software Engineering Lab Manual 1 Background:-

More information

SE 1: Software Requirements Specification and Analysis

SE 1: Software Requirements Specification and Analysis SE 1: Software Requirements Specification and Analysis Lecture 9: UML Class (Concept), Object, Communication Diagrams Nancy Day, Davor Svetinović http://www.student.cs.uwaterloo.ca/ cs445/winter2006 uw.cs.cs445

More information

Architectural Blueprint

Architectural Blueprint IMPORTANT NOTICE TO STUDENTS These slides are NOT to be used as a replacement for student notes. These slides are sometimes vague and incomplete on purpose to spark a class discussion Architectural Blueprint

More information

INTERNAL ASSESSMENT TEST III Answer Schema

INTERNAL ASSESSMENT TEST III Answer Schema INTERNAL ASSESSMENT TEST III Answer Schema Subject& Code: Object-Oriented Modeling and Design (15CS551) Sem: V ISE (A & B) Q. No. Questions Marks 1. a. Ans Explain the steps or iterations involved in object

More information

Unit Wise Questions. Unit-1 Concepts

Unit Wise Questions. Unit-1 Concepts Unit Wise Questions Unit-1 Concepts Q1. What is UML? Ans. Unified Modelling Language. It is a Industry standard graphical language for modelling and hence visualizing a blue print of all the aspects of

More information

AntiPatterns. EEC 421/521: Software Engineering. AntiPatterns: Structure. AntiPatterns: Motivation

AntiPatterns. EEC 421/521: Software Engineering. AntiPatterns: Structure. AntiPatterns: Motivation AntiPatterns EEC 421/521: Software Engineering Definition: An AntiPattern describes a commonly occurring solution to a problem that generates decidedly negative consequences Refactoring Reference: Refactoring

More information

Software Design Fundamentals. CSCE Lecture 11-09/27/2016

Software Design Fundamentals. CSCE Lecture 11-09/27/2016 Software Design Fundamentals CSCE 740 - Lecture 11-09/27/2016 Today s Goals Define design Introduce the design process Overview of design criteria What results in a good design? Gregory Gay CSCE 740 -

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecture 14: Design Workflow Department of Computer Engineering Sharif University of Technology 1 UP iterations and workflow Workflows Requirements Analysis Phases Inception Elaboration

More information

Socket attaches to a Ratchet. 2) Bridge Decouple an abstraction from its implementation so that the two can vary independently.

Socket attaches to a Ratchet. 2) Bridge Decouple an abstraction from its implementation so that the two can vary independently. Gang of Four Software Design Patterns with examples STRUCTURAL 1) Adapter Convert the interface of a class into another interface clients expect. It lets the classes work together that couldn't otherwise

More information

Software Service Engineering

Software Service Engineering Software Service Engineering Lecture 4: Unified Modeling Language Doctor Guangyu Gao Some contents and notes selected from Fowler, M. UML Distilled, 3rd edition. Addison-Wesley Unified Modeling Language

More information

be used for more than one use case (for instance, for use cases Create User and Delete User, one can have one UserController, instead of two separate

be used for more than one use case (for instance, for use cases Create User and Delete User, one can have one UserController, instead of two separate UNIT 4 GRASP GRASP: Designing objects with responsibilities Creator Information expert Low Coupling Controller High Cohesion Designing for visibility - Applying GoF design patterns adapter, singleton,

More information

10조 이호진 이지 호

10조 이호진 이지 호 10 조 200910045 이호진 200911415 이지호 According to the IEEE definition, design is.. The process of defining the architecture, components, interfaces, and other characteristics of a system or component 1.

More information

09. Component-Level Design

09. Component-Level Design 09. Component-Level Design Division of Computer Science, College of Computing Hanyang University ERICA Campus 1 st Semester 2017 What is Component OMG UML Specification defines a component as OO view a

More information

Object Oriented Programming

Object Oriented Programming Binnur Kurt kurt@ce.itu.edu.tr Istanbul Technical University Computer Engineering Department 1 Version 0.1.2 About the Lecturer BSc İTÜ, Computer Engineering Department, 1995 MSc İTÜ, Computer Engineering

More information

Presenter: Dong hyun Park

Presenter: Dong hyun Park Presenter: 200412325 Dong hyun Park Design as a life cycle activity bonds the requirements to construction Process of breaking down the system into components, defining interfaces and defining components

More information

Evolving Software. CMSC 433 Programming Language Technologies and Paradigms Spring Example. Some Motivations for This Refactoring

Evolving Software. CMSC 433 Programming Language Technologies and Paradigms Spring Example. Some Motivations for This Refactoring CMSC 433 Programming Language Technologies and Paradigms Spring 2007 Refactoring April 24, 2007 Lots of material taken from Fowler, Refactoring: Improving the Design of Existing Code 1 Evolving Software

More information

McCa!"s Triangle of Quality

McCa!s Triangle of Quality McCa!"s Triangle of Quality Maintainability Portability Flexibility Reusability Testability Interoperability PRODUCT REVISION PRODUCT TRANSITION PRODUCT OPERATION Correctness Usability Reliability Efficiency

More information

UNIT V *********************************************************************************************

UNIT V ********************************************************************************************* Syllabus: 1 UNIT V 5. Package Diagram, Component Diagram, Deployment Diagram (08 Hrs, 16 Marks) Package Diagram: a. Terms and Concepts Names, Owned Elements, Visibility, Importing and Exporting b. Common

More information

Expanding Our Horizons. CSCI 4448/5448: Object-Oriented Analysis & Design Lecture 9 09/25/2011

Expanding Our Horizons. CSCI 4448/5448: Object-Oriented Analysis & Design Lecture 9 09/25/2011 Expanding Our Horizons CSCI 4448/5448: Object-Oriented Analysis & Design Lecture 9 09/25/2011 1 Goals of the Lecture Cover the material in Chapter 8 of our textbook New perspective on objects and encapsulation

More information

Modeling Issues Modeling Enterprises. Modeling

Modeling Issues Modeling Enterprises. Modeling Modeling Issues Modeling Enterprises SE502: Software Requirements Engineering Modeling Modeling can guide elicitation: It can help you figure out what questions to ask It can help to surface hidden requirements

More information

Administrivia. Programming Language Fall Example. Evolving Software. Project 3 coming out Midterm October 28. Refactoring October 14, 2004

Administrivia. Programming Language Fall Example. Evolving Software. Project 3 coming out Midterm October 28. Refactoring October 14, 2004 CMSC 433 Programming Language Fall 2004 Project 3 coming out Midterm October 28 Administrivia Refactoring October 14, 2004 Lots of material taken from Fowler, Refactoring: Improving the Design of Existing

More information

PROCESS DEVELOPMENT METHODOLOGY The development process of an API fits the most fundamental iterative code development

PROCESS DEVELOPMENT METHODOLOGY The development process of an API fits the most fundamental iterative code development INTRODUCING API DESIGN PRINCIPLES IN CS2 Jaime Niño Computer Science, University of New Orleans New Orleans, LA 70148 504-280-7362 jaime@cs.uno.edu ABSTRACT CS2 provides a great opportunity to teach an

More information

Chapter 10. Object-Oriented Analysis and Modeling Using the UML. McGraw-Hill/Irwin

Chapter 10. Object-Oriented Analysis and Modeling Using the UML. McGraw-Hill/Irwin Chapter 10 Object-Oriented Analysis and Modeling Using the UML McGraw-Hill/Irwin Copyright 2007 by The McGraw-Hill Companies, Inc. All rights reserved. Objectives 10-2 Define object modeling and explain

More information

SOFTWARE DESIGN COSC 4353 / Dr. Raj Singh

SOFTWARE DESIGN COSC 4353 / Dr. Raj Singh SOFTWARE DESIGN COSC 4353 / 6353 Dr. Raj Singh UML - History 2 The Unified Modeling Language (UML) is a general purpose modeling language designed to provide a standard way to visualize the design of a

More information

Software Architecture With ColdFusion: Design Patterns and Beyond Topics Outline Prepared by Simon Horwith for CFUnderground 6

Software Architecture With ColdFusion: Design Patterns and Beyond Topics Outline Prepared by Simon Horwith for CFUnderground 6 Software Architecture With ColdFusion: Design Patterns and Beyond Topics Outline Prepared by Simon Horwith for CFUnderground 6 Some Terms: Architecture the manner in which the components of a computer

More information

21. Document Component Design

21. Document Component Design Page 1 of 17 1. Plan for Today's Lecture Methods for identifying aggregate components 21. Document Component Design Bob Glushko (glushko@sims.berkeley.edu) Document Engineering (IS 243) - 11 April 2005

More information

Software Architectures. Lecture 6 (part 1)

Software Architectures. Lecture 6 (part 1) Software Architectures Lecture 6 (part 1) 2 Roadmap of the course What is software architecture? Designing Software Architecture Requirements: quality attributes or qualities How to achieve requirements

More information

Minsoo Ryu. College of Information and Communications Hanyang University.

Minsoo Ryu. College of Information and Communications Hanyang University. Software Reuse and Component-Based Software Engineering Minsoo Ryu College of Information and Communications Hanyang University msryu@hanyang.ac.kr Software Reuse Contents Components CBSE (Component-Based

More information

Chapter 5 Practice: A Generic View

Chapter 5 Practice: A Generic View Chapter 5 Practice: A Generic View Moonzoo Kim CS Division of EECS Dept. KAIST moonzoo@cs.kaist.ac.kr http://pswlab.kaist.ac.kr/courses/cs550-07 Spring 2007 1 What is Practice? Practice is a broad array

More information

Patterns in Software Engineering

Patterns in Software Engineering Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 10 Refactoring Patterns Part 1 1 Refactoring: Definition Refactoring: A change made to the internal structure of software to make it easier

More information

1: Introduction to Object (1)

1: Introduction to Object (1) 1: Introduction to Object (1) 김동원 2003.01.20 Overview (1) The progress of abstraction Smalltalk Class & Object Interface The hidden implementation Reusing the implementation Inheritance: Reusing the interface

More information

Enterprise Architect Training Courses

Enterprise Architect Training Courses On-site training from as little as 135 per delegate per day! Enterprise Architect Training Courses Tassc trainers are expert practitioners in Enterprise Architect with over 10 years experience in object

More information

Appendix A - Glossary(of OO software term s)

Appendix A - Glossary(of OO software term s) Appendix A - Glossary(of OO software term s) Abstract Class A class that does not supply an implementation for its entire interface, and so consequently, cannot be instantiated. ActiveX Microsoft s component

More information

Chapter 1: Principles of Programming and Software Engineering

Chapter 1: Principles of Programming and Software Engineering Chapter 1: Principles of Programming and Software Engineering Data Abstraction & Problem Solving with C++ Fifth Edition by Frank M. Carrano Software Engineering and Object-Oriented Design Coding without

More information

Topic : Object Oriented Design Principles

Topic : Object Oriented Design Principles Topic : Object Oriented Design Principles Software Engineering Faculty of Computing Universiti Teknologi Malaysia Objectives Describe the differences between requirements activities and design activities

More information

Chapter 1: Programming Principles

Chapter 1: Programming Principles Chapter 1: Programming Principles Object Oriented Analysis and Design Abstraction and information hiding Object oriented programming principles Unified Modeling Language Software life-cycle models Key

More information

copyright 1996, 2001, 2005 R.S. Pressman & Associates, Inc.

copyright 1996, 2001, 2005 R.S. Pressman & Associates, Inc. Software Engineering: A Practitioner s Approach, 6/e Chapter 10 Architectural Design copyright 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University Use Only May be reproduced ONLY for student

More information

UNIT-I Introduction of Object Oriented Modeling

UNIT-I Introduction of Object Oriented Modeling UNIT-I Introduction of Object Oriented Modeling - Prasad Mahale Object Oriented Modeling and Reference Books: Design 1. Grady Booch, James Rumbaugh, Ivar Jacobson Unified Modeling Language User Guide,

More information

Chapter 5 Object-Oriented Programming

Chapter 5 Object-Oriented Programming Chapter 5 Object-Oriented Programming Develop code that implements tight encapsulation, loose coupling, and high cohesion Develop code that demonstrates the use of polymorphism Develop code that declares

More information

Design and Information Hiding

Design and Information Hiding Design and Information Hiding 15-214: Foundations of Software Engineering Jonathan Aldrich Related Reading: D. L. Parnas. On the Criteria To Be Used in Decomposing Systems into Modules. CACM 15(12):1053-1058,

More information

CHAPTER 4 HEURISTICS BASED ON OBJECT ORIENTED METRICS

CHAPTER 4 HEURISTICS BASED ON OBJECT ORIENTED METRICS CHAPTER 4 HEURISTICS BASED ON OBJECT ORIENTED METRICS Design evaluation is most critical activity during software development process. Design heuristics are proposed as a more accessible and informal means

More information

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich CSCD01 Engineering Large Software Systems Design Patterns Joe Bettridge Winter 2018 With thanks to Anya Tafliovich Design Patterns Design patterns take the problems consistently found in software, and

More information

What are the characteristics of Object Oriented programming language?

What are the characteristics of Object Oriented programming language? What are the various elements of OOP? Following are the various elements of OOP:- Class:- A class is a collection of data and the various operations that can be performed on that data. Object- This is

More information

Object-Oriented Software Engineering Practical Software Development using UML and Java

Object-Oriented Software Engineering Practical Software Development using UML and Java Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 5: Modelling with Classes Lecture 5 5.1 What is UML? The Unified Modelling Language is a standard graphical

More information

3.Analysis, design concepts and principles

3.Analysis, design concepts and principles 3.Analysis, design concepts and principles Ooo OBJECTIVE To introduce the analysis and design concepts. To introduce design heuristics and architectural design. To explain data design for design concepts.

More information

MCQS for Midterm cs504 Combined by Anees Ahmad

MCQS for Midterm cs504 Combined by Anees Ahmad MCQS for Midterm cs504 Combined by Anees Ahmad The best way to conduct a requirements validation review is to examine the system model for errors have the customer look over the requirements send them

More information

CompuScholar, Inc. Alignment to Nevada "Computer Science" Course Standards

CompuScholar, Inc. Alignment to Nevada Computer Science Course Standards CompuScholar, Inc. Alignment to Nevada "Computer Science" Course Standards Nevada Course Details: Course Name: Computer Science Primary Cluster: Information and Media Technologies Standards Course Code(s):

More information

Objectives. Explain the purpose and objectives of objectoriented. Develop design class diagrams

Objectives. Explain the purpose and objectives of objectoriented. Develop design class diagrams Objectives Explain the purpose and objectives of objectoriented design Develop design class diagrams Develop interaction diagrams based on the principles of object responsibility and use case controllers

More information

ACRONYMS AND GLOSSARY

ACRONYMS AND GLOSSARY Appendix A ACRONYMS AND GLOSSARY SYS-ED/ COMPUTER EDUCATION TECHNIQUES, INC. 1 Acronyms Acronym 1NF 1ONF 2NF 2ONF 2ONF 3NF 3ONF API CASE CORBA CRUD DFD FLOOT IDL Java VM ODMG OMG OODBMS OOUI OQL ODBC OOCRUD

More information

CS487 Midterm Exam Summer 2005

CS487 Midterm Exam Summer 2005 1. (4 Points) How does software differ from the artifacts produced by other engineering disciplines? 2. (10 Points) The waterfall model is appropriate for projects with what Characteristics? Page 1 of

More information

iserver Free Archimate ArchiMate 1.0 Template Stencil: Getting from Started Orbus Guide Software Thanks for Downloading the Free ArchiMate Template! Orbus Software have created a set of Visio ArchiMate

More information

Topic 01. Software Engineering, Web Engineering, agile methodologies.

Topic 01. Software Engineering, Web Engineering, agile methodologies. Topic 01 Software Engineering, Web Engineering, agile methodologies. 1 What is Software Engineering? 2 1 Classic Software Engineering The IEEE definition: Software Engineering is the application of a disciplined,

More information

Refactoring. Chen Tang March 3, 2004

Refactoring. Chen Tang March 3, 2004 Refactoring Chen Tang March 3, 2004 What Is Refactoring (Definition) Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet

More information

The Design Patterns Matrix From Analysis to Implementation

The Design Patterns Matrix From Analysis to Implementation The Design Patterns Matrix From Analysis to Implementation This is an excerpt from Shalloway, Alan and James R. Trott. Design Patterns Explained: A New Perspective for Object-Oriented Design. Addison-Wesley

More information

Idioms and Design Patterns. Martin Skogevall IDE, Mälardalen University

Idioms and Design Patterns. Martin Skogevall IDE, Mälardalen University Idioms and Design Patterns Martin Skogevall IDE, Mälardalen University 2005-04-07 Acronyms Object Oriented Analysis and Design (OOAD) Object Oriented Programming (OOD Software Design Patterns (SDP) Gang

More information

Where are we going? EEC 521: Software Engineering. A Note on Quality. What is Design? Introduction to Design. Our focus

Where are we going? EEC 521: Software Engineering. A Note on Quality. What is Design? Introduction to Design. Our focus Where are we going? Many levels of design: EEC 521: Software Engineering Introduction to Our focus Method Class/Component Subsystem GUI Data Format Architectural 10/6/09 EEC 521: Software Engineering 1

More information

For 100% Result Oriented IGNOU Coaching and Project Training Call CPD TM : ,

For 100% Result Oriented IGNOU Coaching and Project Training Call CPD TM : , Course Code : MCS-032 Course Title : Object Oriented Analysis and Design Assignment Number : MCA (3)/032/Assign/2014-15 Assignment Marks : 100 Weightage : 25% Last Dates for Submission : 15th October,

More information