Answer to Question 1
FALSE
Answer to Question 2
The term component-based development applies both to development with components and the development of components. In either case, the required methodology goes beyond the traditional analysis, design, implementation, and testing activities and involves packaging, integration, versioning, and creating installation programs.
The technology for supporting components is mature, but other factors influence its success and adoption, including issues such as usability vs. reusability, the difficulties of developing domain components as opposed to design components, the respective advantages and disadvantages of building components versus buying them, and the optimization of methodology.
Component-based development also impacts project management. Milestones should include delivery of components and the dependencies between components must be taken into account. On the plus side, CBD allows multiple development teams to work in parallel, something without which large and complex development projects have no realistic chance of success in an acceptable timeframe.
Testing components also imposes requirements beyond the normal parameters of testing. Components must be tested both independently and within the framework that they will be used. To come as close to laboratory conditions as possible, a component is usually first tested through a test harness, an application whose only purpose is to verify the component in an environment that is as isolated from unwanted interferences as possible. However, each new combination of components, including the assembly of the final product, requires an independent set of tests for two reasons: ensuring compatibility between components and accounting for unforeseen factors and forces that the combination inevitably introduces into the context.