Giáo trình Kỹ nghệ phần mềm - Bài 7: Sử dụng lại trong phần mềm

Objectives

 The benefits of software reuse and some reuse

problems

 Different ways to implement software reuse

 Patterns of reuse

 COTS reuse  COTS reuse

 Software product lines

pdf46 trang | Chuyên mục: Công Nghệ Phần Mềm | Chia sẻ: dkS00TYs | Lượt xem: 1641 | Lượt tải: 1download
Tóm tắt nội dung Giáo trình Kỹ nghệ phần mềm - Bài 7: Sử dụng lại trong phần mềm, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
s solution.
 It should be sufficiently abstract to be reused in 
different settings
 Patterns often rely on object characteristics such as 
inheritance and polymorphism
Pattern general structure
 Name
 A meaningful pattern identifier
 Problem description
 Solution description
 Not a concrete design but a template for a design 
solution that can be instantiated in different ways.
 Consequences
 The results and trade-offs of applying the pattern.
Eg. multiple displays
Observer pattern
 Name
 Observer
 Description
 Separates the display of object state from the object itself
 Problem description
 Used when multiple displays of state are needed
 Solution description
 See slide with UML description
 Consequences
 Optimisations to enhance display performance are 
impractical
The Observer pattern
Generator-based reuse
 Standard patterns and algorithms are embedded in 
the generator and parameterised by user commands.
 A program is then automatically generated
 Possible when domain abstractions and their mapping 
to executable code can be identified
 A domain specific language is used to compose and 
control these abstractions
Types of program generator
 Types of program generator
 Parser and lexical analyser generators for language 
processing;
 Code generators in CASE tools.
 Generator-based reuse is very cost-effective but its 
applicability is limited to a relatively small number of 
application domains
 It is easier for end-users to develop programs using 
generators compared to other component-based 
approaches to reuse
Reuse through program generation
Aspect-oriented development
 Addresses a major software engineering problem - the 
separation of concerns.
 Concerns are functionality but are cross-cutting 
 E.g. all components may monitor their own operation
 All components may have to maintain security.
 Cross-cutting concerns are implemented as aspects 
and are woven into a program. 
 The concern code is reused and the new system is 
generated by the aspect weaver.
Aspect-oriented development
Application frameworks
 A sub-system design made up of 
 A collection of abstract and concrete classes and 
 The interfaces between them
 The sub-system is implemented by
 Adding components to fill in parts of the design and 
 Instantiating the abstract classes in the framework.
 Moderately large entities that can be reused
Types of application frameworks
 System infrastructure frameworks
 Support the development of system infrastructures 
 Eg. communications, user interfaces and compilers
 Middleware integration frameworks
 Standards and classes that support component 
communication and information exchange
 .NET, Java Beans, CORBA
 Enterprise application frameworks
 Support the development of specific types of 
application 
 E.g. telecommunications or financial systems.
Extending frameworks
 Extending the framework involves
 Adding concrete classes that inherit operations from 
abstract classes in the framework;
 Adding methods that are called in response to events 
that are recognised by the framework.
 Problem with frameworks is their complexity 
 It takes a long time to use them effectively
 Expensive to software development processes
Eg. Model-view controller
 System infrastructure framework for GUI design
 Allows for multiple presentations of an object and 
separate interactions with these presentations
 MVC framework involves the instantiation of a number 
of patterns (as discussed earlier under concept reuse).
Model-view-controller
Application system reuse
 Reuse of entire application systems 
 By configuring a system for an environment 
 By integrating two or more systems to create a new 
application.
 Two approaches covered here:
 COTS product integration;
 Product line development.
COTS product reuse
 COTS - Commercial Off-The-Shelf systems
 COTS systems are usually complete application 
systems that offer an API
 Building large systems by integrating COTS systems is 
now a viable development strategy for some types of 
system such as E-commerce systems.
 The key benefit is faster application development and, 
usually, lower development costs
COTS design choices
 Which COTS products offer the most appropriate 
functionality?
 There may be several similar products that may be used
 How will data be exchanged?
 Individual products use their own data structures and 
formats
 What features of the product will actually be used?
 Most products have more functionality than is needed
E-procurement system
COTS products reused
 On the client, standard e-mail and web browsing 
programs are used
 On the server, an e-commerce platform has to be 
integrated with an existing ordering system
 This involves writing an adaptor so that they can 
exchange data
 An e-mail system is also integrated to generate e-mail 
for clients. This also requires an adaptor to receive data 
from the ordering and invoicing system
COTS system integration problems
 Lack of control over functionality and performance
 COTS systems may be less effective than they appear
 Problems with COTS system inter-operability
 Different COTS systems may make different 
assumptions that means integration is difficult
 No control over system evolution
 COTS vendors not system users control evolution
 Support from COTS vendors
 COTS vendors may not offer support over the lifetime 
of the product
Product lines (application families)
 Applications with generic functionality that can be 
adapted and configured for use in a specific context
 Adaptation may involve:
 Component and system configuration;
 Adding new components to the system;
 Selecting from a library of existing components;
 Modifying components to meet new requirements.
Product lines specialisation
 Platform specialisation
 An application developed for different platforms
 Environment specialisation
 An application created to handle different operating 
environments 
 e.g. different types of communication equipment
 Functional specialisation
 Applications created for customers with different 
requirements
 Process specialisation
 An application created to support different business 
processes
Product lines configuration
 Software product lines are designed to be 
reconfigured
 Add/remove components
 Define parameters, constraints, business processes
 Reconfigure at two points:
 Deployment time configuration
 A generic system is configured by embedding knowledge of 
the customer’s requirements and business processes
 Design time configuration
 A common generic code is adapted and changed according 
to the requirements of particular customers
ERP system organisation
ERP systems
 An Enterprise Resource Planning (ERP) system is a 
generic system that supports common business 
processes 
 Ordering and invoicing, manufacturing, etc.
 Widely used in large companies 
 represent the most common form of software reuse
 The generic core is adapted by including modules and 
by incorporating knowledge of business processes and 
rules
Design time configuration
 Software product lines that are configured at design 
time are instantiations of generic application 
architectures as discussed in Chapter 13
 Generic products usually emerge after experience with 
specific products
Product line architectures
 Architectures must be structured in such a way to 
separate different sub-systems and to allow them to 
be modified
 The architecture should also separate entities and 
their descriptions and the higher levels in the system 
access entities through descriptions rather than 
directly
A resource management system
Vehicle dispatching
 A specialised resource management system where the aim is to 
allocate resources (vehicles) to handle incidents.
 Adaptations include:
 At the UI level, there are components for operator display 
and communications;
 At the I/O management level, there are components that 
handle authentication, reporting and route planning;
 At the resource management level, there are components 
for vehicle location and despatch, managing vehicle status 
and incident logging;
 The database includes equipment, vehicle and map 
databases.
A dispatching system
Product instance development
Product instance development
 Elicit stakeholder requirements
 Use existing family member as a prototype
 Choose closest-fit family member
 Find the family member that best meets the requirements
 Re-negotiate requirements
 Adapt requirements as necessary to capabilities of the 
software
 Adapt existing system
 Develop new modules and make changes for family member
 Deliver new family member
 Document key features for further member development
Key points
 Advantages of reuse are lower costs, faster software 
development and lower risks.
 Design patterns are high-level abstractions that 
document successful design solutions.
 Program generators are also concerned with software 
reuse 
 the reusable concepts are embedded in a generator 
system.
 Application frameworks are collections of concrete 
and abstract objects that are designed for reuse 
through specialisation.
Key points
 COTS product reuse is concerned with the reuse of 
large, off-the-shelf systems.
 Problems with COTS reuse include lack of control over 
functionality, performance, and evolution and 
problems with inter-operation.
 ERP systems are created by configuring a generic 
system with information about a customer’s business.
 Software product lines are related applications 
developed around a common core of shared 
functionality.
Homework
 Reading
 Design Patterns
 
ience)
AOP
 
oriented_programming
 What are pointcuts, jointpoint, advices? Give examples?

File đính kèm:

  • pdfGiáo trình Kỹ nghệ phần mềm - Bài 7 Sử dụng lại trong phần mềm.pdf