30
SOFTWARE ENGINEERING BCA - 403 Question Bank with Solutions UNIT – 1 Software Engineering Q1.What is computer software? A. Computer software is a complete package, which includes software program, its documentation and user guide on how to use the software. Q2.Can you differentiate computer software and computer program? A. A computer program is piece of programming code which performs a well defined task where as software includes programming code, its documentation and user guide. Q3. What is software engineering? A. Software engineering is an engineering branch associated with software system development. Q4. When you know programming, what is the need to learn software engineering concepts?

ccs.iamr.ac.in  · Web viewQ6. What are SDLC models available? There are several SDLC models available such as Waterfall Model, Iterative Model, Spiral model, V-model and Big-bang

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

SOFTWARE ENGINEERING

BCA - 403

Question Bank with Solutions

UNIT – 1

Software Engineering

Q1.What is computer software?

A. Computer software is a complete package, which includes software program, its documentation and user guide on how to use the software.

Q2.Can you differentiate computer software and computer program?

A. A computer program is piece of programming code which performs a well defined task where as software includes programming code, its documentation and user guide.

Q3. What is software engineering?

A. Software engineering is an engineering branch associated with software system development.

Q4. When you know programming, what is the need to learn software engineering concepts?

A. A person who knows how to build a wall may not be good at building an entire house. Likewise, a person who can write programs may not have knowledge of other concepts of Software Engineering. The software engineering concepts guide programmers on how to assess requirements of end user, design the algorithms before actual coding starts, create programs by coding, testing the code and its documentation.

Q5. What is software process or Software Development Life Cycle (SDLC)?

Software Development Life Cycle, or software process is the systematic development of software by following every stage in the development process namely, Requirement Gathering, System Analysis, Design, Coding, Testing, Maintenance and Documentation in that order.

Q6. What are SDLC models available?

There are several SDLC models available such as Waterfall Model, Iterative Model, Spiral model, V-model and Big-bang Model etc.

Q7. What are various phases of SDLC?

The generic phases of SDLC are: Requirement Gathering, System Analysis and Design, Coding, Testing and implementation. The phases depend upon the model we choose to develop software.

Q8. What are software paradigms?

Software paradigms refer to the methods and steps, which are taken while designing the software. There are many methods proposed and are in work today, but we need to see where in the software engineering these paradigms stand.

Q9. What are the needs of software engineering?

The need of software engineering arises because of higher rate of change in user requirements and environment on which the software is working.

· Large software 

· Scalability

· Cost

· Dynamic Nature

· Quality Management

Q10.What is the characteristics of software engineering?

· Budget

· Usability

· Efficiency

· Correctness

· Functionality

· Dependability

· Security

· Safety

Q11.Discuss feasibility study in software engineering.

A. When the client approaches the organization for getting the desired product developed, it comes up with rough idea about what all functions the software must perform and which all features are expected from the software.It is focused towards goal of the organization.It explores technical aspects of the project and product such as usability, maintainability, productivity and integration ability.

SECTION - B

(5 marks)

Q 1. Define the Software Components?

Ans. A software component is a system element offering a predefined service and

able to communicate with other components. Clemens Szyperski and David

Messerschmitt give the following five criteria for what a software component

shall be fulfill the definition:

1. Multiple-use

2. Non-context-specific

3. Composable with other components

4. Encapsulated i.e. ,non-investigable through its interfaces

5. A unit of independent and versioning.

It does not matter what the specification is; COM, JavaBeans etc,as long as the object adhere to the specification. It takes significant effort and awareness to write a software component that effectively reusable.

The component needs:

To be fully documented ;

More through testing;

Robust input validity checking

To pass back useful error messages as appropriate;

Q 2. Define the Software Applications?

Ans. Software applications are grouped into eight areas :

1. System Software- System Software is a collection of programs used to run

the system as an assistance to use other software programs. The compilers,

editors, utilities operating system components, drivers and interfaces are

examples of system software.

2. Real-time Software- Real-time Software deals with changing

environment. First it collect the input and convert it from analog to digital,

control component that responds to the external environment, perform the

action in the last.

3. Embedded Software- Software, when written to perform certain functions

under control conditions and further embedded into hardware as a part of

large systems, is called Embedded Software.

4. Business Software- Software designed to process business applications is

called business software. Business software could be a data and

information-processing application.

5. Personal Computer Software- Word processing, spread sheets, computer

graphics, multimedia, entertainment, database management, personal and

business financial applications, external network or database access are

only a few of hundreds of applications.

6. Artificial Intelligence Software- Artificial Intelligence Software uses nonnumeric

algorithms, which use the data and information generated in

the system, to solve the solving problems.

Applications within this area include robotics, expert system, pattern

recognition, artificial neural networks, theorem proving and game

playing, signal processing software.

7. Web-Based Software- Web-Based Software is the browsers by which web

pages are processed i.e., HTML, Java, CGI, Perl, DHTML etc.

8. Engineering and Scientific Software- Design, engineering of scientific

software‘s deal with processing requirements in their specific fields. They

are written for specific applications using the principles and formulas of

CAD/CAM/CAE packages, SPSS, MATLAB, Circuit analyzers are typical examples of such software.

Q3. 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.

Q4.What is the role in design phase of SDLC.

The inputs from users and information gathered in requirement gathering phase are the inputs of this step. The output of this step comes in the form of two designs; logical design and physical design. Engineers produce meta-data and data dictionaries, logical diagrams, data-flow diagrams and in some cases pseudo codes

Q5.When you know programming, what is the need to learn software engineering concepts?

 A person who knows how to build a wall may not be good at building an entire house. Likewise, a person who can write programs may not have knowledge of other concepts of Software Engineering. The software engineering concepts guide programmers on how to assess requirements of end user, design the algorithms before actual coding starts, create programs by coding, testing the code and its documentation.

Q6. Explain the Software Characteristics?

Ans. The key Characteristics of Software are as follows-

1. Most software is custom build, rather than being assembled from existing

components:- Most software continue to be custom built, although recent

developments tend to component based.

2. Software is developed or engineered; it is not manufactured in the classical

sense-Although some similarities exist between software development and

hardware manufactured, the two activities are fundamentally different. In

both activities, high quality is achieved through good design, but the

manufacturing phase for hardware can introduce quality problems that are

nonexistent for software. Both activities depend on people, but the

relationship between people applied and work accomplished is entirely

different.

3. Software is flexible- A program can be developed to do almost anything. sometimes, this characteristics may be the best and may help us to

accommodate any kind of change.

4. Software does not wear out-

It is expected to test the product in the industry before delivery. Due to testing and fixing faults, failure intensity will come down initially and may stabilize after certain time.

Q7.Write a short note on Knowledge Engineering.

Knowledge Engineering (KE) refers to the building, maintaining and

development of knowledge-based systems. It has a great deal in common

with software engineering, and is related to many computer science domains

such as artificial intelligence, databases, data mining, expert systems, decision

support systems and geographic information systems. Knowledge

engineering is also related to mathematical logic and is structured according

to our understanding of how human reasoning and logic works.

Various activities of KE specific for the development of a knowledge-based

system are :

Assessment of the problem

Knowledge Engineering Principles

There are two main views to knowledge

engineering:

Transfer View

Modeling View

Q8.Describe the importance of software Engineering?

Software Engineering

Software Engineering is a part of computer science in which several kind of method, thoughts and techniques used for getting the high quality software and computer programs.

1. Minimum cost

2. On given time

3. Continuous production

We can judge the usefulness of the software Engineering with the importance of its attributes. Both are used for the same manner. The basic target of software Engineering is to provide the high quality software, which can be delivered.

1. On given time,

2. Within budget &

3. That fulfils the need.

Thus we can say that this is the best way or programs to get the following points:

1. To provide the best output of software system.

2. To make easy to use the software systems and develop them.

3. To improve the rate of production.

4. To maintain the budget for development of Software system.

5. Job satisfaction of software engineering.

It is necessary to produce a high quality software to fulfill the below given points.

1. Consistency

2. Improved quality

3. Minimum cost

4. Within time

5. Reliability &

6. Fulfil the need of user

Q9.What should be steps taken under the process of developing a software system.

Steps used while developing a software system.

To achieve consistency, software development process is divided into set of phases. Various methods, tools & techniques are applied to accomplish each phases. The process of developing a software system is divided in two parts to bring the consistency in this process. To complete the software developing process several kind of methods, Techniques, used. Below given steps are used to develop a software system.

1. Statement of problem & system study 

2. Study of work ability 

3. Software need analysis and specification 

4. Software design and specification 

5. Coding and module testing 

6. Integration and system testing 

7. System Implementation 

8. System Maintenance 

Q10.Explain the principles which play a major role in development of software.

Principles of software development

A set of rules which is made on the basis a number of observations done by user is called the principles of software development. We have described the software development principles which are given below:

1. Quality on preference –

2. Possibility of high quality software –

3. be on time delivery –

4. Fix the problem 

5. Valuation of alternate design –

6. Selection of appropriate process model –

7. Minimum gap between client and developer –

8. Design for change -

9. Reduce tricks –

10. Right person is the base of success -

11. Use carefully –

12. Keep updated 

SECTION – C

(LONG QUESTIONS & ANSWERS)

Q1.What is software process or Software Development Life Cycle (SDLC)? What are various phases of SDLC?

A. Software Development Life Cycle, or software process is the systematic development of software by following every stage in the development process namely, Requirement Gathering, System Analysis, Design, Coding, Testing, Maintenance and Documentation in that order.SDLC framework includes the following steps:

Communication

This is the first step where the user initiates the request for a desired software product. He contacts the service provider and tries to negotiate the terms. He submits his request to the service providing organization in writing.

Requirement Gathering

This step onwards the software development team works to carry on the project. The team holds discussions with various stakeholders from problem domain and tries to bring out as much information as possible on their requirements. The requirements are contemplated and segregated into user requirements, system requirements and functional requirements.

Feasibility Study

At this step the team analyzes if a software can be made to fulfill all requirements of the user and if there is any possibility of software being no more useful. There are many algorithms available, which help the developers to conclude the feasibility of a software project.

System Analysis

At this step the developers decide a roadmap of their plan and try to bring up the best software model suitable for the project. System analysis includes Understanding of software product limitations, learning system related, identifying and addressing the impact of project on organization and personnel etc.

Software Design

Next step is to bring down whole knowledge of requirements and analysis on the desk and design the software product. The inputs from users and information gathered in requirement gathering phase are the inputs of this step.

Coding

This step is also known as programming phase. The implementation of software design starts in terms of writing program code in the suitable programming language and developing error-free executable programs efficiently.

Testing

An estimate says that 50% of whole software development process should be tested. Errors may ruin the software from critical level to its own removal.

Integration

Software may need to be integrated with the libraries, databases and other program. This stage of SDLC is involved in the integration of software with outer world entities.

Implementation

This means installing the software on user machines. At times, software needs post-installation configurations at user end. Software is tested for portability and adaptability and integration related issues are solved during implementation.

Operation and Maintenance

This phase confirms the software operation in terms of more efficiency and less errors. If required, the users are trained on, or aided with the documentation on how to operate the software and how to keep the software operational.

Disposition

As time elapses, the software may decline on the performance front. It may go completely obsolete or may need intense up gradation. Hence a pressing need to eliminate a major portion of the system arises.

Q2.What is Waterfall model? Discuss its advantages, disadvantages and when to use it?

The Waterfall Model was first Process Model to be introduced. It is also referred to as a linear-sequential life cycle model.  It is very simple to understand and use.  In a waterfall model, each phase must be completed fully before the next phase can begin. This type of software development model is basically used for the for the project which is small and there are no uncertain requirements.

Diagram of Waterfall-model:

Advantages of waterfall model:

· This model is simple and easy to understand and use.

· It is easy to manage due to the rigidity of the model – each phase has specific deliverables and a review process.

· In this model phases are processed and completed one at a time. Phases do not overlap.

· Waterfall model works well for smaller projects where requirements are very well understood.

 

Disadvantages of waterfall model:

· Once an application is in the testing stage, it is very difficult to go back and change something that was not well-thought out in the concept stage.

· No working software is produced until late during the life cycle.

· High amounts of risk and uncertainty.

· Not a good model for complex and object-oriented projects.

· Poor model for long and ongoing projects.

· Not suitable for the projects where requirements are at a moderate to high risk of changing.

When to use the waterfall model:

· This model is used only when the requirements are very well known, clear and fixed.

· Product definition is stable.

· Technology is understood.

· There are no ambiguous requirements

· Ample resources with required expertise are available freely

· The project is short.

Q3.What is Incremental model? Discuss its advantages, disadvantages and when to use it?

In incremental model the whole requirement is divided into various builds. Multiple development cycles take place here, making the life cycle a “multi-waterfall” cycle.  Cycles are divided up into smaller, more easily managed modules.

Diagram of Incremental model:

Advantages of Incremental model:

· Generates working software quickly and early during the software life cycle.

· This model is more flexible – less costly to change scope and requirements.

· It is easier to test and debug during a smaller iteration.

· In this model customer can respond to each built.

· Lowers initial delivery cost.

Disadvantages of Incremental model:

· Needs good planning and design.

· Needs a clear and complete definition of the whole system before it can be broken down and built incrementally.

· Total cost is higher than waterfall.

When to use the Incremental model:

· This model can be used when the requirements of the complete system are clearly defined and understood.

· There is a need to get a product to the market early.

· A new technology is being used

· Resources with needed skill set are not available

· There are some high risk features and goals.

Q4.What is Iterative model? Discuss its advantages, disadvantages and when to use it?

An iterative life cycle model does not attempt to start with a full specification of requirements. Instead, development begins by specifying and implementing just part of the software, which can then be reviewed in order to identify further requirements. This process is then repeated, producing a new version of the software for each cycle of the model.

Diagram of Iterative model:

Advantages of Iterative model:

· In iterative model we can only create a high-level design of the application before we actually begin to build the product and define the design solution for the entire product.

· In iterative model we are building and improving the product step by step.

· In iterative model less time is spent on documenting and more time is given for designing.

 Disadvantages of Iterative model: 

· Each phase of an iteration is rigid with no overlaps

· Costly system architecture or design issues may arise because not all requirements are gathered up front for the entire lifecycle

When to use iterative model:

· Requirements of the complete system are clearly defined and understood.

· When the project is big.

Q5.What is RAD model. Discuss its advantages, disadvantages and when to use it?

RAD model is Rapid Application Development model. It is a type of incremental model. In RAD model the components or functions are developed in parallel as if they were mini projects. The developments are time boxed, delivered and then assembled into a working prototype.  This can quickly give the customer something to see and use and to provide feedback regarding the delivery and their requirements.

Diagram of RAD-Model:

Advantages of the RAD model:

· Reduced development time.

· Increases reusability of components

· Quick initial reviews occur

· Encourages customer feedback

· Integration from very beginning solves a lot of integration issues.

Disadvantages of RAD model:

· Depends on strong team and individual performances for identifying business requirements.

· Only system that can be modularized can be built using RAD

· Requires highly skilled developers/designers.

· High dependency on modelling skills

· Inapplicable to cheaper projects as cost of modelling and automated code generation is very high.

 When to use RAD model:

· RAD should be used when there is a need to create a system that can be modularized in 2-3 months of time.

· RAD SDLC model should be chosen only if resources with high business knowledge are available and there is a need to produce the system in a short span of time (2-3 months).

Q6.What is Prototype model? Discuss its advantages, disadvantages and when to use it?

Prototype model is a software development model. By using this prototype, the client can get an “actual feel” of the system, since the interactions with prototype can enable the client to better understand the requirements of the desired system.  Prototyping is an attractive idea for complicated and large systems for which there is no manual process or existing system to help determining the requirements.

Diagram of Prototype model:

Advantages of Prototype model:

· Users are actively involved in the development.

· Errors can be detected much earlier.

· Quicker user feedback is available leading to better solutions.

· Missing functionality can be identified easily

Disadvantages of Prototype model:

· Leads to implementing and then repairing way of building systems.

When to use Prototype model:  

· Prototype model should be used when the desired system needs to have a lot of interaction with the end users..

· Prototyping ensures that the end users constantly work with the system and provide a feedback which is incorporated in the prototype to result in a useable system.

· They are excellent for designing good human computer interface systems.

Q7.What is Spiral model.discuss its advantages, disadvantages and when to use it?

The spiral model is similar to the incremental model, with more emphasis placed on risk analysis. A software project repeatedly passes through these phases in iterations.The baseline spiral, starting in the planning phase, requirements are gathered and risk is assessed. Each subsequent spirals builds on the baseline spiral.

Diagram of Spiral model:

Advantages of Spiral model:

· High amount of risk analysis hence, avoidance of Risk is enhanced.

· Good for large and mission-critical projects.

· Strong approval and documentation control.

· Additional Functionality can be added at a later date.

· Software is produced early in the software life cycle.

Disadvantages of Spiral model:

· Can be a costly model to use.

· Risk analysis requires highly specific expertise.

· Project’s success is highly dependent on the risk analysis phase.

· Doesn’t work well for smaller projects.

 When to use Spiral model:

· When costs and risk evaluation is important

· For medium to high-risk projects

· Users are unsure of their needs

· Requirements are complex

Q8.What is the essential characteristics of software engineering?

(1). Software is developed or engineered, it is not manufactured:-- Unlike hardware, software is logical rather than physical. It has to be designed well before producing it. In spite of availability of many automated software development tools

(2).Software does not "wear out":--As time progresses, the hardware components start deteriorating-they are subjected to environmental maladies such as dust, vibration, temperature etc. and at some point of time they tend to breakdown. The defected components can then be traced and replaced.

(3).Most software is custom-built, rather than being assembled from existing components:--Most of the engineered products are first designed before they are manufactured, Designing includes identifying various components for the product before they are actually assembled..

Q9. What is Software Requirement?

Ans.: In software engineering, requirements analysis is used for determining the

needs or conditions to meet for a new or altered product, taking account of

the possibly conflicting requirements of the various stakeholders or users.

Systematic requirements analysis is also known as requirements engineering.

It is sometimes referred loosely by names such as requirements gathering,

Requirements capture, or requirements specification. Requirements analysis is

critical to the success of a development project. Requirements must be actionable, measurable, testable, related to identified business needs or opportunities, and defined to a level of detail sufficient for

system design.

Q10.Explain software process model in brief.

Software Process Model:

 To solve actual problems in an industry setting, a software engineer or a team of engineers must incorporate a development strategy that encompasses the process, methods, and tools layers and the generic phases. This strategy is often referred to as a process model. A process model for software engineering is chosen based on the nature of the project and application, the methods and tools to be used, and the controls and deliverable that are required.

Waterfall Model:

The Waterfall Model was first Process Model to be introduced. It is also referred to as a linear-sequential life cycle model.  It is very simple to understand and use.  In a waterfall model, each phase must be completed fully before the next phase can begin. This type of software development model is basically used for the for the project which is small and there are no uncertain requirements.

Spiral model

The spiral model is similar to the incremental model, with more emphasis placed on risk analysis. A software project repeatedly passes through these phases in iterations. The baseline spiral, starting in the planning phase, requirements is gathered and risk is assessed. Each subsequent spirals builds on the baseline spiral.

Prototype model

Prototype model is a software development model. By using this prototype, the client can get an “actual feel” of the system, since the interactions with prototype can enable the client to better understand the requirements of the desired system.  Prototyping is an attractive idea for complicated and large systems for which there is no manual process or existing system to help determining the requirements.