software design
play

Software Design Fernando Brito e Abreu (fba@di.fct.unl.pt) - PDF document

Software Design Fernando Brito e Abreu (fba@di.fct.unl.pt) Universidade Nova de Lisboa (http://www.unl.pt) QUASAR Research Group (http://ctp.di.fct.unl.pt/QUASAR) SWEBOK: the 10 Knowledge Areas Software Requirements Software Design


  1. Software Design Fernando Brito e Abreu (fba@di.fct.unl.pt) Universidade Nova de Lisboa (http://www.unl.pt) QUASAR Research Group (http://ctp.di.fct.unl.pt/QUASAR) SWEBOK: the 10 Knowledge Areas � Software Requirements � Software Design � Software Construction � Software Testing � Software Maintenance � Software Configuration Management � Software Engineering Management � Software Engineering Process � Software Engineering Tools and Methods � Software Quality 5-Apr-05 Software Engineering / Fernando Brito e Abreu 2 1

  2. Design is … � “the process of defining the architecture, components, interfaces, and other characteristics of a system or component” � … and “the result of that process.” [IEEE 610.12-90] 5-Apr-05 Software Engineering / Fernando Brito e Abreu 3 Summary � Software Design Fundamentals � Key Issues in Software Design � Software Structure and Architecture � Design Quality Analysis and Evaluation � Software Design Notations � Software Design Strategies and Methods 5-Apr-05 Software Engineering / Fernando Brito e Abreu 4 2

  3. Summary � Software Design Fundamentals � Key Issues in Software Design Key Issues in Software Design Key Issues in Software Design � � � Software Structure and Architecture Software Structure and Architecture Software Structure and Architecture � � � Design Quality Analysis and Evaluation Design Quality Analysis and Evaluation Design Quality Analysis and Evaluation � � � Software Design Notations Software Design Notations Software Design Notations � � � Software Design Strategies and Methods Software Design Strategies and Methods Software Design Strategies and Methods � � 5-Apr-05 Software Engineering / Fernando Brito e Abreu 5 Software design is a 2-step process � Architectural design � Architectural design describes how software is decomposed and organized into components (the software architecture) [IEEEP1471-00] � Detailed design � Detailed design describes the specific behavior of those components 5-Apr-05 Software Engineering / Fernando Brito e Abreu 6 3

  4. Important design principles � Abstraction � Coupling and cohesion � Decomposition and modularization � Encapsulation/information hiding � Separation of interface and implementation � Sufficiency, completeness and primitiveness 5-Apr-05 Software Engineering / Fernando Brito e Abreu 7 Abstraction � … is a concept or idea not associated with any specific instance � … is the process of forgetting information so that things that are different can be treated as if they were the same. � … is the process of combining multiple smaller operations into a single unit that can be referred to by name. � … is the process of picking out (abstracting) common features of objects and procedures. � Abstraction can have different flavors: � procedural abstraction � data abstraction � control abstraction � Abstraction leads us to different views of a system … 5-Apr-05 Software Engineering / Fernando Brito e Abreu 8 4

  5. Abstraction system assembly functionality configuration mgmt. performance scalability throughput Implementation Design View View Requirements View Process View Deployment View system topology methods distribution people delivery plans installation activities control 5-Apr-05 Software Engineering / Fernando Brito e Abreu 9 Coupling and cohesion � Coupling is defined as the strength of the relationships between modules � High coupling is usually considered harmful � Cohesion is defined by how the elements making up a module are related � Low cohesion is usually considered harmful 5-Apr-05 Software Engineering / Fernando Brito e Abreu 10 5

  6. Decomposition and modularization � Divide ut regnes ... is a fundamental engineering principle! � The “divide-and-conquer” strategy is applied in most industry fields to deal with complexity, specialization and mass production � This is specially important for breaking large sw products into a number of smaller independent parts (components) � The decomposition usually aims at placing different functionalities or responsibilities in different components 5-Apr-05 Software Engineering / Fernando Brito e Abreu 11 Decomposition and modularization � Advantages : � design and develop different parts of the same system by different people / distinct companies � handle large systems complexity (split, simpler parts, can be better understood individually) � test systems in a parallel fashion (different people) � substitute or repair defective parts of a system without interfering with other parts � reuse existing parts in different contexts � divide the system in configuration units to be put under CM � restrict change propagation . 5-Apr-05 Software Engineering / Fernando Brito e Abreu 12 6

  7. Modularity: beware of synonyms! � Categories (Booch) � Namespaces (C++) � Subsystems (Jacobson) � Packages (Java) � Domains (Page-Jones) � Units (Delphi) � Clusters (B. Meyer) � Components ... � Packages (UML) All are class aggregates … 5-Apr-05 Software Engineering / Fernando Brito e Abreu 13 Modularity is often not guided by structural criteria! 0 . 7 0 . 6 0 . 5 0 . 4 0 . 3 0 . 2 0 . 1 0 IM P _ M M F O P T _ M M F S p e c if ic a t io n 5-Apr-05 Software Engineering / Fernando Brito e Abreu 14 7

  8. Encapsulation / information hiding � Stands for grouping and packaging the elements and internal details of an abstraction and making those details inaccessible � e.g. C++ include files, Java Interfaces 5-Apr-05 Software Engineering / Fernando Brito e Abreu 15 Separation of interface and implementation � Involves defining a component by specifying a public interface, known to the clients, separate from the details of how the component is realized � e.g. Web services (WSDL) 5-Apr-05 Software Engineering / Fernando Brito e Abreu 16 8

  9. Sufficiency, completeness and primitiveness � A software component should capture all the important characteristics of an abstraction, and nothing more (aka “separation of concerns”) � e.g. distribution concerns should be treated separately from security concerns or from transactional concerns � This principle is related with the one of decomposition and modularization and has given rise to Aspect- Oriented Development 5-Apr-05 Software Engineering / Fernando Brito e Abreu 17 Summary � Software Design Fundamentals � Key Issues in Software Design Software Structure and Architecture � Software Structure and Architecture Software Structure and Architecture � � Design Quality Analysis and Evaluation � Design Quality Analysis and Evaluation Design Quality Analysis and Evaluation � � Software Design Notations � Software Design Notations Software Design Notations � � Software Design Strategies and Methods � Software Design Strategies and Methods Software Design Strategies and Methods � � 5-Apr-05 Software Engineering / Fernando Brito e Abreu 18 9

  10. Design Aspects � Some design issues (aka “aspects”) are not specific to a given application domain � they are “cross-cutting” the system’s functionality � Aspects tend not to be units of software’s functional decomposition � but rather to be properties that affect the performance or semantics of the components 5-Apr-05 Software Engineering / Fernando Brito e Abreu 19 Design Aspects (examples) � Concurrency � How to decompose the software into processes, tasks, and threads � How to deal with related efficiency, atomicity, synchronization, and scheduling issues. � Control and Handling of Events � How to organize data and control flow � How to handle reactive and temporal events through various mechanisms such as implicit invocation and call-backs � Distribution of Components � How to distribute the software across the hardware � How the components communicate � How middleware can be used to deal with heterogeneous sw 5-Apr-05 Software Engineering / Fernando Brito e Abreu 20 10

  11. Design Aspects (more examples) � Error and Exception Handling and Fault Tolerance � How to prevent and tolerate faults � How to deal with exceptional conditions � How to degrade nicefully � Interaction and Presentation � How to structure and organize the interactions with users and the presentation of information � e.g. separation of presentation and business logic using the Model- View-Controller approach � Note : specifying user interface details, is a task of user interface design (a part of Sw Ergonomics, not Software Engineering ) � Data Persistence � How long-lived data are to be handled 5-Apr-05 Software Engineering / Fernando Brito e Abreu 21 Summary � Software Design Fundamentals � Key Issues in Software Design � Software Structure and Architecture Design Quality Analysis and Evaluation � Design Quality Analysis and Evaluation Design Quality Analysis and Evaluation � � Software Design Notations � Software Design Notations Software Design Notations � � Software Design Strategies and Methods � Software Design Strategies and Methods Software Design Strategies and Methods � � 5-Apr-05 Software Engineering / Fernando Brito e Abreu 22 11

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend