Software Engineering In the Mariokart system Wim Looman† Department of Electrical Engineering University of Canterbury Christchurch New Zealand

26 September, 2011



[email protected]

Outline

1

Build Toolchain

2

Source Control

GNU, GNU, GNU Git Github 3

Continuous Integration What is it? Why would you use it? CI Joe Examples

4

Wim Looman†

(UC)

Questions

Software Engineering

26 September, 2011

2 / 13

Build Toolchain

Wim Looman†

(UC)

Software Engineering

26 September, 2011

3 / 13

Build Toolchain

arm-eabi-gcc – The GNU Compiler Collection

Wim Looman†

(UC)

Software Engineering

26 September, 2011

3 / 13

Build Toolchain

arm-eabi-gcc – The GNU Compiler Collection arm-eabi-gdb – The GNU Project Debugger

Wim Looman†

(UC)

Software Engineering

26 September, 2011

3 / 13

Build Toolchain

arm-eabi-gcc – The GNU Compiler Collection arm-eabi-gdb – The GNU Project Debugger openocd – Open On-Chip Debugger

Wim Looman†

(UC)

Software Engineering

26 September, 2011

3 / 13

Build Toolchain

arm-eabi-gcc – The GNU Compiler Collection arm-eabi-gdb – The GNU Project Debugger openocd – Open On-Chip Debugger GNU make Lots of targets to enable easy programming, debugging and testing.

Wim Looman†

(UC)

Software Engineering

26 September, 2011

3 / 13

Git

Wim Looman†

(UC)

Software Engineering

26 September, 2011

4 / 13

Git

Distributed Version Control System (DVCS)

Wim Looman†

(UC)

Software Engineering

26 September, 2011

4 / 13

Git

Distributed Version Control System (DVCS) Created by Linus Torvalds for the Linux kernel project.

Wim Looman†

(UC)

Software Engineering

26 September, 2011

4 / 13

Git

Distributed Version Control System (DVCS) Created by Linus Torvalds for the Linux kernel project. High performance and strong safeguards against corruption.

Wim Looman†

(UC)

Software Engineering

26 September, 2011

4 / 13

Git

Distributed Version Control System (DVCS) Created by Linus Torvalds for the Linux kernel project. High performance and strong safeguards against corruption. Very “branch-friendly.”

Wim Looman†

(UC)

Software Engineering

26 September, 2011

4 / 13

Github

About “Originally founded by Chris Wanstrath, PJ Hyett and Tom Preston-Werner as a project to simplify sharing code, GitHub has grown into an application used by nearly a million people to store over two million code repositories, making GitHub the largest code host in the world.” – https://github.com/about

Wim Looman†

(UC)

Software Engineering

26 September, 2011

5 / 13

Github

Web Interface†



https://github.com/team-ramrod/mariokart Wim Looman†

(UC)

Software Engineering

26 September, 2011

5 / 13

Github

Wiki†



https://github.com/team-ramrod/mariokart/wiki Wim Looman†

(UC)

Software Engineering

26 September, 2011

5 / 13

What Is Continuous Integration?

Definition† “Continuous Integration is a software development practice . . . leading to multiple integrations per day . . . verified by an automated build . . . to detect integration errors as quickly as possible.” — Martin Fowler



http://martinfowler.com/articles/continuousIntegration.html Wim Looman†

(UC)

Software Engineering

26 September, 2011

6 / 13

Why Would You Use Continuous Integration?

Wim Looman†

(UC)

Software Engineering

26 September, 2011

7 / 13

Why Would You Use Continuous Integration?

Detect errors early.

Wim Looman†

(UC)

Software Engineering

26 September, 2011

7 / 13

Why Would You Use Continuous Integration?

Detect errors early. Minimizes time between error introduction and fix.

Wim Looman†

(UC)

Software Engineering

26 September, 2011

7 / 13

Why Would You Use Continuous Integration?

Detect errors early. Minimizes time between error introduction and fix. Provides a stable base for future work.

Wim Looman†

(UC)

Software Engineering

26 September, 2011

7 / 13

Why Would You Use Continuous Integration?

Detect errors early. Minimizes time between error introduction and fix. Provides a stable base for future work. Very useful for branch-happy development in git.

Wim Looman†

(UC)

Software Engineering

26 September, 2011

7 / 13

Why Would You Use Continuous Integration?

Detect errors early. Minimizes time between error introduction and fix. Provides a stable base for future work. Very useful for branch-happy development in git.

Peer pressure.

Wim Looman†

(UC)

Software Engineering

26 September, 2011

7 / 13

CI Joe†

Repository Description “CI Joe is a fun Continuous Integration server.”



https://github.com/defunkt/cijoe Wim Looman†

(UC)

Software Engineering

26 September, 2011

8 / 13

CI Joe†

Simple setup.



https://github.com/defunkt/cijoe Wim Looman†

(UC)

Software Engineering

26 September, 2011

8 / 13

CI Joe†

Simple setup. Designed to work with git.



https://github.com/defunkt/cijoe Wim Looman†

(UC)

Software Engineering

26 September, 2011

8 / 13

CI Joe†

Simple setup. Designed to work with git. Can trigger a build via a post-hook on github.



https://github.com/defunkt/cijoe Wim Looman†

(UC)

Software Engineering

26 September, 2011

8 / 13

CI Joe†

Simple setup. Designed to work with git. Can trigger a build via a post-hook on github. Reports status via build-hook (used to send email).



https://github.com/defunkt/cijoe Wim Looman†

(UC)

Software Engineering

26 September, 2011

8 / 13

Example 1

Wim Looman†

(UC)

Software Engineering

26 September, 2011

9 / 13

Example 1

Wim Looman†

(UC)

Software Engineering

26 September, 2011

9 / 13

Example 1

Wim Looman†

(UC)

Software Engineering

26 September, 2011

9 / 13

Example 2

Wim Looman†

(UC)

Software Engineering

26 September, 2011

10 / 13

Git vs SVN

Git Distributed (central repository can be used).

SVN Needs a single central repository.

Every clone is a full repository.

Can’t commit without access to central repository.

Continual branching and merging is expected.

Branching and merging is painful.

Wim Looman†

(UC)

Software Engineering

26 September, 2011

12 / 13

Unit Testing

Initially was planned. Would require mocking and simulating the entire SAM7XC architecture. Hundreds to thousands of registers. Need constraints on which registers get written in which orders.

Would be awesome, but probably too large for even its own final year project.

Wim Looman†

(UC)

Software Engineering

26 September, 2011

13 / 13

Software Engineering - GitHub

Sep 26, 2011 - into an application used by nearly a million people to store over two million code ... “Continuous Integration is a software development practice ...

768KB Sizes 1 Downloads 336 Views

Recommend Documents

Software Engineering Practices in the Mariokart System - GitHub
to say that Computer Science departments do a better job of teaching it — they don't [1] and in fact Software Engineering really should be taught as ... This was a nal year project for the ... gineering degree carried out by the authors. The aim of

Modern Software Translation - GitHub
Translation memory. ▻ Translate Java, Android and iOS applications. ▻ LDAP integration. ▻ REST API. ▻ Find out more at http://www.jabylon.org.

Intel® Software Template Overview - GitHub
“Table 13 shows that the DS2 system outperforms humans in 3 out of the 4 test sets and is competitive on the fourth. Given this result, we suspect that there is little room for a generic speech system to further improve on clean read speech without

Intel® Software Template Overview - GitHub
Copies of documents which have an order number and are referenced in this document, or other Intel literature, may be obtained by calling 1-800-548-4725, or go to: http://www.intel.com/design/literature.htm. Intel, Quark, VTune, Xeon, Cilk, Atom, Loo

Software Engineering
directed system for software engineering process improvement. Both products are used ... associated with software process improvement; and Software Shock (Dorset House), a treat- ment that focuses on ..... Security Testing 497. 18.6.3 ..... the Unive

Mining Software Engineering Data
Apr 9, 1993 - To Change. Consult. Guru for. Advice. New Req., Bug Fix. “How does a change in one source code entity propagate to other entities?” No More.

Software Engineering -
individual components? – How is function or data structure detail separated from .... (1) User interface classes define all abstractions that are necessary for Human ... enables data mining or knowledge discovery that can have an impact on the ...

Software and hardware list.docx.docx - GitHub
Download links to the software. Hardware specifications. OS required. 1. 32-bit / 64-bit guest OS. Free. None. Windows/Mac. OS/Debian/RedHa t/CentOS/SUSE/U buntu. 2. R. 3.X.X/RStudio. Desktop V0.9X. Free. R http://www.r-project.org/. RStudio https://

Mobile Software Engineering - cs164
singletons, factories, observers, ... Page 23. unit testing. PHPUnit, Selenium, ... Page 24. UX. Page 25. performance latency, caching, ... Page 26. source control git, subversion. Page 27. IDEs. Xcode, ... Page 28. PHP frameworks. CodeIgniter. Page

Software Engineering
13.4.7. Data Structure 349. 13.4.8. Software Procedure 351. 13.4.9 ...... (e.g., Resisting the Virtual Life, edited by James Brook and Iain Boal and The Future ..... gan Kaufmann, 2000) suggest that the widespread impact of the PC will decline as.

Software Engineering -
How is function or data structure detail separated from ... data that are used by the components ..... elements such as data flow diagrams or analysis classes,.

requirement engineering process in software engineering pdf ...
requirement engineering process in software engineering pdf. requirement engineering process in software engineering pdf. Open. Extract. Open with. Sign In.

Understanding SIP - Software Engineering Laboratory
IP telephony runs on top of IP and utilizes the IP service model. It is not about ... resembles Web-hosting in IP world or NetCentrex in PSTN world ... Page 10 ...

Software Engineering BSCCSIT.pdf
structures, and multiple external interfaces. Page 3 of 76. Software Engineering BSCCSIT.pdf. Software Engineering BSCCSIT.pdf. Open. Extract. Open with.

Designing and Maintaining Software (DAMS) - GitHub
Automatically detect similar fragments of code. class StuffedCrust def title. "Stuffed Crust " +. @toppings.title +. " Pizza" end def cost. @toppings.cost + 6 end end class DeepPan def title. "Deep Pan " +. @ingredients.title +. " Pizza" end def cost

Designing and Maintaining Software (DAMS) - GitHub
Ruby Testing Frameworks. 3 popular options are: RSpec, Minitest and Test::Unit. We'll use RSpec, as it has the most comprehensive docs. Introductory videos are at: http://rspec.info ...

Designing and Maintaining Software (DAMS) - GitHub
Clear Names. Designing and Maintaining Software (DAMS). Louis Rose. Page 2. Naming is hard. “There are only two hard things in Computer. Science: cache invalidation and naming things.” - Phil Karlton http://martinfowler.com/bliki/TwoHardThings.ht

Designing and Maintaining Software (DAMS) - GitHub
Coupling Between Objects. Counts the number of other classes to which a class is coupled (other than via inheritance). CBO(c) = |d ∈ C - (1cl U Ancestors(C))| uses(c, d) V uses(d, c). - Chidamber and Kemerer. A metrics suite for object-oriented des