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 152 Views

Recommend Documents

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.

Designing and Maintaining Software (DAMS) - GitHub
%w.rack tilt date INT TERM..map{|l|trap(l){$r.stop}rescue require l};. $u=Date;$z=($u.new.year + 145).abs;puts "== Almost Sinatra/No Version has taken the stage on #$z for development with backup from Webrick". $n=Module.new{extend. Rack;a,D,S,q=Rack

Designing and Maintaining Software (DAMS) - GitHub
Clear Documentation. Designing and Maintaining Software (DAMS). Louis Rose. Page 2. Bad documentation. Misleading or contradictory find_customer(id). CustomerGateway. Used to look up a customer by their customer number. Page 3. Bad documentation. Red

Designing and Maintaining Software (DAMS) - GitHub
R&D: sketch habitable solutions on paper, using UML. 4. Evaluate solutions and implement the best, using TDD. Probably start again at 3. 5. Give to the product owner to validate. Probably start again at 1. 6. Put into production for customers to eval

Designing and Maintaining Software (DAMS) - GitHub
Observers. Designing and Maintaining Software (DAMS). Louis Rose. Page 2. Page 3. Delivery people need to know when pizzas are ready class Pizza def initialize(delivery_person). @delivery_person = delivery_person end def bake cook # blocking call. @d