Page 218 -
P. 218

Chapter 7   Key points  201


                                          component that was valid at the time the component was used. Licenses may
                                          change so you need to know the conditions that you have agreed to.
                                       2.  Be aware of the different types of licenses and understand how a component is
                                          licensed before it is used. You may decide to use a component in one system but
                                          not in another because you plan to use these systems in different ways.
                                       3.  Be aware of evolution pathways for components. You need to know a bit about
                                          the open source project where components are developed to understand how
                                          they might change in future.

                                       4.  Educate people about open source. It’s not enough to have procedures in place
                                          to ensure compliance with license conditions. You also need to educate develop-
                                          ers about open source and open source licensing.
                                       5.  Have auditing systems in place. Developers, under tight deadlines, might be
                                          tempted to break the terms of a license. If possible, you should have software in
                                          place to detect and stop this.

                                       6.  Participate in the open source community. If you rely on open source products,
                                          you should participate in the community and help support their development.

                                         The business model of software is changing. It is becoming increasingly difficult
                                       to build a business by selling specialized software systems. Many companies prefer
                                       to make their software open source and then sell support and consultancy to software
                                       users. This trend is likely to accelerate, with increasing use of open source software
                                       and with more and more software available in this form.






                      KEY POINTS


                           Software design and implementation are interleaved activities. The level of detail in the design
                            depends on the type of system being developed and whether you are using a plan-driven or
                            agile approach.
                           The process of object-oriented design includes activities to design the system architecture,
                            identify objects in the system, describe the design using different object models, and document
                            the component interfaces.
                           A range of different models may be produced during an object-oriented design process. These
                            include static models (class models, generalization models, association models) and dynamic
                            models (sequence models, state machine models).
                           Component interfaces must be defined precisely so that other objects can use them. A UML
                            interface stereotype may be used to define interfaces.
                           When developing software, you should always consider the possibility of reusing existing
                            software, either as components, services, or complete systems.
   213   214   215   216   217   218   219   220   221   222   223