In: Computer Science
What are the key factors to be considered with the most appropriate type of reuse?
Which features are supported by most of the web application frameworks?
What are some essential elements of component based software engineering?
Please find my answers:
First Answer: One should consider when planning reuse are:
1. The development schedule for the software: If
the software has to be developed quickly, you should try to reuse
off-the-shelf systems rather than individual components. These are
large-grain reusable assets. Although the fit to requirements may
be imperfect, this approach minimizes the amount of development
required.
2. The expected software lifetime: If you are
developing a long-lifetime system, you should focus on the
maintainability of the system. You should not just think about the
immediate benefits of reuse but also of the long-term implications.
Over its lifetime, you will have to adapt the system to new
requirements, which will mean making changes to parts of the
system. If you do not have access to the source code, you may
prefer to avoid off-the-shelf components and systems from external
suppliers; suppliers may not be able to continue support for the
reused software.
3. The background, skills, and experience of the development team: All reuse technologies are fairly complex and you need quite a lot of time to understand and use them effectively. Therefore, if the development team has skills in a particular area, this is probably where you should focus.
4. The criticality of the software and its non-functional requirements: For a critical system that has to be certified by an external regulator, you may have to create a dependability case for the system. This is difficult if you don’t have access to the source code of the software. If your software has stringent performance requirements, it may be impossible to use strategies such as generator-based reuse, where you generate the code from a reusable domain specific representation of a system. These systems often generate relatively inefficient code.
5. The application domain: In some application
domains, such as manufacturing and medical information systems,
there are several generic products that may be reused by
configuring them to a local situation. If you are working in such a
domain, you should always consider these as an option.
6. The platform on which the system will run: Some
components models, such as .NET, are specific to Microsoft
platforms. Similarly, generic application systems may be
platform-specific and you may only be able to reuse these if your
system is designed for the same platform.
Second Answer:
Mostly Web apps 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.
Third Answer: Essentials elements of component bases sw engineering
but these are not limited to other characteristics like;
Composable
For a component to be composable, all external interactions must
take place through publicly defined interfaces. In addition, it
must provide external access to information about itself, such as
its methods and attributes.
Deployable
To be deployable, a component has to be self-contained. It must be
able to operate as a stand-alone entity on a component platform
that provides an implementation of the component model. This
usually means that the component is binary and does not have to be
compiled before it is deployed. If a component is implemented as a
service, it does not have to be deployed by a user of that
component. Rather, it is deployed by the service provider.
Documented
Components have to be fully documented so that potential users can
decide whether or not the components meet their needs. The syntax
and, ideally, the semantics of all component interfaces should be
specified.
Independent
A component should be independent--it should be possible to compose
and deploy it without having to use other specific components. In
situations where the component needs externally provided services,
these should be explicitly set out in a "requires" interface
specification.