August 2010 Master of Computer Application (MCA) - Semester 3 MC0071 - Software Engineering - 4 Credits
August 2010 Master of Computer Application (MCA) - Semester 3 MC0071 - Software Engineering - 4 Credits
technical activities, tasks, and their associated states. For example, the engineering
and design.
at any given time. Similarly, other activities (e.g., design or customer communication)
reside in different states. For example, early in a project the customer communication
activity has completed its first iteration and exists in the awaiting changes state. The analysis
activity (which existed in the none state while initial customer communication was completed)
now makes a transition into the under development state. If, however, the customer indicates
that changes in requirements must be made, the analysis activity moves from the under
development state into the awaiting changes state.
The concurrent process model defines a series of events that will trigger transitions
The terms "hack" and "hacking" are also used to refer to a modification of a program or device
to give the user access to features that were otherwise unavailable, such as by circuit bending.
It is from this usage that the term "hacking" is often used to refer to more nefarious criminal
uses such as identity theft, credit card fraud or other actions categorized as computer crime.
As a maturing discipline with no clear rules on the right way to build a system, designing
software architecture is still a mix of art and science. The “art” aspect of software architecture
is because a commercial software system supports some aspect of a business or a mission.
How a system supports key business drivers is described via scenarios as non-functional
requirements of a system, also known as quality attributes, determine how a system will
behave.[6] Every system is unique due to the nature of the business drivers it supports, as
such the degree of quality attributes exhibited by a system such as fault-tolerance, backward
compatibility, extensibility, reliability, maintainability, availability, security, usability, and such
other –ilities will vary with each implementation. To bring a software architecture user's
perspective into the software architecture, it can be said that software architecture gives the
direction to take steps and do the tasks involved in each such user's speciality area and
interest e.g. the stakeholders of software systems, the software developer, the software
system operational support group, the software maintenance specialists, the deployer, the
tester and also the business end user[citation needed]. In this sense software architecture is
really the amalgamation of the multiple perspectives a system always embodies. The fact that
those several different perspectives can be put together into a software architecture stands as
the vindication of the need and justification of creation of software architecture before the
software development in a project attains maturity.
3. Describe the following system models giving appropriate real time examples:
Rounded rectangles representing processes, which take data as input, do something to it, and
output it.
Arrows representing the data flows, which can either be electronic data or physical items.
There are several common modeling rules that I follow when creating DFDs:
All processes must have at least one data flow in and one data flow out.
All processes should modify the incoming data, producing new forms of outgoing data.
Each data store must be involved with at least one data flow.
Each external entity must be involved with at least one data flow.
B) Semantic Models:-
The use of a semantic model as a fundamental step in the data warehouse development
process can serve as a keystone for understanding requirements, the design of the
subsequent data models, and as a link between the reporting tool interface and the physical
data models. Although not as famous as its logical or physical data model cousins, the
semantic model deserves generally greater consideration because of its unyielding focus on
the user perspective. When built correctly, the semantic model is the user's perspective of the
data-and what could be more important?
In a general sense, semantics is the study of meanings-of the message behind the words.
"Semantic" in the context of data and data warehouses means "from the user's perspective." It
is the data in context-where the meaning is. "Information" is also often defined as "data in
context." "Semantic" therefore, while not synonymous with information, carries with it the same
sense of data at work, or data in the worker's hands.
Semantic data elements are deceptively similar to the entities and attributes we find in a
logical or physical data model. They are things like "customer," "product," "credit limit," "net
sales," and so forth. What the semantic modeler must address however, is the context of the
term-the data element- and how it relates to the data elements as present in the computing
systems data stores. For example, is a customer an individual-the Purchasing Agent- or a
company? Must a customer have actually purchased a product, or can a customer also be
someone who is in the market for a (the) product? What in some contexts might be called a
"prospect" might be called a "customer" in others. Is a customer a wholesaler or is the end
consumer the customer? Is the wholesaler's customer also called a customer?
The answer to these questions is likely to be "it depends." And that is the correct answer,
because it does depend. It depends on who is asking and why. ABC company's sales
department may draw a clear line between customers (buyers) and prospects. ABC's
marketing department may simply use "customer" to refer to those participating in the market,
whether or not they've actually bought ABC's product.
The semantic modeler must drill down and capture the nuance of each perspective and must
struggle to work with the business users to develop a naming convention or syntax that
provides clarity. All perspectives are represented in the semantic model.
C) Object Models
Three concepts are critical to understanding object models. They are:
1. Data abstraction
2. Encapsulation
3. Inheritance
Data abstraction is the process of distilling data down to its essentials. In an object schema,
the abstract data model is implemented as a graph. The following figure shows such a graph
structure for a genealogical database. For more information on data abstraction, see the items
under "more detail" below. For another example of data abstraction,
Encapsulation is the object model concept of including processing or behavior with the object
instances defined by the class. Encapsulation allows code and data to be packaged together.
Inheritance in the object model is a means of defining one class in terms of another. This is
common usage for most of us. For example, a conifer is a type of tree. There are certain
characteristics that are true for all trees, yet there are specific characteristics for conifers.
Note that in an object model, there is no distinction in usage between system pre-defined
types and user-defined types. This is known as extensibility. So it is possible to define a type
as a sub-type of a system type or as a sub-type of a user-define type.
B) Incremental Model
The incremental build model is a method of software development where the
model is designed, implemented and tested incrementally (a little more is added
each time) until the product is finished. It involves both development and
maintenance. The product is defined as finished when it satisfies all of its
requirements. This model combines the elements of the waterfall model with the
iterative philosophy of prototyping.
The product is decomposed into a number of components, each of which are
designed and built separately (termed as builds). Each component is delivered to
the client when it is complete. This allows partial utilisation of product and avoids
a long development time. It also creates a large initial capital outlay with the
subsequent long wait avoided. This model of development also helps ease the
traumatic effect of introducing completely new system all at once.
There are some problems with this model. One is that each new build must be
integrated with previous builds and any existing systems. The task of
decomposing product into builds is not trivial either. If there are few builds and
each build degenerates this turns into Build-And-Fix model. However if there are
too many builds then there is little added utility from each build.
C) Iterative Model
Iterative development is at the heart of a cyclic software development process
developed in response to the weaknesses of the waterfall model. It starts with an
initial planning and ends with deployment with the cyclic interactions in between.
Iterative development are essential parts of the Rational Unified Process,
Extreme Programming and generally the various agile software development
frameworks.
It follows a similar process to the Plan-Do-Check-Act of Business process
improvement.
Iterative Development
Iterative Development slices the system functionality into increments (portions).
In each increment, a slice of functionality is delivered through cross-discipline
work, from the requirements to the deployment. The unified process groups
increments/iterations into phases: inception, elaboration, construction, and
transition.
Inception identifies project scope, risks, and requirements (functional and non-
functional) at a high level but in enough detail that work can be estimated.
Elaboration delivers a working architecture that mitigates the top risks and fulfills
the non-functional requirements.
Construction incrementally fills-in the architecture with production-ready code
produced from analysis, design, implementation, and testing of the functional
requirements.
Transition delivers the system into the production operating environment.
Each of the phases may be divided into 1 or more iterations, which are usually
time-boxed rather than feature-boxed. Architects and analysts work one iteration
ahead of developers and testers to keep their work-product backlog full.
August 2010
Master of Computer Application (MCA) – Semester 3
MC0071 – Software Engineering– 4 Credits
(Book ID: B0808 & B0809)
Assignment Set – 2 (60 Marks)