Tuesday, May 8, 2012

What design choices have to be made when integrating COTS products to create a COTS-solution system?


What design choices have to be made when integrating COTS products to create a COTS-solution system?
Ans: To develop systems using COTS products, you have to make a number of design choices:
1. Which COTS products offer the most appropriate functionality? Typically, there will be several COTS products available, which can be combined in different ways. If you don’t already have experience with a COTS product, it can be difficult to decide which product is the most suitable.
2. How will data be exchanged? Different products normally use unique data structures and formats. You have to write adaptors that convert from one representation to another. These adaptors are run-time systems that operate alongside the COTS products.
3. What features of a product will actually be used? COTS products may include more functionality than you need and functionality may be duplicated across different products. You have to decide which features in what product are most appropriate for your requirements. If possible, you should also deny access to unused functionality because this can interfere with normal system operation. The failure of the first flight of the Ariane 5 rocket was a consequence of a failure in an inertial navigation system that was reused from the Ariane 4 system. However, the functionality that failed was not actually
required in Ariane 5.

What is an ERP system?


What is an ERP system?
Ans: At a larger scale, an Enterprise Resource Planning (ERP) system may support all of the manufacturing, ordering, and customer relationship management activities in a large company.
ERP systems, such as those produced by SAP and BEA, are large-scale integrated systems designed to support business practices such as ordering and invoicing, inventory management, and manufacturing scheduling. The configuration process for these systems involves gathering detailed information about the customer’s business and business processes, and embedding this in a configuration database. This often requires detailed knowledge of configuration notations and tools and is usually carried out by consultants working alongside system customers. ERP systems are used in almost all large companies to support some or all of their functions. They are, therefore, a very widely used form of software reuse.

What are the main benefits of COTS reuse?


What are the main benefits of COTS reuse?
Ans: The main benefits of COTS reuse are:
1. As with other types of reuse, more rapid deployment of a reliable system may be possible.
2. It is possible to see what functionality is provided by the applications and so it is easier to judge whether or not they are likely to be suitable. Other companies may already use the applications so experience of the systems is available.
3. Some development risks are avoided by using existing software. However, this approach has its own risks, as I discuss below.
4. Businesses can focus on their core activity without having to devote a lot of resources to IT systems development.
            5. As operating platforms evolve, technology updates may be simplified as these are the responsibility of the COTS product vendor rather than the customer.

What are the process steps involved in creating a new member of a software product line?


What are the process steps involved in creating a new member of a software product line?
Ans: The process steps involved in extending a software product line to create a new application are as follows:
1. Elicit stakeholder requirements: You may start with a normal requirements engineering process. However, because a system already exists, you will need to demonstrate the system and have stakeholders experiment with it, expressing their requirements as modifications to the functions provided.
2. Select the existing system that is the closest fit to the requirements: When creating a new member of a product line, you may start with the nearest product instance. The requirements are analyzed and the family member that is the closest fit is chosen for modification.
3. Renegotiate requirements: As more details of required changes emerge and the project is planned, there may be some requirements renegotiation to minimize the changes that are needed.
4. Adapt existing system: New modules are developed for the existing system and existing system modules are adapted to meet the new requirements.
            5. Deliver new family member: The new instance of the product line is delivered to the customer. At this stage, you should document its key features so that it may be used as a basis for other system developments in the future.

List 4 types of specialization of software product lines?


List 4 types of specialization of software product lines?
Ans: Various types of specialization of a software product line may be developed:
1. Platform specialization: Versions of the application are developed for different platforms. For example, versions of the application may exist for Windows, Mac OS, and Linux platforms. In this case, the functionality of the application is normally unchanged; only those components that interface with the hardware and operating system are modified.
2. Environment specialization: Versions of the application are created to handle particular operating environments and peripheral devices. For example, a system for the emergency services may exist in different versions, depending on the vehicle communications system. In this case, the system components are changed to reflect the functionality of the communications equipment used.
3. Functional specialization: Versions of the application are created for specific customers who have different requirements. For example, a library automation system may be modified depending on whether it is used in a public library, a reference library, or a university library. In this case, components that implement functionality may be modified and new components added to the system.
4. Process specialization: The system is adapted to cope with specific business processes. For example, an ordering system may be adapted to cope with a centralized ordering process in one company and a distributed process in another.

What features are supported by most web application frameworks?


What features are supported by most web application frameworks?
Ans: Most web application frameworks support the following features:
1. Security WAFs may include classes to help implement user authentication (login) and access control to ensure that users can only access permitted functionality in the system.
2. Dynamic web pages Classes are provided to help you define web page templates and to populate these dynamically with specific data from the system database.
3. Database support Frameworks don’t usually include a database but rather assume that a separate database, such as MySQL, will be used. The framework may provide classes that provide an abstract interface to different databases.
4. Session management Classes to create and manage sessions (a number of interactions with the system by a user) are usually part of a WAF.
5. User interaction Most web frameworks now provide AJAX support, which allows more interactive web pages to be created.

What are the three classes of application framework discussed by Fayed and Schmidt?


What are the three classes of application framework discussed by Fayed and Schmidt?
Ans: Fayad and Schmidt discuss three classes of frameworks:
1. System infrastructure frameworks: These frameworks support the development of system infrastructures such as communications, user interfaces, and compilers.
2. Middleware integration frameworks: These consist of a set of standards and associated object classes that support component communication and information exchange. Examples of this type of framework include Microsoft’s .NET and Enterprise Java Beans (EJB). These frameworks provide support for standardized component models, as discussed in Chapter 17.
3. Enterprise application frameworks: These are concerned with specific application domains such as telecommunications or financial systems. These embed application domain knowledge and support the development of end-user applications.