Software metrics for open source systems. Niklas Kurkisuo, Emil Sommarstöm, 25697

Size: px
Start display at page:

Download "Software metrics for open source systems. Niklas Kurkisuo, Emil Sommarstöm, 25697"

Transcription

1 Software metrics for open source systems Niklas Kurkisuo, Emil Sommarstöm, 25697

2 Contents Introduction 1 Open Source Software Development 1.1 Open Source Development advantages/disadvantages 1.2 Evolution of OSD Systems 2 The Linux Operating System Kernel 2.1Observation on the system growth of the Linux kernel 3 Conclusion 4 Open Source Metric tools 4.1 Excuberant Ctag 4.2 CCCC 5 References Introduction In this paper we will discuss metrics and development of open source systems and how they differ from traditional in house system development and traditional metrics. We will focus on the Linux kernel but we will also make comparisons to other open source systems as FreeBSD. We chose the Linux kernel because of its size and wide spread use and also because the Linux kernel has displayed a steady growth over the past years. Problem with open source systems is that there are usually many authors and there are no real development plan and usually no extensive testing plan. Because of this metrics are not always used as extensively as in traditional system development. We will also look at some open source tools that can bee used to gather different metrics.

3 1 Open Source Software Development Software development for open source systems differs from traditional system development. The single most important requirement of an open source software system is that its source code must be freely available to anyone. So he/she can do what they want with the code for their own purposes. We have to different types of open source software (OSS) development. The first type is similar to the corporation style or in-house. The software is made by the staff of the project and later released as open source. Examples of this include the Netscape web browser (Mozilla). The other type is when a person or group starts a project and then let anybody who wants too contribute to the project. Or in other words, the project is open source from the beginning. Usually, such a project begins with a single developer who has a personal goal or vision. Typically, that person will begin work on their system either from scratch or by using other open source projects. For example Linux started with a version of the Minix operating system. The later of these two is the one that we are interested in, because it is the one that can be viewed as a genuine open source system. 1.1 Open Source Development advantages/disadvantages When the author is ready to invite others into the project he/she makes the code base available to others and development proceeds. Anyone may contribute towards the development of the system, but the originator/ owner is free to decide which contributions may or may not become part of the official release. The open source development (OSD) model is different from traditional in-house commercial development processes in several fundamental ways. Commercial projects usually have a goal that is set and a dead-line in which to complete the product, as when an open source project developer might only work on the project when he feels like it. Also when it comes to open source the contributors or the programmers do what they want, i.e. what the are interested in, and therefore the result might not always be what the author wants. In the same fashion it is not so easy to use any metrics for a open source project, when the contributors/developers might not be interested in testing, code restructuring or in the quality of there code, many times so long as it works describes the quality of the code, especially for uninteresting modules. The reason to this is that the contributor works on his/her free time and might not bee interested in these tasks, because they are not as exciting as writing new code. Open source projects does not have the same pressure on their time tables or scheduling. This might seem to be a disadvantage but in this way the software quality is not affected by time pressure. The developer can release the software when he/she thinks it is ready. Even when code quality and standards may vary, since code is contributed by many contributors, the developer does not need to use that code. Code quality is maintained largely by massively parallel debugging (i.e., many developers each using each other s code) rather than by systematic testing or other planned, prescriptive approaches although many projects do have official guidelines.

4 Unstable code is common, as developers are eager to submit their newest contributions to the project. Some OSD projects, including Linux, address this issue by maintaining two concurrent development paths: a development release path contains new or experimental features and a stable release contains mostly updates and bug fixes relative to the previous stable release. And when some of the features are proven stable or mature they are migrated into the stable release. FreeBsd differs from Linux in the way the handle contributions. Linux accepts code into its releases quite freely when FreeBsd subjects its contributions to much more stringent testing by the core development team. FreeBsds development plan has much of the qualities found in a in house project because of this. As a result of this FreeBsd tends to support fewer devices and development proceeds much slower than on Linux. 1.2 Evolution of OSD Systems We have been examining the growth and evolution patterns of OSD projects to see how they compare to previous studies on the evolution of large proprietary software systems developed using more traditional in-house processes. There are now many large OSD systems that have been in existence for a number of years and have achieved widespread use, including two that we have investigated in some detail: the Linux operating system kernel (2,200,000 lines of code), and the VIM text editor (150,000 lines of code). Naively, we had expected that since evolution of OSD software is usually much less structured and less carefully planned than traditional in-house development that Lehman s laws would apply; that is, as the system grew, the rate of growth would slow, with the system growth approximating an inverse square curve. Indeed, recently the maintainers of the Perl project have undertaken a massive redesign and restructuring of the core system, since the project owners felt that the current system has become almost unmaintainable. However, as we explain below, this is not at all what we found with Linux. 2 The Linux Operating System Kernel Linux is a Unix-like operating system that has gained much support in the last years. Many even thinks Linux might have the power to challenge commercial operating system as Windows and Unix. In many ways Linux has already snapped a large bite of the Unix market share. Even if Windows still dominates the market, Linux and its supporters haven t given up hope of gaining a share of the market. Linux has in the past years gained support from large companies, such as IBM. Linux was originally written by Linus Torvalds, but subsequently worked on by hundreds of other developers. It was originally written for Intel architecture, but since it has been ported to other platforms, such as PowerPc, Sparc and even PDAs. The first official release of the kernel, version 1.0, occurred in March This release contained 487 source code files comprising over 165,000 lines of code, including comments and blank lines. Linux kernel has after that contained of two releases, stable release and a development release, in witch contains experimental and untested code. The stable release contains fixes to the bugs that where found in the development release.

5 Since it s first release the Linux kernel has grown in size, and now contains over 2 million lines of code. 2.1 Observation on the system growth of the Linux kernel We will see from the paper, Evolution in Open Source Software : A Case Study by Michael w. Godfrey and Qiang Tu, how Linux has grown over the years. They measured various aspects of the growth using a variety of tools, see Open Source Metric tools for some of them. With source file we will mean file that ends with.c or.h and appear in the distribution package. Note: when performing a system build additional source files will be generated, these files are ignored. We first examined how the system has grown using several common metrics. For example, Fig. 1 shows the growth in size of the compressed tar files for the full kernel release, and Fig. 2 shows the growth of the number of lines of code (LOC). We also measured the growth of the number of source files and the growth of the number of global functions, variables, and macros; however, we have omitted the graphs for these measurements for the sake of brevity as the growth patterns they show are very similar to those of Fig. 1 and Fig. 2. Figure 1. Growth of the compressed tar file for the full Linux kernel source release.

6 Figure 2. Growth in the number of lines of code measured using two methods: the Unix command wc -l, and an awk script that removes comments and blanks lines. We will now show the growth of major subsystems. Figure 3. Growth of the major subsystems (development releases only).

7 Figure 4. Percentage of total system LOC for each major subsystem (development releases only). From these figures we see that Linux has experience a steady growth under the past years and also that the growth has been greatest in the drivers subsystem. 3 Conclusion The Linux operating system kernel is a very successful example of a large software system in widespread use that has been developed using an open source development (OSD) model. We have seen that Linux has grown over the years using several metrics, and we have found that the system has grown superlinearly. This strong growth rate seems surprising given (a) its large size (over two million lines of code including comments and blank lines), (b) its development model (a highly collaborative and geographically distributed set of developers, many of whom contributing their time and effort for free), and (c) previously published research that suggests that the growth of large software systems tends to slow down as the systems become larger. It seems that open source projects seem to manage without a strict development plan and with a minimal use of metrics. This phenomenon can be explained by enthusiasm that the people have working on the project.

8 4 Open Source Metric tools We will now present some tools that can be used to calculate some metrics. These are all licensed as open source. To count the lines of code you can use the unix command wc l, this gives the raw count of lines of code, including blank spaces and commented lines. There are many scripts available that omits commented lines and blank lines. 4.1 Excuberant Ctag Ctags generates an index (or tag) file of language objects found in source files that allows these items to be quickly and easily located by a text editor or other utility. A tag signifies a language object for which an index entry is available (or, alternatively, the index entry created for that object). Tag generation is supported for the following languages: Assembler, AWK, ASP, BETA, Bourne/Korn/Zsh Shell, C, C++, COBOL, Eiffel, Fortran, Java, Lisp, Lua, Make, Pascal, Perl, PHP, Python, REXX, Ruby, S-Lang, Scheme, Tcl, Vim, and YACC. 4.2 CCCC CCCC is a tool made by Tim Littlefair as a part of his research for his PhD level. CCCC is a tool which analyzes C++ and Java files and generates a report on various metrics of the code. Metrics supported include lines of code, McCabe's complexity and metrics proposed by Chidamber&Kemerer and Henry&Kafura. There are many other free tools that can be used when programming. There are also many commercial options available, but as open source projects usually have a small budget you might want to consider the use of free software. 5 References - Evolution in Open Source Software : A Case Study by Michael w. Godfrey and Qiang Tu - Software Metrics, A rigorous & Practical Approach by Fenton & Pfleeger -

9 This document was created with Win2PDF available at The unregistered version of Win2PDF is for evaluation or non-commercial use only.

Evolution in Open Source Software: A Case Study

Evolution in Open Source Software: A Case Study Evolution in Open Source Software: A Case Study Michael W. Godfrey and Qiang Tu Software Architecture Group (SWAG) Department of Computer Science, University of Waterloo email: fmigod,qtug@swag.uwaterloo.ca

More information

(S)LOC Count Evolution for Selected OSS Projects. Tik Report 315

(S)LOC Count Evolution for Selected OSS Projects. Tik Report 315 (S)LOC Count Evolution for Selected OSS Projects Tik Report 315 Arno Wagner arno@wagner.name December 11, 009 Abstract We measure the dynamics in project code size for several large open source projects,

More information

The Evolution of FreeBSD and Linux

The Evolution of FreeBSD and Linux The Evolution of FreeBSD and Linux Clemente Izurieta Department of Computer Science Colorado State University Fort Collins, Colorado, USA 1-97-481-6172 cizuriet@colostate.edu James Bieman Department of

More information

Topics. Operating System. What is an Operating System? Let s Get Started! What is an Operating System? Where in the Book are we?

Topics. Operating System. What is an Operating System? Let s Get Started! What is an Operating System? Where in the Book are we? Topics Operating System What is an OS? OS History OS Concepts OS Structures Introduction Let s Get Started! What is an Operating System? What are some OSes you know? Guess if you are not sure Pick an OS

More information

Linux. What is it? What s good about it? What s bad about it?

Linux. What is it? What s good about it? What s bad about it? Linux What is it? What s good about it? What s bad about it? History Minix by Tanenbaum in late 1980s Linus Torvalds started Linux as a hobby project to improve on Minix First official public version late

More information

Topics. Operating System I. What is an Operating System? Let s Get Started! What is an Operating System? OS History.

Topics. Operating System I. What is an Operating System? Let s Get Started! What is an Operating System? OS History. Topics Operating System I What is an OS? OS History OS Concepts OS Structures Introduction Let s Get Started! What is an Operating System? What are some OSes you know? Pick an OS you know: What are some

More information

Principles in Programming: Orientation & Lecture 1. SWE2004: Principles in Programming Spring 2015 Euiseong Seo

Principles in Programming: Orientation & Lecture 1. SWE2004: Principles in Programming Spring 2015 Euiseong Seo Principles in Programming: Orientation & Lecture 1 1 Course Objectives Introduce various subjects in computer science through puzzles and problems Most problems came from ICPC 2 Introduction Instructor:

More information

Principles in Programming: Orientation & Lecture 1. SWE2004: Principles in Programming Spring 2014 Euiseong Seo

Principles in Programming: Orientation & Lecture 1. SWE2004: Principles in Programming Spring 2014 Euiseong Seo Principles in Programming: Orientation & Lecture 1 1 Course Objectives Introduce various subjects in computer science through puzzles and problems Most problems came from ICPC 2 Textbook Programming Challenges

More information

Discovering Computers Chapter 13 Programming Languages and Program Development

Discovering Computers Chapter 13 Programming Languages and Program Development Discovering Computers 2009 Chapter 13 Programming Languages and Program Development Chapter 13 Objectives Differentiate between machine and assembly languages Identify and discuss the purpose of procedural

More information

Open Source Development

Open Source Development Open Source Development Dr. James A. Bednar jbednar@inf.ed.ac.uk http://homepages.inf.ed.ac.uk/jbednar Dr. Chris Walton cdw@inf.ed.ac.uk http://homepages.inf.ed.ac.uk/cdw SEOC2 Spring 2005: Open Source

More information

CNT 5605, Fall 2009: Introduction

CNT 5605, Fall 2009: Introduction , Fall 2009: A practical hands-on approach. We will build new servers and configure them with a variety of packages. Expertise is distributed: system administration happens everywhere from your PC to large

More information

Scripted Components: Problem. Scripted Components. Problems with Components. Single-Language Assumption. Dr. James A. Bednar

Scripted Components: Problem. Scripted Components. Problems with Components. Single-Language Assumption. Dr. James A. Bednar Scripted Components: Problem Scripted Components Dr. James A. Bednar jbednar@inf.ed.ac.uk http://homepages.inf.ed.ac.uk/jbednar (Cf. Reuse-Oriented Development; Sommerville 2004 Chapter 4, 18) A longstanding

More information

Scripted Components Dr. James A. Bednar

Scripted Components Dr. James A. Bednar Scripted Components Dr. James A. Bednar jbednar@inf.ed.ac.uk http://homepages.inf.ed.ac.uk/jbednar SAPM Spring 2012: Scripted Components 1 Scripted Components: Problem (Cf. Reuse-Oriented Development;

More information

Overview. Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++ Performance, memory

Overview. Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++ Performance, memory SCRIPTING Overview Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++ Reflection Bindings Serialization Performance, memory Rationale C++ isn't the best choice

More information

History of Unix, Linux and the Open Source

History of Unix, Linux and the Open Source History of Unix, Linux and the Open Source 12.2.2012 George Ajam College of Science /Computer Science Dept. DEC PDP 7 History of UNIX 1969: First version of "Unics" by Ken Thompson and Dennis Richie Multi

More information

The Cathedral and the Bazaar

The Cathedral and the Bazaar The Cathedral and the Bazaar This text (including older revisions of it) Described a set of customs among Free Software developers Those customs turned out to be a quite effective development methology

More information

Does Firefox obey Lehman s Laws of software Evolution?

Does Firefox obey Lehman s Laws of software Evolution? Does Firefox obey Lehman s Laws of software Evolution? Yan Dong Masters Candidate Department of Management Sciences University of Waterloo Waterloo, ON, Canada y4dong@engmail.uwaterloo.ca Shahab Mohsen

More information

CNT 4603, Spring 2009: Introduction

CNT 4603, Spring 2009: Introduction , : A practical hands-on approach Also higher-level concepts Expertise is distributed: system administration happens everywhere from your PC to large servers, and system administration is generally collaborative.

More information

Software Evolution: An Empirical Study of Mozilla Firefox

Software Evolution: An Empirical Study of Mozilla Firefox Software Evolution: An Empirical Study of Mozilla Firefox Anita Ganpati Dr. Arvind Kalia Dr. Hardeep Singh Computer Science Dept. Computer Science Dept. Computer Sci. & Engg. Dept. Himachal Pradesh University,

More information

Everyone who has been involved with IT for more than a few

Everyone who has been involved with IT for more than a few Introduction to MySQL Everyone who has been involved with IT for more than a few months has at least heard of MySQL. The acquisition of MySQL AB by Sun Microsystems brought a great deal of additional attention

More information

The Linux Kernel as a Case Study in Software Evolution

The Linux Kernel as a Case Study in Software Evolution The Linux Kernel as a Case Study in Software Evolution Ayelet Israeli Dror G. Feitelson Department of Computer Science The Hebrew University, 9194 Jerusalem, Israel Abstract We use over 8 versions of the

More information

Compilers. Prerequisites

Compilers. Prerequisites Compilers Prerequisites Data structures & algorithms Linked lists, dictionaries, trees, hash tables Formal languages & automata Regular expressions, finite automata, context-free grammars Machine organization

More information

Roundtable: Shaping the Future of z/os System Programmer Tasks Discussion

Roundtable: Shaping the Future of z/os System Programmer Tasks Discussion Roundtable: Shaping the Future of z/os System Programmer Tasks Discussion Iris Rivera, System z User Experience IBM Poughkeepsie, NY irivera@us.ibm.com Geoffrey Smith, z/os Information Strategy IBM Poughkeepsie,

More information

Chapter 2: Operating-System Structures. Operating System Concepts 9 th Edit9on

Chapter 2: Operating-System Structures. Operating System Concepts 9 th Edit9on Chapter 2: Operating-System Structures Operating System Concepts 9 th Edit9on Silberschatz, Galvin and Gagne 2013 Chapter 2: Operating-System Structures 1. Operating System Services 2. User Operating System

More information

Software Maintenance and Evolution

Software Maintenance and Evolution Software Maintenance and Evolution Minsoo Ryu Hanyang University Topics Covered 1. Software Maintenance and Evolution 2. Reverse Engineering 3. Reengineering 2 2 Software Change Software change is inevitable

More information

BOTH the trade press and researchers have examined

BOTH the trade press and researchers have examined IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 31, NO. 6, JUNE 2005 481 The FreeBSD Project: A Replication Case Study of Open Source Development Trung T. Dinh-Trong and James M. Bieman, Senior Member,

More information

Building a Large, Successful Web Site on a Shoestring: A Decade of Progress

Building a Large, Successful Web Site on a Shoestring: A Decade of Progress Building a Large, Successful Web Site on a Shoestring: A Decade of Progress Theodore W. Frick Bude Su Yun-Jo An Instructional Systems Technology School of Education Indiana University Bloomington Abstract

More information

Delivering Effective Solutions in the Age of Open Source Technology

Delivering Effective Solutions in the Age of Open Source Technology Delivering Effective Solutions in the Age of Open Source Technology Edward Beck Computer Sciences Corporation NDIA Systems Engineering Conference October 24-27, 2005 Copyright 2004 Computer Sciences Corporation.

More information

An Operating System History of Operating Systems. Operating Systems. Autumn CS4023

An Operating System History of Operating Systems. Operating Systems. Autumn CS4023 Operating Systems Autumn 2017-2018 Outline 1 2 What is an Operating System? From the user s point of view an OS is: A program that acts as an intermediary between a user of a computer and the computer

More information

Wikis. Wikis. There are two main places where you can access a wiki from within your online course or organization:

Wikis. Wikis. There are two main places where you can access a wiki from within your online course or organization: A wiki is a website of one or more pages that allows people to add and edit content collectively. This wiki has an easy-to-use editor that lets you quickly add content and style your work. Your wiki starts

More information

Chapter 01: Introduction to Linux

Chapter 01: Introduction to Linux True / False 1. Open Source Software (OSS) is freely developed and continuously improved by a large community of software developers ANSWER: True 2. The term hacker refers to someone who illegally uses

More information

Introducing Computer Programming

Introducing Computer Programming ok4 01 f2 5/24/17 9:59 AM Page 3 Chapter 1 Introducing Computer Programming Intended Learning Outcomes After completing this chapter, you should be able to: Explain the difference between computers and

More information

COSC Software Engineering. Lecture 23: Multilingual and Component Programming

COSC Software Engineering. Lecture 23: Multilingual and Component Programming COSC345 2013 Software Engineering Lecture 23: Multilingual and Component Programming Isolation Scale Change Errors These are core issues in Software Engineering Isolation is our main way to deal with them

More information

Outline. Introduction to Programming (in C++) Introduction. First program in C++ Programming examples

Outline. Introduction to Programming (in C++) Introduction. First program in C++ Programming examples Outline Introduction to Programming (in C++) Introduction Programming examples Algorithms, programming languages and computer programs Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer

More information

Overview. Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++

Overview. Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++ Scripting 1 Overview Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++ Rationale C++ isn't the best choice for all problems Complicated feature set, syntax Low-level,

More information

Linux operating system

Linux operating system Linux operating system libre, free: how and why Dobrica Pavlinušić http://www.rot13.org/~dpavlin/ PBF, 27.03.2008. History Open Source GPL license Don't panic! What is operating system? Linux Open Source

More information

Design & Implementation Overview

Design & Implementation Overview P Fall 2017 Outline P 1 2 3 4 5 6 7 P P Ontological commitments P Imperative l Architecture: Memory cells variables Data movement (memory memory, CPU memory) assignment Sequential machine instruction execution

More information

Compilation I. Hwansoo Han

Compilation I. Hwansoo Han Compilation I Hwansoo Han Language Groups Imperative von Neumann (Fortran, Pascal, Basic, C) Object-oriented (Smalltalk, Eiffel, C++) Scripting languages (Perl, Python, JavaScript, PHP) Declarative Functional

More information

Introduction to Engineering Using Robotics Experiments. Dr. Yinong Chen

Introduction to Engineering Using Robotics Experiments. Dr. Yinong Chen Introduction to Engineering Using Robotics Experiments Dr. Yinong Chen Outline Historical Perspective Programming Language Generations Programming Language Paradigms Imperative Programming Paradigm Writing

More information

Analysis of the effects of removing redundant header information in persistent HTTP connections

Analysis of the effects of removing redundant header information in persistent HTTP connections Analysis of the effects of removing redundant header information in persistent HTTP connections Timothy Bower, Daniel Andresen, David Bacon Department of Computing and Information Sciences 234 Nichols

More information

Principles of Programming Languages. Lecture Outline

Principles of Programming Languages. Lecture Outline Principles of Programming Languages CS 492 Lecture 1 Based on Notes by William Albritton 1 Lecture Outline Reasons for studying concepts of programming languages Programming domains Language evaluation

More information

SCASE STUDYS. Migrating from MVS to.net: an Italian Case Study. bizlogica Italy. segui bizlogica

SCASE STUDYS. Migrating from MVS to.net: an Italian Case Study. bizlogica Italy.  segui bizlogica SCASE STUDYS Migrating from MVS to.net: an Italian Case Study bizlogica Italy executive summary This report describes how BIZLOGICA helped a large Corporation to successful reach the objective of saving

More information

General Concepts. Abstraction Computational Paradigms Implementation Application Domains Influence on Success Influences on Design

General Concepts. Abstraction Computational Paradigms Implementation Application Domains Influence on Success Influences on Design General Concepts Abstraction Computational Paradigms Implementation Application Domains Influence on Success Influences on Design 1 Abstractions in Programming Languages Abstractions hide details that

More information

Chapter 2 Preview. Preview. History of Programming Languages. History of Programming Languages. History of Programming Languages

Chapter 2 Preview. Preview. History of Programming Languages. History of Programming Languages. History of Programming Languages Chapter 2 Preview Evolution of the Major Programming Languages The Beginnings of Data Abstraction: SIMULA 67 Orthogonal Design: ALGOL 68 Some Early Descendants of the ALGOLs Programming Based on Logic:

More information

Chapter 2: Operating-System Structures

Chapter 2: Operating-System Structures Chapter 2: Operating-System Structures Chapter 2: Operating-System Structures Operating System Services User Operating System Interface System Calls Types of System Calls System Programs Operating System

More information

Programming Language Concepts 1982, 1987, Outline. Period

Programming Language Concepts 1982, 1987, Outline. Period Programming Language Concepts 1982, 1987, 1997 Mehdi Jazayeri Distributed Systems Group Technische Universität Wien mjazayeri@alum.mit.edu http://www.infosys.tuwien.ac.at Outline Computer science environment

More information

What is a programming language?

What is a programming language? Overview Introduction Motivation Why study programming languages? Some key concepts What is a programming language? What is a programming language?...there is no agreement on what a programming language

More information

Chapter Twelve. Systems Design and Development

Chapter Twelve. Systems Design and Development Chapter Twelve Systems Design and Development After reading this chapter, you should be able to: Describe the process of designing, programming, and debugging a computer program Explain why there are many

More information

Scripting languages work methodology. Tomasz Bold D11 pok. 107

Scripting languages work methodology. Tomasz Bold D11 pok. 107 Scripting languages work methodology Tomasz Bold tomasz.bold@fis.agh.edu.pl D11 pok. 107 1 Organisation Lectures & labs one after another Lecure 1 Elementary information: history, applications, methodology.

More information

Lecture 1. Introduction to course, Welcome to Engineering, What is Programming and Why is this the first thing being covered in Engineering?

Lecture 1. Introduction to course, Welcome to Engineering, What is Programming and Why is this the first thing being covered in Engineering? Lecture 1 Introduction to course, Welcome to Engineering, What is Programming and Why is this the first thing being covered in Engineering? Welcome to ENGR 102 Syllabus review Your Time Expectations (in

More information

COPYRIGHTED MATERIAL. What Is Linux? Linux History. Linux as an Operating System. Linux as Free Software. Commercial Applications for Linux

COPYRIGHTED MATERIAL. What Is Linux? Linux History. Linux as an Operating System. Linux as Free Software. Commercial Applications for Linux 2915ch01.qxd 04/19/01 12:57 PM Page 3 Linux History C H A P T E R O N E What Is Linux? Linux as an Operating System Linux as Free Software Commercial Applications for Linux COPYRIGHTED MATERIAL 1 2915ch01.qxd

More information

Topic I. Introduction and motivation References: Chapter 1 of Concepts in programming languages by J. C. Mitchell. CUP, 2003.

Topic I. Introduction and motivation References: Chapter 1 of Concepts in programming languages by J. C. Mitchell. CUP, 2003. Topic I Introduction and motivation References: Chapter 1 of Concepts in programming languages by J. C. Mitchell. CUP, 2003. Chapter 1 of Programming languages: Design and implementation (3RD EDITION)

More information

OO Development and Maintenance Complexity. Daniel M. Berry based on a paper by Eliezer Kantorowitz

OO Development and Maintenance Complexity. Daniel M. Berry based on a paper by Eliezer Kantorowitz OO Development and Maintenance Complexity Daniel M. Berry based on a paper by Eliezer Kantorowitz Traditional Complexity Measures Traditionally, Time Complexity Space Complexity Both use theoretical measures,

More information

Using GitHub to Share with SparkFun a

Using GitHub to Share with SparkFun a Using GitHub to Share with SparkFun a learn.sparkfun.com tutorial Available online at: http://sfe.io/t52 Contents Introduction Gitting Started Forking a Repository Committing, Pushing and Pulling Syncing

More information

Code review guide. Notice: Read about the language that you will test its code, if you don t have an idea about the language this will be difficult.

Code review guide. Notice: Read about the language that you will test its code, if you don t have an idea about the language this will be difficult. Code review guide Author: Jameel Nabbo Website: www.jameelnabbo.com Table of contents Introduction Code review Checklist Steps to perform on code review task Tips for code review Starting the Code review

More information

CO600 Group Project Magnus Bogucki, Christos Fragiadakis

CO600 Group Project Magnus Bogucki, Christos Fragiadakis Department of Computer Science CO600 Group Project E-Pinion An Online Questionnaire Management System Magnus Bogucki BSc (Hons) Computer Science and Business Administraion with a year in Industry, University

More information

Chapter 1. Preliminaries

Chapter 1. Preliminaries Chapter 1 Preliminaries Chapter 1 Topics Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories Language

More information

Rational Software White paper

Rational Software White paper Unifying Enterprise Development Teams with the UML Grady Booch Rational Software White paper 1 There is a fundamental paradox at play in contemporary software development. On the one hand, organizations

More information

JavaScript Context. INFO/CSE 100, Spring 2005 Fluency in Information Technology.

JavaScript Context. INFO/CSE 100, Spring 2005 Fluency in Information Technology. JavaScript Context INFO/CSE 100, Spring 2005 Fluency in Information Technology http://www.cs.washington.edu/100 fit100-17-context 2005 University of Washington 1 References Readings and References» Wikipedia

More information

The Z-Files: Field reports from the world of business critical PHP applications

The Z-Files: Field reports from the world of business critical PHP applications The Z-Files: Field reports from the world of business critical PHP applications By Axel Schinke Senior Manager of Global Operations for Global Services About this webinar Field reports from Zend Consulting

More information

Architecture Proposal for an Internet Services Charging Platform

Architecture Proposal for an Internet Services Charging Platform Internal Working Paper Architecture Proposal for an Internet Services Charging Platform John Cushnie Distributed Multimedia Research Group, Lancaster University, UK. E-mail: j.cushnie@lancaster.ac.uk Abstract.

More information

1.264 Lecture 3. Time and resource estimation

1.264 Lecture 3. Time and resource estimation 1.264 Lecture 3 Time and resource estimation Next class: Read chapters 7, 8. Hand in exercise solution after class Form groups for homework. Hand in today s exercises on paper. 1 Choose system implementation

More information

Center for Systems and Software Engineering University of Southern California. Center for Systems And Software Engineering. UCC v.2011.

Center for Systems and Software Engineering University of Southern California. Center for Systems And Software Engineering. UCC v.2011. Center for Systems And Software Engineering UCC v.2011.10b Release Notes Page 1 of 7 1. Introduction This document provides the release notes for the UCC v.2011.10b. Unified CodeCount (UCC) is a code counting

More information

Evaluating the Evolution of a C Application

Evaluating the Evolution of a C Application Evaluating the Evolution of a C Application Elizabeth Burd, Malcolm Munro Liz.Burd@dur.ac.uk The Centre for Software Maintenance University of Durham South Road Durham, DH1 3LE, UK Abstract This paper

More information

Visualizing the evolution of software using softchange

Visualizing the evolution of software using softchange Visualizing the evolution of software using softchange Daniel M. German, Abram Hindle and Norman Jordan Software Engineering Group Department of Computer Science University of Victoria dmgerman,abez,njordan

More information

Chapter 2: System Structures

Chapter 2: System Structures Chapter 2: Operating System Structures Operating System Services System Calls Chapter 2: System Structures System Programs Operating System Design and Implementation Operating System Structure Virtual

More information

Website Design and Development CSCI 311

Website Design and Development CSCI 311 Website Design and Development CSCI 311 Learning Objectives Understand good practices in designing and developing web sites Learn some of the challenges web design Activity In pairs: describe how you d

More information

Languages october 22, 2017 Éric Lévénez <http://www.levenez.com/lang/> FORTRAN III end-1958 FORTRAN II FORTRAN I october 1956

Languages october 22, 2017 Éric Lévénez <http://www.levenez.com/lang/> FORTRAN III end-1958 FORTRAN II FORTRAN I october 1956 1954 1957 FORTRAN november 1954 FORTRAN I october 1956 FORTRAN II 1957 FORTRAN III end-1958 B-O 1957 Flow-Matic 1958 COBOL 1959 JOVIAL 1959 IAL 1958 ALGOL 58 1958 Lisp 1958 Lisp 1 1959 Languages october

More information

Computer Science 4500 Operating Systems. Welcome! In This Module. Module 1 Introduction, Overview and History

Computer Science 4500 Operating Systems. Welcome! In This Module. Module 1 Introduction, Overview and History Computer Science 4500 Operating Systems Module 1 Introduction, Overview and History Updated: January 13, 2015 2008 Stanley A. Wileman, Jr. Operating Systems Slide 1 Welcome! Welcome to Operating Systems.

More information

Computer Software. c 2016 by David W. Gerbing. School of Business Administration Portland State University

Computer Software. c 2016 by David W. Gerbing. School of Business Administration Portland State University Computer Software c 2016 by David W. Gerbing School of Business Administration Portland State University Computer Software Introduction Operating Systems Application Software Unix Command Line (on a Mac)

More information

Visual Composer Modeling: Migrating Models from 7.1.X to 7.2.0

Visual Composer Modeling: Migrating Models from 7.1.X to 7.2.0 Visual Composer Modeling: Migrating Models from 7.1.X to 7.2.0 Applies to: Visual Composer for SAP Netweaver Composition Environment (CE) 7.2.0, 7.1.X. Summary This document discusses known issues, following

More information

Counting Software Size: Is It as Easy as Buying A Gallon of Gas?

Counting Software Size: Is It as Easy as Buying A Gallon of Gas? Counting Software Size: Is It as Easy as Buying A Gallon of Gas? October 22, 2008 NDIA 11 th Annual Systems Engineering Conference Lori Vaughan and Dean Caccavo Northrop Grumman Mission Systems Office

More information

Dynamic Languages Toolkit. Presented by Andrey Tarantsov

Dynamic Languages Toolkit. Presented by Andrey Tarantsov Dynamic Languages Toolkit Presented by Andrey Tarantsov Dynamic Languages Toolkit Serves as a foundation for scripting and dynamically-typed language IDEs Generalizes JDT code and follows its architecture

More information

EZ-Metrix V User Guide

EZ-Metrix V User Guide EZ-Metrix V4.1.0.3 User Guide Table 1 Revision History Date Version Author Reason 5/19/04 0.1 James T. Heires Original 6/24/04 0.2 James T. Heires Demo feedback 7/3/04 0.3 James T. Heires Added support

More information

TESTING TRENDS IN 2016: A SURVEY OF SOFTWARE PROFESSIONALS

TESTING TRENDS IN 2016: A SURVEY OF SOFTWARE PROFESSIONALS WHITE PAPER TESTING TRENDS IN 2016: A SURVEY OF SOFTWARE PROFESSIONALS Today s online environments have created a dramatic new set of challenges for software professionals responsible for the quality of

More information

LEGACY SYSTEMS MODERNIZATION SERVICES.

LEGACY SYSTEMS MODERNIZATION SERVICES. LEGACY SYSTEMS MODERNIZATION SERVICES www.eratech.com.eg Slide # 1 Feb. 2013 Agenda 1. Modernization of Legacy Systems Why and How? 2. Success Story Central Auditing Organization 3. Introducing Informix

More information

Building a Browser for Automotive: Alternatives, Challenges and Recommendations

Building a Browser for Automotive: Alternatives, Challenges and Recommendations Building a Browser for Automotive: Alternatives, Challenges and Recommendations Igalia and Webkit/Chromium Open source consultancy founded in 2001 Igalia is Top 5 contributor to upstream WebKit/Chromium

More information

FEATURES EASILY CREATE AND DEPLOY HIGH QUALITY TCL EXECUTABLES TO ANYONE, ANYWHERE

FEATURES EASILY CREATE AND DEPLOY HIGH QUALITY TCL EXECUTABLES TO ANYONE, ANYWHERE EASILY CREATE AND DEPLOY HIGH QUALITY TCL EXECUTABLES TO ANYONE, ANYWHERE TCL DEV KIT (TDK) INCLUDES EVERYTHING YOU NEED FOR FAST DEVELOPMENT OF SELF-CONTAINED, EASILY-DEPLOYABLE APPLICATIONS. TURN YOUR

More information

Copyright 2005 Department of Computer & Information Science

Copyright 2005 Department of Computer & Information Science Introducing Programming Copyright 2005 Goals By the end of this lecture, you should Understand the different types of programming languages. Understand the basic procedures in a program as input, processing

More information

Chapter 1: Introduction to Computers and Java

Chapter 1: Introduction to Computers and Java Chapter 1: Introduction to Computers and Java Starting Out with Java: From Control Structures through Objects Fifth Edition by Tony Gaddis Chapter Topics Chapter 1 discusses the following main topics:

More information

8/23/2014. Chapter Topics. Introduction. Java History. Why Program? Java Applications and Applets. Chapter 1: Introduction to Computers and Java

8/23/2014. Chapter Topics. Introduction. Java History. Why Program? Java Applications and Applets. Chapter 1: Introduction to Computers and Java Chapter 1: Introduction to Computers and Java Starting Out with Java: From Control Structures through Objects Fifth Edition by Tony Gaddis Chapter Topics Chapter 1 discusses the following main topics:

More information

UNIX and Linux Essentials Student Guide

UNIX and Linux Essentials Student Guide UNIX and Linux Essentials Student Guide D76989GC10 Edition 1.0 June 2012 D77816 Authors Uma Sannasi Pardeep Sharma Technical Contributor and Reviewer Harald van Breederode Editors Anwesha Ray Raj Kumar

More information

EEE 435 Principles of Operating Systems

EEE 435 Principles of Operating Systems EEE 435 Principles of Operating Systems Operating System Structure (Modern Operating Systems 1.7) Outline Operating System Structure Monolithic Systems Layered Systems Virtual Machines Exokernels Client-Server

More information

Acknowledgments. Who Should Read This Book How to Read This Book

Acknowledgments. Who Should Read This Book How to Read This Book Contents p. i Dedication p. xix Acknowledgments p. xix Foreword p. xxi Introduction p. xxiii Who Should Read This Book p. xxiv How to Read This Book p. xxvi About the Author p. xxvii Background 1 Ten Commandments

More information

Comparative Analysis of the Selected Relational Database Management Systems

Comparative Analysis of the Selected Relational Database Management Systems Comparative Analysis of the Selected Relational Database Management Systems R. Poljak, P. Poščić and D. Jakšić Department of informatics-university of Rijeka/ Rijeka, Croatia rpoljak@student.uniri.hr,

More information

Concepts in Programming Languages

Concepts in Programming Languages Concepts in Programming Languages Marcelo Fiore Computer Laboratory University of Cambridge 2012 2013 (Easter Term) 1 Practicalities Course web page: with lecture

More information

Arbiter: the Evaluation Tool in the Contests of the China NOI

Arbiter: the Evaluation Tool in the Contests of the China NOI Olympiads in Informatics, 2013, Vol. 7, 180 185 180 2013 Vilnius University Arbiter: the Evaluation Tool in the Contests of the China NOI Qiyang ZHAO 1, Fan WANG 1, Baolin YIN 1,HuiSUN 2 1 School of Computer

More information

How Often and What StackOverflow Posts Do Developers Reference in Their GitHub Projects?

How Often and What StackOverflow Posts Do Developers Reference in Their GitHub Projects? How Often and What StackOverflow Posts Do Developers Reference in Their GitHub Projects? Saraj Singh Manes School of Computer Science Carleton University Ottawa, Canada sarajmanes@cmail.carleton.ca Olga

More information

Chapter 11 Program Development and Programming Languages

Chapter 11 Program Development and Programming Languages Chapter 11 Program Development and Programming Languages permitted in a license distributed with a certain product or service or otherwise on a password-protected website for classroom use. Programming

More information

Understanding the Open Source Development Model. » The Linux Foundation. November 2011

Understanding the Open Source Development Model. » The Linux Foundation. November 2011 » The Linux Foundation Understanding the Open Source Development Model November 2011 By Ibrahim Haddad (PhD) and Brian Warner, The Linux Foundation A White Paper By The Linux Foundation This paper presents

More information

These Are the Top Languages for Enterprise Application Development

These Are the Top Languages for Enterprise Application Development These Are the Top Languages for Enterprise Application Development And What That Means for Business August 2018 Enterprises are now free to deploy a polyglot programming language strategy thanks to a decrease

More information

Why are there so many programming languages? Why do we have programming languages? What is a language for? What makes a language successful?

Why are there so many programming languages? Why do we have programming languages? What is a language for? What makes a language successful? Chapter 1 :: Introduction Introduction Programming Language Pragmatics Michael L. Scott Why are there so many programming languages? evolution -- we've learned better ways of doing things over time socio-economic

More information

COMP 201: Principles of Programming

COMP 201: Principles of Programming COMP 201: Principles of Programming 1 Learning Outcomes To understand what computing entails and what the different branches of computing are. To understand the basic design of a computer and how it represents

More information

The future of dynamic languages. Gabor Szabo Perl Training Israel - Raz Information Systems -

The future of dynamic languages. Gabor Szabo Perl Training Israel   - Raz Information Systems - The future of dynamic languages Gabor Szabo Perl Training Israel Raz Information System gabor@pti.co.il www.pti.co.il www.raz.co.il Dynamic Languages PHP Tcl Python Ruby Perl... PHP First version in 1995

More information

Popularity, Interoperability, and Impact of Programming Languages in 100,000 Open Source Projects

Popularity, Interoperability, and Impact of Programming Languages in 100,000 Open Source Projects Popularity, Interoperability, and Impact of Programming Languages in 100,000 Open Source Projects Tegawendé F. Bissyandé 1, Ferdian Thung 2, David Lo 2, Lingxiao Jiang 2 and Laurent Réveillère 1 1 Laboratoire

More information

CS240: Programming in C

CS240: Programming in C CS240: Programming in C Lecture 1: Class overview. Cristina Nita-Rotaru Lecture 1/ Fall 2013 1 WELCOME to CS240 Cristina Nita-Rotaru Lecture 1/ Fall 2013 2 240 Team Instructor: Cristina Nita-Rotaru Special

More information

2IS55 Software Evolution. Software metrics. Alexander Serebrenik

2IS55 Software Evolution. Software metrics. Alexander Serebrenik 2IS55 Software Evolution Software metrics Alexander Serebrenik Assignments Assignment 3: Feedback: 3.875/5 BUT only 8 responces Evaluation Q3: Feedback: Thank you! BUT only 6 responces Assignment 4: Deadline:

More information

Chapter 2 Operating-System Structures

Chapter 2 Operating-System Structures This chapter will discuss the following concepts: 2.1 Operating System Services 2.2 User Operating System Interface 2.3 System Calls 2.4 System Programs 2.5 Operating System Design and Implementation 2.6

More information

But before understanding the Selenium WebDriver concept, we need to know about the Selenium first.

But before understanding the Selenium WebDriver concept, we need to know about the Selenium first. As per the today s scenario, companies not only desire to test software adequately, but they also want to get the work done as quickly and thoroughly as possible. To accomplish this goal, organizations

More information

Chapter 2: Operating-System Structures. Operating System Concepts Essentials 8 th Edition

Chapter 2: Operating-System Structures. Operating System Concepts Essentials 8 th Edition Chapter 2: Operating-System Structures Operating System Concepts Essentials 8 th Edition Silberschatz, Galvin and Gagne 2011 Chapter 2: Operating-System Structures Operating System Services User Operating

More information