Commit 907e435b authored by Gerson Sunyé's avatar Gerson Sunyé
Browse files

Correct layout and complete slides

parent 13d8841d
Pipeline #31786 passed with stages
in 4 minutes and 36 seconds
source 'https://rubygems.org'
gem 'asciidoctor-revealjs' # latest released version
# Comment above line and uncomment the below one to use development version
#gem 'asciidoctor-revealjs', github: 'asciidoctor/asciidoctor-reveal.js'
# NOTE For some reason, the json gem is required when using the system Ruby
gem 'json'
gem 'asciidoctor'
gem 'asciidoctor-revealjs'
gem 'asciidoctor-diagram'
gem 'asciidoctor-pdf'
gem 'prawn-gmagick'
gem 'rouge'
\ No newline at end of file
{src: 'mde-languages.min.js', async:true, callback: function() { hljs.initHighlightingOnLoad(); }}
\ No newline at end of file
{src: 'mde-languages.min.js', async:true, callback: function() {
hljs.registerLanguage('ocl', window.hljsDefineOCL);
hljs.initHighlightingOnLoad(); }}
\ No newline at end of file
......@@ -30,7 +30,7 @@ ____
* Use a *n-tiers* architecture.
* Use *REST* for remote procedure call.
* Use the *MVC* framework for partitioning business classes and user interfaces.
* Respect the *Google Java Style * for source code.
* Respect the *Google Java Style* for source code.
* Access methods should start with `get` and `set`.
* Use a *graph database* for persisting data.
......@@ -422,7 +422,7 @@ synchronization are rendered in the operations of active classes with the help o
* May be intrinsic, imposed by the environment: multiples user interfaces, etc. For instance:
** Swing creates a separate thread for the user interface.
** Java RMI creates a thread for remote procedure calls.
** Remote Procedure Call (RPC) middleware creates a thread for processing calls: e.g. *Java RMI* or *Apache Thrift*.
* Or a design choice:
** Parallel processing
** Redundancy
......
include::../common/commons.adoc[]
= Domain Analysis
Gerson Sunyé
https://sunye-g.univ-nantes.io
......@@ -32,9 +30,6 @@ Documentation is a distillation of many long, squiggly adventures.
[quote, © Denis Howe, The Free On-line Dictionary of Computing]
Domain analysis is the process of identifying, collecting, organizing, analyzing and representing a domain model from the study of existing systems, underlying theory, emerging technology and development histories within the domain of interest.
== The Big Picture
.Domain Analysis <<Arango:1989>>
......@@ -130,9 +125,6 @@ As a software engineer, you are not expected to become an expert in the domain;
--
[plantuml, cd-domain-objects, png, align=center]
....
scale 800 width
hide circle
skinparam monochrome true
allowmixing
object "__113:Classroom__" as 113 {
......@@ -193,7 +185,21 @@ image::fractals.jpg[]
[.column.is-one-third]
--
image::actions.png[]
//image::actions.png[]
[plantuml, align=center]
....
allowmixing
actor "Teacher" as teacher
actor "Student" as student
class "Classroom" as classroom
usecase "Teaches" as teaches
student - teaches
teaches - teacher
teaches -- classroom
....
--
[.column]
......@@ -215,7 +221,7 @@ image::actions.png[]
* Actions characterized by what they achieve (its effects) and specified by a post-condition.
* Post-conditions may introduce new terms to describe the effect.
[source,atl]
[source,ocl]
----
UC::teach(student, teacher, skill)
post:
......
......@@ -51,10 +51,56 @@ domain.
[.column]
image::concept-map.png[]
[.columns.is-vcentered]
== Effective Use Cases
[.column]
* Technique for capturing the behavioral requirements of a software system
* Propose templates for describing use cases using natural language
[.column]
--
[.font-size-64]
[width="100%",cols="30%,70%",]
|===
| Use Case Name
| Complete Customer Profile
|Goal
|Input personal information into ABC Corp online portal
|Use Case ID
| UC001
| Actors
| Customer
| PreCondition
| Customer has login credentials provided by ABC Corp System Admin
| Primary Course
a| * User accesses ABC Corp’s portal
* User logs in using credentials provided by System Admin
* System verifies customer and displays personal details entry form
* User enters personal details into form and clicks save
* System presents a confirmation screen informing the user that the information has been saved
* End Use Case
|==
--
[.columns.is-vcentered]
== User stories
[.column]
* Informal, natural language description of software system features
* Very popular among agile development methods
* Smaller and simpler than use cases
[.column]
image::user-story-template.png[]
[.columns.is-vcentered]
== Domain Specific Languages
......@@ -67,6 +113,11 @@ image::concept-map.png[]
[.column.is-half]
image::dsl-example.png[]
[.columns.is-vcentered]
== Catalysis Snapshots
== KAOS
\ No newline at end of file
[.column.is-half]
* A depiction (usually as a drawing) of a set of objects and the values of some of their attributes at a particular point in time.
[.column.is-half]
image::catalysis-snapshot-example.png[]
////
== Software Engineering Steps
* *Domain/Business analysis*: understanding the user environment.
* *Requirement specification*: specifying the user needs.
* *Software design*: describing the foreseen solution.
......@@ -8,6 +8,7 @@
* *Validation/Verification*: evaluation of the solution.
* *Deployment*: distribution, delivery.
* *Maintenance*: resolving errors and evolving the solution according to new needs.
////
[.columns]
== Software Processes
......
......@@ -3,7 +3,7 @@
- *Main Principles*: Abstraction, Reuse (among others)
- *Techniques*: Modeling, Separation of Concerns
[.columns]
[.columns.is-vcentered]
== Modeling in Science & Engineering
[.column.is-one-half]
......@@ -123,10 +123,10 @@ image::system-concerns.png[width=60%, align=center]
image::house-concerns.png[width=800px, align=center]
[.columns]
[.columns.is-vcentered]
== Different Models of a System
[.column.is-one-half]
[.column.is-one-third]
--
.Models for:
- Firefighters
......@@ -141,12 +141,12 @@ image::house-concerns.png[width=800px, align=center]
- Cadastre
--
[.column.is-one-half]
--
[.column.is-one-third]
image::electrical-plan.png[align=center]
[.column.is-one-third]
image::civil-plan.png[align=center]
--
== Different Models of a Software System
......
......@@ -10,6 +10,7 @@ The Increasing complexity of Software has an impacts on their _quality attribute
--
== Mastering Complexity
image::bridges.png[align="center", width="120%"]
......@@ -31,7 +32,7 @@ image::bridges.png[align="center", width="120%"]
* Some Areas of Complexity: critical, real-time, embedded, distributed, parameterized, reusable, interoperable, durable, large-scale, pervasive, dynamic (self) adaptable, autonomous ...
--
[.columns]
[.columns.is-vcentered]
== Size
[.column.is-one-quart]
......@@ -41,7 +42,9 @@ image::bridges.png[align="center", width="120%"]
* http://www.informationisbeautiful.net/visualizations/million-lines-of-code/[Codebases]
--
image::historic-loc.jpg[]
[.column.is-three-quarts]
image::historic-loc.jpg[heigh=800px]
== Reliability, Availability, Maintainability and Safety (RAMS)
......
......@@ -11,12 +11,17 @@
= Software Requirement Engineering
:imagesdir: images
Gerson Sunyé
https://sunye-g.univ-nantes.io
== Initial Quote
[quote, Edward V Berard]
____
Walking on water and developing software from a specification are easy if both are frozen.
____
== Agenda
......
:revealjs_center: false
:revealjs_display: flex
:revealjs_transition: none
:revealjs_slideNumber: c/t
:revealjs_theme: stereopticon
:revealjs_width: 1920
:revealjs_height: 1080
:revealjs_history: true
:revealjs_margin: 0
:imagesdir: images
:includedir: includes
:sectids!:
include::../common/commons.adoc[]
= Software Engineering: A Brief Introduction
Gerson Sunyé <gerson.sunye@univ-nantes.fr>
......@@ -153,7 +143,7 @@ image::ghezzi.png[width=200%, align=right]
* *Techniques*: Best practices, reuse techniques.
* *Methods*: Guidelines and rules for activity organization.
* *Tools*: Support the automatization of techniques and methods.
--
--
[.impact]
......@@ -174,7 +164,7 @@ include::{includedir}/mbse.adoc[]
== Part IV: Software Development Processes
include::{includedir}/development-process.adoc[]
[.impact]
== Conclusion
......@@ -186,7 +176,7 @@ include::{includedir}/development-process.adoc[]
* The code does not simplify the reality.
== Best Practices
* Develop software iteratively
* Manage requirements
* Use component-based architectures
......
......@@ -7,7 +7,8 @@
:revealjs_height: 1080
:revealjs_history: true
:revealjs_margin: 0
:source-highlighter: highlightjs
:source-highlighter: rouge
:rouge-css: style
:sectids!:
:revealjs_plugins: src/js/revealjs-plugins.js
:imagesdir: images
......
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