CS504 - Software Engineering I
Course Page
Q & A
Short Question & Answers
Q1: Define Asynchronous Messages and Synchronous Messages.
Asynchronous Messages: Asynchronous messages are “signals,” denoted by a half arrow. They do not block the caller. Asynchronous messages typically perform the
following actions: Create a new thread, Create a new object, Communicate with a thread that is already running. Synchronous Messages:

Synchronous messages are “call events” and are denoted by the full arrow. They represent nested flow of control which is typically implemented as an operation call. In case of a synchronous message, the caller waits for the called routine to complete its operation before moving forward.
Q2: Define the law of balancing act in software.
The Balancing Act: Software Engineering is actually the balancing act. You have to balance many things like cost, user friendliness, Efficiency, Reliability etc. You have to analyze which one is the more important feature for your software is it reliability, efficiency, user friendliness or something else. There is always a trade-off among all these requirements of software. It may be the case that if you try to make it more user-friendly then the efficiency may suffer. And if you try to make it more cost-effective then reliability may suffer.

Therefore there is always a trade-off between these characteristics of software. These requirements may be conflicting. For example, there may be tension among the following: Cost vs. Efficiency, Cost vs. Reliability, and Efficiency vs. User-interface A Software engineer is required to analyze these conflicting entities and tries to strike a balance.
Q3: How do you determine that an objective belongs to certain class?
The basic unit of object oriented design is an object. An object can be defined as a tangible entity that exhibits some well-defined behavior. The structure and behavior of similar objects are defined in their common class. A class specifies an interface and defines an implementation.
Q4: What is meant by “System’s Static View"?
Static view of semantic classes: Requirements are assessed and classes are extracted (and represented) as part of the analysis model.

Static view of attributes: Every class must be explicitly described. The attributes associated with the class provide a description of the class. Static view of relationships: Objects are “connected” to one another in a variety of ways. The analysis model must represent these.

Static view of behaviors: The relationships just noted define a set of behaviors that accommodate the usage scenario (use-cases) of the system.
Q5: What is behavior driven perceptive of an objective?
Behavior is how an object acts and reacts in terms of its state changes and message passing. The behavior of an object is completely defined by its actions. A message is some action that one object performs upon another in order to elicit a reaction. The operations that clients may perform upon an object are called methods.
Q6: What is Textual Analysis?
Textual analysis was developed by Abbot and then extended by Graham and others. In this technique different parts of speech are identified within the text of the specification and these parts are modeled using different components.
Q7: What is Software Architecture?
Architecture is the organizational structure of a system. Architecture can be recursively decomposed into parts that interact through interfaces, relationships that connect parts, and constraints for assembling parts. Parts that interact through interfaces include classes, components and subsystems.
Q8: What is the Cardinality of Objective?
Cardinality: The data model must be capable of representing the number of occurrences Objects in a given relationship. Tillmann [TIL93] defines the cardinality of an object/relationship pair in the following manner:

One-to-one (l:l)—An occurrence of [object] 'A' can relate to one and only one occurrence of [object] 'B,' and an occurrence of 'B' can relate to only one occurrence of 'A.'

One-to-many (l:N)—One occurrence of [object] 'A' can relate to one or many occurrences of [object] 'B,' but an occurrence of 'B' can relate to only one occurrence of 'A.' For example, a mother can have many children, but a child can have only one mother.

Many-to-many (M:N)—An occurrence of [object] 'A' can relate to one or more occurrences of 'B,' while an occurrence of 'B' can relate to one or more occurrences of 'A.' For example, an uncle can have many nephews, while a nephew can have many uncles.
Q9: Define abstraction?
An abstraction is a technique in which we construct a model of an entity based upon its essential characteristics and ignore the inessential details.
Q10: Is the design of software architecture a creative process?
Design of software architecture is a creative and iterative process. This involves performing a number of activities, not necessarily in any particular order or sequence.
Course Instructor

Dr. Fakhar Lodhi
D.Sc. (CS) George
Washington University, USA

Software Engineering: A Practitioner’s Approach by Roger S. Pressman

The Unified Modeling Language User Guide by Grady Booch