Model
Model
2. Model-driven development:
It is about distinguishing between computation-independent and technology-
specific issues being reflected in corresponding model types. This is a viable
“bridge” between the “Software World” and the “Real-life World” .
But the lack of sufficient development flexibility as well as the insufficient
capability to conveniently adapt modeling to changes has justified the need for
new development paradigms.
3. Agile development:
It is based on iterative development and the continuous feedback, where
requirements and solutions evolve via collaboration between self-organizing
cross-functional teams.
Model-Driven Engineering
Model : In real life, we establish that the human mind would often “rework” reality, simplifying things, driven by an
intuitive “push” to identify similarities among objects, emphasizing those similarities in perceiving different objects
For example, both the “small Mitsubishi Colt” and the “big Cadillac Eldorado” are intuitively matched to the “car”
model by a person, firstly,(1),(2) and the huge differences between those two objects go on second place(3),(4)
(1) pointing to the capability of finding the commonality in many different observations(Abstraction)
(2) People often generalize properties of real objects (generalization)
(3) classify objects (classification)
(4) group objects into more complex objects (aggregation).
1. Software is becoming more and more complex, and therefore they need to be discussed at different
abstraction levels, depending on the profile of the involved stakeholders, phase of development, and
objectives of the work.
2. Software is more and more pervasive in real life, and the expectation is that the need for new pieces of
software or the evolution of existing ones will be continuously increasing.
3. Software development is not a self-standing activity: it often imposes interactions with non-developers
(e.g., customers, managers, business stakeholders, and so on) who need some mediation in the description of
the technical aspects of development.
“So, by applying model-driven engineering, software developers increase efficiency and effectiveness”
Requirements & Approach of model-driven engineering
Model-driven engineering use models to describe requirements and system design, and then
directly transforming these models into executable code that fulfills those requirements. The idea
here is that models are not just a means of documenting requirements or UMLs but are equivalent
to the code itself. for example, a car order that includes customer features is straightforwardly
reflected into reality, in the context of a current advanced automotive production line So, it aims
to find domain-specific abstractions and make them accessible through formal modeling.
1. Computation-independent models:
it capture adequately the domain features, abstracting from any computation and technical details; such models would
ideally capture the as-is situation, featuring a Blackbox view over the software system-to-be. (receiving orders, preparing
orders, and delivering orders without detailing how payments are processed or how service providers are communicated)
2. Technology-independent models:
it focus on the system-to-be (maybe both functionally and constructionally) but just conceptually, not imposing any
technical restrictions whatsoever.(describe the user interface for logging in, selecting items, and selecting a delivery location
without going into technical details)
3. Technology-specific models:
capture adequately all technical features of the software system-to-be, which models are straightforwardly reflect-able to
corresponding code.(describe specific technical details such as using the React Native library to build the UI.
Model-Driven Architecture (MDA)
Two modeling facilities are meeting those “requirements”, namely, the Model-Driven Architecture (MDA)
and the Open Distributed Processing Architecture (ODP), with MDA’s adopting influences from ODP
Model-Driven Architecture (MDA) is a software architecture framework consisting of a set of standards that
assist in “system creation, system implementation, system evolution, and system deployment”
The key MDA technologies are UML, Meta-Object Facility (to be considered in the following sub-section), and
the Meta-data Interchange –XMI
Examples of systems that use MOF (modeling and development tools, data warehouse systems, meta-data
repositories)
It has four meta-levels ) These levels help define the relationships of the models and determine their structure
and concepts(
• Client/Server Infrastructure:
infrastructure assumes the partitioning of tasks or workloads between the
providers of a resource or service, called servers, and service requesters,
called clients. those principles are underlying about current “distributed
computing environments”. But this nfrastructure is not “outside”
• Cloud infrastructures:
infrastructures assuming the provision of shared computer processing
resources and data to computers and other devices on demand. So, it become
underlying about current mobile computing environments.
Cloud Computing
Consolidated enterprise-IT solutions have proven to enhance business efficiency when significant fractions of
local computing activities are migrating away from desktop PCs and departmental servers and are being
integrated and packaged on the Web into the computing cloud. Instead of investing in and maintaining expensive
applications and systems, users access and utilize dynamic computing structures to meet their fluctuating
demands on IT resources efficiently and pay a fixed subscription or an actual usage fee.
But with aspect orientation, you can isolate security requirements into
separate aspects. For instance, you can create a security aspect that
contains all the code related to user authentication and data encryption.
Then you can integrate this aspect into all parts of the application that
require security, such as the login page and the messaging page.
This way, security is effectively achieved without the need to repeat code
throughout the application. Thus, aspect orientation allows you to address
non-functional issues like security in a way that aligns with the functional
requirements of the application.
Aspect-Oriented Software Development
Privacy, transparency, traceability, and so on are labelled values that are to be weaved in the functioning of
enterprise systems and EIS, and for this reason, they are considered as cross-cutting concerns because:
• Weaving them in the functioning of a system would not assume reflections in one component only; instead,
multiple components would need to be “re-factored” as well as their interrelations, and their relations to other
components.
• Addressing such values in the software development context would come through all the phases of the software
development life cycle.
Further, such values / cross-cutting concerns have a non-functional essence because they do not have any particular
purpose or function; instead, they represent something like “desired system qualities.”
Finally, even though the values / cross-cutting concerns are non-functional, we should find functional solutions for
them, because we argue that a system could only functionally achieve effects with impact on its environment.
For software systems:
• it is about crosscutting concerns that are particularly touching upon software development issues, such as
security, distribution, recoverability, logging, performance monitoring, and so on
So, Aspect orientation is thus necessary for properly weaving desired values in the functioning of the
system-to-be. It is featuring non-functional issues that nevertheless have to be resolved functionally.
Thank You !