Please enable JavaScript.
Coggle requires JavaScript to display documents.
Chapter 7 (Open Source (BUSINESS (:bulb: More & more product companies…
Chapter 7
Open Source
Development
- :heavy_plus_sign: An approach to software development in which the source code of a software system is published and volunteers are invited to participate in the development process
- :heavy_plus_sign: Roots are in the Free Software Foundation (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
- :heavy_plus_sign: Open source software extended this idea by using the Internet to recruit a much larger population of the volunteer developers. Many of them are also users of the code.
SYSTEMS
- :camera: Linux Operating System is widely used as a server system and, increasingly, as a desktop environment.
- :camera: Important open source product are:
-
-
-
-
BUSINESS
-
:bulb:Their business model is not reliant on selling a software product but on selling support for that product
:bulb:They believe that involving the open source community will allow software to be developed more cheaply, more quickly and will create a community of users for the software
LICENSING
:credit_card: Fundamental Principles of open-source development is that source code should be freely available, this does not mean that anyone can do as they wish with that code
:runner::skin-tone-4: Legally, the developer of the code still owns the code
:runner::skin-tone-4: they can place a restrictions on how it is used by including legally binding conditions in a n open source software licesence
:runner::skin-tone-4: Some open source developers believe that if an open source component is used to develop a new system, that system should be open source.
:runner::skin-tone-4: Others willing to allow their code to be used without this restriction.
:runner::skin-tone-4: The developed systems may be proprietary and sold as closed source systems
-
License Management
Establish a system for maintaining information about open-source components that are downloaded and used
Be aware of the different types of license and understand how a component is licensed before it is used
-
-
-
-
Implementation issues
Configuration management
:pencil2: general process of managing a changing software
:pencil2: Aim : support the system integration process so that all developers can access the project code & documents in a controlled way, find out what changes have been made, & compile & link components to create a system
-
Host-target development
:red_flag: Most software is developed on one computer (the Host), but runs on a separate machine(the target)
-
:red_flag: Development platform usually has different installed software than execution platform; these platforms may have different architectures
-
:recycle:Reuse
:star: Software is constructed by reusing existing components or systems.
:star: The only significant reuse or software was the reuse of functions & objects in programming language libraries.
:star: Cost and Schedule pressure mean that this approach became increasingly unviable :arrow_right: especially for commercial & internet-based system.
:star: An approach to development based around the reuse of existing software emerged and is now generally used for business and scientific software.
:recycle:Reuse Level
Abstraction level
don't reuse software directly but use knowledge of successful abstactions in the design of the software
-
-
-
:recycle:Reuse Cost
:check: Cost of the time spent in looking for software to reuse and assessing whether or not it meets your needs.
:check: Applicable - the use of the reusable software. For large off-the-shelf systems, these costs can be very high
:check: The cost adapting and configuring the reusable software components @ systems, these costs can be very high.
:check: The cost of integrating reusable software elements with each other (from other resource) & with the new code that had developed
-
Design Models
- :star: Static structure of the system in term of object classes & relationship
- :check: eg: Class Diagram
- :star:Dynamic interactions between objects
-
-
-
-
Design Pattern
- :black_flag: Way of reusing abstract knowledge about problem & solution.
- :black_flag: Pattern is a desc. of problem & essence of its solution.
- :black_flag: should sufficiently abstract to reused in diff. settings.
- :black_flag: Pattern Desc. : make use of object-oriented characteristics. (eg: inheritance & polymorphism)
Pattern Elements
- :pen:Name (meaningful pattern identifier)
- :pen:Problem Desc.
- :pen:Solution Desc. (not concrete design but template for a design solution that can be instatiated in diff. ways)
- :pen:Consequences (result & trade-off of applying the pattern)
- :<3:Name: Observer
- :<3:Desc.: Separates the display of object state from the object itself.
- :<3:Problem Desc.: Used when multiple display of state are needed.
- :<3:Solution Desc.: (UML model) include
2 abstract objects (subject & observer)
2 concrete objects ( ConcreteSubject & ConcreteObject) inherit attributes of the related abstract objects.
- :<3:Consequences: Optimisations to enhance display performance are impractical.
-
Architectural design
high level architectural
low level architectural
-
-
-
Design Problem
- :red_flag: Tell several objects that state of some other object has changed (Observer Pattern)
- :red_flag: Tidy up interfaces to a number of related objects that often been developed incrementally (Facade Pattern)
- :red_flag: Provide standard way of accessing elements in a collection, irrespective of how that collection is implemented (Iterator Pattern)
- :red_flag: Allow the possibility of extending the functionality of an existing class at run-time (Decorator Pattern)
-
-
-
-
-
-