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.