DCA7103 AdvancedSoftwareEngineering Complete
DCA7103 AdvancedSoftwareEngineering Complete
2114100139
Name: DHANANJAY
Address: B-19 House No 151 Chhawla
New Delhi - 110071
Signature:
Assignment Set – 1
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.
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.
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
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.
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.
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.
Forward Document
Engineering Restructuring
Data Reverse
Structuring Engineering
Code
Restructuring
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.
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.