Module 1 -Question Bank with Answer
1. Explain the need and importance of software engineering in
modern systems development.
Software engineering is the process of designing, developing,
testing, and maintaining software. It is needed because software is a
complex and constantly evolving field that requires a structured
approach to ensure that the end product is of high quality, reliable,
and meets the needs of the users.
Importance:
Software engineering helps in developing high-quality and reliable software.
It provides a systematic way to design, develop, test, and maintain software.
It helps to manage complex software systems easily.
Software engineering reduces development time and cost through proper planning.
It improves teamwork and coordination among developers and project members.
Testing methods in software engineering help to identify and remove errors from software.
It ensures software security, reliability, and better performance.
Software engineering makes software easy to maintain and update in the future.
It supports modern technologies like Artificial Intelligence, Cloud Computing, and Mobile
Applications.
Overall, software engineering helps in creating efficient, user-friendly, and maintainable
software systems.
[Link] the various attributes of software quality.
[Link] Waterfall and Incremental Model.
The waterfall model
The first published model of the software development
process was derived from more general system engineering
processes (Royce, 1970). Because of the cascade from one
phase to another, this model is known as the ‘waterfall
model’ or software life cycle.
activities:
1. Requirements analysis and definition The system’s
services, constraints, and goals are established by
consultation with system users. They are then defined in
detail and serve as a system specification.
2. System and software design The systems design process
allocates the requirements to either hardware
or software systems by establishing an overall system
architecture. Software design involves identifying
and describing the fundamental software system
abstractions and their relationships.
3. Implementation and unit testing During this stage, the
software design is realized as a set of programs
or program units. Unit testing involves verifying that each
unit meets its specification.
Incremental Model:
Incremental development is based on the idea of developing an
initial implementation, exposing this to user comment and evolving
it through several versions until an adequate system has been
developed. Specification, development, and validation activities are
interleaved rather than separate, with rapid feedback across
activities. Incremental development reflects the way that we solve
problems. We rarely work out a complete problem solution in
advance but move toward a solution in a series of steps,
backtracking when we realize that we have made a mistake. By
developing the software incrementally, it is cheaper and easier to
make changes in the software as it is being developed. Generally,
the early increments of the system include the most important or
most urgently required functionality. This means that the customer
can evaluate the system at a relatively early stage in the
development to see if it delivers what is required. If not, then only
the current increment has to be changed and, possibly, new
functionality defined for later increments.
Incremental development has three important benefits, compared to
the waterfall model: 1. The cost of accommodating changing
customer requirements is reduced. The amount of analysis and
documentation that has to be redone is much less than is required
with the waterfall model. 2. It is easier to get customer feedback on
the development work that has been done. Customers can comment
on demonstrations of the software and see how much has been
implemented. Customers find it difficult to judge progress from
software design documents. 3. More rapid delivery and deployment
of useful software to the customer is possible, even if all of the
functionality has not been included. Customers are able to use and
gain value from the software earlier than is possible with a waterfall
process. From a management perspective, the incremental
approach has two problems: 1. The process is not visible. Managers
need regular deliverables to measure progress. If systems are
developed quickly, it is not cost‐effective to produce documents that
reflect every version of the system. 2. System structure tends to
degrade as new increments are added. Unless time and money is
spent on refactoring to improve the software, regular change tends
to corrupt its structure. Incorporating further software changes
becomes increasingly difficult and costly.
[Link] Component Based and Aspect-Oriented Model:
[Link] and Disadvantages Agile Methodology.
[Link] Spiral Model.
7. Explain V Model.
Requirement Gathering ← →Acceptance Testing:In the process of gathering
requirements for the system to meet its client’s expectation, a testing phase involved in
the finished product in a real user environment will be planned. Acceptance Testing may
conclude the overall client experience of the entire system as a complete product.
System Analysis ← → System Testing:While System Design is on the way to plan out
how the system components will be and how they will interact with each other to run the
entire system. System Testing phase should be on the construction of the tests based on
the system design itself, including software-hardware communication testing, external
services and communication testing etc.
Software Design ← →Integration Testing:A technical phase of software design where
the concept and plan will be implemented into smaller modules to accomplish each
functionality and requirement of the project itself. A blueprint for Integration Test of
each component and their architectural design will be planned at the same time.
Module Design ← →Unit Testing:A lower level design to help guarantee that the basic
component in each module works properly in order to eliminate any fault in fundamental
functionality that higher level component will be based on. A Unit Testing will be
designed to validate each type of scenario that each module might face and to ensure
that the system can handle each one appropriately on the code level.
Coding:An actual implementation of a code. Coding will be done based on the design of
the aforementioned components and modules.
After the coding has been done. A V-Model will process to do the testing in reverse order
going from Unit Testing → Integration Testing → System Testing and Acceptance
Testing,
[Link] between Scrum And Extreme Programming.
[Link] Prototype Model With Example.
[Link] RUP Model.