Flashcards in M885 Analysis and design of enterprise systems: an object-oriented approach Deck (57)
What is requirements analysis?
Is the process of elaborating the requirements in terms of understanding their business context and their impact on the system
What are the possible consequences
of conducting an inadequate requirements analysis?
Building the wrong system, or one that does not satisfy the
What is the purpose of modelling in analysis?
Models help software developers to deal with the complexity and to understand what is being developed. A model is an abstract representation of some view of a system. The view of a system changes with the stage of the development process. So, we have models with different perspectives according to the stage of development
What are the steps necessary to develop analysis models from a domain model?
1. Identify how objects, and links between those objects, are affected when the system operations, corresponding to system events from the environment, are performed.
2. Describe how objects within the system interact with each other to verify the precondition and fulfil the postcondition of each system operation.
3. Assign to each class of objects the responsibilities that it has to effect each system operation.
4. Identify the operations needed to carry out the responsibilities assigned to each class.
5. Specify those operations through operations contracts.
What is association between classes
Is a property of a concept that relates it to another concept through some meaningful and interesting connection.
Describe class multiplicity
How many objects at that end are linked to one object at the other end.
What is a property of an object
Its a variable that represents an attribute of an object.
What are the two types of identities described in the course?
A property is a form of identity is known as value identity.
An object identity is intelligible only to the software system.
Briefly describe two types of interaction diagrams defined in UML
There are two kinds of interaction diagram:
- sequence diagrams, which focus on the time ordering of the messages
- communication diagrams, which focus on the links between objects, and their creation and destruction
What is a a communication diagram?
Communication diagrams show the objects involved in a collaboration, the links between those objects, and the nature of those links. In particular, a communication diagram shows the objects, the links that exist throughout the collaboration, and those that are created and/or destroyed by the collaboration.
Craig Larman (Larman, 2002) has defined a collection of patterns (GRASP) to help the designers assign responsibilities in commonly occurring design scenarios, based on such principles. GRASP means General Responsibility Assignment Software Patterns.
What are patterns?
Architectural patterns codify recurrent software architectures, by describing the key elements of the architecture and how they fit together.
A design pattern codifies a solution to a recurring design problem. This solution is rooted in practice, in that it codifies what experienced practitioners do when they encounter a particular software problem.
What are frameworks?
Framework are sets of classes with self-defined interactions which are designed to solve specific problems
What are product lines?
The concept of product line (Clements and Northrop, 2002) is based on the idea that within a specific domain many different products can be developed with a similar structure and with well-identified variation points; these variations usually correspond to alternative components that can be plugged into the defined architecture.
Describe component architecture
Component Architecture aim to support the development of server-side business components. Other standards have emerged which aim to support many other aspects of enterprise application development, from user interaction to database integration. The ultimate goal is for whole system architectures to be built by fitting standard components together.
Describe service-oriented architecture
SOA is an approach to build enterprise systems that deliver application functionality either as services to end-user applications or to build other services. In this approach, services are software assets, which are described and interact in a standard way, so that the focus of application development is the assembly of services as building blocks.
What are Use Cases?
A use case represents one possible way of using a system; it describes, from a user’s point of view, the interactions with the system necessary to achieve a goal, i.e. it describes functionality. Users have goals that are to be met with the help of the system.
What is inheritance?
Inheritance is one of the main mechanisms for the reuse of code in an object-oriented language. By applying inheritance, a class becomes the subclass of an existing class, from which it inherits attributes and methods. The subclass can, of course, add new attributes and methods, or override those of its superclass. Objects of the subclass can make use of any attribute or method defined in the superclass as though they were their own.
What is delegation?
Delegation is where a class uses the services of another class to fulfil its responsibility. By applying delegation, a class A makes use of some or all of the services of another class B in order to fulfil some of its responsibilities. Objects of class A hold references to objects of class B which they use to invoke class B’s methods.
What are the possible obstacles to developing fit-for-purpose systems?
Changes in business occur frequently, so software has to adapt to these frequent changes in order to keep a business competitive. Software development does not always mean development from scratch. Timely delivery of new software may mean that existing software has to be reused.
What are the practices that may help remove obstacles in developing fit-for-purpose systems?
Reuse of expertise, design and even existing systems or parts of them within new developed software
What is object identity?
Is a form of identity intelligible only to the software system, where it identifies which object to use as a receiver of a given message.
What is value identity?
Is an identifier similar to values which are understood by people.
Define an iterative and incremental approach to software development.
The term ‘iterative’ indicates the repetition of one or more activities; the term ‘incremental’ indicates that development proceeds from an initial subset of the requirements to more and more complete subsets, until the whole system is addressed. Incremental development involves an initial partition of the intended functionality; some or all of the subsequent development activities can be carried out independently and in parallel. The final product results from the total integration of the partitions.
What are state machine diagrams?
State machine diagrams describe the behaviour of objects (concept and class instances). State machines diagrams are state based diagrams representing changes of state that occur due to external events.
What are activity diagrams?
Activity diagrams depict business processes and use cases. Activity diagrams are activity based and transitions between activities occur on termination of an activity.
What problem is addressed by the Layers pattern?
The Layers architectural pattern helps to structure the architecture of a system into groups of subfunctions, each at a particular level of abstraction.
What is domain modelling and its objective?
Domain modelling is concerned with understanding and modelling a situation independently of a decision to use a software system to deal with it. A domain model is a representation of the main concepts in the real-world problem, i.e. the business under consideration. A domain model does not assume that software is to be used to deal with the situation. (essential or business model)
What is specification modelling and its objective?
Specification modelling assumes that a software system will deal with a situation; a specification model represents software elements used in the software solution to a problem, and is mainly concerned with the definition, at a high level of abstraction, of the services provided by the software.