Page 215 -
P. 215

198   Chapter 7   Design and implementation


                                    for embedded systems, where the target is usually a single computer. However, for
                                    distributed systems, you need to decide on the specific platforms where the compo-
                                    nents will be deployed. Issues that you have to consider in making this decision are:

                                    1.  The hardware and software requirements of a component If a component is
                                        designed for a specific hardware architecture, or relies on some other software
                                        system, it must obviously be deployed on a platform that provides the required
                                        hardware and software support.

                                    2.  The availability requirements of the system High-availability systems may
                                        require components to be deployed on more than one platform. This means that,
                                        in the event of platform failure, an alternative implementation of the component
                                        is available.
                                    3.  Component communications If there is a high level of communications traffic
                                        between components, it usually makes sense to deploy them on the same plat-
                                        form or on platforms  that are physically  close  to one  other. This reduces
                                        communications latency, the delay between the time a message is sent by one
                                        component and received by another.

                                    You can document your decisions on hardware and software deployment using UML
                                    deployment diagrams, which show how software components are distributed across
                                    hardware platforms.
                                      If you are developing an embedded system, you may have to take into account
                                    target characteristics, such as its physical size, power capabilities, the need for real-
                                    time responses to sensor events, the physical characteristics of actuators, and its real-
                                    time operating system. I discuss embedded systems engineering in Chapter 20.




                              7.4 Open source development


                                    Open source development is an approach to software development in which the
                                    source code of a software system is published and volunteers are invited to partici-
                                    pate in the development process (Raymond, 2001). Its roots are in the Free Software
                                    Foundation (http://www.fsf.org), which advocates that source code should not be
                                    proprietary but rather should always be available for users to examine and modify as
                                    they wish. There was an assumption that the code would be controlled and devel-
                                    oped by a small core group, rather than users of the code.
                                      Open source software extended this idea by using the Internet to recruit a much
                                    larger population of volunteer developers. Many of them are also users of the code.
                                    In principle at least, any contributor to an open source project may report and fix
                                    bugs and propose new features and functionality. However, in practice, successful
                                    open source systems still rely on a core group of developers who control changes to
                                    the software.
   210   211   212   213   214   215   216   217   218   219   220