A Course on Software Engineering
Dines Bjørner
Department of Informatics &c.
Technical University of Denmark
DK-2800 Lyngby, Denmark
E-Mail: db@it.dtu.dk
September 25, 2000
Abstract:
A 15 point, 0-13 grade scale, course
on Software Engineering (SE) is outlined.
The author is a main originator of research and
courses in software abstraction and modelling,
as well as -- now -- in the ``upstream''
research and teaching of domain engineering.
The author has, since 1977 given -- now the third
version of -- parts 1, 4 and 7 (with extensive additions
given, in the past, to part 4) of the suggested SE course.
In the last 10 years the other parts have been added and
previous parts changed considerably.
The author intends to spend the next years on research
in relations between, on one side domain and requirements
engineering, and, on the other side, requirements
engineering and software design (architecture and program
structures).
This document is put forward as a contribution to the
course planning currently taking place in the section
for Computer Science & Technology in the Department
of Informatics & Mathematical Modelling at The Technical University
of Denmark (DTU).
The course proposed here is one of several core
computing science & engineering courses being
formulated. The assumptions for these `core'
courses are (i) that they all take place during the
5th to 6th semester, (ii) that they follow a series
of introductory courses -- such as for example indicated
in Figure 1, (iii) that students majoring
in Computing Science & Engineering will take at least
two such `core' courses, and (iv) that they, the courses,
are followed up by ``deeper level, advanced'' courses
-- such as also, albeit superficially, illustrated in
Figure 1 (at bottom).
Figure 1:
A Context for the Proposed Course
|
- To enable the candidate to participate in and eventually lead
large scale software development projects.
- To ensure that such projects lead to increasingly trustworthy
products, as well as to products that relate harmoniously to
the needs of all stake-holders.
- And to facilitate that lead software engineers conceive of
new kinds of software products in new areas of application -- in
particular applications that apply across large-scale
infrastructure components.
To introduce the student to:
- intermediate concepts of
abstraction and modelling
- basic and intermediate concepts of
description and documentation principles
- basic and intermediate concepts of
semiotics: syntax, semantics and pragmatics
- basic, intermediate and advanced concepts of
domain and requirements engineering
- intermediate and advanced concepts of
software design principles
- basic issues of validation, verification and testing
- relations of the above to current platform
programming
- relations of the above to project & product quality issues
- basic principles of project and product management
- basic principles of legal issues of software
- and rôles of tools
- Functional (SML) Programming (incl. Lambda Calculus ?)
- Imperative (Java) Programming (incl. Hoare Proofs ?)
- Introduction to Discrete Mathematics
Sets, Logic, Cartesians, Functions, (Concrete, Abstract and
Universal) Algebras
- Algorithms and Data Structures (incl. Complexity)
- Parallel Programming
- Basic Data Modelling and Database Systems
It would be ideal if there was an additional pre-requisite course:
- Introductory Abstraction and Modelling:
Perhaps merged into the above courses (viz.: into
Algorithms and Data
Structures
,
such as I currently practice it in 49285).
- I suggest that such a ``course'' use the IFAD VDM-SL Toolset.
It is furthermore suggested that both the two ``main-stream''
programming languages:
be integrated fully with the Algorithm & Data Structures, with the
Parallel Programming, with the Basic Data Modelling and Database
Systems, as they will with the presently proposed Software Engineering
course. Only by ``repeated'' use of the two language paradigms,
languages and their supporting systems, and with increasingly
sophisticated facets of these languages, can we bring the students
up to full programming literacy.
- Either
- A two module one semester + one three week
period course -- for which lectures
- should be given over 14 weeks.
- Or, preferably:
- A one module, two semester + one closing
three week course -- for which lectures
- should be given in the first semester's
14 weeks and lectures - should be given in
the second semester's
14 weeks.
- 2-3 lecturers
- one teaching assistant per 12 students
- one (or better: two) written individual examination(s)
after 14 week period(s)
- one written, 2-3 person
report during 14 + 3 (+ 14) week period(s)
- 15 points: grade scale 0-13 written examinations AND
report.
There are three specific references and three
general references:
- LN....:
- M....
- DE....
- Domain Engineering:
Elements of a Software Engineering Methodology
-- Towards Principles, Techniques and Tools --
A Study in Methodology.
Some 135 pages with some 350 foils.
The above notes are partial: I am regularly improving on
already written material and I am continually adding material where
presently ``missing''. The most recent, relatively ``the most''
completed document is the ``Method'' document. The ``next most
complete'' is the ``Domain Engineering'' document. The ``Domain
Engineering'' document will be
completed on the basis of the ``Method'' document, and the
``Software Engineering'' Lecture Notes will be completed on the basis
of the ``Method'' and ``Domain Engineering'' documents.
All document will be edited on the basis of feedback from lectures.
Eventually only the Software Engineering Lecture
Notes will be used in the proposed SE course.
Other noteworthy documents are:
- RSL: The RSL Book
- The Raise Method Book (RMB)
- (MAJ) Michael Jackson: ``lexicon ...''
In right ``margins'' below we refer to above documents. Footnotes
refer to web/home-page based lecture foils. Similar refs. can be given for individual chapter i of the lecture notes:
- http://www.it.dtu.dk/~ db/s2000/chi.ps
- 0.
- Introductory Lectures
- 1.
- Abstraction & Modelling:
RSL, LN.Ch3, M.5.3, DE.4.3
This, the first part (1.), basically replaces the current
course: 49238.
Latter parts (2.-14.) replace current course: 49351.
- (a)
- Property vs. Model-oriented Specs.
LN.Sect. 3.2, DE.4.3.1
- (b)
- Model-oriented Abstraction
LN.Sect. 3.3, DE.4.3.2
- (c)
- Logic Abstractions
LN.Sect. 3.4
- (d)
- Type Abstractions: Sorts & Models
LN.Sect. 3.5
- (e)
- Representation & Operation Abstraction
LN.Sect. 3.6
- i.
- Sets
Sects. 3.6.1-.5
- ii.
- Cartesians,
Sects. 3.6.1-.5
- iii.
- Lists
Sects. 3.6.1-.5
- iv.
- Maps
Sects. 3.6.1-.5
- v.
- Functions
Sects. 3.6.1-.5
- (f)
- Hierarchies & Compositions
LN.Sect. 3.7, DE.4.3.8
- (g)
- Denotations & Computations
LN.Sect. 3.8, DE.4.3.7
- (h)
- Time, Space and Space/Time
LN.Sect. 3.9
- (i)
- Contexts and States:
LN.Sect. 3.10, DE.4.3.4
I
,
II
,
III
,
IV
,
V
,
VI
.
- (j)
- Behaviours, Concurrency and Processes:
LN.Sect. 3.11, DE.4.3.5
I: The Process Concept
II: TCSP and RSL CSP
III: Petri Nets
IV: Statecharts
- (k)
- Determinacy and Looseness
LN.Sect. 3.12, DE.4.3.9
- (l)
- Modularity & Objects
LN.Sect. 3.12
- 2.
- What is a Formal Method ?
M.2, DE.2.6
- 3.
- Descriptions and Description Principles: LN.Ch6
- (a)
- Models & Modelling
LN.Sect. 6.4, M.4
- (b)
- Basic Description Principles
LN.Sect. 6.6, M.3.2, DE.3.1, MAJ
- DesignationsLN.Sect. 6.6.2
- DefinitionsLN.Sect. 6.6.3
- Refutable AssertionsLN.Sect. 6.6.4
- (c)
- Documents LN.Sect. 6.5, M.5.1
+ (1st semester/half), + (2nd semester/half)
- i.
- Informative Docs.:
LN.Sect. 6.5.1 & 6.5.6, DE.3.2
- a.
- Briefs
LN.Sect. 6.5.1
- b.
- Synopses
LN.Sect. 6.5.6
- ii.
- Acquisition
- iii.
- Descriptive Docs.LN.Sect. 6.5.4-.7.-.8
- a.
- Informal: Rough Sketches
LN.Sect. 6.5.4, DE.3.2
- b.
- Informal: Terminologies
LN.Sect. 6.5.8, DE.3.2
- c.
- Informal: Narratives
LN.Sect. 6.5.7, DE.3.2
- d.
- Formal: Specifications
LN.Sect. 6.5.9, DE.3.3
- iv.
- Analytic Docs.: LN.Sect. 6.5.10-.11
- a.
- Attribute & Facets Analysis
LN.Sect. 6.8
- b.
- Validation & Verification
LN.Sect. 6.5.11, LN.Sect. 6.5.10
- 4.
- Semiotics: LN.Ch5, M.3.1
- (a)
- Languages and Systems
LN.Sect. 5.2
- (b)
- Pragmatics, Semantics and Syntax
LN.Sect. 5.3, DE.4.3.6
- (c)
- SAL: Simple Applicative Language
LN.Sect. 5.4
Formal Development: I
,
II
,
III
,
IV
,
V
, and
VI
.
From Denotational to Attribiute Code Generator Semantics
- (d)
- SIL: Simple Imperative Language
LN.Sect. 5.5
From Denotational Semantics to Run-time Operational Semantics
- 5.
- Domain Engineering: LN.Ch 8
- (a)
- Stake-holders
- i.
- Stake-holder
LN.Sects. 6.8.3+8.2.1, M.5.3.1, DE.5.2.1q
- ii.
- Perspectives
LN.Sects. 6.8.3+8.2.2, M.5.3.1, DE.5.2.2
- (b)
- - Domain Attributes:
M.5.3.2
Moods
and Scope & Span
LN.Sects. 6.8.4+6.8.2
- Discrete, Continuous and Chaotic
LN.Sect. 6.8.9, DE.5.1.1
- Statics
LN.Sects. 6.8.5, DE.5.1.2, MAJ
- Dynamics
LN.Sects. 6.8.6, DE.5.1.3, MAJ
Inert, Active (Autonomous, Biddable, Programmable), Reactive
- Tangibility
LN.Sect. 6.8.8, DE.5.1.4, MAJ
- &c.
- (c)
- - - Domain Facets LN.Sect. 8.3, M.5.3.3
- i.
- Intrinsics
LN.Sect. 8.3.1, DE.5.3.1
- ii.
- Support Technologies
LN.Sect. 8.3.2, DE.5.3.2
- iii.
- Management and Organisation
LN.Sect. 8.3.3,
DE.5.3.3
- iv.
- Rules & Regulations
LN.Sect. 8.3.4, DE.5.3.4
- v.
- Scripts
- vi.
- Human Beaviour
LN.Sect. 8.3.5, DE.5.3.5
- vii.
- &c.
- 6.
- Requirements Engineering:
LN.Ch 10
- (a)
- Domain Requirements
LN.Sect. 10.4, M.5.4.
- i.
- Projection LN.Sect. 10.4.1
- ii.
- Instantiation LN.Sect. 10.4.2
- iii.
- Extension LN.Sect. 10.4.3
- iv.
- Initialisation LN.Sect. 10.4.4
- v.
- &c.
- (b)
- Interface Requirements
LN.Sect. 10.5, M.5.4.2
- i.
- Man-Machine Interface LN.Sect. 10.5.1
- a.
- Graphical User Interfaces (GUI)
- b.
- Dialogues
- c.
- Multi-Media Concerns
- d.
- &c.
- ii.
- Other Input/Output LN.Sect. 10.5.2
- (c)
- Machine Requirements
LN.Sect. 10.6, M.5.4.3
- i.
- Performance LN.Sect. 10.6.1
- ii.
- Dependability LN.Sect. 10.6.2
- a.
- Accessability
- b.
- Availability
- c.
- Reliability
- d.
- Fault Tolerance
- e.
- Security
- f.
- &c.
- iii.
- Maintenance LN.Sect. 10.6.3
- a.
- Perfective
- b.
- Adaptive
- c.
- Corrective
- iv.
- Platforms LN.Sect. 10.6.4
- a.
- Development
- b.
- Execution
- c.
- Maintenance
- v.
- Documentation LN.Sect. 10.6.5
- a.
- Installation & Maintenance
- b.
- User Training & Daily Use
- 7.
- - - Software Design:
LN.Ch 11, RMB
- (a)
- Software Architecture Design
LN.Ch 12, M.5.5.
- (b)
- Program Organisation Design
LN.Ch 13, M.5.5.2
- (c)
- Modularisation
- (d)
- Coding
- (e)
- &c.
- 8.
- Verification and Validation: Ch, 14, RMB
- (a)
- Validation LN.Sect. 14.2
- (b)
- Verification LN.Sect. 14.1
- (c)
- Testing LN.Sect. 14.3
- 9.
- - Problem Frames:
LN.Ch 15, DE.2.3, MAJ
- (a)
- Translation Frame LN.Sect. 15.2
- (b)
- Reactive Systems Frame LN.Sect. 15.3
- (c)
- Information Frame LN.Sect. 15.4
- (d)
- Workpiece Frame LN.Sect. 15.5
- (e)
- Connection Frame LN.Sect. 15.6
- (f)
- &c.
- 10.
- Platform Programming:
LN.Ch16
- (a)
- Java LN.Sect. 16.3
- (b)
- ODP LN.Sect. 16.4
- (c)
- OMG: Object Management Group LN.Sect. 16.5
- (d)
- CORBA LN.Sect. 16.6
- (e)
- UML: Unified Modelling Languages
- (f)
- &c.
- 11.
- Quality Issues:
LN.Ch. 17
- (a)
- Project Quality LN.Sect. 17.3
- (b)
- Product Quality LN.Sect. 17.2
- (c)
- Quality Assurance
- (d)
- Quality Control
- 12.
- Legal Issues:
LN.Ch 18
- (a)
- Intellectual Property Right LN.Sect. 18.2
- (b)
- Copyright LN.Sect. 18.3
- (c)
- Infringement LN.Sect. 18.4
- (d)
- Litigation LN.Sect. 18.5
- (e)
- &c.
- 13.
- - Projects and Products:
LN.Ch 19
- (a)
- Systems Engineering LN.Sect. 19.1
- (b)
- Project Management LN.Sect. 19.2
- i.
- Strategic, Tactical and Operational Resource Management
- ii.
- Setting Guidelines and Backstopping Problems
- iii.
- Tools:
- Version Control & Configuration Management
- Document Libraries
- Testing, Verififcation and Validation Tools
- &c.
- iv.
- &c.
- (c)
- Product Management LN.Sect. 19.3
- (d)
- &c.
- 14.
- Discussion:
LN.Ch 20
- (a)
- Formal Techniques Myths LN.Sect. 20.2
- (b)
- Formal Techniques Commandments LN.Sect. 20.3
- (c)
- Transfer to Industry LN.Sect. 20.4
- (d)
- Software Engineering Professionalism
LN.Sect. 20.5
- (e)
- Software Engineering Responsibilities
LN.Sect. 20.6
- (f)
- &c.
- The present course assumes that a similar 15 point
course will
- introduce basic and intermediate notions
of knowledge and data modelling,
- will cover ontology concepts,
- and otherwise be strong on logic !
An honest atrempt has been made to cross-reference between proposed
lecture topics, on one side, and chapter and section references to the
three main documents, on the other (``right margin'') side.
Below we refer to the tables of contents of the three referenced
documents.
- 1.
- Dines Bjørner, Souleimane Koussobe, Roger Noussi, and Georgui Satchok.
Michael Jackson's Problem
Frames
.
In Li ShaoQi and Michael Hinchley, editors, ICFEM'97: Intl.
Conf. on Formal Engineering Methods, Los Alamitos, CA, USA, 12-14 November
1997. IEEE Computer Society Press.
- 2.
- Dines Bjørner and Jorge R. Cuéllar.
Software Engineering Education:
Rôles of formal specification and design
calculi
.
Annals of Software Engineering, 6:365-410, 1998.
Published April 1999.
- 3.
- Dines Bjørner.
Domains as Prerequisites for
Requirements and Software
&c
.
In M. Broy and B. Rumpe, editors, RTSE'97: Requirements
Targeted Software and Systems Engineering, volume 1526 of Lecture
Notes in Computer Science, pages 1-41. Springer-Verlag, Berlin Heidelberg,
1998.
- 4.
- Dines Bjørner.
Where do Software Architectures come
from ? Systematic Development from Domains and Requirements. A
Re-assessment of Software
Engneering ?
South African Journal of Computer Science, 1999.
Editor: Chris Brink.
- 5.
- Dines Bjørner.
Software Engineeering: A New
Approach. From domains via requirements to software. Formal
specification and design
calculi.
2000.
Presently this document is a rather extensive (approx. 900 page) set
of lecture notes. It is accessible over the web:
http://www.it.dtu.dk/~db/s2000.
- 6.
- Dines Bjørner.
Domain Modelling: Resource Management
Strategics, Tactics &
Operations, Decision Support and Algorithmic
Software
.
In J.C.P. Woodcock, editor, Festschrift to Tony Hoare.
Oxford University and Microsoft, September 13-14 1999.
- 7.
- Dines Bjørner.
A Triptych Software Development
Paradigm: Domain, Requirements and
Software. Towards a Model Development of A Decision Support System for
Sustainable Development
.
In ErnstRüdiger Olderog, editor, Festschrift to Hans
Langmaack. University of Kiel, Germany, October 1999.
- 8.
- Dines Bjørner.
Pinnacles of Software Engineering: 25
Years of Formal Methods
.
Annals of Software Engineering, 2000.
Eds. Dilip Patel and Wang Yi.
- 9.
- Dines Bjørner.
Domain Engineering, Elements of a
Software Engineering Methodology
-- Towards Principles, Techniques and Tools -- A Study in
Methodology
.
Research report, Dept. of Computer Science & Technology, Technical
University of Denmark, Bldg. 343, DK-2800 Lyngby, Denmark, 2000.
One in a series of summarising research reports
- 10.
- Dines Bjørner.
Domain Engineering, A Software
Engineering Discipline in Need of
Research
.
In SOFSEM'2000, Lecture Notes in Computer Science. Springer
Verlag, 18-24 November 2000.
- 11.
- Dines Bjørner.
``What is a Method ?'' -- A
Study of Some Aspects of Software
Engineering
.
MacMillan, 2001.
- 12.
- Dines Bjørner.
Requirements Engineering, Elements of a Software Engineering
Methodology -- Towards Principles, Techniques and Tools -- A Study in
Methodology.
Research report, Dept. of Computer Science & Technology, Technical
University of Denmark, Bldg. 343, DK-2800 Lyngby, Denmark, 2000.
Not available. One in a series of summarising research reports
- 13.
- Dines Bjørner.
Software Design: Architectures and Program Organisation, Elements of
a Software Engineering Methodology -- Towards Principles, Techniques and
Tools -- A Study in Methodology.
Research report, Dept. of Computer Science & Technology, Technical
University of Denmark, Bldg. 343, DK-2800 Lyngby, Denmark, 2000.
Not available. One in a series of summarising research reports
A Course on Software Engineering
This document was generated using the
LaTeX2HTML translator Version 97.1 (release) (July 13th, 1997)
Copyright © 1993, 1994, 1995, 1996, 1997,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
The command line arguments were:
latex2html -split 0 se.tex.
The translation was initiated by Dines Bjorner on 9/25/2000
Footnotes
- ...third
- Documents
Software Architectures and Programming
Systems Design,
Vol.1
(800 pages) and
Software Architectures and Programming
Systems Design,
Vol.2
(640 pages)
1980-1990 Lecture Notes, Covers VDM, Abstraction, Modelling, Abstract
Specification,
Programming Language Semantics, Compiler Design, Database
``Theory'' and Data Base Management Systems, etc., represent the
second version.
- ...(DTU).
- The Computing Science group of the ``former''
Department of IT (Information Technology) will physically move from
Bldg. 343 to Bldg. 322 and formally , by January 1st, 2001,
together with the former Dept. of Mathematical Modelling, into
a new, larger Dept., as part of the overall realignment of the DTU.
- ...components
- Examples of such
such infrastructure components are: Transportation (viz.: rail, road,
shipping and air), health care,
financial services (viz.: banking, insurance, brokers, stock exchanges,
portfolio management), the manufacturing industry, the building
industry, the fisheries industry, the chemical industry, public
administration (social welfare; employment market; customs, excises
and taxation, etc.), etc.
- ...report.
- Both examinations must be passed, not just and
only the first, and the course project report must be approved.
- ...LN.Sect. 3.12
- Scemes, Classes and Modules
- ...LN.Sect. 5.4
- Ought really be three lectures !
Dines Bjorner
9/25/2000