Commit d3d573af authored by Gerson Sunyé's avatar Gerson Sunyé
Browse files

CI - Initial version

parent beb3c15f
Pipeline #14293 failed with stages
in 2 minutes and 53 seconds
image: alpine:latest
image: docker-registry.univ-nantes.fr/sunye-g/docker-asciidoctor-revealjs
cache:
paths:
- reveal.js
- out
before_script:
- apt-get update -qy
- apt install curl -y
- curl -sL https://deb.nodesource.com/setup_10.x | bash -
- apt-get install -y -qq nodejs
- node -v
- npm -v
stages:
- build
- deploy
build:
stage: build
script:
- bash ./compile.sh
- ls -la out
pages:
stage: deploy
script:
- echo 'Nothing to do...'
- mkdir -p ./target/site/reveal.js
- cp -rvL reveal.js/lib reveal.js/css reveal.js/js reveal.js/plugin ./target/site/reveal.js/
- mv ./target/site ./public
artifacts:
paths:
- public
- public
only:
- master
- master
......@@ -25,9 +25,9 @@ TODO:
== Plan
* Introduction
* Construction Methods
* Construction Techniques
* Construction Activities
* Construction Methods
* Conclusion
[.impact]
......@@ -80,202 +80,6 @@ image::big-picture.png[align=center,height=800px]
The choice of construction method is a key aspect of the construction planning activity. The choice of construction method affects the extent to which construction prerequisites (e.g. Requirements analysis, Software design, .. etc) are performed, the order in which they are performed, and the degree to which they are expected to be completed before construction work begins. Construction planning also defines the order in which components are created and integrated, the software quality management processes, the allocation of task assignments to specific software engineers, and the other tasks, according to the chosen method.[1]
--
[.impact]
== Software Construction Methods
[%notitle]
== Mapping Designs to Code
[.columns]
--
[.col-4]
image::big-picture-methods.png[]
[.col-8]
.Mapping Designs to Code:
* Not really a _development method_, but a set of conventions, strategies, idioms, interpretations allowing to translate a design model into source code.
* Will be the subject of the next lectures.
* May concern different modeling and implementation languages. Here we will study *UML to Java*.
--
== The Unified Modeling Language (UML)
[.columns]
--
[.col-2]
image::uml-logo.svg[width=200px]
[.col-8]
* Current version: http://www.omg.org/spec/UML/[2.5].
* A OMG standard containing:
** A notation (concrete syntax)
** A meta-model (abstract syntax)
** Almost *no semantics*!
* Several diagrams (concerns), one model.
* Several actors and processes, one syntax.
** Reduces the learning curve, but:
** Increases misinterpretation and confusion!
--
[%notitle]
== Agile Methods
[.columns]
--
[.col-4]
image::big-picture-methods.png[]
[.col-8]
.Agile Methods
* Development approaches which involve the collaborative effort of self-organizing and cross-functional teams and their customer.
* Advocates adaptive planning, evolutionary development, early delivery, and continual improvement.
* Encourages rapid and flexible response to change.
* Will be the subject of the next lectures.
--
[.notes]
--
Agile software development comprises various approaches to software development under which requirements and solutions evolve through the collaborative effort of self-organizing and cross-functional teams and their customer(s)/end user(s).[1] It advocates adaptive planning, evolutionary development, early delivery, and continual improvement, and it encourages rapid and flexible response to change.[2][further explanation needed]
The term agile (sometimes written Agile)[3] was popularized, in this context, by the Manifesto for Agile Software Development.[4] The values and principles espoused in this manifesto were derived from and underpin a broad range of software development frameworks, including Scrum and Kanban.[5][6]
While there is much anecdotal evidence that adopting agile practices and values improves the agility of software professionals, teams and organizations, some empirical studies have disputed that evidence.[7][8]
--
== Agile Methods
[.columns]
--
[.col-2]
image::xp-logo.png[]
[.col-8]
* *Examples*: Extreme Programming (XP), Scrum, Lean, Kanban, Rapid application development (RAD), etc.
* *Practices*:
** Pair programming
** Automatic Testing
** Continuous Design Improvement
** Small releases
** Collective code ownership
** Simple design
--
[%notitle]
== Test Driven Development
[.columns]
--
[.col-4]
image::big-picture-methods.png[]
[.col-8]
.Test Driven Development
* An Agile Development Method
* Relies on the repetition of a very short development cycle
* Requirements are turned into very specific test cases
* Will be the subject of the next lectures.
--
== Test Driven Development
[.columns]
--
[.col-2]
image::tdd-logo.png[]
[.col-8]
.Development cycle:
. Add a test
. Write the code
. Run tests
. Improve code
. Repeat
--
[%notitle]
== Continuous Integration
[.columns]
--
[.col-4]
image::big-picture-methods.png[]
[.col-8]
.Continuous Integration
* Software development _practice_.
* Developers integrate their work frequently, leading to multiple integrations per day.
* Each integration is verified by an automated build.
--
== Continuous Integration
[.columns]
--
[.col-2]
image::continuous-integration.png[CI]
[.col-8]
.Main components:
* Control Version System (Repository)
* CI Server
* Build Scripts
* Feedback Mechanisms
* Test Machine
* Build Machine
--
[%notitle]
== DevOps
[.columns]
--
[.col-4]
image::big-picture-methods.png[]
[.col-8]
.DevOps
* Set of *practices* that combines software development (Dev) and information-technology operations (Ops).
* Aims to shorten the systems development life cycle and provide continuous delivery with high software quality.
--
[.notes]
--
Going beyond the scope of software construction
--
== DevOps
[.columns]
--
[.col-4]
image::devops.png[DevOps,width=600px,align=center]
[.col-8]
.Process:
* Coding
* Building
* Testing
* Packaging
* Releasing
* Configuring
* Monitoring
--
[.notes]
--
* Coding – code development and review, source code management tools, code merging
* Building – continuous integration tools, build status
* Testing – continuous testing tools that provide quick and timely feedback on business risks
* Packaging – artifact repository, application pre-deployment staging
* Releasing – change management, release approvals, release automation
* Configuring – infrastructure configuration and management, infrastructure as code tools
* Monitoring – applications performance monitoring, end-user experience
--
[.impact]
......@@ -799,6 +603,203 @@ image::cleaning.png[]
* Operation examples: change of a class name, creation of an abstract class, extraction of the interface of class, etc.
--
[.impact]
== Software Construction Methods
[%notitle]
== Mapping Designs to Code
[.columns]
--
[.col-4]
image::big-picture-methods.png[]
[.col-8]
.Mapping Designs to Code:
* Not really a _development method_, but a set of conventions, strategies, idioms, interpretations allowing to translate a design model into source code.
* Will be the subject of the next lectures.
* May concern different modeling and implementation languages. Here we will study *UML to Java*.
--
== The Unified Modeling Language (UML)
[.columns]
--
[.col-2]
image::uml-logo.svg[width=200px]
[.col-8]
* Current version: http://www.omg.org/spec/UML/[2.5].
* A OMG standard containing:
** A notation (concrete syntax)
** A meta-model (abstract syntax)
** Almost *no semantics*!
* Several diagrams (concerns), one model.
* Several actors and processes, one syntax.
** Reduces the learning curve, but:
** Increases misinterpretation and confusion!
--
[%notitle]
== Agile Methods
[.columns]
--
[.col-4]
image::big-picture-methods.png[]
[.col-8]
.Agile Methods
* Development approaches which involve the collaborative effort of self-organizing and cross-functional teams and their customer.
* Advocates adaptive planning, evolutionary development, early delivery, and continual improvement.
* Encourages rapid and flexible response to change.
* Will be the subject of the next lectures.
--
[.notes]
--
Agile software development comprises various approaches to software development under which requirements and solutions evolve through the collaborative effort of self-organizing and cross-functional teams and their customer(s)/end user(s).[1] It advocates adaptive planning, evolutionary development, early delivery, and continual improvement, and it encourages rapid and flexible response to change.[2][further explanation needed]
The term agile (sometimes written Agile)[3] was popularized, in this context, by the Manifesto for Agile Software Development.[4] The values and principles espoused in this manifesto were derived from and underpin a broad range of software development frameworks, including Scrum and Kanban.[5][6]
While there is much anecdotal evidence that adopting agile practices and values improves the agility of software professionals, teams and organizations, some empirical studies have disputed that evidence.[7][8]
--
== Agile Methods
[.columns]
--
[.col-2]
image::xp-logo.png[]
[.col-8]
* *Examples*: Extreme Programming (XP), Scrum, Lean, Kanban, Rapid application development (RAD), etc.
* *Practices*:
** Pair programming
** Automatic Testing
** Continuous Design Improvement
** Small releases
** Collective code ownership
** Simple design
--
[%notitle]
== Test Driven Development
[.columns]
--
[.col-4]
image::big-picture-methods.png[]
[.col-8]
.Test Driven Development
* An Agile Development Method
* Relies on the repetition of a very short development cycle
* Requirements are turned into very specific test cases
* Will be the subject of the next lectures.
--
== Test Driven Development
[.columns]
--
[.col-2]
image::tdd-logo.png[]
[.col-8]
.Development cycle:
. Add a test
. Write the code
. Run tests
. Improve code
. Repeat
--
[%notitle]
== Continuous Integration
[.columns]
--
[.col-4]
image::big-picture-methods.png[]
[.col-8]
.Continuous Integration
* Software development _practice_.
* Developers integrate their work frequently, leading to multiple integrations per day.
* Each integration is verified by an automated build.
--
== Continuous Integration
[.columns]
--
[.col-2]
image::continuous-integration.png[CI]
[.col-8]
.Main components:
* Control Version System (Repository)
* CI Server
* Build Scripts
* Feedback Mechanisms
* Test Machine
* Build Machine
--
[%notitle]
== DevOps
[.columns]
--
[.col-4]
image::big-picture-methods.png[]
[.col-8]
.DevOps
* Set of *practices* that combines software development (Dev) and information-technology operations (Ops).
* Aims to shorten the systems development life cycle and provide continuous delivery with high software quality.
--
[.notes]
--
Going beyond the scope of software construction
--
== DevOps
[.columns]
--
[.col-4]
image::devops.png[DevOps,width=600px,align=center]
[.col-8]
.Process:
* Coding
* Building
* Testing
* Packaging
* Releasing
* Configuring
* Monitoring
--
[.notes]
--
* Coding – code development and review, source code management tools, code merging
* Building – continuous integration tools, build status
* Testing – continuous testing tools that provide quick and timely feedback on business risks
* Packaging – artifact repository, application pre-deployment staging
* Releasing – change management, release approvals, release automation
* Configuring – infrastructure configuration and management, infrastructure as code tools
* Monitoring – applications performance monitoring, end-user experience
--
////
[.impact]
== Software Construction Tools
......
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment