• Nu S-Au Găsit Rezultate

Free Software Licenses

N/A
N/A
Protected

Academic year: 2022

Share "Free Software Licenses"

Copied!
50
0
0

Text complet

(1)

Curs 11 – 3 Ianuarie 2011 Adrian Iftene [email protected]

(2)

Recapitulation

◦ Rotting Design

◦ Refactoring

Release

Deployment and Maintenance

Code reuse

Free Software Licenses

Ethics

(3)

3

There are four primary symptoms:

Rigidity - the tendency for software to be difficult to change

Fragility - the tendency of the software to break in many places every time it is changed

Immobility - the inability to reuse software from other projects or from parts of the same project

Viscosity - it is easy to do the wrong thing, but hard to do the right thing

(4)

―Refactoring is the process of changing a software

system in such a way that it does not alter the external behavior of the code yet improves its internal

structure.‖ – Martin Fowler in Refactoring Improving The Design Of Existing Code

Practically, refactoring means making code clearer and cleaner and simpler and elegant

It is done in order to improve non-functional attributes in software: code readability, complexity, expressivity, extensibility

(5)

5

Deployment starts after the code is appropriately tested, is approved for release and sold

Software Training and Support is very important to have training classes for new clients of your software

Maintaining and enhancing software to cope with

newly discovered problems or new requirements can take far more time than the initial development of the software

Bug Tracking System tools are often deployed at this stage of the process to allow development teams to interface with customer/field teams testing the

software to identify any real or perceived issues

(6)

All of the activities that make a software system available for use

―Deployment‖ should be interpreted as a general process that has to be customized according to specific requirements or characteristics

At this step code must be distributed into a production environment

(7)

7

Release - includes all the operations to prepare a system for assembly and transfer to the customer site

Activation - the activity of starting up the executable component of software

Installation - on a production server in a production environment or in a test environment

Deactivate - inverse of activation - refers to shutting down any executing components of a system

Adapt – is a process to modify a software system that has been previously installed (local events such as

changing the environment of customer site)

Update - The update process replaces an earlier version of all or part of a software system with a newer release

(8)

Built-In - Mechanisms for installing updates are built into some software systems

Version tracking - Version tracking systems help the user find and install updates to software systems

installed on PCs and local networks (Web based version, Local version, Browser based version)

Uninstall - the inverse of installation. It is the removal of a system that is no longer required

Retire - Ultimately, a software system is marked as obsolete and support by the producers is withdrawn.

It is the end of the life cycle of a software product

(9)

9

Software maintenance in software engineering is the modification of a software product after delivery to correct faults, to improve performance or other

attributes (Lehman 1969)

Maintenance is really evolutionary developments and that maintenance decisions are aided by

understanding what happens to systems (and software) over time

A common perception of maintenance is that it is

merely fixing bugs. However, studies and surveys over the years have indicated that the majority, over 80%, of the maintenance effort is used for non-corrective actions (Pigosky 1997)

(10)

S-type programs are those that can be specified formally

P-type programs cannot be specified. Instead, an iterative process is used to find a working solution

E-type programs are embedded in the real world and become part of it, thereby changing it. This leads to a feedback system where the program and its

environment evolve in concert

(11)

11

1. (1974) Continuing Change — E-type systems must be continually adapted or they become progressively less satisfactory

2. (1974) Increasing Complexity — As an E-type system evolves its complexity increases unless work is done to maintain or reduce it

3. (1974) Self Regulation — E-type system evolution process is self regulating with distribution of product and process measures close to normal

4. (1978) Conservation of Organizational Stability (invariant work rate) - The average effective global activity rate in an evolving E-type system is invariant over product lifetime

(12)

5. (1978) Conservation of Familiarity — As an E-type system

evolves all associated with it, developers, sales personnel, users.

Excessive growth diminishes that mastery. Hence the average incremental growth remains invariant as the system evolves

6. (1991) Continuing Growth — The functional content of E-type systems must be continually increased to maintain user

satisfaction over their lifetime

7. (1996) Declining Quality — The quality of E-type systems will appear to be declining unless they are rigorously maintained and adapted to operational environment changes

8. (1996) Feedback System (first stated 1974, formalized as law 1996) — E-type evolution processes constitute multi-level,

multi-loop, multi-agent feedback systems and must be treated as such to achieve significant improvement over any reasonable base

(13)

13

(14)
(15)

15

(16)
(17)

17

Corrective maintenance: Reactive modification of a software product performed after delivery to correct discovered problems

Adaptive maintenance: Modification of a software product performed after delivery to keep a software product usable in a changed or changing environment

Perfective maintenance: Modification of a software product after delivery to improve performance or maintainability

Preventive maintenance: Modification of a software product after delivery to detect and correct latent faults in the software product before they become effective faults

(18)

A software release is the distribution of software code, documentation,

and support materials

The software release life cycle is composed of discrete phases from planning and development to release and support phases

Software Development and Release Stages:

◦ Testing and Development period

◦ Release period

◦ Support period

(19)

19

Pre-alpha - refers to all activities performed during the software project prior to testing

Alpha - is the first phase to begin software testing

Beta - The focus of beta testing is reducing impacts to

users, often incorporating usability testing. The process of delivering a beta version to the users is called beta release and this is typically the first time that the software is

available outside of the organization that developed it

Open and closed beta - closed beta versions are released to a select group of individuals for a user test, while open betas are to a larger community group, sometimes to

anybody interested

Release candidate - refers to a version with potential to be a final product, ready to release unless fatal bugs emerge

(20)

RTM - The term ―release to manufacturing‖ or ―release to marketing‖ - is a term used when software is ready for or has been delivered or provided to the customer

General availability or general acceptance (GA) is the point where all necessary commercialization activities have been completed and the software has been made available to the general market either via the web or physical media. It is also at this stage that the

software is considered to have ―gone live‖

A live release is considered to be very stable and relatively bug-free with a quality suitable for wide distribution and use by end users

(21)

21

Service release - During its supported lifetime,

software is sometimes subjected to service releases, or service packs. Such service releases contain a

collection of updates, fixes and/or enhancements, delivered in the form of a single installable package.

They may also contain entirely new features

End-of-life - When software is no longer sold or

supported, the product is said to have reached end- of-life

(22)

Definition: Code reuse (software reuse) is the use of existing software, or software knowledge, to build new software

Aim: The reuse of programming code is a common technique which attempts to save time and energy by reducing redundant work

This includes all types of artifacts created

Internal Reuse Vs. External Reuse

Ad hoc code reuse has been practiced from the earliest days of programming. Programmers have

always reused sections of code, templates, functions, and procedures

(23)

23

Because we (the CS people) are inventing the wheel over and over again and wasting enormous resources doing so

We hope that there is a way to make integration and design of the reusable component cheaper than

redevelopment

There is no other way to build large applications

Code reuse is the idea that a partial or complete

computer program written at one time can be, should be, or is being used in another program written at a later time

(24)

The software library is a good example of code reuse

For newly written code to use a piece of existing code, some kind of interface, or means of communication, must be defined. These commonly include a ―call‖ or use of a subroutine, object, class, or prototype

The general practice of using a prior version of an extant program as a starting point for the next

version, is also a form of code reuse

Simply copying some or all of the code from an existing program into a new one

(25)

25

Modularity, loose coupling, high cohesion, information hiding and separation of concerns

Many researchers have worked to make reuse faster, easier, more systematic, and an integral part of the normal process of programming. These are some of the main goals behind the invention of object-

oriented programming, which became one of the most common forms of formalized reuse. A somewhat later invention is generic programming

Another, newer means is to use software ―generators‖, programs which can create new programs of a certain type, based on a set of parameters that users choose

(26)

Opportunistic reuse - While getting ready to begin a project, the team realizes that there are existing

components that they can reuse

Internal reuse - A team reuses its own components

External reuse - A team may choose to license a third- party component. Licensing a third-party component

typically costs the team 1 to 20 percent of what it would cost to develop internally

Planned reuse - A team strategically designs

components so that they’ll be reusable in future projects

(27)

27

Software libraries – contain many common operations

Set of individual functions or classes that can be reused

―a discrete, stand-alone, context independent part of a solution‖

Design patterns

Frameworks - reuse large pieces of software via third- party applications and frameworks (are usually

domain-specific and applicable only to families of applications)

A unit of design reuse; coupling several library classes

―an abstract design for a particular kind of application‖

(28)

Systematic software reuse - is still the most promising strategy for increasing productivity and improving

quality in the software industry

Component

Independent unit of reuse.

Technical definition by given set of import and export mechanism.

Interface is usually restricted to an in/out mechanism.

Automated parts (deployment J2EE, interface query COM, dependency resolution OSGi)

API: Usually a framework plus library parts (for instance JDK)

(29)

29

1. Architectures

2. Source Code

3. Data

4. Designs

5. Documentation

6. Templates

7. Human Interfaces

8. Plans

9. Requirements

10. Test Cases

=> Functionality?

(30)

Program families

Between successive versions

If the same developer who developed the code continues to do so in a different project.

As soon as you move code too far away from people who have knowledge about it, reusability decreases dramatically

These aspects point toward the cognitive dimension of the problem

(31)

31

Copyright is a set of exclusive rights granted by the law of a jurisdiction to the author or creator of an original work, including the right to copy, distribute and adapt the work

Copyright does not protect ideas, only their expression or fixation

Copyright protection applies for a specific period of time, after which the work is said to enter the public domain

Initially copyright only applied to published books, but over time copyright was extended to other uses, such as translations and derivative works

Copyright now covers maps, dramatic works, paintings, photographs, sound recordings, motion pictures,

computer programs, etc.

(32)

Copyright law is different from country to country, and a copyright notice is required in about 20 countries for a work to be protected under copyright

Before 1989, all published works in the US had to contain a copyright notice, the © symbol followed by the publication date and copyright owner’s name, to be protected by copyright

In all countries that are members of the Berne Convention, copyright is automatic and need not be obtained through official registration with any government office

(33)

33

Copyright subsists for a variety of lengths in different jurisdictions

The length of the term can depend on several factors:

the type of work (e.g. musical composition or novel),

the work has been published or not,

the work was created by an individual or a corporation

In most of the world, the default length of copyright is the life of the author plus either 50 or 70 years

Copyright is literally, the right to copy, though in legal terms ―the right to control copying‖ is more accurate

(34)

The copyright owner is given two sets of rights: an exclusive, positive right to copy and exploit the

copyrighted work, or license others to do so, and a negative right to prevent anyone else from doing so without consent, with the possibility of legal remedies if they do

With a few exceptions, the exclusive rights granted by copyright are strictly territorial in scope, as they are granted by copyright laws in different countries

Bilateral and multilateral treaties establish minimum exclusive rights in member states, meaning that there is some uniformity across Berne Convention member states

(35)

35

Free for freedom, not price

freedom 1: unlimited use for any purpose

freedom 2: study and modify for your needs (need source access !)

freedom 3: copy

freedom 4: distribute modifications

From copyright to freedom (―copyleft‖)

copyright allows licensing

licenses grants freedom

Terminology : Free software = Open source = Libra software

(36)

Many types

GNU General Public License

GNU Lesser General Public License (links are possible)

BSD license, X11 license, Perl license, Python license...

public domain release

―The licenses for most softwares are designed to take away your freedom to share and change it. By

contrast, the GNU GPL is intended to guarantee your freedom to share and change free software - to make sure the software is free for all its users‖

(http://www.gnu.org/copyleft/gpl.html)

grants four freedoms

protection of freedom

«vaccination»

(37)

37

Licenses which can be used for the

distribution of free software

The goal of such

licenses is to free the recipient from any legal barriers which would inhibit their freedom to run, study, modify, or redistribute the software - both modified and unmodified

(38)

BSD licenses are a family of permissive free software licenses. The original license was used for the Berkeley Software Distribution (BSD), a Unix-like operating system after which it is named

The original owners of BSD were the Regents of the

University of California because BSD was first written at the University of California, Berkeley. The first version of the license was revised, and the resulting licenses are more properly called modified BSD licenses

The licenses have fewer restrictions on distribution

compared to other free software licenses such as the GNU General Public License or even the default restrictions

provided by copyright, putting works licensed under them relatively closer to the public domain

(39)

39

The GNU General Public License (GNU GPL or simply GPL) is the most widely used free software license, originally written by Richard Stallman for the GNU project

The GPL is the first copyleft license for general use, which means that derived works can only be

distributed under the same license terms

Under this philosophy, the GPL grants the recipients of a computer program the rights of the free software

definition and uses copyleft to ensure the freedoms are preserved, even when the work is changed or added to

(40)

Ethic - 1. the body of moral principles or values

governing or distinctive of a particular culture or group:

the Christian ethic; the tribal ethic of the Zuni. 2. a complex of moral precepts held or rules of conduct followed by an individual: a personal ethic.

Ethical – 1. pertaining to or dealing with morals or the principles of morality; pertaining to right and wrong in conduct. 2. being in accordance with the rules or

standards for right conduct or practice, esp. the

standards of a profession: It was not considered ethical for physicians to advertise. 3. (of drugs) sold only upon Medical prescription

(41)

41

Requirements

Developers work together with customers and users to define requirements and specify what the proposed

system will do.

If, once it is built, the system works according to specification but harms someone physically or financially, who is responsible?

Revised component

If one person has written a component but others have revised it, who is responsible if the component fails?

(42)

Testing

If an independent test team does integration testing and a critical fault remains in the code after testing is

complete, who is legally and ethically responsible for the damage caused by the fault? Tester or Developer

A safety-critical system fails and several lives are lost.

When the cause of the failure is investigated, the inquiry commission discovers that the test plan neglected to

consider the case that caused the system failure.

Who is responsible?

The testers for not noticing the missing case?

The test planners for not writing a complete test plan?

The managers for not having checked the test plan?

The customer for not having done a thorough acceptance test?

(43)

43

Maintenance

Suppose you are maintaining a large, safety-critical system. You use a model to predict which

components are most likely to fail. Then you examine those identified components carefully and perform

perfective and preventive maintenance on each one.

Soon after, the system undergoes a catastrophic failure. The source of the failure turns out to be a component that was not identified by your model.

Are you at fault for neglecting to look at the other components?

(44)

While developing software for a work project, you get an idea for a product of your own. Although your

product will not directly compete with the work

product, it deals with the same domain. You decide to develop your product on your own time, but on your computer at work.

Legal issues aside, who should own your product?

You? The company? The customer?

(45)

45

While developing software for a work project, you get an idea for a product of your own. Although your

product will not directly compete with the work

product, it deals with the same domain. You decide to develop your product on your own time on your

computer at home.

Legal issues aside, who should own your product?

You? The company? The customer?

(46)

A project teammate misleads her (and your) boss as to the status of the module she is working on. Are you responsible for this person’s unethical behavior? If so, what do you do?

What if the person is a superior?

What do you do if one of your teammates is clearly

incompetent and the project manager doesn’t know it?

(47)

47

What types of project information would be morally permissible to keep from your client?

What types of project information would be unethical to keep from your client?

Are there any types of information that are ―fuzzy?‖

(48)

Refactoring: http://www.zazzle.com/refactoring_poster- 228118789330102998

A Cyclic Model for Software Deployment: http://www.marinilli.com/

publications/articles/2002/model.html

Software Deployment: http://en.wikipedia.org/wiki/Software_deployment

Software Maintenance: http://cnx.org/content/m14717/latest/

Software Maintenance: http://en.wikipedia.org/wiki/Software_maintenance

E. B. Swanson (Maintenance) http://www.anderson.ucla.edu/x1960.xml

Software Maintenance Implications on Cost and Schedule: http://pro-

software.biz/2009/06/software-maintenance-implications-on-cost-and- schedule/

Maintenance: http://openseminar.org/se/modules/22/index/screen.do

Software release life cycle: http://en.wikipedia.org/wiki/

Software_release_life_cycle

Release engineering: http://en.wikipedia.org/wiki/Release_engineering

Release management: http://en.wikipedia.org/wiki/Release_management

Code reuse: http://en.wikipedia.org/wiki/Code_reuse

(49)

49

Copyright: http://en.wikipedia.org/wiki/Copyright

Category: Free Software licenses: http://en.wikipedia.org/wiki/Category:

Free_software_licenses

GNU General Public License:

http://en.wikipedia.org/wiki/GNU_General_Public_License

BSD Licenses: http://en.wikipedia.org/wiki/BSD_licenses

Software Engineering Ethics: http://www.acm.org/about/se-code

Software engineering professionalism:

http://en.wikipedia.org/wiki/Software_engineering_professionalism

(50)

Gonze, X. Basic Concepts of software maintenance.

(2008) http://www.etsf.eu/system/files/users/

SottileF/XG_Basics_v2.pdf

Grubb, P., Takang, A. A. Software maintenance.

Concepts and practice. (2003) 2nd ed. World Scientific (London)

Oezbek, C. Reuse. (2005) http://www.inf.fu-

berlin.de/~oezbek/pub/Oezbek04d_-_Reuse.ppt

Pfleeger, S. (1998) Software Engineering.

Grasso, M. A. (2002) Ethics in Software Engineering. CMSC 345, Fall 2002

Referințe

DOCUMENTE SIMILARE

Gilb Inspection (Expanded Fagan).. • Key: A “process

• Hazard sources identification ⇒ elimination (Some specific faults prevented or removed.).. • Traditional QA (but with

Keywords: Information Extraction, Named Entity Recognition, Knowledge Engineer- ing, Software Programs Ontology, Machine Learning, Web Mining, Semantic Web... Table

› Provide a uniform environment to AUTOSAR Software Components to make the implementation of the software components independent from communication mechanisms and channels. › The

At this level of abstraction the model describes important characteristics of the domain in terms of classes and their attributes, but without making any platform specific choices

Coverage and Usage Testing Based on FSMs and Markov Chains.. • Finite-State

● When a component is bound to a managed bean, the application has two views of the component's data:. – The model view, in which data is represented as data types, such as

• Testarea aplicatiei pentru a verifica daca functionalitati existente sunt corecte dupa adaugarea de noi functionalitati in aplicatie. •