Component-based software engineering
Component-based software engineering (CBSE), also called component-based development (CBD), is a style of software engineering that aims to construct a software system from components that are loosely-coupled and reusable. This emphasizes the separation of concerns among components.[1][2]
To find the right level of component granularity, software architects have to continuously iterate their component designs with developers. Architects need to take into account user requirements, responsibilities and architectural characteristics.[3]
Considerations
For large-scale systems developed by large teams, a disciplined culture and process is required to achieve the benefits of CBSE.[4] Third-party components are often utilized in large systems.
The system can be designed visually with the Unified Modeling Language (UML). Each component is shown as a rectangle, and an interface is shown as a lollipop to indicate a provided interface and as a socket to indicate consumption of an interface.
Component-based usability testing is for components that interact with the end user.
References
- ^ George T. Heineman, William T. Councill (2001). Component-Based Software Engineering: Putting the Pieces Together. Addison-Wesley Professional, Reading 2001 ISBN 0-201-70485-4
- ^ Clemens Szyperski, Dominik Gruntz, Stephan Murer (2002). Component Software: Beyond Object-Oriented Programming. 2nd ed. ACM Press - Pearson Educational, London 2002 ISBN 0-201-74572-0
- ^ Fundamentals of Software Architecture: An Engineering Approach. O'Reilly Media. 2020. ISBN 978-1492043454.
- ^ Douglas C. Schmidt. "Why Software Reuse has Failed and How to Make It Work for You". Retrieved 14 May 2024.
- v
- t
- e
- Computer programming
- DevOps
- Empirical software engineering
- Experimental software engineering
- Formal methods
- Requirements engineering
- Search-based software engineering
- Site reliability engineering
- Social software engineering
- Software deployment
- Software design
- Software maintenance
- Software testing
- Systems analysis
- Abstraction
- Component-based software engineering
- Software compatibility
- Data modeling
- Enterprise architecture
- Functional specification
- Modeling language
- Programming paradigm
- Software
- Software archaeology
- Software architecture
- Software configuration management
- Software development process/methodology
- Software quality
- Software quality assurance
- Software verification and validation
- Software system
- Structured analysis
- CI/CD
Developmental | |
---|---|
Other | |
Languages |
- Commons
- Category