Software Engineering

69
Chapter 1- Introduction Lecture 1

description

Software engineering basics

Transcript of Software Engineering

Page 1: Software Engineering

Chapter 1- Introduction

Lecture 1

Page 2: Software Engineering

Software engineering

Software engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has gone into use.

Engineering discipline Using appropriate theories and methods to solve problems

bearing in mind organizational and financial constraints.

All aspects of software production Not just technical process of development. Also project

management and the development of tools, methods etc. to support software production.

Chapter 1 Introduction 2

Page 3: Software Engineering

Frequently asked questions about software engineering

Chapter 1 Introduction 3

Question Answer

What is software? Computer programs and associated documentation. Software products may be developed for a particular customer or may be developed for a general market.

What are the attributes of good software? Good software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable.

What is software engineering? Software engineering is an engineering discipline that is concerned with all aspects of software production.

What are the fundamental software engineering activities?

Software specification, software development, software validation and software evolution.

What is the difference between software engineering and computer science?

Computer science focuses on theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software.

What is the difference between software engineering and system engineering?

System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this more general process.

Page 4: Software Engineering

Frequently asked questions about software engineering

Question Answer

What are the key challenges facing software engineering?

Coping with increasing diversity, demands for reduced delivery times and developing trustworthy software.

What are the costs of software engineering?

Roughly 60% of software costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs.

What are the best software engineering techniques and methods?

While all software projects have to be professionally managed and developed, different techniques are appropriate for different types of system. For example, games should always be developed using a series of prototypes whereas safety critical control systems require a complete and analyzable specification to be developed. You can’t, therefore, say that one method is better than another.

What differences has the web made to software engineering?

The web has led to the availability of software services and the possibility of developing highly distributed service-based systems. Web-based systems development has led to important advances in programming languages and software reuse.

Chapter 1 Introduction 4

Page 5: Software Engineering

Essential attributes of good software

Chapter 1 Introduction 5

Product characteristic Description

Maintainability Software should be written in such a way so that it can evolve to meet the changing needs of customers. This is a critical attribute because software change is an inevitable requirement of a changing business environment.

Dependability and security

Software dependability includes a range of characteristics including reliability, security and safety. Dependable software should not cause physical or economic damage in the event of system failure. Malicious users should not be able to access or damage the system.

Efficiency Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency therefore includes responsiveness, processing time, memory utilisation, etc.

Acceptability Software must be acceptable to the type of users for which it is designed. This means that it must be understandable, usable and compatible with other systems that they use.

Page 6: Software Engineering

Web-based software engineering

Web-based systems are complex distributed systems but the fundamental principles of software engineering discussed previously are as applicable to them as they are to any other types of system.

The fundamental ideas of software engineering, discussed in the previous section, apply to web-based software in the same way that they apply to other types of software system.

Chapter 1 Introduction 13

Page 7: Software Engineering

Key points

Software engineering is an engineering discipline that is concerned with all aspects of software production.

Essential software product attributes are maintainability, dependability and security, efficiency and acceptability.

The high-level activities of specification, development, validation and evolution are part of all software processes.

The fundamental notions of software engineering are universally applicable to all types of system development.

Chapter 1 Introduction 14

Page 8: Software Engineering

Key points

There are many different types of system and each requires appropriate software engineering tools and techniques for their development.

The fundamental ideas of software engineering are applicable to all types of software system.

Chapter 1 Introduction 15

Page 9: Software Engineering

Ethical principles

Chapter 1 Introduction 23

 

1. PUBLIC - Software engineers shall act consistently with the public interest.

2. CLIENT AND EMPLOYER - Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest.

3. PRODUCT - Software engineers shall ensure that their products and related modifications meet the highest professional standards possible.

4. JUDGMENT - Software engineers shall maintain integrity and independence in their professional judgment.

5. MANAGEMENT - Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.

6. PROFESSION - Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.

7. COLLEAGUES - Software engineers shall be fair to and supportive of their colleagues.

8. SELF - Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.

Page 10: Software Engineering

Key points

Software engineers have responsibilities to the engineering profession and society. They should not simply be concerned with technical issues.

Professional societies publish codes of conduct which set out the standards of behaviour expected of their members.

Three case studies are used in the book: An embedded insulin pump control system A system for mental health care patient management A wilderness weather station

Page 11: Software Engineering

Plan-driven and agile development

Plan-driven development A plan-driven approach to software engineering is based around

separate development stages with the outputs to be produced at each of these stages planned in advance.

Not necessarily waterfall model – plan-driven, incremental development is possible

Iteration occurs within activities.

Agile development Specification, design, implementation and testing are inter-

leaved and the outputs from the development process are decided through a process of negotiation during the software development process.

41Chapter 3 Agile software development

Page 12: Software Engineering

The principles of agile methods

Principle Description

Customer involvement Customers should be closely involved throughout the development process. Their role is provide and prioritize new system requirements and to evaluate the iterations of the system.

Incremental delivery The software is developed in increments with the customer specifying the requirements to be included in each increment.

People not process The skills of the development team should be recognized and exploited. Team members should be left to develop their own ways of working without prescriptive processes.

Embrace change Expect the system requirements to change and so design the system to accommodate these changes.

Maintain simplicity Focus on simplicity in both the software being developed and in the development process. Wherever possible, actively work to eliminate complexity from the system.

 

42Chapter 3 Agile software development

Page 13: Software Engineering

Agile method applicability

Product development where a software company is developing a small or medium-sized product for sale.

Custom system development within an organization, where there is a clear commitment from the customer to become involved in the development process and where there are not a lot of external rules and regulations that affect the software.

Because of their focus on small, tightly-integrated teams, there are problems in scaling agile methods to large systems.

Chapter 3 Agile software development 43

Page 14: Software Engineering

Problems with agile methods

It can be difficult to keep the interest of customers who are involved in the process.

Team members may be unsuited to the intense involvement that characterises agile methods.

Prioritising changes can be difficult where there are multiple stakeholders.

Maintaining simplicity requires extra work.

Contracts may be a problem as with other approaches to iterative development.

44Chapter 3 Agile software development

Page 15: Software Engineering

Extreme programming practices (a)

Principle or practice Description

Incremental planning Requirements are recorded on story cards and the stories to be included in a release are determined by the time available and their relative priority. The developers break these stories into development ‘Tasks’. See Figures 3.5 and 3.6.

Small releases The minimal useful set of functionality that provides business value is developed first. Releases of the system are frequent and incrementally add functionality to the first release.

Simple design Enough design is carried out to meet the current requirements and no more.

Test-first development An automated unit test framework is used to write tests for a new piece of functionality before that functionality itself is implemented.

Refactoring All developers are expected to refactor the code continuously as soon as possible code improvements are found. This keeps the code simple and maintainable.

45Chapter 3 Agile software development

Page 16: Software Engineering

Extreme programming practices (b)

Pair programming Developers work in pairs, checking each other’s work and providing the support to always do a good job.

Collective ownership The pairs of developers work on all areas of the system, so that no islands of expertise develop and all the developers take responsibility for all of the code. Anyone can change anything.

Continuous integration As soon as the work on a task is complete, it is integrated into the whole system. After any such integration, all the unit tests in the system must pass.

Sustainable pace Large amounts of overtime are not considered acceptable as the net effect is often to reduce code quality and medium term productivity

On-site customer A representative of the end-user of the system (the customer) should be available full time for the use of the XP team. In an extreme programming process, the customer is a member of the development team and is responsible for bringing system requirements to the team for implementation.

46Chapter 3 Agile software development

Page 17: Software Engineering

Refactoring

Programming team look for possible software improvements and make these improvements even where there is no immediate need for them.

This improves the understandability of the software and so reduces the need for documentation.

Changes are easier to make because the code is well-structured and clear.

However, some changes requires architecture refactoring and this is much more expensive.

Chapter 3 Agile software development 47

Page 18: Software Engineering

Testing in XP

Testing is central to XP and XP has developed an approach where the program is tested after every change has been made.

XP testing features: Test-first development. Incremental test development from scenarios. Customer/User involvement in test development and validation. Automated test harnesses are used to run all component tests

each time that a new release is built.

48Chapter 3 Agile software development

Page 19: Software Engineering

Scrum

The Scrum approach is a general agile method but its focus is on managing iterative development rather than specific agile practices.

There are three phases in Scrum. The initial phase is an outline planning phase where you establish

the general objectives for the project and design the software architecture.

This is followed by a series of sprint cycles, where each cycle develops an increment of the system.

The project closure phase wraps up the project, completes required documentation such as system help frames and user manuals and assesses the lessons learned from the project.

Chapter 3 Agile software development 49

Page 20: Software Engineering

The Scrum process

50Chapter 3 Agile software development

Page 21: Software Engineering

Key points

Agile methods are incremental development methods that focus on rapid development, frequent releases of the software, reducing process overheads and producing high-quality code. They involve the customer directly in the development process.

The decision on whether to use an agile or a plan-driven approach to development should depend on the type of software being developed, the capabilities of the development team and the culture of the company developing the system.

Extreme programming is a well-known agile method that integrates a range of good programming practices such as frequent releases of the software, continuous software improvement and customer participation in the development team.

Chapter 3 Agile software development 51

Page 22: Software Engineering

Key points

A particular strength of extreme programming is the development of automated tests before a program feature is created. All tests must successfully execute when an increment is integrated into a system.

The Scrum method is an agile method that provides a project management framework. It is centred round a set of sprints, which are fixed time periods when a system increment is developed.

Scaling agile methods for large systems is difficult. Large systems need up-front design and some documentation.

52Chapter 3 Agile software development

Page 23: Software Engineering

Topics covered

Functional and non-functional requirements

The software requirements document

Requirements specification

Requirements engineering processes

Requirements elicitation and analysis

Requirements validation

Requirements management

53Chapter 4 Requirements engineering

Page 24: Software Engineering

What is a requirement?

It may range from a high-level abstract statement of a service or of a system constraint to a detailed mathematical functional specification.

This is inevitable as requirements may serve a dual function May be the basis for a bid for a contract - therefore must be

open to interpretation; May be the basis for the contract itself - therefore must be

defined in detail; Both these statements may be called requirements.

54Chapter 4 Requirements engineering

Page 25: Software Engineering

Readers of different types of requirements specification

55Chapter 4 Requirements engineering

Page 26: Software Engineering

Functional and non-functional requirements

Functional requirements Statements of services the system should provide, how the

system should react to particular inputs and how the system should behave in particular situations.

May state what the system should not do.

Non-functional requirements Constraints on the services or functions offered by the system

such as timing constraints, constraints on the development process, standards, etc.

Often apply to the system as a whole rather than individual features or services.

Domain requirements Constraints on the system from the domain of operation

56Chapter 4 Requirements engineering

Page 27: Software Engineering

Types of nonfunctional requirement

57Chapter 4 Requirements engineering

Page 28: Software Engineering

Requirements engineering processes

The processes used for RE vary widely depending on the application domain, the people involved and the organisation developing the requirements.

However, there are a number of generic activities common to all processes Requirements elicitation; Requirements analysis; Requirements validation; Requirements management.

In practice, RE is an iterative activity in which these processes are interleaved.

58Chapter 4 Requirements engineering

Page 29: Software Engineering

A spiral view of the requirements engineering process

59Chapter 4 Requirements engineering

Page 30: Software Engineering

The requirements elicitation and analysis process

60Chapter 4 Requirements engineering

Page 31: Software Engineering

Scenarios

Scenarios are real-life examples of how a system can be used.

They should include A description of the starting situation; A description of the normal flow of events; A description of what can go wrong; Information about other concurrent activities; A description of the state when the scenario finishes.

Page 32: Software Engineering

Ethnography

A social scientist spends a considerable time observing and analysing how people actually work.

People do not have to explain or articulate their work.

Social and organisational factors of importance may be observed.

Ethnographic studies have shown that work is usually richer and more complex than suggested by simple system models.

62Chapter 4 Requirements engineering

Page 33: Software Engineering

Requirements checking

Validity. Does the system provide the functions which best support the customer’s needs?

Consistency. Are there any requirements conflicts?

Completeness. Are all functions required by the customer included?

Realism. Can the requirements be implemented given available budget and technology

Verifiability. Can the requirements be checked?

63Chapter 4 Requirements engineering

Page 34: Software Engineering

Requirements evolution

64Chapter 4 Requirements engineering

Page 35: Software Engineering

Requirements management planning

Establishes the level of requirements management detail that is required.

Requirements management decisions: Requirements identification Each requirement must be uniquely

identified so that it can be cross-referenced with other requirements. A change management process This is the set of activities that assess

the impact and cost of changes. I discuss this process in more detail in the following section.

Traceability policies These policies define the relationships between each requirement and between the requirements and the system design that should be recorded.

Tool support Tools that may be used range from specialist requirements management systems to spreadsheets and simple database systems.

Chapter 4 Requirements engineering 65

Page 36: Software Engineering

Key points

Requirements for a software system set out what the system should do and define constraints on its operation and implementation.

Functional requirements are statements of the services that the system must provide or are descriptions of how some computations must be carried out.

Non-functional requirements often constrain the system being developed and the development process being used.

They often relate to the emergent properties of the system and therefore apply to the system as a whole.

66Chapter 4 Requirements engineering

Page 37: Software Engineering

Key points

The software requirements document is an agreed statement of the system requirements. It should be organized so that both system customers and software developers can use it.

The requirements engineering process is an iterative process including requirements elicitation, specification and validation.

Requirements elicitation and analysis is an iterative process that can be represented as a spiral of activities – requirements discovery, requirements classification and organization, requirements negotiation and requirements documentation.

Chapter 4 Requirements engineering 67

Page 38: Software Engineering

Key points

You can use a range of techniques for requirements elicitation including interviews, scenarios, use-cases and ethnography.

Requirements validation is the process of checking the requirements for validity, consistency, completeness, realism and verifiability.

Business, organizational and technical changes inevitably lead to changes to the requirements for a software system. Requirements management is the process of managing and controlling these changes.

Chapter 4 Requirements engineering 68

Page 39: Software Engineering

Topics covered

Context models

Interaction models

Structural models

Behavioral models

Model-driven engineering

69Chapter 5 System modeling

Page 40: Software Engineering

Process perspective

Context models simply show the other systems in the environment, not how the system being developed is used in that environment.

Process models reveal how the system being developed is used in broader business processes.

UML activity diagrams may be used to define business process models.

70Chapter 5 System modeling

Page 41: Software Engineering

Executable UML

The fundamental notion behind model-driven engineering is that completely automated transformation of models to code should be possible.

This is possible using a subset of UML 2, called Executable UML or xUML.

Chapter 5 System modeling 71

Page 42: Software Engineering

Features of executable UML

To create an executable subset of UML, the number of model types has therefore been dramatically reduced to these 3 key types: Domain models that identify the principal concerns in a system.

They are defined using UML class diagrams and include objects, attributes and associations.

Class models in which classes are defined, along with their attributes and operations.

State models in which a state diagram is associated with each class and is used to describe the life cycle of the class.

The dynamic behavior of the system may be specified declaratively using the object constraint language (OCL), or may be expressed using UML’s action language.

Chapter 5 System modeling 72

Page 43: Software Engineering

UML diagram types

Activity diagrams, which show the activities involved in a process or in data processing .

Use case diagrams, which show the interactions between a system and its environment.

Sequence diagrams, which show interactions between actors and the system and between system components.

Class diagrams, which show the object classes in the system and the associations between these classes.

State diagrams, which show how the system reacts to internal and external events.

73Chapter 5 System modeling

Page 44: Software Engineering

Key points

A model is an abstract view of a system that ignores system details. Complementary system models can be developed to show the system’s context, interactions, structure and behavior.

Context models show how a system that is being modeled is positioned in an environment with other systems and processes.

Use case diagrams and sequence diagrams are used to describe the interactions between users and systems in the system being designed. Use cases describe interactions between a system and external actors; sequence diagrams add more information to these by showing interactions between system objects.

Structural models show the organization and architecture of a system. Class diagrams are used to define the static structure of classes in a system and their associations.

Chapter 5 System modeling 74

Page 45: Software Engineering

Key points

Behavioral models are used to describe the dynamic behavior of an executing system. This behavior can be modeled from the perspective of the data processed by the system, or by the events that stimulate responses from a system.

Activity diagrams may be used to model the processing of data, where each activity represents one process step.

State diagrams are used to model a system’s behavior in response to internal or external events.

Model-driven engineering is an approach to software development in which a system is represented as a set of models that can be automatically transformed to executable code.

Chapter 5 System modeling 75

Page 46: Software Engineering

Key points

A software architecture is a description of how a software system is organized.

Architectural design decisions include decisions on the type of application, the distribution of the system, the architectural styles to be used.

Architectures may be documented from several different perspectives or viewssuch as a conceptual view, a logical view, a process view, and a development view.

Architectural patterns are a means of reusing knowledge about generic system architectures. They describe the architecture, explain when it may be used and describe its advantages and disadvantages.

Chapter 6 Architectural design 76

Page 47: Software Engineering

Key points

Models of application systems architectures help us understand and compare applications, validate application system designs and assess large-scale components for reuse.

Transaction processing systems are interactive systems that allow information in a database to be remotely accessed and modified by a number of users.

Language processing systems are used to translate texts from one language into another and to carry out the instructions specified in the input language. They include a translator and an abstract machine that executes the generated language.

77Chapter 6 Architectural design

Page 48: Software Engineering

Key points

Software design and implementation are inter-leaved activities. The level of detail in the design depends on the type of system and whether you are using a plan-driven or agile approach.

The process of object-oriented design includes activities to design the system architecture, identify objects in the system, describe the design using different object models and document the component interfaces.

A range of different models may be produced during an object-oriented design process. These include static models (class models, generalization models, association models) and dynamic models (sequence models, state machine models).

Component interfaces must be defined precisely so that other objects can use them. A UML interface stereotype may be used to define interfaces.

78Chapter 7 Design and implementation

Page 49: Software Engineering

Key points

When developing software, you should always consider the possibility of reusing existing software, either as components, services or complete systems.

Configuration management is the process of managing changes to an evolving software system. It is essential when a team of people are cooperating to develop software.

Most software development is host-target development. You use an IDE on a host machine to develop the software, which is transferred to a target machine for execution.

Open source development involves making the source code of a system publicly available. This means that many people can propose changes and improvements to the software.

79Chapter 7 Design and implementation

Page 50: Software Engineering

Open source licensing

A fundamental principle of open-source development is that source code should be freely available, this does not mean that anyone can do as they wish with that code. Legally, the developer of the code (either a company or an

individual) still owns the code. They can place restrictions on how it is used by including legally binding conditions in an open source software license.

Some open source developers believe that if an open source component is used to develop a new system, then that system should also be open source.

Others are willing to allow their code to be used without this restriction. The developed systems may be proprietary and sold as closed source systems.

80Chapter 7 Design and implementation

Page 51: Software Engineering

License models

The GNU General Public License (GPL). This is a so-called ‘reciprocal’ license that means that if you use open source software that is licensed under the GPL license, then you must make that software open source.

The GNU Lesser General Public License (LGPL) is a variant of the GPL license where you can write components that link to open source code without having to publish the source of these components.

The Berkley Standard Distribution (BSD) License. This is a non-reciprocal license, which means you are not obliged to re-publish any changes or modifications made to open source code. You can include the code in proprietary systems that are sold.

81Chapter 7 Design and implementation

Page 52: Software Engineering

the basic COCOMO model with the detailed COCOMO model

Chapter 1 Introduction 82

COCOMO consists of a hierarchy of three increasingly detailed and accurate forms.

• Basic COCOMO - is a static single-valued model that computes software development effort (and cost) as a function of program size expressed in estimated lines of code.

• Intermediate COCOMO - computes software development effort as function of program size and a set of "cost drivers" that include subjective assessment of product, hardware, personnel and project attributes.

• Embedded COCOMO - incorporates all characteristics of the intermediate version with an assessment of the cost driver's impact on each step (analysis, design, etc.) of the software engineering process.

Page 53: Software Engineering

What is Software Development Life Cycle? (SDLC)

System Development Life Cycle (SDLC) is the overall process of developing information systems through a multi-step process from investigation of initial requirements through analysis, design, implementation and maintenance.

Chapter 1 Introduction 83

Draw a diagram for pure waterfall life cycle.

Page 54: Software Engineering

Draw a diagram for pure waterfall life cycle.

Chapter 1 Introduction 84

Page 55: Software Engineering

What is feasibility study? What are the contents we should contain in the feasibility report?

A feasibility study is an initial look at an existing information processing system to decide how it might be computerized or improved.

The contents that a feasibility report are:

• A statement of purpose of the system.

• A definition of system scope.

• A list of deficiencies of the current system.

• A statement of user requirements.

• The cost and benefits of development.

• A conclusion and recommendations.

Chapter 1 Introduction 85

Page 56: Software Engineering

What is data modeling? Give 5 examples for data modeling.

Data modeling is the act of exploring data-oriented structures. Like other modeling artifacts data models can be used for a variety of purposes, from high-level conceptual models to physical data models. From the point of view of an object-oriented developer, data modeling is conceptually similar to class modeling. With data modeling you identify entity types whereas with class modeling you identify classes. Data attributes are assigned to entity types just as you would assign attributes and operations to classes.

Chapter 1 Introduction 86

Page 57: Software Engineering

Chapter 1 Introduction 87

What are the purposes of Data Flow diagrams, Entity-Relationship diagrams? Give an example diagram of each

Sample Quiz Questions

Page 58: Software Engineering

Chapter 1 Introduction 88

Ans (i) Cyclomate complexity, V (G) V(G) = E-N+2 Where E is the no of flow graph edges and N is the no of nodes .

So we have E = 8 N = 7 and V(G) = 8-7+2 = 3 (ii) independent path (1) 1,2,3,5,6,7 (2) 1,2,3,4,5,6,7 (3)1,2,3,4,6,7

Sample Quiz Questions

Page 59: Software Engineering

Chapter 1 Introduction 89

Sample Quiz Questions

Page 60: Software Engineering

Chapter 1 Introduction 90

One of the fault base testing techniques is (A) unit testing. (B) beta testing. (C) Stress testing. (D) mutation testing. Changes made to an information system to add the desired but not necessarily the required features is called (A) Preventative maintenance.

(B) Adaptive maintenance. (C) Corrective maintenance. (D) Perfective maintenance.

All the modules of the system are integrated and tested as complete system in the case of

(A) Bottom up testing (B) Top-down testing (C) Sandwich testing (D) Big-Bang testing

Sample Quiz Questions

Page 61: Software Engineering

Sample Quiz Questions

The worst type of coupling is

(A) Data coupling. (B) control coupling.

(C) stamp coupling. (D) content coupling.

The most important feature of spiral model is

(A) requirement analysis. (B) risk management.

(C) quality management. (D) configuration management.

IEEE 830-1993 is a IEEE recommended standard for

(A) Software requirement specification. (B) Software design.

(C) Testing. (D) Both (A) and (B)

The model in which the requirements are implemented by category is

(A) Evolutionary Development Model (B) Waterfall Model

(C) Prototyping (D) Iterative Enhancement Model Chapter 1 Introduction 91

Page 62: Software Engineering

Sample Quiz Questions

Chapter 1 Introduction 92

If every requirement stated in the Software Requirement Specification (SRS) has only one interpretation, SRS is said to be (A) correct. (B) unambiguous. (C) consistent. (D) verifiable.

A fault simulation testing technique is (A) Mutation testing (B) Stress testing (C) Black box testing (D) White

box testing Modules X and Y operate on the same input and output data, then the

cohesion is (A) Sequential (B) Communicational (C) Procedural (D) Logical

SRS is also known as specification of (A) White box testing (B) Stress testing (C) Integrated testing (D) Black box testing

COCOMO model is (A) Common Cost Estimation Model. (B) Constructive Cost Estimation

Model. (C) Complete Cost Estimation Model. (D) Comprehensive Cost Estimation Model.

Page 63: Software Engineering

Which of the following statements is true

(A) Abstract data types are the same as classes

(B) Abstract data types do not allow inheritance

(C) Classes cannot inherit from the same base class

(D) Object have state and behavior

The desired level of coupling is

(A) No coupling (B) Control coupling (C) Common coupling (D) Data coupling

In the spiral model ‘risk analysis’ is performed

(A) In the first loop (B) in the first and second loop (C) In every loop

(D) before using spiral model

Chapter 1 Introduction 93

Sample Quiz Questions

Page 64: Software Engineering

Chapter 1 Introduction 94

For a well understood data processing application it is best to use (A) The waterfall model (B) prototyping model (C) the evolutionary model (D) the spiral model Coupling and cohesion can be represented using a

(A) cause-effect graph (B) dependence matrix (C) Structure chart (D) SRS

The symbol represents

(A) mandatory 1 cardinality (B) mandatory many cardinality (C) optional 0 or 1 cardinality (D) optional zero-many cardinality

The feature of the object oriented paradigm which helps code reuse is (A) object. (B) class. (C) inheritance. (D) aggregation.

The tools that support different stages of software development life cycle are

called: (A) CASE Tools (B) CAME tools (C) CAQE tools (D) CARE tools

Sample Quiz Questions

Page 65: Software Engineering

Chapter 1 Introduction 95

The level at which the software uses scarce resources is (A) reliability (B) efficiency (C) portability (D) all of the above

If every requirement can be checked by a cost-effective process, then

the SRS is (A) verifiable (B) traceable (C) modifiable (D) complete

Modifying the software to match changes in the ever changing

environment is called (A) adaptive maintenance (B) corrective maintenance (C) perfective maintenance (D) preventive maintenance

All activities lying on critical path have slack time equal to (A) 0 (B) 1 (C) 2 (D) None of above

Alpha and Beta Testing are forms of (A) Acceptance testing (B) Integration testing (C) System Testing (D) Unit testing

Sample Quiz Questions

Page 66: Software Engineering

Chapter 1 Introduction 96

In function point analysis, number of general system characteristics used to rate the system are (A)10 (B) 14 (C) 20 (D) 12

An object encapsulates (A) Data (B) Behaviour (C) State (D) Both Data and behaviour

Aggregation represents (A) is_a relationship (B) part_of relationship (C) composed_of relationship (D) none of above

If P is risk probability, L is loss, then Risk Exposure (RE) is computed as (A) RE = P/L (B) RE = P + L (C) RE = P*L (D) RE = 2* P *L

ER model shows the (A) Static view. (B) Functional view. (C) Dynamic view. (D) All the above.

Sample Quiz Questions

Page 67: Software Engineering

Chapter 1 Introduction 97

A wholesaler sells printer cartridges. The minimum order quantity is 5.

There is a 20% discount for orders of 100 or more printer cartridges.

You have been asked to prepare test cases using various values for the

number of printer cartridges ordered. Which of the following groups

contain three test inputs that would be generated using Boundary Value

Analysis? 

Sample Quiz Questions

Page 68: Software Engineering

Chapter 1 Introduction 98

Given the following fragment of code, how many tests are required for 100% decision coverage?

if width > length    then biggest_dimension = width     if height > width              then biggest_dimension = height      end_if else biggest_dimension = length              if height > length                 then biggest_dimension = height        end_ifend_if

Sample Quiz Questions

Page 69: Software Engineering

Chapter 1 Introduction 99

What are the different Methodologies in Agile Development Model?

There are currently seven different Agile methodologies1. Extreme Programming (XP)2. Scrum3. Lean Software Development4. Feature-Driven Development5. Agile Unified Process6. Crystal7. Dynamic Systems Development Model (DSDM) 

Sample Quiz Questions