Special process models take on many of the
characteristics of one or more of the conventional models.
However, specialized models tend to be applied when a narrowly defined software engineering approach is chosen.
Special Process Models
Commercial off-the-shelf (COTS) Software
components can be used when Software is to be built.
COTS describes software or hardware products that are ready-made and available for sale to the general public.
Component-based Development
These components provide targeted
functionality with well-defined interfaces that enable the component to be integrated into the Software.
Component-based Development
The component-based development model
incorporates many of the characteristics of the spiral model.
Component-based Development
The component-based development model
incorporates the following steps: Available component-based products are
researched and evaluated for the application domain in question.
Component integration issues are considered. Software architecture is designed to accommodate
the components. Components are integrated into the architecture. Comprehensive testing is conducted to ensure
proper functionality.
Component-based Development
The component-based development model
leads to Software reuse, and reusability provides Software engineers with a number of measurable benefits.
Component-based Development
Based on studies of reusability Component-based development leads to a: 70% reduction in development cycle time; 84% reduction in project cost; Productivity increases Faster development and testing
Component-based Development
Encompasses a set of activities that leads to
formal mathematical specification of computer software.
Formal Method Models
Enables a software engineer to specify,
develop, and verify a computer-based system by applying a rigorous, mathematical notation.
Formal Method Models
Ambiguity, incompleteness, and inconsistency
can be discovered and corrected more easily through mathematical analysis.
When formal methods are used during design, they serve as a basis for program verification and therefore enable the software engineer to discover and correct errors that might otherwise go undetected.
Formal Method Models
Offers the promise of defect-free software Used often when building safety-critical
systems
Formal Method Models
The development of formal models is currently
quite time-consuming and expensive. Because few software developers have the
necessary background to apply formal methods, extensive training id required.
It is difficult to use the models as a communication mechanism for technically unsophisticated customers.
Drawbacks
Aspect-oriented software development (AOSD)
is a new approach to software development that addresses limitations inherent in other approaches, including object-oriented programming.
AOSD is also known as aspect-oriented programming (AOP).
Aspect-Oriented Software Development
OOP works on System level code, looks at
an application as a set of collaborating objects.
OOP works on elements like classes, objects, interfaces etc.
Provides benefits such as code reuse, flexibility, improved maintainability, modular architecture, reduced development time etc. with the help of polymorphism, inheritance and encapsulation.
Differences between AOP and OOP
AOP works at the complex software system. AOP has join points, point cuts, advice,
and aspects. AOP implementation coexists with the OOP by
choosing OOP as the base language.
Differences between AOP and OOP
AOSD aims to address crosscutting concerns by
providing means for systematic identification, separation, representation and composition.
Cross-cutting concerns are aspects of a program that affect other concerns. These concerns often cannot be cleanly decomposed from the rest of the system in both the design and implementation, and can result in either scattering (code duplication), tangling (significant dependencies between systems), or both.
Aspect-Oriented Software Development
Aspect-oriented software development (AOSD)
is a software design solution that helps address the modularity issues that are not properly resolved by other software approaches, like procedural, structured and object-oriented programming (OOP).
AOSD complements, rather than replaces, these other types of software approaches.
Aspect-Oriented Software Development