of tasks that the user can perform using the system Express the purpose for which the product is created • Functional - describe what should and should NOT be done by the system • Non-functional - describe the properties of the system when implementing its behavior
Modeling Language) with the purpose of visually representing a system along with its main actors, roles, actions, artifacts or classes, in order to better understand, alter, maintain, or document information about the system
the problem domain to its essentials within some context. Abstraction allows you to better understand a concept by breaking it down into a simplified description that ignores unimportant details
smaller parts, or on the other hand, the grouping of smaller objects with different functionality into one larger one. Decomposition makes it possible to break a big problem into smaller ones that are easier to understand and solve.
relationship, this means that there is a loose relationship between two objects. These objects may interact with each other for some time. • Aggregation - is weak “has-a” relationship, this means is although parts can belong to the holes, they can also exist independently. • Composition - is strong “has-a” relationship, This means is that the whole cannot exist without its parts.
) { open fun walk() { Log.d("Animal", "walk") } open fun run() { Log.d("Animal", "run") } } class Dog : Animal(4, true) class Whale : Animal( 0, true) { override fun walk() { swim() } override fun run() { swim() } private fun swim() { Log.d("Whale", "swim") } }
about how your system will be designed and implemented, so that even if multiple people worked on the software, it would seem as if there was only one mind guiding all the work