1 / 36

Software Engineering with Reusable Components

RiSE’s Seminars Sametinger’s book :: Chapters 11, 12 and 13 Ednaldo Dilorenzo. Software Engineering with Reusable Components. Summary. Software Engineering (Chapter 11) Introduction Software Management Software Design Software Implementation Software Testing Software Maintenance

svea
Download Presentation

Software Engineering with Reusable Components

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. RiSE’s Seminars Sametinger’s book :: Chapters 11, 12 and 13 Ednaldo Dilorenzo Software Engineeringwith Reusable Components

  2. Summary • Software Engineering (Chapter 11) • Introduction • Software Management • Software Design • Software Implementation • Software Testing • Software Maintenance • Software Process Models (Chapter 12) • Waterfall Model • Exploratory Model • Prototyping Model • Spiral Model • Twin Life Cycle

  3. Summary • Domain Engineering • Domain Analyses • Domain Analyses Activities • Domain Analyses Methods • Foda: Feature-Oritented Domain Analyses • Domain Implementation

  4. Software Engineering 4

  5. Introduction Cost-effective production of high-quality system is the primary goal of software engineering; Software reuse and components provide crucial contributions in this direction; Large software projects are broken up into various project phases; Software Engineering :: Chapter 11

  6. Software Management Software projects tend to run over budget and behind schedule; Software management has to plan a project; It comprises the following major activities: Project planning Project measuring Project estimating Project scheduling Project controlling Software Engineering :: Chapter 11

  7. Software Specification Software specifications serve as contracts between customers and manufacturers of software systems. For complex systems, requirements analyses may be necessary. A software specification should be complete. Functional and nonfunctional requirements are among the most important parts of a specification. Specifications should completely and consistently define requirements on components. Software Engineering :: Chapter 11

  8. Software Design Software Design is an iterative process and involves describing a component at different levels of abstraction. Design includes various activities: Architectural design Component or interface design Data structure design Algorithmic design Software Engineering :: Chapter 11

  9. Software Design Top-down design is typical for components being built from scratch. Botton-up design proceeds in the oposite direction. Good designs are considered to have the following characteristics: Modularity Coupling Cohesion Understandability, Adaptability Software Engineering :: Chapter 11

  10. Software Design All these characteristics are related to each other. Various categories of design methods exist. Design methods and software reuse interact in two ways. Software Engineering :: Chapter 11

  11. Software Implementation Implementation is the process of transforming a design into an executable. Ideally, the design of a component is independent of its implementation. We refrain from dealing with implementation in greater detail. Software Engineering :: Chapter 11

  12. Software Testing The purpose of testing is to ascertain whether a component satisfies its requirements by discovering as many errors as possible. Various kinds of tests include the following: Specification test Component test Integration test Acceptance test Software Engineering :: Chapter 11

  13. Software Testing Various testing methods and strategies include: Static/dynamic testing Black-box/white-box testing Top-down/botton-up testing With software reuse, software quality can be increased and testing efforts can be decreased. Software Engineering :: Chapter 11

  14. Software Maintenance Software maintenance is the modification of a software component after its first delivery. Maintenance activities fall into the following categories: Adaptive maintenance Corrective maintenance Perfective maintenance Preventive maintenance Software Engineering :: Chapter 11

  15. Software Maintenance The cost of maintenance has been steadily increasing over the past decades. Reuse can have a positive influence on maintenance costs when high-quality components are available and reused for the development of software systems. Software Engineering :: Chapter 11

  16. Waterfall Model According to the waterfall model, the software development process is divided in well-defined phases. The waterfall life cycle comprises the following steps: Requirements analysis Specification Design Implementation Test Operation and Maintenance Software Process Models :: Chapter 12

  17. Waterfall Model Any step might uncover problems in a previous step and necessitate returning and partly or even completely redoing earlier work. The waterfall model enforces a linear process, which implies that executable programs are available late in the process. Despite its drawbacks, the classic software life cycle continues to provide structure for many software projects. Software Process Models :: Chapter 12

  18. Exploratory Model The classic software life cycle is not practical for many of today’s software systems. In the exploratory model a working system is developed as quickly as possible. Large, longevous software systems are usually not developed by using exploratory programming. Exploratory software development involves repeatedly applying techniques. Software Process Models :: Chapter 12

  19. Exploratory Model Good when both customers and developers don’t know what they want. The exploratory model delivers various operational but incomplete products. Exploratory development challenge software engineers in that they create an open architecture. Software Process Models :: Chapter 12

  20. Prototyping Model Rapid prototyping has become popular for the development of software systems with complex user interfaces. The purpose of the prototype is to enable customer and developer to agree on what the software system is supposed to do. Prototypes are useful for software components as well, especially those with complex user interfaces. Software Process Models :: Chapter 12

  21. Spiral Model The key characteristics of this model are regular assessments of management risks and actions to counteract these risks. Each cycle of spiral have the following steps: Specifying objectives; List alternatives and their constraints; Assessing each of the alternatives against each objective; The spiral model incorporates other process models. Software Process Models :: Chapter 12

  22. Twin Life Cycle Different organizational groups are involved in systematic reuse: Domain groups; Component groups; Application groups; Software process models and software reuse interact in two ways: Design with reuse; Design for reuse; Provides only a rough overview, but it clearly demonstrates activities of groups. Software Process Models :: Chapter 12

  23. Domain Analyses Common objects and operations are likely to occur in multiple applications within a domain. Domain analyses stresses the reusability of analyses and design, not code. Domain-specific reuse is usually accomplished by separating domain engineering and application engineering. Domain Engineering :: Chapter 13

  24. Domain Analyses Information Sources Existing applications; Domain experts; Products Domain definition; Domain model; Domain requirements model; Architecture model; Domain taxonomy; Domain language; Domain standards; Reusable components; Domain Engineering :: Chapter 13

  25. Domain Analyses In the context of domain analysis we can distinguish the following categories: General purpose; Domain-specific components; Product-specific components; Benefits Reuse of domain knowledge; Reuse of components in a certain context; Domain-specific model for classification; Framework for tooling and systems synthesis from reusable components; Large-grain reuse across products; Identification of reusable software components; Domain Engineering :: Chapter 13

  26. Domain Analysis Activities Activities in domain analysis have been described by various authors. Arango has compared several domain analysis methods and extracted a common process with the following activities: Domain Definition and Preparation Data Collection Data Analysis and Classification Evaluation Domain Engineering :: Chapter 13

  27. Domain Definition and Preparation It is important that a domain be clearly defined and its boundaries be established; After the definition of the domain, relevant data has to be identified and collected for the acquisition of domain knowledge; Domain Engineering :: Chapter 13

  28. Data Collection Different approaches for data collection can be used, e.g., reviews of literature, interviews of experts, analysis of applications. In determining reusable components various levels can be chosen for analysis; Different sources of information provide different types of information; Domain Engineering :: Chapter 13

  29. Data Analysis and Classification It is crucial to analyze similarities, variations and combinations of data. The activities in this step are not entirely different from activities in developing a single software system. Domain information is prepared by abstracting and generalizing functions, objects and their relationships. Domain Engineering :: Chapter 13

  30. Evaluation Besides using and refining models, it helpful to evaluate the domain; Real application developments are the best evaluation and test of a domain; Domain Engineering :: Chapter 13

  31. Domain Analysis Methods Domain analysis methods provide some sort of systematic proceeding to do domain analyses; Argo has presented, compared and evaluated eight domain analysis methods; They are essentially similar, with the main differences in: Emphasis on certain data acquisition means over others; Approach to modeling, e.g., functional vs. object-oriented techniques; Overlapping subsets of notations; Different groupings of activities with different names; Same names with slightly different meanings; Domain Engineering :: Chapter 13

  32. Foda: Feature-Oriented Domain Analysis It was developed at the Software Engineering Institute Foda contains the basic phases: Context Analysis; Domain Modeling; Architecture Modeling; Domain Engineering :: Chapter 13

  33. Context Analysis Domain Engineering :: Chapter 13 • Define the scope of the domain and its relationships to other domain • Context model; • Structure diagrams; • Data flow diagrams;

  34. Domain Modeling Domain Engineering :: Chapter 13 • Analyze commonalties and differences of problems being addressed by applications in the domain • Feature analysis; • Entity relationship modeling; • Functional analysis;

  35. Architecture Modeling Domain Engineering :: Chapter 13 • Provide a software solution to problems defined during domain modeling. • The Foda architecture model is a high-level design of applications in the domain.

  36. Domain Implementation Domain Engineering :: Chapter 13 • Domain implementation means the use of the information collected in domain analysis to create reusable components and new systems.

More Related