Skip to content

Latest commit

 

History

History
50 lines (30 loc) · 3.68 KB

File metadata and controls

50 lines (30 loc) · 3.68 KB

Typical Software Engineering Assignment

(no warranty to be identical to the Moodle assignment)

A) Write a small pet project to get into coding again. You might want to use a language like Python which is also good for this Master! The code can be relatively simple (e.g. simple game with console output). This doc can be very short! (in contrast to the one below)

B) Make sure each person has applied the following Software Engineering topics on the code which have been taught in the lecture:

1. Use and understand Git! (Play with Branches and undo/revert things = go back in time! Not BHT!)

2. UML at least 3 good different big diagrams. "good" means you can pump it up artificially as written in DDD. You have 10 million $ from me! Please export the pics. I can not install all the tools to view them! Perfect would be 1) one dynamic diagram like an activity diagram 2) one or two static diagrams as component, class or deployment and if needed a use-case diagram.

3. DDD Do a DDD session to find your domains! If your domain is too small, invent other domains around and document these domains (as if you have 100 Mio € from Edlich-Investment!) Develop a clear strategic design with mappings/relationships with >=8 Domains coming from an A) visual Event Storming. Drop your Domains into the B) Core Domain Chart and draw the C) Context Mappings between the Domains! (check the miro boards for this!)

4. Metrics at least two. Sonarcube would be great. Other non-trivial metrics are also fine.

5. Clean Code Development: A) At least 5 points you can show me with an explanation of why this is clean code in your code and/or what has improved & B) >>10 points on your personal CCD cheat sheet. E.g. a PDF.

6. Build Management with any Build System as Ant, Maven, Gradle, etc. (only Travis is perhaps not enough) Do e.g. generate Docs, call tests, etc. (it could be also disconnected from the project just to learn a build tool!)

7. CICD Build a CICD Pipeline with Jenkins, GithubActions, GitLab, etc.

8. Integrate some (>>2) nice unit tests in your Code to be integrated into the Build

9. Use a good IDE and get fluent with it: e.g. IntelliJ. What are your favourite key shortcuts?!

10. Functional Programming: prove that you have covered all functional aspects in your code as: only final data structures

  • side-effect-free functions
  • the use of higher-order functions
  • functions as parameters and return values
  • use closures / anonymous functions You can also do it outside of your project / code. Even in other languages such as F#, Clojure, Julia, etc. Best would be a short description and 5 links into the code to see it!

11. Create your own DSL. Give me a link to the code.

The complete documentation must be found in a public GitHub or the system you use.

Please give me a hint as a checklist for each 1-11 numbered points (!) where I can find the info as in the README.md!!

It must explain also part B in 1-2 paragraphs per point! So list the 11 points here using links here to refer to the respective files (e.g. the CCD files or test files)!

The contribution in Moodle is just a Link to GitHub in the comment section!

And: I do not want to receive 50 invitations to your repo, because your repo is private! Make it public and close it a few days after the grading! (see FAQ)

Another final remark: Mostly, I want your personal experiences with Screenshots and personal text! Please do not write or generate ChatGPT content like "a DSL is blah blah blah, Build Management is blah blah blah...". This is not needed, and LLM / internet-generated content will result in failing the course!