Software Design

Total Page:16

File Type:pdf, Size:1020Kb

Software Design SDA01 9/18/07 10:32 AM Page iii www.Vidyarthiplus.com Software Design www.Vidyarthiplus.com SDC01 9/18/07 10:34 AM Page 3 www.Vidyarthiplus.com UNIT 1 : SOFTWARE DESIGN PRINCIPLES INTRODUCTION Software design is the process by which an agent creates a specification of a software artifact, intended to accomplish goals, using a set of primitive components and subject to constraints. Software design may refer to either "all the activities involved in conceptualizing, framing, implementing, commissioning, and ultimately modifying complex systems" or "the activity following requirements specification and before programming, as ... in a stylized software engineering process." Software design usually involves problem solving and planning a software solution. This includes both low-level component and algorithm design and high- level, architecture design. Software design is the process of implementing software solutions to one or more set of problems. One of the important parts of software design is the software requirements analysis (SRA). It is a part of the software development process that lists specifications used in software engineering. If the software is "semi- automated" or user centered, software design may involve user experience design yielding a story board to help determine those specifications. If the software is completely automated (meaning no user or user interface), a software design may be as simple as a flow chart or text describing a planned sequence of events. There are also semi-standard methods like Unified Modeling Language and Fundamental modeling concepts. In either case, some documentation of the plan is usually the product of the design. Furthermore, a software design may be platform-independent or platform-specific, depending on the availability of the technology used for the design. Software design can be considered as creating a solution to a problem in hand with available capabilities. The main difference between Software analysis and design is that the output of a software analysis consist of smaller problems to solve. Also, the analysis should not be very different even if it is designed by different team members or groups. The design focuses on the capabilities, and there can be multiple designs for the same problem depending on the environment that solution will be hosted. They can be operations systems, webpages, mobile or even the new cloud computing paradigm. Sometimes the design depends on the environment that it was developed for, whether it is created from reliable frameworks or implemented with suitable design patterns. www.Vidyarthiplus.com SDC01 9/18/07 10:34 AM Page 8 www.Vidyarthiplus.com External requirements 1 Clarify Requirements nature of specification requirements 2 Analyse needs Functional and build ‘black specification box’ model of problem Functional specification 3 Postulate a ‘white box’ design List of mismatches solution 4 Validate solution (including use of prototypes) White box model 5 Design plan Implementation of the design plan using a suitable form of software Figure 1.3 A model of the design process. n postulate a solution; n build a model of the solution; n evaluate the model against the original requirement; n elaborate the model to produce a detailed specification of the solution. www.Vidyarthiplus.com SDC01 9/18/07 10:34 AM Page 16 www.Vidyarthiplus.com A software designer may need to acquire some degree of ‘domain knowledge’ as a routine part of the input needed for undertaking any particular design task. Some of this may be obtained from the specification (which may well run to hundreds of pages), but by no means all of the necessary knowledge is likely to be available in this way. So, as shown in Figure 1.7, the software designer may need to be responsive to many channels of communi-cation. This is an aspect that will be addressed further in Chapter 3, while some of the ways of transferring the domain knowledge will also be examined more fully in later chapters. To continue with the needs of software development: it is clear from the above that the main task of the design phase is to produce the plans necessary for software production to proceed. The form and extent of the plans will be determined by the design practices and means of implementation chosen, as well as by the size of the Requirements specification Plans for realization of the design Constraints Domain knowledge Figure 1.7 The designer’s channels of communication. www.Vidyarthiplus.com SDC01 9/18/07 10:34 AM Page 17 www.Vidyarthiplus.com system being developed. Clearly, in a large project employing many programmers the design plans will need to capture a much wider range of factors than will be needed by the one-person project, where the designer may well be the programmer too. Typically, such plans will be concerned with describing: n the static structure of the system, including any subprograms to be used and their hierarchy; n any data objects to be used in the system; n the algorithms to be used; n the packaging of the system, in terms of how components are grouped in compi- lation units (assuming that implementation will use a conventional imperative programming language); n interactions between components, including the form these should take, and the nature of any causal links. These are all concerned with specifying the form of the design product itself. But as was observed above, the overall design task may also involve producing process- oriented plans too, concerned with such matters as the preferred order of development for subprograms/modules and so on, and the strategy for their eventual integration into the complete system. (These are rather like the assembly directions that are needed for construction of the garden shed.) However, for the moment we will chiefly concern ourselves with the needs of the design product. As in many more ‘classical’ forms of engineering, software designers produce plans that specify how the final product is to be assembled in terms of the items listed above. This usually requires the use of a variety of forms of representation, since each of these provides a different ‘view’ of a system. In a way, the use of these multiple views corres- ponds to the use of plan, elevation and end views in technical drawing, as well as to the cross-sectional forms used to indicate assembly details. (The concept of tolerance is perhaps lacking though, since software components generally have to ‘fit’ rather precisely.) For software systems, however, a further degree of complexity has to be consid- ered. For designing software consists of designing a process; and so it becomes neces- sary to model and describe its behaviour as well as its structure, and also the functions that it will perform. So the designer’s model will ideally include descriptions that also encompass these aspects of the eventual system. To meet these needs, the designer will usually make use of a number of different forms of design representation to help with constructing the model, each represen- tation providing a different viewpoint on the form of a design, as shown in Figure 1.8. The more complex the system, the more we need a full set of viewpoints to understand its behaviour, and to provide a specification that is sufficiently complete for it to be used as an aid in the construction of the system. We will return later to consider more fully the ways in which the dynamic nature of a software system influences (and complicates) the process of design; for the moment we will continue to focus our attention upon the nature of the design process in general. www.Vidyarthiplus.com SDC01 9/18/07 10:34 AM Page 18 www.Vidyarthiplus.com 18 Figure 1.8 Examples of design viewpoints. www.Vidyarthiplus.com principles for software design • The design processwww.Vidyarthiplus.com should not suffer from “tunnel vision.” A good designer should consider alternative approaches, judging each based on the requirements of the problem, the resources available to do the job. • The design should be traceable to the analysis model. Because a single element of the design model often traces to multiple requirements, it is necessary to have a means for tracking how requirements have been satisfied by the design model. • The design should not reinvent the wheel. Systems are constructed using a set of design patterns, many of which have likely been encountered before. These patterns should always be chosen as an alternative to reinvention. Time is short and resources are limited! Design time should be invested in representing truly new ideas and integrating those patterns that already exist. • The design should “minimize the intellectual distance” between the software and the problem as it exists in the real world. That is, the structure of the software design should (whenever possible) mimic the structure of the problem domain. • The design should exhibit uniformity and integration. A design is uniform if it appears that one person developed the entire thing. Rules of style and format should be defined for a design team before design work begins. A design is integrated if care is taken in defining interfaces between design components. • The design should be structured to accommodate change. The design concepts discussed in the next section enable a design to achieve this principle. • The design should be structured to degrade gently, even when aberrant data, events, or operating conditions are encountered. Well- designed software should never “bomb.” It should be designed to accommodate unusual circumstances, and if it must terminate processing, do so in a graceful manner. • Design is not coding, coding is not design. Even when detailed procedural designs are created for program components, the level of abstraction of the design model is higher than source code.
Recommended publications
  • Acceptor-Connector an Object Creational Pattern for Connecting and Initializing Communication Services
    Acceptor-Connector An Object Creational Pattern for Connecting and Initializing Communication Services Douglas C. Schmidt [email protected] Department of Computer Science Washington University St. Louis, MO 63130, USA An earlier version of this paper appeared in a chapter in TRACKING the book Pattern Languages of Program Design 3, edited SATELLITES STATION by Robert Martin, Frank Buschmann, and Dirke Riehle pub- PEERS lished by Addison-Wesley, 1997. 1Intent STATUS INFO The Acceptor-Connector design pattern decouples connec- WIDE AREA NETWORK tion establishment and service initialization in a distributed COMMANDS BULK DATA system from the processing performed once a service is ini- TRANSFER tialized. This decoupling is achieved with three compo- nents: acceptors, connectors,andservice handlers. A con- GATEWAY nector actively establishes a connection with a remote ac- ceptor component and initializes a service handler to pro- cess data exchanged on the connection. Likewise, an ac- LOCAL AREA NETWORK ceptor passively waits for connection requests from remote GROUND connectors, establishing a connection upon arrival of such a STATION PEERS request, and initializing a service handler to process data ex- changed on the connection. The initialized service handlers Figure 1: The Physical Architecture of a Connection- then perform application-specific processing and communi- oriented Application-level Gateway cate via the connection established by the connector and ac- ceptor components. The Gateway transmits data between its Peers using the connection-oriented TCP/IP protocol [1]. In our exam- 2 Example ple network configuration, each service is bound to a con- nection endpoint designated by an IP host address and a TCP To illustrate the Acceptor-Connector pattern, consider the port number.
    [Show full text]
  • Design Pattern Interview Questions
    DDEESSIIGGNN PPAATTTTEERRNN -- IINNTTEERRVVIIEEWW QQUUEESSTTIIOONNSS http://www.tutorialspoint.com/design_pattern/design_pattern_interview_questions.htm Copyright © tutorialspoint.com Dear readers, these Design Pattern Interview Questions have been designed specially to get you acquainted with the nature of questions you may encounter during your interview for the subject of Design Pattern. As per my experience good interviewers hardly plan to ask any particular question during your interview, normally questions start with some basic concept of the subject and later they continue based on further discussion and what you answer: What are Design Patterns? Design patterns represent the best practices used by experienced object-oriented software developers. Design patterns are solutions to general problems that software developers faced during software development. These solutions were obtained by trial and error by numerous software developers over quite a substantial period of time. What is Gang of Four GOF? In 1994, four authors Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides published a book titled Design Patterns - Elements of Reusable Object-Oriented Software which initiated the concept of Design Pattern in Software development. These authors are collectively known as Gang of Four GOF. Name types of Design Patterns? Design patterns can be classified in three categories: Creational, Structural and Behavioral patterns. Creational Patterns - These design patterns provide a way to create objects while hiding the creation logic, rather than instantiating objects directly using new opreator. This gives program more flexibility in deciding which objects need to be created for a given use case. Structural Patterns - These design patterns concern class and object composition. Concept of inheritance is used to compose interfaces and define ways to compose objects to obtain new functionalities.
    [Show full text]
  • Learning Javascript Design Patterns
    Learning JavaScript Design Patterns Addy Osmani Beijing • Cambridge • Farnham • Köln • Sebastopol • Tokyo Learning JavaScript Design Patterns by Addy Osmani Copyright © 2012 Addy Osmani. All rights reserved. Revision History for the : 2012-05-01 Early release revision 1 See http://oreilly.com/catalog/errata.csp?isbn=9781449331818 for release details. ISBN: 978-1-449-33181-8 1335906805 Table of Contents Preface ..................................................................... ix 1. Introduction ........................................................... 1 2. What is a Pattern? ...................................................... 3 We already use patterns everyday 4 3. 'Pattern'-ity Testing, Proto-Patterns & The Rule Of Three ...................... 7 4. The Structure Of A Design Pattern ......................................... 9 5. Writing Design Patterns ................................................. 11 6. Anti-Patterns ......................................................... 13 7. Categories Of Design Pattern ............................................ 15 Creational Design Patterns 15 Structural Design Patterns 16 Behavioral Design Patterns 16 8. Design Pattern Categorization ........................................... 17 A brief note on classes 17 9. JavaScript Design Patterns .............................................. 21 The Creational Pattern 22 The Constructor Pattern 23 Basic Constructors 23 Constructors With Prototypes 24 The Singleton Pattern 24 The Module Pattern 27 iii Modules 27 Object Literals 27 The Module Pattern
    [Show full text]
  • Creational Patterns
    9. Creational Pattern Venkat Subramaniam CDP-1 Creational Patterns • Abstracts instantiation process • Makes system independent of how its objects are œ created œ composed œ represented • Encapsulates knowledge about which concrete classes the system uses • Hides how instances of these classes are created and put together Venkat Subramaniam CDP-2 Abstract Factory Provide an interface for creating families of related or dependent objects without specifying their concrete classes Venkat Subramaniam CDP-3 Example that would benefit from Abstract Factory ComputerModelA MemoryType A CPUTypeA ModemTypeA BuildComputer(ComputerModelA& comp) { comp.Add(new MemoryTypeA); comp.Add(new CPUTypeA); comp.Add(new ModemTypeA); } What if I want to build a Computer of Model B with Model B Memory,CPU and Modem? Venkat Subramaniam CDP-4 Using Abstract Factory ComputerFactory Client Computer createComputer() createMemory() createCPU() Computer Computer createModem() ModelA ModelB Memory CompFactoryB CompFactoryA createComputer() createComputer() Memory Memory createMemory() createMemory() ModelA ModelB createCPU() createCPU() createModem() createModem() Venkat Subramaniam CDP-5 Using Abstract Factory... BuildComputer(Computer& comp, ComputerFactory& compFactory) { comp.Add(compFactory.createMemory()) ; comp.Add(compFactory.createCPU()); comp.Add(compFactory.createModem()); } Venkat Subramaniam CDP-6 .hen to use Abstract Factory? • Use Abstract Factory when: œ system should be independent of how its products are created, composed and represented œ system should
    [Show full text]
  • Java Design Patterns I
    Java Design Patterns i Java Design Patterns Java Design Patterns ii Contents 1 Introduction to Design Patterns 1 1.1 Introduction......................................................1 1.2 What are Design Patterns...............................................1 1.3 Why use them.....................................................2 1.4 How to select and use one...............................................2 1.5 Categorization of patterns...............................................3 1.5.1 Creational patterns..............................................3 1.5.2 Structural patterns..............................................3 1.5.3 Behavior patterns...............................................3 2 Adapter Design Pattern 5 2.1 Adapter Pattern....................................................5 2.2 An Adapter to rescue.................................................6 2.3 Solution to the problem................................................7 2.4 Class Adapter..................................................... 11 2.5 When to use Adapter Pattern............................................. 12 2.6 Download the Source Code.............................................. 12 3 Facade Design Pattern 13 3.1 Introduction...................................................... 13 3.2 What is the Facade Pattern.............................................. 13 3.3 Solution to the problem................................................ 14 3.4 Use of the Facade Pattern............................................... 16 3.5 Download the Source Code.............................................
    [Show full text]
  • Design Patterns Chapter 3
    A Brief Introduction to Design Patterns Jerod Weinman Department of Computer Science Grinnell College [email protected] Contents 1 Introduction 2 2 Creational Design Patterns 4 2.1 Introduction ...................................... 4 2.2 Factory ........................................ 4 2.3 Abstract Factory .................................... 5 2.4 Singleton ....................................... 8 2.5 Builder ........................................ 8 3 Structural Design Patterns 10 3.1 Introduction ...................................... 10 3.2 Adapter Pattern .................................... 10 3.3 Façade ......................................... 11 3.4 Flyweight ....................................... 12 3.5 Proxy ......................................... 13 3.6 Decorator ....................................... 14 4 Behavioral Design Patterns 20 4.1 Introduction ...................................... 20 4.2 Chain of Responsibility ................................ 20 4.3 Observer ........................................ 20 4.4 Visitor ......................................... 22 4.5 State .......................................... 25 1 Chapter 1 Introduction As you have probably experienced by now, writing correct computer programs can sometimes be quite a challenge. Writing the programs is fairly easy, it can be the “correct” part that maybe is a bit hard. One of the prime culprits is the challenge in understanding a great number of complex interactions. We all have probably experienced the crash of some application program
    [Show full text]
  • A Study of Patterns in an ATC System
    Department of Mathematics, Statistics and Computer Science Reports from MASDA - Rapporter från MASDA A Study of Patterns in an ATC System Mattias Blåman Robert Pratz Aug MASDA Report 9984 1999 Växjö University ISSN 1400-1942 S-351 95 VÄXJÖ ISRN VXU/MASDA/DA/E/--9984--SE Abstract The differences between an experienced software developer and a novice are knowledge and experience. There has always been a need for an effective way of passing along the knowledge and experiences of senior software developers to novices. A remedy to this problem lies in the use of patterns. Patterns help software developers build systems on the collective experience of expert software developers. Patterns encapsulate well-proven design solutions in software development in a reusable way and help to promote good design practice. Patterns distill and provide a means to reuse the design knowledge gained by experienced software developers. The importance and extent of software in defense systems constantly increases. FMV, the Swedish Defense Material Administration, has an interest in decreasing the costs of software system development and saving time and money. An attempt to achieve this is to introduce the use of patterns in the associated software development organizations. As an initial step in this project, FMV is examining a number of existing defense systems developed by different suppliers. One of these suppliers is Enator Telub AB in Växjö, which has developed the ATC (Air Traffic Control) system SIGMA/AMP. In this master thesis, we examine the SIGMA/AMP system to investigate whether patterns have been used during the development work or not.
    [Show full text]
  • Digital Notes on Design Patterns (R15a0528)
    DIGITAL NOTES ON DESIGN PATTERNS (R15A0528) B.TECH IV YEAR - I SEM (2019-20) DEPARTMENT OF INFORMATION TECHNOLOGY MALLA REDDY COLLEGE OF ENGINEERING & TECHNOLOGY (Autonomous Institution – UGC, Govt. of India) (Affiliated to JNTUH, Hyderabad, Approved by AICTE - Accredited by NBA & NAAC – ‘A’ Grade - ISO 9001:2015 Certified) Maisammaguda, Dhulapally (Post Via. Hakimpet), Secunderabad – 500100, Telangana State, INDIA. Design Patterns Page 1 MALLA REDDY COLLEGE OF ENGINEERING & TECHNOLOGY DEPARTMENT OF INFORMATION TECHNOLOGY IV Year B.Tech IT – I Sem L T /P/D C 4 - / - / - 3 (R15A0528) DESIGN PATTERNS (Elective IV) OBJECTIVES: 1. Design patterns are a systematic approach that focus and describe abstract systems of interaction between classes, objects, and communication flow 2. Given OO design heuristics, patterns or published guidance, evaluate a design for applicability, reasonableness, and relation to other design criteria. 3. Comprehend the nature of design patterns by understanding a small number of examples from different pattern categories, and to be able to apply these patterns in creating an OO design. 4. Good knowledge on the documentation effort required for designing the patterns. UNIT I: Introduction: What Is a Design Pattern? Design Patterns in Smalltalk MVC, Describing Design Patterns, The Catalog of Design Patterns, Organizing the Catalog, How Design Patterns Solve Design Problems, How to Select a Design Pattern, How to Use a Design Pattern. UNIT II: A Case Study: Designing a Document Editor: Design Problems, Document Structure, Formatting, Embellishing the User Interface, and Supporting Multiple Look – and - Feel Standards, Supporting Multiple Window Systems, User Operations Spelling Checking and Hyphenation, Summary. UNIT III: Creational Patterns: Abstract Factory, Builder, Factory Method, Prototype, Singleton, Discussion of Creational Patterns.
    [Show full text]
  • Chap 5. Patterns
    Chap 5. Patterns 1. Introduction 2. Pattern Description and Application 3. Design Patterns 4. Architectural Patterns 5. Appendix: Other Patterns 1 1. Introduction Motivating Example Problem: You are building a quote application, which contains a class that is responsible for managing all of the quotes in the system. It is important that all quotes interact with one and only one instance of this class. How do you structure your design so that only one instance of this class is accessible within the application? Simple solution: ÷Create a QuoteManager class with a private constructor so that no other class can instantiate it. ÷This class contains a static instance of QuoteManager that is returned with a static method named GetInstance(). public class QuoteManager { //NOTE: For single threaded applications only private static QuoteManager _Instance = null; private QuoteManager() {} public static QuoteManager GetInstance() { if (_Instance==null) { _Instance = new QuoteManager (); } return _Instance; Recurring problems like this kind have } been observed by experienced developers //... functions provided by QuoteManager and a common solution has been distilled,2 } as the Singleton pattern. Pattern Overview - A classical engineering rule of thumb consists of reusing extensively available knowledge base for any kind of problem solving that occurs during system design. Method ÷ When the knowledge doesn't exist for the problem at hand,Theft Intuition then intuition takes the lead. ÷ Architectural styles or patterns define experience-based classes of designs along with their known characteristics. Classical system Method Theft Intuition - A pattern is a solution to a problem in a context •A pattern codifies specific knowledge collected from experience in a domain Unprecedented system •There are three kinds of patterns –Idioms: provide a solution for specific programming issues in given language.
    [Show full text]
  • Proceedings Template
    Supporting the Evolution of Service Oriented Web Applications using Design Patterns Manolis Tzagarakis Michalis Vaitis Nikos Karousos Computer Technology Institute University of the Aegean University of Patras 26500 Rion University Hill, GR-811 00 Mytilene 26500 Rion Greece Greece Greece +30 2610 960482 +30 22510 36433 +30 2610 960482 [email protected] [email protected] [email protected] ABSTRACT "Web systems that are kept running via continual stream of Web applications make increasingly use of services that are Patches or upgrades developed without systematic approaches” provided by external information systems to deliver advanced The problems are even more complicated, when web applications functionalities to end users. However, many issues regarding how are built upon service oriented architectures (SOA) that differ these services are integrated into web applications and how greatly fom traditional client server architectures. SOA exhibit service oriented web applications evolve, are reengineered and great flexibility with respect to services and require new refactored are still addressed in an ad hoc manner. In this paper, approaches to service integration. Within the hypermedia field, we present how design patterns can lessen the efforts required to Component-Based Hypermedia Systems (CB-OHS)[15] have integrate hypermedia services into web applications. In particular emerged, consisting of an underlying set of infrastructure services we present how evolution and maintenance issues are addressed that support the development and operation of an open set of within Callimachus, a CB-OHS that web applications need to components (called structure servers), providing structure services integrate in order to provide hypertext functionality to end users. for specific application domains.
    [Show full text]
  • Unit-Iii Pattern
    SOFTWARE ARCHITECTURE AND DESIGN PATTERN UNIT-III PATTERN: PATTERN DESCRIPTION Software patterns are reusable solutions to recurring problems that occur during software development. In general, a pattern has four essential elements: The pattern name is a handle we can use to describe a design problem, its solutions,andconsequencesinawordortwo.Namingapatternimmediatelyincreasesour designvocabulary.Itletsusdesignatahigherlevelofabstraction.Havingavocabularyfor patterns lets us talk about them with our colleagues, in our documentation, and even to ourselves.Itmakesiteasiertothinkaboutdesignsandtocommunicatethemandtheirtrade- offs to others. Finding good names has been one of the hardest parts of developing our catalog. Theproblem describes when to apply the pattern. It explains the problem and its context. It mightdescribespecificdesignproblemssuchashowtorepresentalgorithmsasobjects.It mightdescribeclassorobjectstructuresthataresymptomaticofaninflexibledesign. Sometimestheproblemwillincludealistofconditionsthatmustbemetbeforeitmakes sensetoapplythepattern. The solution describes the elements that make up the design, their relationships, responsibilities,andcollaborations.Thesolutiondoesn'tdescribeaparticularconcretedesign orimplementation,becauseapatternislikeatemplatethatcanbeappliedinmanydifferent situations.Instead,thepatternprovidesanabstractdescriptionofadesignproblemandhow ageneralarrangementofelements(classesandobjectsinourcase)solvesit. The consequences are the results and trade-offs of applying the pattern .Though consequences are
    [Show full text]
  • Factory Method Design Pattern Real World Example
    Factory Method Design Pattern Real World Example Preponderating and tasty Tyson wallpapers his calvities precools bratticed preposterously. Shannan is fixative: she unplait Jewishly and exploiter her quarrians. Startling Lucian overlooks or misuse some sabotages individualistically, however parentless Parrnell breveting humanly or silenced. Abhishek is not parameterized. The Factory Method defines an interface for creating objects but lets. Let's why how appropriate use the Abstract Factory hand to design this kind of system. Design Patterns for Humans Developer Roadmaps. ValueOf method is good praise which caches true whereas false boolean value. So cannot have to design in an a serve to reuse the Director to create rather complex objects I wait looking foe a practical example to mint this. The child class method's can facilitate different implementation depends on the. Factory Design Pattern in Java JournalDev. Abstract factory inside a creational design pattern which allows us to. Its methods to real world example of this method is a number of your post dedicated class at hand, how to add new values that? Factory method but you might believe because in real world examples and an earlier saved state and java is considered good examples to be in a lot. Design Patterns The pickle Factory Pattern. Simple factory and turn responsible to real factory world pattern example, you can apply the target class with composition over toppings array to! Finally we have just made my factory is that you, these techniques like you know about capturing and type of such a product type. Diagrams applicable scenarios java example showing usage of javautil.
    [Show full text]