0% found this document useful (0 votes)
29 views

DCA7103 AdvancedSoftwareEngineering Complete

The document provides details about a student named Dhananjay including their enrollment number, name, address, course details, signature and answers to two questions related to software engineering. The questions are about defining software engineering and its principles, explaining the software development life cycle and its phases, and describing software processes, projects and products as well as the capability maturity model.

Uploaded by

Dhananjay Kumar
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views

DCA7103 AdvancedSoftwareEngineering Complete

The document provides details about a student named Dhananjay including their enrollment number, name, address, course details, signature and answers to two questions related to software engineering. The questions are about defining software engineering and its principles, explaining the software development life cycle and its phases, and describing software processes, projects and products as well as the capability maturity model.

Uploaded by

Dhananjay Kumar
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 15

Enrolment No: dhananjay.

2114100139
Name: DHANANJAY
Address: B-19 House No 151 Chhawla
New Delhi - 110071

Course Title: Advanced Software Engineering


Course Code: DCA7103
Phone No.: 9711440620
Personal Email ID: [email protected]
University Email ID: [email protected]

Signature:
Assignment Set – 1

Ques 1. a. What is software engineering? Explain principles of software engineering.


Ans: Software engineering is the application of engineering principles—which are often employed
in the design, development, testing, deployment, and management of physical systems—to the
design, development, deployment, and management of software systems.
Some guidelines for software engineering are listed below:
• Deliver goods to clients ahead of schedule: Since it is exceedingly challenging to fully
comprehend and capture the user's needs at the requirement phase, it is more beneficial to present
the consumers with a product prototype, collect their input, and then move on to full-scale
development of the product.
• Determine the problem before writing the requirements: According to this approach, make
sure the problem is clearly understood before the software engineering team rushes to provide a
solution. then look into prospective solutions and different options. This idea emphasises the
necessity of thoroughly comprehending the issue prior to documenting requirements.
• Evaluate design alternatives: After the requirements have been clarified and accepted, consider
several design architectures and associated methods. Make sure the design and algorithms you
choose are the best fit for achieving the requirement's objectives.
• Use an appropriate process model: Each project must choose a process based on factors
including company culture, project circumstances, user expectations, requirement volatility, and
experience of those participating in the project because there is no universal process model that
applies to all projects.
• Put technique before tools: This principle states that the technique must be thoroughly grasped
before using the tools. Otherwise, the tool simply pushes us to complete the incorrect action more
quickly. Tools are utilised to complete the tasks quickly and without error. This idea suggests that
the tools to be utilised should be decided upon by the technique.
• Get it right before you make it faster: In accordance with this principle, it's crucial to ensure
that the programme functions properly before working to improve it. This means that the software
developers should first work on making it function properly before concentrating on enhancing its
performance.
• Inspect code: According to this theory, inspection—first put forth by IBM's Mike Fagan—is a
significantly more effective technique to identify problems. Early inspection data indicated a 50%
to 90% time-to-test reduction.
• Good management is more important than good technology: In this principle, a good manager
can produce extraordinary results even with limited resources.

b. What is SDLC? Explain different phases of SDLC.


Ans: A organised procedure known as the Software Development Life Cycle (SDLC) provides
the fastest possible production of high-quality, low-cost software. Producing top-notch software
that meets and surpasses all client expectations and needs is the aim of the SDLC.
Stages of the SDLC
1. Analyzing requirements and planning first
2. Outlining Conditions
3. Creating the product's structure
4. Making or Developing the Product
5. Checking the product
6. Installation and Maintenance

Analysis phase
The development team examines the issue with an existing application during this phase or
develops fresh application concepts. The development team must first identify the idea before
determining the size of the issue. The development team may quickly determine the crucial
elements required for the product development after determining the scope. The system
requirement is crucial for software development. Depending on the software product, there are
different system requirements. The product development team needs to do a thorough analysis of
the requirements.

Design phase
This stage of the product life cycle is crucial. The design team designs the various components and
draughts the blueprints during this stage. This phase involves designing things like databases,
functional specifications, and documents. The time required in the following stages of the product
life cycle is decreased if the design that has been prepared is adequately structured.

Development phase
According to the blueprint made during the design phase, the product is actually developed during
this phase. The team members begin creating the product's code. Each team member is given a
unique module to build the product, which is separated into many modules. Based on the selected
technology, the code is written. Then, code is created and run.

Testing phase
Prior to being introduced to the market, every product must be tested. To make sure the finished
product fits the requirements laid out during the design phase, we must test it. The developed
product is tested during this phase, and reports are written. The report lists the flaws in the products
that were created.

Ques 2. a. Explain software process, project, and product in detail.


Ans:
Software processes:
• Subject to predetermined constraints, processes utilise resources to create intermediate and
finished goods.
• Sub-processes make up processes, and they are arranged into groups so that each group has its
own process model.
Every process comprises rules that define the goals of each action and is carried out using entrance
and exit criteria that aid in monitoring the start and end of each activity.
• The collection of activities is uniformized through processes.

Software project:
A project is defined as a specification required for creating or managing a certain product that
satisfies a particular set of user requirements. A software project's activities include a variety of
tasks for resource management and product development. A software project involves individuals,
usually referred to as participants, who utilise software processes to generate a product in
accordance with user needs (developers, project managers, end users, etc.). The project's progress
is heavily influenced by the participants, who also choose the best process. A project is also
effective if it is completed within the allotted period. A product is the end result or result of a
software project. Consequently, a software project employs software procedures to produce a
product.

People Software Process

Software
Project

Product

Software process:
One or more software products may be created by each of the several software projects that make
up a software process. The connections between these three things (process, project and product).
The fulfilment of the requirements marks the completion of a software project. The software
project is not exclusive to the software processes.

Software Process

Project 1 Project 2 ……… Project 2

Product 1 Product 2 ……… Product n

b. What is CMM? Explain the main components of CMM.


Ans: A common model for illustrating and evaluating the maturity of a software company's
development process is the capability maturity model (CMM). Under the supervision of the US
Department of Defense, it was created by the software development community, the Software
Engineering Institute (SEI), and Carnegie Mellon University.
Maturity Level
indicate

contains
People Management
Facility
Process area
achieve
Organized by
Goals
Common
address Features
contain
Implementation
Key Practices
describe

Infrastructure
Structure and Components of CMM
The main components of CMM are:
• Maturity levels - This refers to the degree of process competence that a company possesses. The
CMM has five levels of maturity. The beginning level is characterised by ad-hoc processes,
whereas the top level is routinely controlled by a process optimization organisation.
• Process areas - A group of related tasks performed in order to accomplish a set of objectives.
Additionally, it establishes a process competence at the maturity level, such as planning the
delivery of software projects.
• Goals - Each process area's goal identifies the significance and function of that area. It
summarises a process area's key practises and highlights the implementation gaps that must be
filled.
• Common features – These characteristics influence whether the key process area is implemented
successfully and permanently.
• Key practices – These explain a process's application's infrastructure and effectiveness. For
instance, a project's software delivery schedule plan is created in accordance with a stated process.

Ques 3. Briefly explain all models of the Software Life-Cycle Model.


Ans: Prototyping Model The initial step in the prototype model is requirement collecting.
Together, the customer and developer outline the overarching goals and specify the areas where
further requirements need to be gathered. Then a hastily made design is created. This brief design
illustrates the output format and user input. A prototype is created from the fast design. In order to
clarify the requirements, the customer or user reviews the prototype. Prototypes are adjusted
iteratively to satisfy consumer demands. If the developer receives positive feedback on the
prototype, they leverage existing software fragments and expand upon them.

The advantages and disadvantages of prototyping model are:


Advantages
1. The consumers of this methodology can better comprehend the system being developed by being
given a functioning model of it.
2. Much early error detection is possible.
3. Users can provide quick input, which leads to improved solutions.
Disadvantages
1. To get a prototype operating quickly, developers occasionally make concessions in the
implementation process.
2. When a customer sees a working version of the programme, they frequently request "minimal
fixes" on it. Rebuilding a new version from start can occasionally produce a higher-quality end
product.
Object-oriented Model By employing the class notion as the fundamental building block in each
phase, the object-oriented approach enhances the transitions between the various phases of the
software life cycle. The issue domain's classes are first identified, along with any potential
interactions between them in terms of inheritance, aggregation, and association links. The outputs
of the analysis phase serve as the high-level design phase of the system's inputs. Analysis, system
design, detailed design, implementation, testing, and maintenance are among the steps in object-
oriented development that are similar to those in traditional development methodologies.
The code for the intended system is created during the implementation phase using the outcomes
of the detailed design phase. It could be necessary to adjust or modify the detailed design artefact
to fit the employed object-oriented programming language. An object-oriented method places
more emphasis and effort on the analysis and design phase than traditional development
approaches, resulting in less maintenance work.

Agile Model: Iterative and incremental are terms used to characterise agile technique. In contrast
to the waterfall method, every stage of development, including requirements, design, and so forth,
is continuously reviewed in the agile method. The product is developed using the Agile Method in
small, incremental builds. Iterations of these builds are supplied. Iterations last between two and
four weeks. Additionally, a release will take place after three months. The time to market and
development expenses are drastically decreased by this "inspect-and-adapt" method of product
development.

The advantages and disadvantages of agile model are:


Advantages
• The model is incredibly user-friendly and straightforward.
• Simple to handle because the product is divided into manageable modules under this model.
• Adaptable to both changing and fixed requirements.
• Minimum resources are needed.
• Allows for simultaneous growth
Disadvantages
• Complex dependencies cannot be handled by this paradigm.
• Relies largely on customer engagement, therefore if the consumer is unclear, the team may be
led astray.
• A greater risk of extensibility, maintenance, and sustainability.
Assignment Set – 2

Ques 4. a. Describe the three phases of an object-oriented design process.


Ans: We have three phases in the OOAD design process, as depicted in the picture.
The design of classes and the application of the design axioms are the topics of the first phase.
Here, we must define class connections and hierarchies and generate the UML diagrams.
The access layer mirror classes for each class developed in the first step must be created in the
second phase. The class structure must be improved by getting rid of unnecessary classes and using
method classes.
Designing view layer classes is the subject of the third step. Here, we need to develop macro
classes using the view level interface in accordance with the axioms and corollaries. Here, we also
evaluate customer happiness and usability.
Repeat the procedure until a successful design has been created. We can iterate each phase
individually, different number of times to refine it.

b. Explain various code verification techniques.


Ans: The method of code verification is used to examine the software code for errors that were
introduced during the coding stage. The goal of the code verification procedure is to thoroughly
examine the programme code. Checking for consistency between user needs and the design phase
is a part of this procedure. The process of code verification does not focus on demonstrating the
correctness of programmes. Instead, it checks to see if the programme code has actually been
translated to meet the needs of the user.
The two subcategories of code verification approaches are dynamic and static procedures. In order
to use the dynamic approach, some test data must be executed. To detect programming flaws, the
program's outputs are examined. This method checks the software code according to the accepted
methodology. The programme is conceptually run and executed without any data when using the
static technique. In other words, unlike the dynamic technique, the static methodology does not
employ any conventional methods. Code reading, static analysis, symbolic execution, code
inspection, and reviews are a few of the static approaches that are frequently employed.
Static Techniques

Symbolic Code inspection


Code Reading Static Analysis
Execution and Reviews

Code Reading
The practise of "code reading" focuses on deciphering and comprehending computer programmes.
A software developer must be proficient in code reading. Code reading, also referred to as
programme reading, is the practise of reading a software programme to comprehend it. In this
procedure, an effort is made to comprehend the written materials, software requirements, or
software designs.

Static Analysis
Static analysis is a group of techniques used to examine the software's source code or object code
in order to comprehend how it works and to establish standards for evaluating its correctness. Static
analysis examines the source code without running it and provides details about the model's
structure, data and control flows, syntactical precision, and other things.

Symbolic Execution
By employing symbolic values rather than actual data values as input, symbolic execution focuses
on evaluating the model's accuracy. Symbolic inputs are used to accomplish symbolic execution,
sometimes referred to as symbolic evaluation, which results in expressions for the output.

Ques 5. a. Explain the software reengineering process model.


Ans: We use the six-step software reengineering process model, depicted in Figure, to put these
principles into practise. These actions don't always happen in a straight line, although sometimes
they do. Reverse engineering, for instance, can be necessary before document reorganisation can
start.
Inventory
Analysis

Forward Document
Engineering Restructuring

Data Reverse
Structuring Engineering

Code
Restructuring

A software reengineering process model:


Inventory analysis: A list of all apps should be kept on hand by every software company. The
inventory need only be a spreadsheet with information detailing each active application's size, age,
and purpose and storing the data in accordance with business-critical, long-term, currently
maintainable, and candidate for reengineering work criteria, as well as other locally significant
criteria. An organisational software must select the option that is most suitable in each situation.

Reverse Engineering: The technique of examining software with the aim of discovering its design
and specification is known as reverse engineering. Reverse engineering typically uses the
programme source code as its input. Different from re-engineering is reverse engineering. Reverse
engineering's goal is to create a new, more maintainable system, whereas re-engineering aims to
extract the design or specification of a system from its source code.

Code restructuring: Code restructuring is the most typical form of reengineering. Although the
programme architecture of some legacy systems is generally sound, some of their individual
modules may be challenging to comprehend, test, and maintain. In these situations, the code within
the questionable modules can be reorganised.

The source code is examined utilising a code structuring tool to complete this task. Code is
restructured after violations of structured programming constructs are discovered. The internal
code documentation is updated, and the resulting reorganised code is examined and tested to make
sure no anomalies have been introduced.

Data structuring: A software that has a poor data architecture will be challenging to modify and
improve. In many cases, data architecture plays a bigger role in a program's long-term
sustainability than the source code itself. Data structuring is a comprehensive reengineering
operation, in contrast to code restructuring, which takes place at a low level of abstraction. Reverse
engineering is typically how data reorganisation starts. Identification of data objects and attributes
is done, and the quality of the current data structures is checked.

Forward Engineering: Applications should ideally be rebuilt utilising a computerised


"reengineering engine." The engine would receive the old programme, analyse it, reorganise it,
and then build a new version of the programme that displayed the highest levels of software
quality.

b. Describe the software quality assurance.


Ans: A planned and systematic strategy of assessing the quality and compliance with software
product standards, processes, and procedures is referred to as software quality assurance. The
process of ensuring that policies and guidelines are defined and followed throughout the software
acquisition life cycle is included in SQA. Process monitoring, product evaluation, and audits are
used to gauge adherence to set standards and processes. Quality assurance approval points, where
a SQA evaluation of the product may be done in respect to the applicable standards, should be
included in the software development and control procedures.
The software quality assurance team collaborates with the software project early on to define goals,
norms, and practises that will enhance the software project and adhere to project constraints as
well as company policies. The software quality assurance group contributes to the development of
the plans, standards, and procedures, ensuring that they meet the requirements of the project.
Throughout the life cycle, the software quality assurance group analyses and audits software work
products and informs management as to whether the software project is complying to its set plans,
standards, and processes.
Ques 6. Explain different types of software testing.
Ans: Types of Testing:
1. Unit Testing
It is concentrated on the tiniest component of software design. Here, we test a single unit or a
collection of related units. The programmer frequently does this task by examining the results of
sample inputs and outputs.
Example:
a) In a programme, we might test the functionality of a loop, a method, or a function.
b) Inaccurate or misunderstood arithmetic precedence.
c) Unreliable initialization

2. Integration Testing
The goal is to construct a programme structure that has been determined by design using unit -
tested components. Integration testing involves combining a number of components to produce
an output.
Four forms of integration testing exist: Top-down I Bottom-up (ii) (iii) Big-Bang (iv) Sandwich
Example:
Testing in a black box (a) is used to validate.
In doing this, we disregard internal functioning mechanisms and concentrate on the result.
(b) White box testing: This technique is employed for validation. This focuses on internal
mechanisms, or how the output is produced.

3. Regression Testing
The programme is altered each time a new module is added. This kind of testing ensures that the
entire component functions correctly even after other components are added to the entire
application.
Example:
Consider a scenario in which the staff, pupils, and finance modules are combined at school and
their proper integration is tested using regression analysis.

4. Smoke Testing
This test is used to determine whether the programme being tested is prepared or stable for more
testing.
It is known as a smoke test because it is tested after an initial switch-on to ensure that there was
no fire or smoke.
Example: Check if module 1 is functioning properly before moving on to module 2 if the project
contains two modules.

5. Alpha Testing
This kind of validation testing is used. It is a kind of acceptability testing that is carried out prior
to the product being made available to customers. QA personnel often carry it out.
Example:
whenever software testing is carried out within the company

6. Beta Testing
The software's end-user conducts the beta test at one or more customer locations. This version
is being made available to a select group of users for testing in a live setting.
Example:
when a small group of people are involved in the software testing

7. System Testing
This software has been thoroughly tested to ensure that it runs well on all platforms. It is included
in the black box testing methodology. In this, we only pay attention to the necessary input and
output, ignoring internal functioning.
We have performance testing, stress testing, recovery testing, and security testing in this.
Example:
Testing that is both functional and nonfunctional is included.

8. Stress Testing
Here, we subject the system to unfavorable circumstances and evaluate how it responds to them.
Example:
a) Executing test cases that use the maximum amount of memory or other resources;
b) testing scenarios that could cause thrashing in a virtual operating system;
c) testing scenarios that could result in an excessive disc need.

9. Performance Testing
It is intended to test how well software performs when used in the context of an integrated
system. It is used to evaluate the program's efficiency and speed. Another name for it is load
testing. In it, we examine the system's performance under the specified load.
For example, check numerous CPU cycles.

You might also like