You are on page 1of 9

Name :- DEEPAK SARSWAT

Roll No. :- 2114100601

Program :- MCA

Semester:- 3RD

Course code & Name :- DCA7103 & ADVANCED SOFTWARE ENGINEERING

SET- 1

ANS.1 (A) Software engineering :- Software engineering is the application of principles


used in the field of engineering, which usually deals with physical systems, to the design,
development, testing, deployment and management of software systems.

principles of software engineering :- Alan Davis (1994) is one of the earlier authorities to
bring forward a set of principles of software engineering.

 Give products to customers early


 Determine the problem before writing the requirements
 Evaluate design alternatives
 Use an appropriate process model
 Put technique before tools:
 Get it right before you make it faster
 Inspect code
 Good management is more important than good technology
 People are the key to success
 Take responsibility
 Repeated in “technique before tools”
 Rigor and Formality
 Separations of Concerns
 Modularity
 Abstractions
 Anticipation of changes
 Generality
 Incrementality
• Give products to customers early: It is very difficultto completely understand and capture
the user’s needs during the requirement phase; thus it is more effective to give the users a
prototype of the product, then gather the feedback and then go into full- scale development of
the product.

• Determine the problem before writing the requirements: In thisprinciple, before the software
engineering rush to offer the solution, ensure that the problem is well understood.

Then explore the potential solution and various alternatives. This principle emphasizes the
need to understand the problem well before documenting requirements
• Evaluate design alternatives: After the requirements are understood and agreed upon,
explore a variety of design architecture and related algorithms. Ensure that the selected
design and algorithms are the best choice to satisfy the goals of the requirement.

(B) Software Development Life Cycle (SDLC) is a framework that defines activities that
are performed during the software development process. There are 6 phases in SDLC model
as given below.

1. Requirement: In this phase, all the requirements are collected from the customer/client.
They are provided in a document called Businessmen requirement specification (BRS) and
System requirement specification (SRS). All the details are discussed with the
customer/client in detail.
2. Design: It has two steps:
 High-level design (HLD): It gives the architecture of software products.
 Low-level design (LLD): It describes how each and every feature in the product should
work and every component.
3. Implementation:
 This is the longest phase.
 This phase consists of Front end + Middleware + Back-end.
 In front-end: Development of coding is done even SEO settings are done.
 In Middleware: They connect both the front end and back end.
 In the back-end: A database is created.
4. Testing: Testing is carried out to verify the entire system. The aim of the tester is to find
out the gaps and defects within the system and also to check whether the system is running
according to the requirement of the customer/client.
5. Deployment: After successful testing, the product is delivered/deployed to the client,
and even clients are trained on how to use the product.
6. Maintenance: Once the product has been delivered to the client a task of maintenance
starts as when the client will come up with an error the issue should be fixed from time to
time.

ANS.2 (A) software process, project, and product :- Software engineering comprises
interrelated and recurring entities, which are essential for software development. A software
is developed efficiently and effectively with the help of well-defined activities or processes.
A process is a sequence of steps involving activities and resources, which produces the
desired output.
The following points are noted about software processes:

• Processes use resources subject to given constraints and produce intermediate and final
products.

• Processes are composed of sub-processes that are organized in such amanner that each sub-
process has its own process model.

• Each process is carried out with an entry and exit criteria that help in monitoring the
beginning and completion of the activity.

• Every process includes guidelines, which explains the objectives of each activity.

• Processes impose uniformity on the set of activities.

• A process is more than just a procedure. It includes tools and techniques, which are
collectively used in a structured manner to produce a product.

• Issues in Software processes may be technical and /or and managerial in nature.

(B). The Capability Maturity Model (CMM) uses five software process levels of maturity
to assess, further develop, and improve the software development processes of an entity.
CMM involves key processes related to planning, engineering, and managing an
organization’s software development and maintenance. Organizations can use the CMM
framework to achieve their goals for cost, functionality, product quality, and schedule.

• Maturity levels – It is the level of process capability an organization possesses. CMM has
five maturity levels. The top level is systematically managed by an organization of process
optimization, while the initial level is characterized by ad-hoc processes.

• Process areas – It is a group of associated activities to attain a set of goals. It also sets up a
process capability at the maturity level, example, software project delivery planning.

• Goals – The goal points to the importance and the purpose of each process area.

• It reviews the essential practices of a process area and indicates the gap to address in
implementing the process area.

• Common features – These features are the characteristics that determine whether the
implementation of the key process area is successful and permanent.

• Key practices – It describes the infrastructure and performance of the application of a


process. For example, the software delivery schedule plan of a project is designed according
to a documented procedure.

ANS.3:-

1. Waterfall Model: The Waterfall model is one of the oldest most traditional
and the most widely known software development methodologies. It is a linear
sequential flow, in which progress is seen as flowing steadily downwards (like
a waterfall) through the phases of software implementation. Here, developers
can only move to the next phase, if only the previous phase is complete.
Phases of the Waterfall Model include:

 Planning
 Requirements
 Software system design
 Implementation
 Testing
 Product Release
 Maintenance/Updates

2. Agile Model:
Agile is designed to handle complexity and variability involved in software development
projects. When adopting the agile method – teams develop in short sprints or iterations, each
of which includes a defined duration and list of deliverables, but in no particular order. There
are many different forms of the agile model, including scrum, crystal, extreme programming
(XP), and feature-driven development (FDD) each of which the development teams develops
the software in iterations that contain mini-increments of new functionality.

3. Prototyping Model:
This model of SDLC builds specimens of the software that exhibit the technical functions
which is also known as software prototypes. This is centered on increasing the development
team’s understanding of the customer’s wants/needs by creating prototypes.

4. Iterative Model:
Iterative Model follows the iteration in the software development life cycle, however, the
convenience of this model is that the work is completed in small clusters as per the
requirement. Iterative process means designing the software in sets until the project is
completed.

5. V-shaped Model:
This model is an extension of the Waterfall model although does not follow the linear
method. The main distinction between the V-shaped model and the waterfall model is the V-
shaped model’s early test planning.

6. Spiral Model:
This model is a stage-based SDLC approach that blends architecture and prototyping and
focuses on risk assessment. It has four phases dividing the model into quadrants: planning,
risk analysis, engineering, and evaluation. Spiral model combines features of the Waterfall
and Prototyping models by stressing design, including prototyping (in the engineering phase),
and by following phases similar to those in the Waterfall model.

7. The Rational Unified Process (RUP) Model :


This model is a combination of iterative and waterfall models. The software development
model divides the entire software development process into four different parts: Beginning,
Expansion, Build up and Transition. All the required activities of the development model are
done in a parallel form.
8. Big Bang Model:
Unlike the other models, there is no specific process to follow in this model, i.e., it does not
adhere to any particular process per se. This model is best use for small projects that does not
require high-level planning.

SET-2

ANS.1(A) :- object-oriented design process :- In the OOAD design approach as shown in


figure 8.6, we have three phases.

The first phase deals with the designing of classes and applying the design axioms to it. Here
we have to create the UML diagrams, define class associations and hierarchy.

In the second phase, we have to create the mirror classes for access layer corresponding to
every class created in the first phase. We have to eliminate the redundant classes and use
method classes to refine the class structure.

Third phase deals with designing view layer classes. Here we have to use the view level
interface and create macro classes according to the axioms and corollaries. Here, we test the
usability and user satisfaction also.

Finally, repeat the process until an effective design is formed. We can iterate each phase
individually, different number of times to refine it.

(B) Code Reading :- Code reading is a technique that concentrates on how to read and
understand a computer program. It is essential for a software developer to know code reading.
The process of reading a software program in order to understand it is known as code reading
or program reading. In this process, attempts are made to understand the documents, software
specifications, or software designs. The purpose of reading programs is to determine the
correctness and consistency of the code. In addition, code reading is performed to enhance
the software code without entirely changing the program or with minimal disruption in the
current functionality of' the program. Code reading also aims at inspecting the code and
removing (fixing) errors from it.

Static Analysis :-Static analysis comprises a set of methods used to analyze the source code
or object code of the software to understand how the software functions and to set up criteria
to check its correctness. Static analysis studies the source code without executing it and gives
information about the structure of model used, data and control flows, syntactical accuracy,
and much more.

Symbolic Execution :-Symbolic execution concentrates on assessing the accuracy of the


model by using symbolic values instead of actual data values for input. Symbolic execution,
also known as symbolic evaluation, is performed by providing symbolic inputs, which
produce expressions for the output.

Code Inspection and Reviews :- The inspection process is carried out to check whether the
implementation of the software code is done according to the user requirements. This
technique is a formal and systematic examination of the source code to detect errors. During
this process, the software is presented to the proj1ct managers and the users for a comment of
approval. Before providing any comment, the inspection team checks the source code for
errors
ANS 2. (A) Software Re-Engineering is the examination and alteration of a system to
reconstitute it in a new form. The principles of Re-Engineering when applied to the
software development process is called software re-engineering. It affects positively at
software cost, quality, service to the customer and speed of delivery. In Software Re-
engineering, we are improving the software to make it more efficient and effective.

Software Re-Engineering Activities:


1. Inventory Analysis:
Every software organisation should have an inventory of all the applications.

 Inventory can be nothing more than a spreadsheet model containing information that
provides a detailed description of every active application.
 By sorting this information according to business criticality, longevity, current
maintainability and other local important criteria, candidates for re-engineering appear.
 The resource can then be allocated to a candidate application for re-engineering work.
2. Document reconstructing:
Documentation of a system either explains how it operates or how to use it.

 Documentation must be updated.


 It may not be necessary to fully document an application.
 The system is business-critical and must be fully re-documented.
3. Reverse Engineering:
Reverse engineering is a process of design recovery. Reverse engineering tools extract data,
architectural and procedural design information from an existing program.
4. Code Reconstructing:

 To accomplish code reconstructing, the source code is analysed using a reconstructing


tool. Violations of structured programming construct are noted and code is then
reconstructed.
 The resultant restructured code is reviewed and tested to ensure that no anomalies have
been introduced.
5. Data Restructuring:

 Data restructuring begins with a reverse engineering activity.


 Current data architecture is dissected, and the necessary data models are defined.
 Data objects and attributes are identified, and existing data structure are reviewed for
quality.
6. Forward Engineering:
Forward Engineering also called as renovation or reclamation not only for recovers design
information from existing software but uses this information to alter or reconstitute the
existing system in an effort to improve its overall quality.

(B) Software quality assurance :- is defined as a planned and systematic approach to the
evaluation of the quality and adherence to software product standards, processes and
procedures. SQA includes the process of assuring that standards and procedures are
established and are followed throughout the software acquisition life cycle. Compliance with
agreed upon standards and procedures is evaluated through process monitoring, product
evaluation and audits. Software development and control processes should include quality
assurance approval points, where an SQA evaluation of the product may be done in relation
to the applicable standards.

The software quality assurance group works with the software project during its early stages
to establish plans, standards and procedures that will add value to the software project and
satisfy the constraints of the project and the organization’s policies. By participating in
establishing the plans, standards and procedures, the software quality assurance group helps
ensure they fit the project’s needs. The software quality assurance group performs reviews
and audits software work products throughout the life cycle and provides visibility to the
management as to whether the software project is adhering to its established plans,

standards and procedures.

Software Quality Assurance (SQA) is a continuous activity carried throughout the project

lifecycle. It comprises of

1. An approach that determines the technique need to be adopted for managing the

quality in the project.

2. Software engineering methodologies and tools.

3. Technical reviews that need to be applied throughout the software development

processes.

4. Testing strategy for the project.

5. Documentation mechanism and effective ways of controlling the changes to the

documents.

6. Procedure for software compliance when needed to be obtained.

7. Metrics gathering and reporting mechanisms.

ANS 3 :- Types of Testing:-

1. Unit Testing
It focuses on the smallest unit of software design. In this, we test an individual unit or
group of interrelated units. It is often done by the programmer by using sample input and
observing its corresponding outputs.
Example:
a) In a program we are checking if the loop, method, or
function is working fine
b) Misunderstood or incorrect, arithmetic precedence.
c) Incorrect initialization
2. Integration Testing
The objective is to take unit-tested components and build a program structure that has been
dictated by design. Integration testing is testing in which a group of components is
combined to produce output.
Integration testing is of four types: (i) Top-down (ii) Bottom-up (iii) Sandwich (iv) Big-
Bang
Example:
(a) Black Box testing:- It is used for validation.
In this, we ignore internal working mechanisms and
focus on what is the output?.

(b) White box testing:- It is used for verification.


In this, we focus on internal mechanisms i.e.
how the output is achieved?
3. Regression Testing
Every time a new module is added leads to changes in the program. This type of testing
makes sure that the whole component works properly even after adding components to the
complete program.
Example
In school, record suppose we have module staff, students
and finance combining these modules and checking if on
integration of these modules works fine in regression testing
4. Smoke Testing
This test is done to make sure that the software under testing is ready or stable for further
testing
It is called a smoke test as the testing of an initial pass is done to check if it did not catch
the fire or smoke in the initial switch on.
Example:
If the project has 2 modules so before going to the module
make sure that module 1 works properly
5. Alpha Testing
This is a type of validation testing. It is a type of acceptance testing which is done before
the product is released to customers. It is typically done by QA people.
Example:
When software testing is performed internally within
the organization
6. Beta Testing
The beta test is conducted at one or more customer sites by the end-user of the software.
This version is released for a limited number of users for testing in a real-time environment
Example:
When software testing is performed for the limited
number of people
7. System Testing
This software is tested such that it works fine for the different operating systems. It is
covered under the black box testing technique. In this, we just focus on the required input
and output without focusing on internal working.
In this, we have security testing, recovery testing, stress testing, and performance testing
8. Stress Testing
In this, we give unfavorable conditions to the system and check how they perform in those
conditions.
Example:
(a) Test cases that require maximum memory or other
resources are executed
(b) Test cases that may cause thrashing in a virtual
operating system
(c) Test cases that may cause excessive disk requirement
9. Performance Testing
It is designed to test the run-time performance of software within the context of an
integrated system. It is used to test the speed and effectiveness of the program. It is also
called load testing. In it we check, what is the performance of the system in the given load.
10. Object-Oriented Testing
This testing is a combination of various testing techniques that help to verify and validate
object-oriented software. This testing is done in the following manner:
 Testing of Requirements,
 Design and Analysis of Testing,
 Testing of Code,
 Integration testing,
 System testing,
 User Testing.
11. Acceptance Testing
Acceptance testing is done by the customers to check whether the delivered products
perform the desired tasks or not, as stated in requirements.
We use this OOT, for discussing test plans and for executing the projects.

You might also like