Well formed design class in software engineering
Home Explore Login Signup. Successfully reported this slideshow. We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime. Next SlideShares. You are reading a preview. Create your free account to continue reading. Sign Up. Upcoming SlideShare. What to Upload to SlideShare. Embed Size px. Start on. Show related SlideShares at end.
WordPress Shortcode. Share Email. Top clipped slide. Download Now Download Download to read offline. Unit 3 Apr. Software Engineering. Jignesh Kariya Follow. Professor, Speaker. Digital Logic Gates. Business Analytics. Unit 5. Unit 2. Data analysis and Presentation. Scaling and Measurement techniques.
Related Books Free with a 30 day trial from Scribd. Dry: A Memoir Augusten Burroughs. Related Audiobooks Free with a 30 day trial from Scribd. Unit 3 1. Design Concepts and Architectural Design 3 4. Introduction Software design encompasses the set of principles, concepts, and practices that lead to the development of a high-quality system or product. Design concepts must be understood before the mechanics of design practice are applied, and design practice itself leads to the creation of various representations of the software that serve as a guide for the construction activity that follows.
The goal of design is to produce a model or representation that exhibits firmness, commodity service , and delight joy. The goal of design is to create a model of software that will implement all customer requirements correctly and bring delight to those who use it. Software designers must sift separate through many design alternatives and converge on a solution that best suits the needs of project stakeholders.
Design Concepts A set of fundamental software design concepts has evolved over the history of software engineering. Although the degree of interest in each concept has varied over the years, each has stood the test of time. Each provides the software designer with a foundation from which more sophisticated design methods can be applied. Design Concepts 1.
Abstraction : When you consider a modular solution to any problem, many levels of abstraction can be posed. At the highest level of abstraction, a solution is stated in broad terms using the language of the problem environment. At lower levels of abstraction, a more detailed description of the solution is provided. At the lowest level of abstraction, the solution is stated in a manner that can be directly implemented. There can be two type of abstraction one Procedural and second is Data abstractions.
A procedural abstraction refers to a sequence of instructions that have a specific and limited function. The name of a procedural abstraction implies these functions, but specific details are suppressed. Ex : Open the Door. A data abstraction is a named collection of data that describes a data object. Ex : Door and its attributes 7 8. Design Concepts 2. In its simplest form, architecture is the structure or organization of program components modules , the manner in which these components interact, and the structure of data that are used by the components.
In a broader sense, however, components can be generalized to represent major system elements and their interactions. A set of properties that should be specified as part of an architectural design: 1. Structural properties 2. Extra-functional properties 3. Families of related systems 8 9.
Design Concepts Architecture cont.. Structural properties : This aspect of the architectural design representation defines the components of a system e. 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 : 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. The architectural design can be represented using one or more of a number of different models. Structural models represent architecture as an organized collection of program components. Framework models increase the level of design abstraction by attempting to identify repeatable architectural design frameworks that are encountered in similar types of applications.
Dynamic models address the behavioral aspects of the program architecture, indicating how the structure or system configuration may change as a function of external events.
Process models focus on the design of the business or technical process that the system must accommodate. Functional models can be used to represent the functional hierarchy of a system. Design Concepts 3.
The intent of each design pattern is to provide a description that enables a designer to determine 1 whether the pattern is applicable to the current work, 2 whether the pattern can be reused hence, saving design time , and 3 whether the pattern can serve as a guide for developing a similar, but functionally or structurally different pattern. Design Concepts 4. A concern is a feature or behavior that is specified as part of the requirements model for the software.
By separating concerns into smaller, and therefore more manageable pieces, a problem takes less effort and time to solve. Modularity : Modularity is the most common manifestation sign of separation of concerns. Software is divided into separately named and addressable components, sometimes called modules, that are integrated to satisfy problem requirements. Design Concepts 6. Hiding implies that effective modularity can be achieved by defining a set of independent modules that communicate with one another only that information necessary to achieve software function.
Design Concepts 7. Functional Interdependence : The concept of functional independence is a direct outgrowth result of separation of concerns, modularity, and the concepts of abstraction and information hiding.
You should design software so that each module addresses a specific subset of requirements and has a simple interface when viewed from other parts of the program structure.
It is fair to ask why independence is important. Independent modules are easier to maintain and test because secondary effects caused by design or code modification are limited, error propagation is reduced, and reusable modules are possible. To summarize, functional independence is a key to good design, and design is the key to software quality.
Design Concepts Functional Interdependence cont.. Functional independence is a key to good design, and design is the key to software quality. Independence is assessed using two qualitative criteria: 1. Cohesion is a qualitative indication of the degree to which a module focuses on just one thing. Coupling is an indication of the relative interdependence among modules. Coupling is a qualitative indication of the degree to which a module is connected to other modules and to the outside world.
Cohesion : Cohesion is a natural extension of the information-hiding. 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. Although you should always strive for high cohesion i. Coupling: Coupling is an indication of interconnection among modules in a software structure. 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.
Primitiveness : Methods associated with a design class should be focused on accomplishing one service for the class. Once the service has been implemented with a method, the class should not provide another way to accomplish the same thing. High Cohesion : A cohesive design class has a small , focused set of responsibilities and single-mindedly applies attributes and methods to implement those responsibilities. Low coupling : With the design model, it is necessary for design classes to collaborate with one another.
However, collaboration should be kept to an acceptable minimum. If a design model is highly coupled the system is difficult to implement, to test and to maintain over time. For example, the class video clip might contain set of method for editing the video clip. As long as each method focus solely on attributes associated with video clip, cohesion is maintained. Low Coupling: Within the design model, it is necessary for design classes to get together with one another.
However, get together should be kept to an acceptable minimum. If the design model is highly coupled, the system is difficult to implement to test and to maintain over time, In general, design classes within subsystem should have only limited knowledge of other classes. This restriction called the Law of Demeter, suggest that method should only send message to methods in neighboring classes.
Recommended Articles. Design a data structure that supports insert, delete, getRandom in O 1 with duplicates. Article Contributed By :. Easy Normal Medium Hard Expert. Writing code in comment? Continue with email. There are five different types of design classes and each type represents the layer of the design architecture these are as follows:. These classes are recognized as attributes and methods which are required to implement the elements of the business domain.
It implement the lower level business abstraction which is needed to completely manage the business domain class.
0コメント