To know the different software development lifecycle phases used in developing, delivering, and maintaining software products.
To know the fundamental phases of the Software Development Lifecycle.
To know fundamental software engineering terminology and coding practices.
The student who completes the course successfully will be able to demonstrate a solid knowledge of advanced techniques for designing software systems. Finally he/she will be able to perform, working in group, a software project and produce all necessary documentation.
In the oral test, students will present and discuss their sofrtware solution developed in the team project.
During the oral exam the student must be able to demonstrate his/her knowledge of the course material and be able to discuss the reading matter thoughtfully and with propriety of expression. Through the project the student must demonstrate the ability to put into practice and to execute, with critical awareness, the activities illustrated or carried out under the guidance of the teacher during the course.
Methods:
To acquire software development skills and understand common terminology used in the software engineering profession.
To learn and practice using traditional coding standards/guidelines. Python software development libraries and debugging tools are explored and used in projects.
To demonstrate key concepts using collaborative learning strategies.
To modify/build a software program that introduces to software development tools / environments
To develop an original Python software program, learning Python language syntax
To analyze the functionality and performance of software application programs
To demonstrate and communicate software engineering principles effectively through written reports and/or verbal presentations.
In the oral test, students will present and discuss their sofrtware solution developed in the team project.
UML concepts and techniques.
Delivery: face to face
Learning activities:
Attendance: Advised
Teaching methods:
Requirements engineering. Requirements specification. Use cases. Domain modeling. Object-oriented design. Service-oriented design. Process-oriented design. Unified Modeling Notation.Software Implementation. Software Testing.
Modeling enterprise systems, landscape, DevOps, toolchain, process orientation approach, Business Process Model and Notation. BPMN modeling, control flow, events, tasks, gateways, event-driven gateways, types of task.
Team projects, toolchain, python, workflow. PyCharm IDE. Data analysis in python, code quality pep8 standard, naming, automatic quality checking, plint installation. Restful api, git and github, repository, commit, branch, merge, github, fork, pull, vcs, pycharm integration with github, share a project.
Requirement: semi-formal notation, BPMN, use case, class, scenario, GUI storyboard. Design: class diagram, sequence diagram. Implementation: quality of code, JSON, JSON Schema, validation. Application domains.
Metrics: automation, responsiveness, elasticity, resiliency, interoperability. The cognitive taxonomy. Machine Learning Software pipeline: data ingestion, data preparation, data segregation, model training, candidate model evaluation, model deployment, performance monitoring.
Continuous Integration and delivery (CI/CD) with Github Actions. Git Workflow. Git Branches and Tags. Continuous Integration and Delivery. CI/CD Providers Comparison. GitHub Actions: Overview, Action, Syntax, Containers and Services, Events, Secrets, Complex Workflows, Matrix, Code Reuse.
The course addresses software system development issues: all phases of the software life cycle are crossed. The development process management and planning is illustrated and accompanied by related supporting tools; also the international quality standards for these phases are presented and the maturity models. Students, in group, must perform a software project, this year following an Agile methodology.
I. Sommerville, Software Engineering. 10th Edition, Pearson Education Limited, Boston,2016.
T. Allweyer, D. Allweyer, BPMN 2.0, 2nd ed., BoD press, Norderstedt, 2010.
J. Arlow, I. Neustadt, UML 2 and the Unified Process, Pearson Education, 2005.
J. Rumbaugh, I. Jacobson, G. Booch, The UML Reference Manual, Addison-Wesley, 2004.
"Software Engineering" Ian Sommerville, Addison-Wesley; 10 Har/Psc edizione
G.Vaglini, M. Cimino, slides at http://elearn.ing.unipi.it/course/view.php?id=2699
Attendance is not mandatory but highly recommended.
Oral test based on discussion and motivation of a software project