Italian, with teaching materials in English.
I'm available to discuss in English with students.
Contenuto del corso
· introduction to java basics
· UML diagrams in the implementation and specification perspectives
· effective idioms in the usage of Java [3].
· Java collections framework, the interface Comparable and Iterator pattern;
· design patterns;
· Object Oriented Analysis [7] and UML diagrams;
· organization of the SW lifecycle, with reference to Waterfall and V-Model, Unified process, eXtreme Programming.
[0] Slides of all the lectures.
[1] DavidFlanagan, "Java in a Nutshell". (first two chapters on "Java syntax from the Ground Up" (alias "How Java differs from c") and "Object Oriented programming in Java" (alias "Classes and objects in Java")).
[2] Martin Fowler, "UML distilled".
[3] Joshua Bloch, "Effective Java". (selected items, as documented in the slides)
[4] Erich Gamma, Richard Helm, Ralph Jonson, John Vlissides, "Design patterns, elements of reusable obect oriented design".
[5] Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann, "Pattern Oriented Software Architecture, a system of patterns". (my original intention was to say something at least about "Model View Controller", "event-channel", "Reflection; yet, in the past year time was not enough to do so).
[6] James Rumbaugh, Michael Blaha, William Premerlani, Frederick Eddy, William Lorensen, "Object-oriented Modeling and design," Prentice Hall, 1991.
[7] Martin Fowler, "Analysis Patterns", di cui in particolare conto di sviluppare i patterns "observation and measurement" e "accountability".
[8] T.De Marco, "Structured Analysis and System specification", Yourdon Press, Englewood Cliffs, New jersey, 1979.
[9] E.Yourdon, L.Constantine, "Structured design: fundamentals of a discipline of Computer programming and system design," Prentice Hall, September 1986.
Obiettivi Formativi
Knowledge and understanding:
Java language, idioms, and design patterns;
Driving principles of OO design;
Integration of UML in the practice of SW development;
Requirements analysis, OO analysis and formalization based on UML;
Fundamental lifecycle models, Waterfall, VModel, UP, XP.
Applying Knowledge and understanding:
Java language, idioms, and design patterns;
Driving principles of OO design;
Integration of UML in the practice of SW development;
Requirements analysis, OO analysis and formalization based on UML.
Formulating judgements:
Java language, idioms, and design patterns;
Driving principles of OO design;
OO analysis;
Communication skills:
describing the intent and approach of a software design;
describing any content of the course.
Learning abilities:
autonomous practice in software development, OO analysis, UML modeling.
Prerequisiti
this class assumes a good mastering of the c language. Experience with Java or c++ will largely help, but they are not assumed as necessary
Metodi Didattici
*** Lectures: presentation of contents
*** Exercitation lectures: presentation of practical issues, such as coding or small-grained design examples.
*** Autonomous practice by the students in the elaborarion of concepts presented during lectures.
***
Small-sized assignment: autonously selected and developed by the student.
The exam is made of a written test and an oral test.
In the written test, the candidate answers to open questions, writing on paper without the use of a computer and without access to books or notes.
For the access to the oral exam, the candidate shall also prepare an assignment, which is selected and developed autonomously by the candidate. The assignment is defined so as to combine together the description of a practice or a design pattern, some exemplar code, some test cases that illustrate the intent of the scheme, some UML diagrams.
The oral test starts with a discussion of the answers provided in the written test and in the subsequent correction/rewriting, and it will then continue with the discussion of the assignment developed by the student, and then with any question on any argument in the course contents.
The discussion of the written test provides a way to ascertain the ability of the candidate in: discussing and presenting concepts; writing snippets and design patterns of Java code; translating UML schemes into Java; designining UML schemes that can be productively transalated into Java; designing UML schemes that capture a textual description of requirements; discussing about general concepts of methodology. The assignment provides the occasion to evaluate the ability of autonomous learning and written presentation.
More details provided at: http://stlab.dinfo.unifi.it/vicario/Teaching/SW_Engineering/sw_engineering.html
Programma del corso
In the following, I report the actual contents presented in the course for the academic year 2016/17. Some of the slides are not completely updated, but in this case they are at minor distance.
· 4 lectures of introduction to java basics [1].
Slides: "JavaBasics";
· 1 lectures on UML diagrams in the implementation and specification perspectives, with just a mention of the conceptual perspective [2].
Slides:"UML class diagram: notation";
· 2,3 lectures on effective idioms in the usage of Java [3].
Slides: "EffectiveJavaIdioms";
Sample code: a piece of code on the fragile base class problem ; a piece of code and few UML diagrams illustrating the practice of defensive copies.
· 1 lecture on the Java collections framework, the interface Comparable and Iterator pattern;
Slides and sample code: Java collections , by Dr.Simone Mattolini.
· 5 lectures on a selected subset of design patterns [4][5]
Slides: "Design Patterns".
Sample code on the Observer pattern (added on october 22, 2015)
Slides and sample code by Dr.Simone Mattolini on combining Builder and Composite in the reading of an XML file (added on November 9, 2015).
· 3,4 lectures on Object Oriented Analysis [7] and UML diagrams;
Slides: "ElementsOfOOAnalysis". "use case diagrams and templates", "activity diagrams and process analysis".
· 2 lectures on the organization of the SW lifecycle, with reference to Waterfall and V-Model, Unified process, eXtreme Programming.
Slides: "Il ciclo di vita dei sistemi SW".
With respect to contents presented in year 2015/16, ths year I did not present the following, which is thus out of the program but might be used again in next years.
· 2 lessons on Structured Development: structuring elements of the c language, structured programming; Structured Design, structured chart, cohesion, coupling; Structured Analysis, Data Flow Diagrams, transform analysis [8][9];
Slides: "Structured Development".
· 2 lectures on the software architecture and design of the Oris tool, intended as an exercitation on OO SW design, by Ing. Marco Biagi.
· 1 more half lecture on the conceptual differences between Structured and Object-Oriented Development.
Slides: "StructuredVsOODevelopment".
· half lecture on the "SRS Template".
see more at stlab.dinfo.unifi.it/vicario/Teaching/SW_Engineering/sw_engineering.html