You are on page 1of 7

Spring 2012

Master of Computer Application (MCA) Semester 3 MC0071 Software Engineering 4 Credits


(Book ID: B0808 & B0809) Assignment Set 1 (60 Marks)
Each question carries six marks 10 x 6 = 60

1. What do you understand by information determinacy? Ans: Information determinacy refers to the predictability of the order and timing of information. An engineering analysis program accepts data that have a predefined order, executes the analysis algorithm without interruption and produces resultant data in report or graphical format. Such applications are determinate. A multi-user operating system, on the other hand, accepts inputs that have varied content and arbitrary timing, executes algorithms that can be interrupted by external conditions, and produces output that varies as a function of environment and time. Applications with these characteristics are indeterminate. It is somewhat difficult to develop meaningful generic categories for software applications. As software complexity grows, neat compartmentalization disappears. The following software areas indicate the breadth of potential applications:

System software: System software is a collection of programs written to service other programs. Some system software process complex information structures. Other systems applications process largely indeterminate data. It is characterized by heavy interaction with hardware, heavy usage by multiple users, concurrent operation that requires scheduling, resource sharing, and sophisticated process management, complex data structures and multiple external interfaces. Real time software: Software that monitors/analyzes/controls real-world events as they occur is called real time. Elements of real-time software include a data gathering component that collects and formats information from an external environment, an analysis component that transforms information as required by the application, a control/output component that responds to the external environment, and a monitoring component that coordinates all other components so that real-time response (typically ranging from 1 millisecond to 1 second) can be maintained. Business Software: Business information processing is the largest single software application area. Discrete systems like payroll, accounts receivable/payable have evolved into management information systems (MIS) software that accesses one or more large databases containing
MC0071 Software Engineering Roll No. XXXXXXXXX

business information. Applications in this area restructure existing data in a way that facilitates business operations or management decision making. Engineering and scientific software: Engineering and scientific software has been characterized by number crunching algorithms. Applications range from astronomy to volcano logy, from automotive stress analysis to space shuttle orbital dynamics and from molecular biology to automated manufacturing. Embedded software: Embedded software resides only in read-only memory and is used to control products and systems for the consumer and industrial markets. Embedded software can provide very limited and esoteric functions or provide significant function and control capability. Personal computer software: Day to day useful applications like word processing, spreadsheets, multimedia, database management, personal and business financial applications are some of the common examples for personal computer software. Web-based software: The web pages retrieved by a browser are software that incorporates executable instructions and data. In essence, the network becomes a massive computer providing an almost unlimited software resource that can be accessed by anyone with a modem. Artificial Intelligence software: Artificial Intelligence software makes use of non numerical algorithms to solve complex problems that are not amenable to computation or straightforward analysis. Expert systems, also called knowledge based systems, pattern recognition, game playing are representative examples of applications within this category. Software crisis: The set of problems that are encountered in the development of computer software is not limited to software that does not function properly rather the affliction encompasses problems associated with how we develop software, how we support a growing volume of existing software, and how we can expect to keep pace with a growing demand for more software.

2. Why is it inappropriate to use reliability metrics, which were developed for hardware systems in estimating software system reliability? Illustrate your answer with an example. Ans:

MC0071 Software Engineering

Roll No. XXXXXXXXX

It is inappropriate to use reliability metrics, which were developed for hardware systems in estimating software system reliability because: Hardware metrics are not suitable for software since its metrics are based on notion of component failure. Software failures are often design failures Often the system is available after the failure has occurred Hardware components can wear out

Since Software Reliability is one of the most important aspects of software quality, Reliability Engineering approaches are practiced in software field as well. Software Reliability Engineering (SRE) is the quantitative study of the operational behavior of software-based systems with respect to user requirements concerning reliability. Software Reliability Models: A proliferation of software reliability models have emerged as people try to understand the characteristics of how and why software fails, and try to quantify software reliability. Over 200 models have been developed since the early 1970s, but how to quantify software reliability still remains largely unsolved. As many models as there are and many more emerging, none of the models can capture a satisfying amount of the complexity of software; constraints and assumptions have to be made for the quantifying process. Therefore, there is no single model that can be used in all situations. No model is complete or even representative. One model may work well for a set of certain software, but may be completely off track for other kinds of problems. Most software models contain the following parts: assumptions, factors, and a mathematical function that relates the reliability with the factors. The mathematical function is usually higher order exponential or logarithmic. Software Reliability Metrics: Measurement is commonplace in other engineering field, but not in software engineering. Though frustrating, the quest of quantifying software reliability has never ceased. Until now, we still have no good way of measuring software reliability. Measuring software reliability remains a difficult problem because we don't have a good understanding of the nature of software. There is no clear definition to what aspects are related to software reliability. We cannot find a suitable way to measure software reliability, and most of the aspects related to software reliability. Even the most obvious product metrics such as software size have not uniform definition. Software Reliability Improvement Techniques: Good engineering methods can largely improve software reliability. Before the deployment of software products, testing, verification and validation are necessary steps. Software testing is heavily used to trigger, locate and remove
MC0071 Software Engineering Roll No. XXXXXXXXX

software defects. Software testing is still in its infant stage; testing is crafted to suit specific needs in various software development projects in an ad-hoc manner. Various analysis tools such as trend analysis, fault-tree analysis, Orthogonal Defect classification and formal methods, etc, can also be used to minimize the possibility of defect occurrence after release and therefore improve software reliability. After deployment of the software product, field data can be gathered and analyzed to study the behavior of software defects. Fault tolerance or fault/failure forecasting techniques will be helpful techniques and guide rules to minimize fault occurrence or impact of the fault on the system.

3. Using examples explain the difference between object & an object class. Ans: An object is an entity that has a state and a defined set of operations, which operate, on that state. The state is represented as a set of object attributes. The operations associated with the object provide services to other objects (clients) which request these services when some computation is required. Objects are created according to some object class definition. An object class definition serves as a template for objects. It includes declarations of all the attributes and services which should be associated with an object of that class.

An object oriented design process is normally concerned with designing object classes. When the design is implemented, the required objects are created using these class definitions. Objects communicate by requesting services from other objects and, if necessary, exchange information required for service provision. In some distributed systems, object communications are implemented directly as text messages, which are exchanged by objects. The receiving object parses the message, identifies the service and the associated data and carries out the requested service. For good design we have to hide information so the representation of the object should not be accessible from outside the object. When the object design is developed, the attributes should be accessed and modified through appropriate access and update functions. This allows the representation to be changed at a later stage in the design or implementation process without affecting other objects. So let's now use an example to clarify what the differences are between a class and an object class.

MC0071 Software Engineering

Roll No. XXXXXXXXX

Let us consider the class car. Cars have a body, wheels, an engine, seats, are used to transport people between locations, and require at least one person in the car for it to move by its own power. These are some of the attributes of the class - car - and all members that this class has ever or will ever have share these attributes. The members of the class - car - are objects and the objects are individual and specific cars. Each individual car has a creation date (an example of an object having an attribute that is static), an owner, a registered address (examples of attributes that may or may not change), a current location, current occupants, current fuel level (examples of attributes that change quickly), and it may be covered by insurance (an example of an attribute that may or may not exist). To use a more programming related example, the class window has edges, a title bar, maximize and minimize buttons, and an area to display the window contents. A specific window has a location on the screen, a size, a title, and may or may not have something in the content area. So basically the difference between a class and an object is that a class is a general concept while objects are the specific and real instances that embody that concept. When creating an object oriented program we define the classes and the relationships between the classes. We then execute the program to create, update, and destroy the objects which are the specific realization of these classes.

4. What is the importance of Software Validation, in testing? Ans: Software Validation Also known as Software Quality Control.

Validation checks that the product design satisfies or fits the intended usage (high-level checking) - i.e., you built the right product. This is done through dynamic testing and other forms of review. According to the Capability Maturity Model,

Verification: The process of evaluating software to determine whether the products of a given development phase satisfy the conditions imposed at the start of that phase. Validation: The process of evaluating software during or at the end of the development process to determine whether it satisfies specified requirements.

Validation ensures that the product actually meets the user's needs, and that the specifications were correct in the first place, while verification is ensuring that the product has been built according to the requirements and design specifications. Validation ensures that you built the
MC0071 Software Engineering Roll No. XXXXXXXXX

right thing. Verification ensures that you built it right. Validation confirms that the product, as provided, will fulfill its intended use. From testing perspective:

Fault - wrong or missing function in the code. Failure - the manifestation of a fault during execution. Malfunction - according to its specification the system does not meet its specified functionality.

Within the modeling and simulation community, the definitions of validation, verification and accreditation are similar:

Validation is the process of determining the degree to which a model, simulation, or federation of models and simulations, and their associated data are accurate representations of the real world from the perspective of the intended use(s). Accreditation is the formal certification that a model or simulation is acceptable to be used for a specific purpose. Verification is the process of determining that a computer model, simulation, or federation of models and simulations implementations and their associated data accurately represents the developer's conceptual description and specifications.

5. Explain why a software system which is used in a real-world environment must change or become progressively less useful. Ans:

Remaining answers are available in the full assignments (in MS-WORD format).

MC0071 Software Engineering

Roll No. XXXXXXXXX

For full assignments Contact us:

Prakash: 9686515230
Email: info@assignmentsclub.com / assignments.prakash@gmail.com Website: www.assignmentsclub.com

Note: Sample papers are available in Portable Document Format (.pdf) with a watermark of our Website. Full assignments will be in MS-WORD (.doc) format without any watermark... Contact us for Full assignments...

MC0071 Software Engineering

Roll No. XXXXXXXXX

You might also like