Software Component Engineering v1.0, April 24, 2002 Frode L. Ødegård Ødegård Labs, Inc. © 2002 Ødegård Labs, Inc. All Rights Reserved.

Slides:



Advertisements
Similar presentations
Object-Oriented Application Frameworks Much of the cost and effort stems from the continuous re- discovery and re-invention of core concepts and components.
Advertisements

Software Architectural Design Software Components Instructor Dr. Lawrence Chung.
Software Project Management
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
CS3773 Software Engineering Lecture 01 Introduction.
Free Mini Course: Applying UML 2.0 with MagicDraw.
COP th Lecture September 26, 2005 COP 4009 Component-Based Software Engineering Fall 2005 Instructor: Masoud Sadjadi
1 Software Architecture: a Roadmap David Garlen Roshanak Roshandel Yulong Liu.
- 1 - Component Based Development R&D SDM Theo Schouten.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
UML and Object Oriented Concepts
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
Problems with reuse – Increased maintenance costs; lack of tool support; not-invented- here syndrome; creating, maintaining, and using a component library.
Software Engineering Muhammad Fahad Khan
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Quality Assurance for Component- Based Software Development Cai Xia (Mphil Term1) Supervisor: Prof. Michael R. Lyu 5 May, 2000.
1 IBM Software Group ® Mastering Object-Oriented Analysis and Design with UML 2.0 Module 1: Best Practices of Software Engineering.
CLEANROOM SOFTWARE ENGINEERING.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 19 Slide 1 Component-based software engineering 1.
Page 1 MODEL TEST in the small GENERALIZE PROGRAM PROCESS allocated maintenance changes management documents initial requirement project infrastructure.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Object Oriented Analysis and Design Introduction.
Rational Unified Process Fundamentals Module 4: Disciplines II.
Software Models (Cont.) 9/22/2015ICS 413 – Software Engineering1 -Component-based software engineering -Formal Development Model.
Chapter 2 소프트웨어공학 Software Engineering 임현승 강원대학교
Software Component Technology and Component Tracing CSC532 Presentation Developed & Presented by Feifei Xu.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
 CS 5380 Software Engineering Chapter 2 – Software Processes Chapter 2 Software Processes1.
CBD Papers Alexandre Alvaro. Lessons Learned through Six Years of Component-based Development Six years of component-based application development Using.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Software Engineering EKT 420 MOHAMED ELSHAIKH KKF 8A – room 4.
University of Southern California Center for Systems and Software Engineering Model-Based Software Engineering Supannika Koolmanojwong Spring 2013.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Assessing the influence on processes when evolving the software architecture By Larsson S, Wall A, Wallin P Parul Patel.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
Rational Unified Process Fundamentals Module 5: Implementing RUP.
Software Product Line Material based on slides and chapter by Linda M. Northrop, SEI.
Component Oriented Programming 1 Introduction to COP.
Basic Concepts of Component- Based Software Development (CBSD) Model-Based Programming and Verification.
Software Engineering 1 Object-oriented Analysis and Design Applying UML and Patterns An Introduction to Object-oriented Analysis and Design and Iterative.
MODEL-BASED SOFTWARE ARCHITECTURES.  Models of software are used in an increasing number of projects to handle the complexity of application domains.
1 OO Analysis & Design - Introduction to main ideas in OO Analysis & design - Practical experience in applying ideas.
Week 04 Object Oriented Analysis and Designing. What is a model? A model is quicker and easier to build A model can be used in simulations, to learn more.
SOFTWARE ENGINEERING. Objectives Have a basic understanding of the origins of Software development, in particular the problems faced in the Software Crisis.
Overview of RUP Lunch and Learn. Overview of RUP © 2008 Cardinal Solutions Group 2 Welcome  Introductions  What is your experience with RUP  What is.
Software Engineering Introduction.
Rational Unified Process Fundamentals Best Practices of Software Engineering Rational Unified Process Fundamentals Best Practices of Software Engineering.
1 Here are some quotations to get an overview of the kinds of issues of interest.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
IT323 - Software Engineering 2 1 Tutorial 4.  List the main benefits of software reuse 2.
Pragmatics 4 Hours.
CIM Modeling for E&U - (Short Version)
CS 389 – Software Engineering
Chapter 18 Maintaining Information Systems
UML: Unified modeling language
Software Processes.
Model-Driven Analysis Frameworks for Embedded Systems
Chapter 2 – Software Processes
Rational Worldwide Software Symposium
Component-Based Software Engineering: Technologies, Development Frameworks, and Quality Assurance Schemes X. Cai, M. R. Lyu, K.F. Wong, R. Ko.
Component-based Software Engineering
Rational Worldwide Software Symposium
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Software Design Lecture : 14.
CS310 Software Engineering Lecturer Dr.Doaa Sami
Quality Assurance for Component-Based Software Development
Rational Worldwide Software Symposium
Chapter 2 Software Processes
Chapter 1: Software and Software Engineering
Presentation transcript:

Software Component Engineering v1.0, April 24, 2002 Frode L. Ødegård Ødegård Labs, Inc. © 2002 Ødegård Labs, Inc. All Rights Reserved. Ødegård Labs, Inc.

Presentation Overview Where did the idea of software components come from? What motivates software components? Software components today (April 2002) –The good, the bad and the ugly Software Component Engineering as a discipline What can we expect in the near-term future (2-4 years)? Questions

“Software components (…), to be widely applicable to different machine and users, should be available in families arranged according to precision, robustness, generality and time- space performance.”

M. D. McIlroy, “Mass produced software components” NATO Conference on Software Engineering, Garmish, Germany, October

Motivation for components System design benefits –Parcel up understanding of how the system works, maintained by teams/people –Can reduce risks in system design due to improved knowledge management –Prediction of system performance can be easier –Modifying system design can be easier Program/project management benefits –Improved prediction of effort and rework –Improved prediction of schedule Reuse savings –Internal components can be reused to save on cost/effort/schedule –External components can be licensed (cheaper and better than do-it-yourself) Your mileage may vary!

Evolution of “component” idea s, 1980s subroutines (McIlroy) modules, classes (Simula-67/C++ classes, Modula-2 modules, Ada packages) Software ICs (Brad Cox, BYTE Magazine) “components are binary units of… deployment” (Clemens Szypersky, “Component Software: Beyond O-O Programming”)

Modern definition of components Clemens Szypersky, “Component Software: Beyond O-O Programming”, 1997 “Software components are binary units of independent production, acquisition and deployment that interact to form a functioning system.”

“A Software Component is a software element that conforms to a component model and can be independently deployed and composed without modification according to a composition standard.” Another definition of components.. George T. Heineman and William T. Councill. Component Based Software Engineering. Addison Wesley, 2001

Commercial use of components Widespread component models –OMG: CORBA –Microsoft: COM  DCOM .NET –Sun: Java  EJB  J2EE Early marketplace for components – – – –…–… Trend towards certification –ASQ: Certified Software Quality Engineer –IEEE: Certified Software Development Professional –Sun: Sun Certified Programmer/Developer/Web Component Developer for Java 2 –Microsoft: Microsoft Certified Application Developer (MCAD) and Solution Developer (MCSD) The good

Commercial use of components Marketing and Engineering not on the same page w.r.t. Components –Components require an investment: Licensing of external IP Design of good interfaces for reusable components Selection of component model (“Packaging technology”) Design for use in (speculative?) future products –How do we know that it’s worth it? Do we understand the risks? Will the ROI be sufficient? The bad

Commercial use of components Poor software development practices –Component design in actual practice has not progressed much since 1968 –Components have weak specifications –Validation of components is uneven –Companies struggle with spaghetti legacy systems –“Reuse” by cut-n-paste still very common, causes severe problems Transitioning to Component Based Software Engineering is hard –Many new standards developing, how do we pick the “right” one(s)? –Companies need to invest in education –Companies need to invest in tools –In spite of risk and cost, the alternative may be worse! –Management often does not understand that this is a paradigm shift The ugly

Paradigm shift: component reuse BeforeAfter CultureProject-focusedComponent-focused How we workCraftsmanshipEngineering What we makeProject-specific Programs Components with Predictable Quality StrategyTop-downBottom-up? Planning HorizonLength of project Lifetime of product platform

A New Discipline? Division of labor driven by economic considerations –Interchangeable parts caused revolution in manufacturing –Reuse of software components motivated by speed-to-market –Industries organize to maximize ROI –Professional roles shaped by needs of organization Software Professionals likely to continue specializing –Project/Program Management –Quality/Process –Testing –Usability –Programmer –Analyst –Architect Software Component Engineer Software Architect Software Requirements Engineer

Software Component Engineer KSAs Knowledge –Software Engineering Best Practices –Relevant industry and technical standards –Component technologies –Programming languages and development tools Skills –Write precise and complete component interface specifications –Design components using appropriate development tools –Validate component design using static checking tools, Inspection, etc. –Write implementation code using appropriate tools –Verify implementation against design using Inspection, testing etc. –Validate implementation against specification –Write and execute quality/test plans Abilities –Critical thinking –Problem solving –Sees the big picture

What Should We Expect From a Component Engineering Method/Process? Independent of particular component model Extensible – adaptable to future technologies and techniques Well-defined activities for component specification, design, implementation, verification and validation Well-defined list of artifacts that are consumed and produced Well-defined metrics for activities and artifacts Standardized templates, rule sets and checklists Tool support for improved productivity Supporting documentation and courseware

Some Existing Methods/Processes Product-line oriented methods –FODA –FAST –PuLSE –KobrA Object-oriented method frameworks –Rational Unified Process –OPEN –Catalyst Other methods –Clean Room –Ødegård Labs: Darwin Process Framework

Darwin: Component Engineering Process Identify Component Requirements Architecture Component Concept Doc.Component Interface Spec. Component Design Spec. Source codeVerification ReportValidation Report Specify Component Interface Validate Component Interface Design Component Validate Component Design Implement Component DesignVerify Component Implementation Validate Component Implementation

Requirements Capture Design/Select Architecture High-level evolutionary plan Select and plan next step Execute planned step Deliver to real users Evaluate feedback “micro-projects” Darwin: Evolutionary Delivery Identify Analyze Plan Track Resolve Learn risks

Darwin: Domain Engineering Process Domain Engineers Architecture Groups Common understanding of domain requirements Spawns new architectures Anticipated future product family needs Product Marketing Engineering Product Family Architecture Feedback from product teams Product Family Requirements Architecture support, training, documentation, …

Near-Term Future of SCE Certification trend will extend to software architects and software component engineers Design/development tools will support better specification and verification –Contract-based interface specifications will be everywhere –Architecture-level design tools will let you plug components together safely –Architecture and Component Design tools will become collaborative –Static checking tools will improve (see ESC Project) –Model checking will be used for verification of many components Component technologies will continue to improve –Load-time proof-checking (proof-carrying code) –Improved support for fault-tolerance and mobility Abstraction levels will continue to rise, but so will complexity Marketing and Engineering will develop a better understanding of component tradeoffs

Conclusions Software components are motivated by economic factors similar to those that have influenced other engineering disciplines Software component “packaging technology” has improved vastly since 1968, but design and implementation is still mostly ad-hoc Software component engineering evolving as a distinct discipline –Implications for career planning Software components raise challenging questions for executives –Is your company an intelligent customer of component vendors? –Is your company going to offer components to its customers? –Is there a software component capability gap between you and your competitors?

Questions? Speaker: Frode L. Ødegård Organization: Ødegård Labs, Inc. (