L09-Design and Implementation PDF
Document Details
Uploaded by GreatestCubism1128
Arab Academy for Science and Technology
Dr. Noha Adly
Tags
Summary
This document discusses design and implementation in software engineering. It covers object-oriented design using UML, design patterns, implementation issues, and open-source development. The document is part of a course on software design and implementation.
Full Transcript
12/18/2021 Objectives Show how system modeling and architectural design...
12/18/2021 Objectives Show how system modeling and architectural design (covered in Ch 5 and 6) are put into practice in Design and Implementation developing an object-oriented software design understand the most important activities in a general, object oriented design process; Object-oriented design using the UML understand some of the different models that may be used to document an object-oriented design; Design patterns know about the idea of design patterns and how these are a way Implementation issues of reusing design knowledge and experience; Introduce important implementation issues, including Open-source development software reuse and open-source development. Dr. Noha Adly CSE 322 - Design and Implementation 1 Dr. Noha Adly CSE 322 - Design and Implementation 2 1 2 Design and implementation Software design and implementation is the stage in the software engineering process at which an executable software system is developed. Software design and implementation activities are invariably inter-leaved. Object-oriented design using the UML Software design is a creative activity in which you identify software components and their relationships, based on a customer’s requirements. Implementation is the process of realizing the design as a program. UML is adequate when OO language is used, less so for Python and not adequate when configuration and COTS are used Dr. Noha Adly CSE 322 - Design and Implementation 3 Dr. Noha Adly CSE 322 - Design and Implementation 5 3 5 12/18/2021 Object Oriented Design An object-oriented design process Object Oriented systems Structured object-oriented design processes involve made up of interacting objects that maintain their own local state and provide developing a number of different system models. operations on that state. The representation of the state is private and cannot be accessed directly from They require a lot of effort for development and outside the object. maintenance of these models and, for small systems, Object-oriented design processes involve designing object classes this may not be cost-effective. and the relationships between these classes. However, for large systems developed by different These classes define the objects in the system and their interactions. groups design models are an important communication When the design is realized as an executing program, the objects are created dynamically from these class definitions. mechanism. Object-oriented systems are easier to change than systems developed using functional approaches. Objects include both data and operations to manipulate that data. Changing the implementation of an object or adding services should not affect other system objects. There is a mapping between real world entities and their objects which improves the understandability, and hence the maintainability, of the design. Dr. Noha Adly CSE 322 - Design and Implementation 6 Dr. Noha Adly CSE 322 - Design and Implementation 7 6 7 Process stages System context and interactions There are a variety of different object-oriented design Understanding the relationships between the software processes that depend on the organization using the that is being designed and its external environment is process. essential for deciding how to provide the required system To develop a system design from concept to detailed, functionality and how to structure the system to object-oriented design, common activities include: communicate with its environment. Define the context and modes of use of the system; Understanding of the context also lets you establish the Design the system architecture; boundaries of the system. Setting the system boundaries Identify the principal system objects; helps you decide what features are implemented in the Develop design models; system being designed and what features are in other Specify object interfaces. associated systems. Process illustrated here using a design for a wilderness Ex: you need to decide how functionality is distributed weather station deployed in remote areas. Each weather station records local weather between the control system for all of the weather information and periodically transfers this to a weather information system, using a satellite link. stations, and the embedded software in the weather Dr. Noha Adly CSE 322 - Design and Implementation 8 station itself. Dr. Noha Adly CSE 322 - Design and Implementation 9 8 9 12/18/2021 Context and interaction models Context models System context models and interaction models present The context model of a system may be represented complementary views of the relationships between a using associations showing relationship between entities system and its environment You may document the environment of the system using A system context model is a structural model that a simple block diagram, showing the entities in the demonstrates the other systems in the environment of the system and their associations. system being developed. An interaction model is a dynamic model that shows how the system interacts with its environment as it is used. Dr. Noha Adly CSE 322 - Design and Implementation 10 Dr. Noha Adly CSE 322 - Design and Implementation 11 10 11 System context for the weather station Interaction Models When you model the interactions of a system with its environment you should use an abstract approach that does not include too much detail. One way to do this is to use a use case model. each use case represents an interaction with the system. Each possible interaction is named in an ellipse and the external entity involved in the interaction is represented by a stick figure. Then, each of these use cases should be described in structured natural language. Dr. Noha Adly CSE 322 - Design and Implementation 12 Dr. Noha Adly CSE 322 - Design and Implementation 13 12 13 12/18/2021 Weather station use cases Use case description—Report weather System Weather station Use case Report weather Actors Weather information system, Weather station The weather station interacts Description The weather station sends a summary of the weather data that has been collected from the instruments in the collection period to the with the weather information weather information system. The data sent are the maximum, system to report weather data minimum, and average ground and air temperatures; the maximum, and the status of the weather minimum, and average air pressures; the maximum, minimum, and average wind speeds; the total rainfall; and the wind direction as station hardware. sampled at five-minute intervals. Interactions with the control Stimulus The weather information system establishes a satellite system are in the form of communication link with the weather station and requests control commands from to the transmission of the data. weather station Response The summarized data is sent to the weather information system. Comments Weather stations are usually asked to report once per hour but this frequency may differ from one station to another and may be modified in the future. Dr. Noha Adly CSE 322 - Design and Implementation 14 Dr. Noha Adly CSE 322 - Design and Implementation 15 14 15 Use case description—Report status Use case description— Shutdown System Weather station System Weather station Actors Weather information system, Weather station Use case Shutdown Description The weather station sends a summary of its status to the Actors Weather information system, Weather station weather information system. This includes details of the Description The weather station should be in an operational state. The functioning of its instruments as tested by the self-test system shutdown command causes all collected data to be stored in and any other information about potential problems that have permanent memory and the weather station instruments should been detected. then be shut down so that no further weather data is collected. Stimulus The weather information system establishes a satellite Stimulus The weather information system establishes a satellite communication link with the weather station and requests communication link with the weather station and requests the transmission of the status data. system to shut down. Response The weather station status data is sent to the weather Response The weather station should shut down. information system. Comments This should be rare. Normally, it is only required when the system Comments Weather stations are usually asked to report once per hour but software is to be updated. It should normally be preceded by a this frequency may differ from one station to another and may Report weather command. be modified in future. Dr. Noha Adly CSE 322 - Design and Implementation 16 Dr. Noha Adly CSE 322 - Design and Implementation 17 16 17 12/18/2021 Use case description— Restart Use case description— Reconfigure System Weather station Use case Reconfigure System Weather station Actors Weather information system, Weather station Use case Restart Description The weather station should be in a shutdown state. The Actors Weather information system, Weather station reconfigure command allows the existing software to be Description The weather station should be in a shutdown state. The restart replaced by a software update which is remotely transmitted to command causes all instruments to be initialized and the the system. This is transmitted as a software download which is collection of weather data should begin. installed to replace the previous system. Stimulus The weather information system establishes a satellite Stimulus The weather information system establishes a satellite communicaiton link with the weather station and issues a communication link with the weather station and requests the restart command. system to accept a software download. Response Response After the download has been completed, the weather station The weather station system should start up. should acknowledge that it has been correctly received and Comments This should be rare. Normally, it is only required after the system installed. software has been updated by a reconfigure command. Comments This command is used when software is to be updated. It must be preceded by a shutdown command and followed by a restart command. Dr. Noha Adly CSE 322 - Design and Implementation 18 Dr. Noha Adly CSE 322 - Design and Implementation 19 18 19 Use case description— Powersave Use case description— Remote control System Weather station System Weather station Use case Powersave Use case Remote Control Actors Weather information system, Weather station Actors Weather information system, Weather station Description The effect of this command is to run the weather station in a Description This feature allows the weather station instruments to be minimal energy state. The frequency of data collection is controlled directly from the weather information system, rather reduced, self-checking is only run once per day and instruments than from the weather station control software. The system are turned off between data collection. establishes a direct channel of communication to the instrument Stimulus The weather information system establishes a satellite interface. Commands are received as a string, decoded and sent communication link with the weather station and requests the to the instrument being controlled. system to move to power saving mode. Stimulus The weather information system establishes a satellite Response The weather station should acknowledge that it is in a power communication link with the weather station and sends a string saving state. of instrument commands. Comments This should be rare. Normally, it is only required when there has Response The weather station should collect data as instructed by the been some failure of the hardware that charges the weather commands. station batteries. Comments This should be rare. Normally, it is only required when the system software has irretrievably failed. Dr. Noha Adly CSE 322 - Design and Implementation 20 Dr. Noha Adly CSE 322 - Design and Implementation 21 20 21 12/18/2021 Architectural design High-level architecture of the weather station Once interactions between the system and its Each subsystem listens for messages on comm link and picks up the environment have been understood, you use this messages that are intended for them. information for designing the system architecture. You identify the major components that make up the system and their interactions You may organize the components using an architectural pattern such as a layered or client-server model. The weather station is composed of independent subsystems that communicate by broadcasting messages on a common infrastructure - the communication link The Listener model can be used Dr. Noha Adly CSE 322 - Design and Implementation 22 Dr. Noha Adly CSE 322 - Design and Implementation 23 22 23 Architecture of data collection subsystem Object class identification Identifying object classes is often a difficult part of object oriented design. There is no 'magic formula' for object identification. It relies on the skill, experience and domain knowledge of system designers. Object identification is an iterative process. You are unlikely to get it right first time. Transmitter and Receiver objects are concerned with managing communications WeatherData object encapsulates the information that is collected from the instruments and transmitted to the weather information system. This arrangement follows the producer-consumer pattern Dr. Noha Adly CSE 322 - Design and Implementation 24 Dr. Noha Adly CSE 322 - Design and Implementation 25 24 25 12/18/2021 Weather station object classes Approaches to identification The use case description helps to identify objects and Use a grammatical approach based on a natural operations in the system. language description of the system. From the description of the Report weather use case , it Objects or attributes are nouns; operations or services are verbs is obvious that Base the identification on tangible things in the Objects representing the instruments that collect weather data application domain. will be required, aircraft, roles such as manager or doctor, events such as Also an object representing the summary of the weather data. requests, interactions such as meetings, locations such as You also usually need a high-level system object or objects that offices, organizational units such as companies, and so on encapsulate the system interactions defined in the use cases. Use a behavioural approach and identify objects based on what participates in what behaviour. Use a scenario-based analysis. The objects, attributes and methods in each scenario are identified. Dr. Noha Adly CSE 322 - Design and Implementation 26 Dr. Noha Adly CSE 322 - Design and Implementation 27 26 27 Weather station object classes Weather station object classes Object class identification may be based on the tangible hardware Ground thermometer, Anemometer, Barometer Application domain objects that are ‘hardware’ objects related to the instruments in the system. System description and the scenario (use case) Weather station The basic interface of the weather station to its environment. It therefore reflects the interactions identified in the use-case model. Weather data Encapsulates the summarized data from the instruments. Dr. Noha Adly CSE 322 - Design and Implementation 28 Dr. Noha Adly CSE 322 - Design and Implementation 29 28 29 12/18/2021 Weather station object classes Design models At this stage in the design process, you should focus on Design models show the objects and object classes and the objects themselves, without thinking about how these relationships between these entities. might be implemented. These models are the bridge between requirements and Once you have identified the objects, you then refine the implementation object design. There are two kinds of design model: You look for common features and then design the inheritance Structural models describe the static structure of the system in hierarchy for the system. For example, you may identify an terms of object classes and relationships. Important relationships Instrument superclass, which defines the common features of all that may be documented are generalization (inheritance) instruments, such as an identifier, and get and test operations. relationships, uses/used-by relationships, and composition You may also add new attributes and operations to the relationships. superclass, such as an attribute that maintains the frequency of Dynamic models describe the dynamic interactions between data collection. objects. Interactions to be documented include sequence of service requests made by objects and the state changes that are triggered by these object interactions. Dr. Noha Adly CSE 322 - Design and Implementation 30 Dr. Noha Adly CSE 322 - Design and Implementation 31 30 31 Examples of design models using UML Subsystem models Subsystem models that show logical groupings of objects Shows how the design is organised into logically related into coherent subsystems. groups of objects. represented using a class diagram In the UML, these are shown using packages - an Subsystem models are static (structural) models. encapsulation construct. This is a logical model. The Sequence models that show sequence of object interactions actual organisation of objects in the system may be represented using a UML sequence or a collaboration diagram. different. Sequence models are dynamic models. State machine models that show how individual objects change their state in response to events. represented in the UML using state diagrams. State machine models are dynamic models Other models include use-case models, aggregation models, generalisation models, etc. Dr. Noha Adly CSE 322 - Design and Implementation 32 Dr. Noha Adly CSE 322 - Design and Implementation 33 32 33 12/18/2021 Sequence models Sequence diagram describing data collection Sequence models show the sequence of object interactions that take place Objects are arranged horizontally across the top; Time is represented vertically so models are read top to bottom; Interactions are represented by labelled arrows, Different styles of arrow represent different types of interaction; A thin rectangle in an object lifeline represents the time when the object is the controlling object in the system. You should produce a sequence model for each significant interaction. If you have developed a use case model then there should be a sequence model for each use case that you have identified. Dr. Noha Adly CSE 322 - Design and Implementation 34 Dr. Noha Adly CSE 322 - Design and Implementation 35 34 35 State diagrams Weather station state diagram State diagrams are used to show how objects respond to different service requests and the state transitions triggered by these requests. State diagrams are useful high-level models of a system or an object’s run-time behavior. You don’t usually need a state diagram for all of the objects in the system. Many of the objects in a system are relatively simple and a state model adds unnecessary detail to the design. Dr. Noha Adly CSE 322 - Design and Implementation 36 Dr. Noha Adly CSE 322 - Design and Implementation 37 36 37 12/18/2021 Interface specification Weather station interfaces Object interfaces have to be specified so that the objects and other components can be designed in parallel. Designers should avoid designing the interface representation but should hide this in the object itself. Objects may have several interfaces which are viewpoints on the methods provided. The UML uses class diagrams for interface specification Dr. Noha Adly CSE 322 - Design and Implementation 38 Dr. Noha Adly CSE 322 - Design and Implementation 39 38 39 Design patterns A design pattern is a way of reusing abstract knowledge about a problem and its solution. A pattern is a description of the problem and the essence of its solution. Design Patterns It should be sufficiently abstract to be reused in different settings. Pattern descriptions usually make use of object-oriented characteristics such as inheritance and polymorphism. Patterns and Pattern Languages are ways to describe best practices, good designs, and capture experience in a way that it is possible for others to reuse this experience. Dr. Noha Adly CSE 322 - Design and Implementation 40 Dr. Noha Adly CSE 322 - Design and Implementation 41 40 41 12/18/2021 Pattern elements The Observer pattern Name Name A meaningful pattern identifier. Observer. Description Problem description. Separates the display of object state from the object itself. explains when the pattern may be applied Problem description Solution description. Used when multiple displays of state are needed. Not a concrete design but a template for a design solution that Solution description can be instantiated in different ways. See slide after next with UML description. Consequences Consequences The results and trade-offs of applying the pattern. Optimisations to enhance display performance are limited. Dr. Noha Adly CSE 322 - Design and Implementation 42 Dr. Noha Adly CSE 322 - Design and Implementation 43 42 43 Multiple displays using the Observer pattern The Observer pattern (1) Pattern Observer name Description Separates the display of the state of an object from the object itself and allows alternative displays to be provided. When the object state changes, all displays are automatically notified and updated to reflect the change. Problem In many situations, you have to provide multiple displays of state description information, such as a graphical display and a tabular display. Not all of these may be known when the information is specified. All alternative presentations should support interaction and, when the state is changed, all displays must be updated. This pattern may be used in all situations where more than one display format for state information is required and where it is not necessary for the object that maintains the state information to know about the specific display formats used. Dr. Noha Adly CSE 322 - Design and Implementation 44 Dr. Noha Adly CSE 322 - Design and Implementation 45 44 45 12/18/2021 The Observer pattern (2) A UML model of the Observer pattern Pattern Observer Graphical representations are used to illustrate the object classes in patterns and name their relationships. Solution This involves two abstract objects, Subject and Observer, and two These supplement the pattern description and add detail to the solution description description concrete objects, ConcreteSubject and ConcreteObserver, which inherit the attributes of the related abstract objects. The abstract objects include general operations that are applicable in all situations. The state to be displayed is maintained in ConcreteSubject, which inherits operations from Subject allowing it to add and remove Observers (each observer corresponds to a display) and to issue a notification when the state has changed. The ConcreteObserver maintains a copy of the state of ConcreteSubject and implements the Update() interface of Observer that allows these copies to be kept in step. The ConcreteObserver automatically displays the state and reflects changes whenever the state is updated. Consequences The Subject only knows the abstract Observer and does not know details of the Concrete class. Therefore there is minimal coupling between these objects. Because of this lack of knowledge, optimizations that enhance display performance are impractical. Changes to the Subject may cause a set of linked updates to Observers to be generated, some of which may not be necessary. Dr. Noha Adly CSE 322 - Design and Implementation 46 Dr. Noha Adly CSE 322 - Design and Implementation 47 46 47 Design problems Design Patterns To use patterns in your design, you need to recognize Patterns have made a huge impact on object-oriented software design that any design problem you are facing may have an They became a vocabulary for talking about a design. associated pattern that can be applied. Examples: You can explain your design by describing the patterns used. Tell several objects that the state of some other object has Using patterns in a design process is not straightforward: changed (Observer pattern). It often involves developing a design, experiencing a problem, and then Tidy up the interfaces to a number of related objects that have recognizing that a pattern can be used. often been developed incrementally (Façade pattern). You need experience of software design to use them effectively. Provide a standard way of accessing the elements in a collection, irrespective of how that collection is implemented You have to recognize situations where a pattern can be applied and you (Iterator pattern). need to be aware of different patterns Allow for the possibility of extending the functionality of an Best-known design patterns: ‘Gang of Four’ in their patterns book, existing class at run-time (Decorator pattern). (Gamma et al., 1995). 23 general-purpose patterns documented Other important pattern descriptions books: (Buschmann et al., 1996; Buschmann et al., 2007a; Buschmann et al., 2007b; Kircher and Jain, 2004; Schmidt et al., 2000). Dr. Noha Adly CSE 322 - Design and Implementation 48 Dr. Noha Adly CSE 322 - Design and Implementation 49 48 49 12/18/2021 Implementation issues Focus here is not on programming, although this is obviously important, but on other implementation issues that are often not covered in programming texts: Reuse Most modern software is constructed by reusing existing components or systems. When you are developing software, you Implementation issues should make as much use as possible of existing code. Configuration management During the development process, you have to keep track of the many different versions of each software component in a configuration management system. Host-target development Production software does not usually execute on the same computer as the software development environment. Rather, you develop it on one computer (the host system) and execute it on a separate computer (the target system). Host and target are usually of different types Dr. Noha Adly CSE 322 - Design and Implementation 50 Dr. Noha Adly CSE 322 - Design and Implementation 51 50 51 Reuse Software reuse From the 1960s to the 1990s, most new software was developed from scratch, by writing all code in a high- level programming language. The only significant reuse or software was the reuse of functions and objects in programming language libraries. Costs and schedule pressure mean that this approach became increasingly unviable, especially for commercial and Internet-based systems. An approach to development based around the reuse of existing software emerged and is now generally used for business and scientific software. Software reuse is possible at a number of different levels Dr. Noha Adly CSE 322 - Design and Implementation 52 Dr. Noha Adly CSE 322 - Design and Implementation 53 52 53 12/18/2021 Reuse levels Reuse levels The abstraction level The component level At this level, you do not reuse software directly but use Components are collections of objects and object classes that knowledge of successful abstractions in the design of your you reuse in application systems. software. You often have to adapt / extend the component by adding some Ex: Design patterns and architectural patterns code Ex: build your user interface using a framework. You use a set of The object level general object classes that implement event handling, display At this level, you directly reuse objects from a library rather than management, etc. You add connections to the data to be displayed and writing the code yourself. write code to define specific display details such as screen layout and colors. you have to find appropriate libraries and discover if the objects and methods offer the functionality that you need. The system level For example, if you need to process mail messages in a Java At this level, you reuse entire application systems. program, you may use objects and methods from a JavaMail involves configuration of these systems: by adding and library. modifying code or by using the system’s configuration interface Dr. Noha Adly CSE 322 - Design and Implementation 54 Dr. Noha Adly CSE 322 - Design and Implementation 55 54 55 Reuse costs and benefits Configuration management Benefits Configuration management is the name given to the develop new systems more quickly and with lower costs. general process of managing a changing software system. It is more reliable as it has been tested in other systems. coordinating changes made by developers not overwriting each other. Costs ensure that everyone access the most up-to-date versions of The costs of the time spent in looking for software to reuse and software components assessing whether or not it meets your needs. When something goes wrong, revert back to a working version Where applicable, the costs of buying the reusable software. For large off-the-shelf systems, these costs can be very high. The aim of configuration management is to support the The costs of adapting and configuring the reusable software system integration process so that all developers can components or systems to reflect the requirements of the system access the project code and documents in a controlled that you are developing. way, find out what changes have been made, and compile The costs of integrating reusable software elements with each and link components to create a system. other (if you are using software from different sources) and with the new code that you have developed. There are four main configuration management activities Dr. Noha Adly CSE 322 - Design and Implementation 56 Dr. Noha Adly CSE 322 - Design and Implementation 57 56 57 12/18/2021 Configuration management tool interaction Configuration management activities Version management, where support is provided to keep track of the different versions of software components. Version management systems include facilities to coordinate development by several programmers. They stop one developer from overwriting code that has been submitted by someone else Concurrent Versions System (CVS), Subversion (SVN), Git – supporting distributed systems: multi-site, multi-team System integration, where support is provided to help developers define what versions of components are used to create each version of a system. This description is then used to build a system automatically by compiling and linking the required components. E.g. GNU build system Dr. Noha Adly CSE 322 - Design and Implementation 58 Dr. Noha Adly CSE 322 - Design and Implementation 59 58 59 Configuration management activities Host-target development Problem tracking, where support is provided to allow users to Most software is developed on one computer (the host), report bugs and other problems, and to allow all developers to but runs on a separate machine (the target). see who is working on these problems and when they are fixed. More generally, we can talk about a development Jira, platform and an execution (production) platform. Bugzilla, A platform is more than just hardware. Release Management, where new version of a software It includes the installed OS + other supporting software e.g. DBMS or, for development platforms, an IDE system are released to customers. Release management is concerned with planning of the functionality of new releases Development platform usually has different installed and organising the software for distribution software than execution platform; these platforms may have different architectures e.g embedded and mobile systems You cannot develop the software and test it on same machine you need to either move your developed software to the execution platform for testing or run a simulator on your development machine Dr. Noha Adly CSE 322 - Design and Implementation 60 Dr. Noha Adly CSE 322 - Design and Implementation 61 60 61 12/18/2021 Host-target development Development platform tools A software development platform should provide a range of tools: 1. An integrated compiler and syntax-directed editing system that allows you to create, edit and compile code. 2. A language debugging system. 3. Graphical editing tools, such as tools to edit UML models. 4. Testing tools, such as Junit that can automatically run a set of tests on a new version of a program. 5. Configuration management tools that help you manage the source code versions and to integrate and build systems. Dr. Noha Adly CSE 322 - Design and Implementation 62 Dr. Noha Adly CSE 322 - Design and Implementation 63 62 63 Development, Staging and Production platforms Open source development Dr. Noha Adly CSE 322 - Design and Implementation 65 Dr. Noha Adly CSE 322 - Design and Implementation 67 65 67 12/18/2021 Open source development Open source systems Open source development is an approach to software The best-known open source product is, of course, the development in which the source code of a software Linux operating system which is widely used as a server system is published and volunteers are invited to system and, increasingly, as a desktop environment. participate in the development process Other important open source products are Java, the Its roots are in the Free Software Foundation Apache web server, Eclispe and the mySQL database (www.fsf.org), which advocates that source code should management system. not be proprietary but rather should always be available Android OS is installed on millions of mobile devices for users to examine and modify as they wish. Major players in the computer industry such as IBM and Open source software extended this idea by using the Oracle support the open source movement and base Internet to recruit a much larger population of volunteer their software on open source products. developers. Many of them are also users of the code. Dr. Noha Adly CSE 322 - Design and Implementation 68 Dr. Noha Adly CSE 322 - Design and Implementation 69 68 69 Open source issues Open source business Benefits More and more product companies are using an open source Cost: Free! approach to development. Mature FOSS are reliable Their business model is not reliant on selling a software product but Cost on selling support for that product. little documentation, and support. Could be acquired for low They believe that involving the open source community will allow fees. software to be developed more cheaply, more quickly and will create a community of users for the software. For a company involved in software development, there are two open source issues that have to be considered Many companies believe that adopting an open source approach will reveal confidential business knowledge to their competitors and Should the product that is being developed make use of open so are reluctant to adopt FOSS source components? Should an open source approach be used for the software’s However, if you are working in a small company and you open development? source your software, this may reassure customers that they will be able to support the software if your company goes out of business. Answer: depend on the type of software that is being developed and the background and experience of the development team Dr. Noha Adly CSE 322 - Design and Implementation 70 Dr. Noha Adly CSE 322 - Design and Implementation 72 70 72 12/18/2021 Open source licensing License models A fundamental principle of open-source development is The GNU General Public License (GPL). This is a so-called that source code should be freely available, this does not ‘reciprocal’ license that means that if you use open source software that is licensed under the GPL license, then you must make that mean that anyone can do as they wish with that code. software open source. Legally, the developer of the code (either a company or an The GNU Lesser General Public License (LGPL) is a variant of the individual) still owns the code. They can place restrictions on GPL license where how it is used by including legally binding conditions in an open source software license. you can write components that link to open source code without having to publish the source of these components. Some open source developers believe that if an open source However, if you change the licensed component, then you must publish this as component is used to develop a new system, then that system open source should also be open source. The Berkley Standard Distribution (BSD) License. This is a non- Others are willing to allow their code to be used without this reciprocal license, which means you are not obliged to re-publish restriction. The developed systems may be proprietary and sold any changes or modifications made to open source code. You can as closed source systems. include the code in proprietary systems that are sold. You must acknowledge the creator. MIT license is a variation of BSD Dr. Noha Adly CSE 322 - Design and Implementation 73 Dr. Noha Adly CSE 322 - Design and Implementation 74 73 74 License management Companies managing projects using FOSS should: 1. Establish a system for maintaining information about open-source components that are downloaded and used. 2. Be aware of the different types of licenses and understand how a component is licensed before it is used. 3. Be aware of evolution pathways for components. 4. Educate people about open source. 5. Have auditing systems in place. 6. Participate in the open source community. Dr. Noha Adly CSE 322 - Design and Implementation 75 75