Initiation
Objective
- Introduction to UML and its importance in software development.
- Use Visual Paradigm to design and model software.
- Write documents using Markdown.
- Use Git to version control files.
- Understand the difference between analysis, design, and modeling.
“The best way to predict the future is to invent it.” —Alan Kay
Modeling
Object-oriented analysis and design (opens in a new tab) (OOAD) is a technical approach for analyzing and designing an application, system, or business by applying object-oriented programming, as well as using visual modeling throughout the software development process to guide stakeholder communication and product quality.
Unified Modeling Language
In the early 1990s, various object-oriented methods appeared along with a proliferation of techniques and notations. By the mid-1990s two authors of well-known methods—James Rumbaugh, one of the authors of the Object-Modelling Technique (OMT), and Grady Booch, author of the Booch method—joined forces in an attempt to unify their methods. They named their joint effort the Unified Method. Rumbaugh and Booch were soon joined by Ivar Jacobson and his colleagues, authors of Object-Oriented Software Engineering (OOSE), in the development of what became known as the Unified Modeling Language (UML).
As UML has evolved it has incorporated feedback from the object community, and has won the support of many people and organizations which considered the idea of a unified modelling language a valuable one. UML was then submitted for standardization to the Object Management Group (OMG), a consortium of several large software companies that produces and maintains computer-industry specifications. UML was formally adopted in 1997.1
UML’s essence lies in information, not software. Understanding and describing information in depth is crucial before and during the creation of systems that manage information-related matters. While software is the primary tool for handling information in the current century, it is a misconception to view UML as solely software-oriented.
The realm of information extends far beyond software. Information design is closely linked to language, where classes represent words and associations and constraints form the grammar of a domain. This connection to language extends further to human cognition, reasoning, and thought processes.
UML serves as an excellent tool for tackling complex issues through reasoning and analysis. For non-software projects, class diagrams and state diagrams remain fundamental, as they form the core of information modeling.
The latest version of the UML specification is 2.5.1 (opens in a new tab) released in December 2017 by OMG.
Diagrams
The 14 types (opens in a new tab) of standard UML diagrams are split into 7 behavioral and 7 structural diagrams.
Behavioral
Structural
The ones most commonly used are Class, Activity, Sequence, Use Case, and State Machine diagrams.2
“Essentially, all models are wrong, but some are useful.” —George Box
Visual Paradigm
Visual Paradigm is a powerful and easy-to-use visual UML modeling tool. It provides software developers a development platform to build quality applications faster and better. While its extensive feature set (opens in a new tab) may seem daunting initially, you can gradually explore and adopt the tools that best suit your needs, making it a powerful and flexible platform for effective software design and modeling.
We are going to (mostly) use Visual Paradigm 17 to design and model software using UML diagrams and other tools such as DFD, ERD, and C4 (opens in a new tab). Visual Paradigm’s user guide (opens in a new tab) can be downloaded as a PDF for local use. There is also a repository of learning guides (opens in a new tab) that covers most of the diagrams that we will be using.
Desktop
Download (opens in a new tab) Visual Paradigm Desktop then install and activate it using your student email address.
Online
Sign up (opens in a new tab) to Visual Paradigm Online (opens in a new tab), using the desktop application, to access more diagrams and collaborate as a team.
Exercise 1
Create a diagram of your choice and save the corresponding project.
StarUML
Download (opens in a new tab) and install StarUML, which can be evaluated indefinitely if you can survive the dialogs asking you to register. StarUML is a modern streamlined tool and a simpler alternative to Visual Paradigm and Enterprise Architect. It provides an enhanced developer experience (DX) and is better suited for version controlling models/diagrams as it uses plaintext JSON format for its project files.
Exercise 2
Follow StarUML’s documentation (opens in a new tab) to recreate the diagram from the previous exercise.
Documentation
Complete the 1 Documentation guide to learn about using Markdown to document your work.
Exercise 3
- Write a sample
document.mdreport using Markdown describing a user journey based on a few use cases. - Generate an OOXML Word document and a PowerPoint presentation from Markdown using Pandoc.
- Generate a PDF document from Markdown using Pandoc and Obsidian.
Use the Terminal application or the integrated terminal in Visual Studio Code and IntelliJ IDEA to call Pandoc. You can also use the vscode-pandoc (opens in a new tab) extension.
Version Control
Complete the 2 Version Control guide to learn about using version control with Git to track your files.
Exercise 4
- Clone your repository using GitHub Desktop.
- Create a
01-initiationdirectory under your repository. - Move all the files that you have created previously under
01-initiation. - Use GitHub Desktop to
- stage your changes,
- commit them using a descriptive message, and
- push your work.
Structure
document.docxdocument.mddocument.pdfpresentation.pptxproject.mdjproject.vpp
Resources
- Visual Paradigm: Visual Paradigm learning guides (opens in a new tab), Tutorials (opens in a new tab), What is the Unified Modeling Language? (opens in a new tab), Visual Paradigm UML Tool (opens in a new tab), Visual Paradigm SysML Modeling Tool (opens in a new tab)
- List of Unified Modeling Language tools (opens in a new tab)
- The real challenges in software engineering (opens in a new tab)
- Designing systems and software applications by using models (opens in a new tab)
- History of software engineering (opens in a new tab)
- The nature of software development (opens in a new tab)
- UML diagrams (opens in a new tab)