Software Engineering Notes - University Academy - Studocu
Software Engineering Notes - University Academy - Studocu
Correct faults.
Improve the design.
Implement enhancements.
Interface with other systems.
Accommodate programs so that different hardware, software, system features, and
telecommunications facilities can be used.
Migrate legacy software.
Retire software.
Purpose of Maintenance:
Failure Avoidance
Equipment Reliability
Least Operating Costs
Risk Reduction
Maximum Production
Defect Simulation
Categories of Maintenance:
1. Corrective maintenance:
Corrective maintenance of a software product may be essential either to rectify some
bugs observed while the system is in use, or to enhance the performance of the system.
2. Adaptive maintenance:
This includes modifications and updations when the customers need the product to run
on new platforms, on new operating systems, or when they need the product to interface
with new hardware and software.
3. Perfective maintenance:
A software product needs maintenance to support the new features that the users want or
to change different types of functionalities of the system according to the customer
demands.
4. Preventive maintenance:
This type of maintenance includes modifications and updations to prevent future
problems of the software. It goals to attend problems, which are not significant at this
moment but may cause serious issues in future.
Cost of Maintenance:
Cost of maintenance includes all activities necessary for a software to meet all its functional
requirements throughout the life cycle.
The cost basically depends upon
1. Non-Technical factors
2. Technical factors
Non-Technical factors:
The Non-Technical factors include:
1. Application Domain
2. Staff stability
3. Program lifetime
4. Dependence on External Environment
5. Hardware stability
Technical factors:
Technical factors include the following:
1. module independence
2. Programming language
3. Programming style
4. Program validation and testing
5. Documentation
6. Configuration management techniques
Efforts expanded on maintenance may be divided into productivity activities (for example
analysis and evaluation, design and modification, coding). The following expression provides
a module of maintenance efforts:
M = P + K(C - D)
where,
M: Total effort expanded on the maintenance.
P: Productive effort.
K: An empirical constant.
C: A measure of complexity that can be attributed to a lack of good design and
documentation.
D: A measure of the degree of familiarity with the software.
The need for software reengineering becomes an integral part of improving the quality of
your products. This process adds more value to your business as it does not only better your
services but also contributes added revenue.
1. Reverse Engineering
1. Collection Information:
This step focuses on collecting all possible information (i.e., source design documents
etc.) about the software.
8. Generate documentation:
Finally, in this step, the complete documentation including SRS, design document,
history, overview, etc. are recorded for future use.
2. Restructuring
Once the reverse engineering is done and the appropriate specifications are
identified, restructuring is performed. Restructuring deals with rearranging or
reconstructing the source code and deciding whether to retain or change the programming
conventions.
Another part of this procedure is the elimination or reconstruction of the parts of the source
code that often cause errors in the software (may also be debugging).Aside from that,
eliminating obsolete or older versions of certain parts of the system (such as programming
implementation and hardware components) should keep the system updated.
3. Forward Engineering
The flow ends with forward engineering. This is the process of integrating the latest
specifications based on the results of the evaluations from reverse engineering and
restructuring.
In relation to the entirety of the process, this is defined relative to reverse engineering, where
there is an effort to build backward, from a coded set to a model, or to break down the process
of how software was integrated.
There is no specific SDLC model to follow in software reengineering. The model will always
depend on what fits best with the environment and implementation of your product.
Software Configuration Management (SCM) is the task of tracking and controlling changes in
the software.
Identifying items like test cases, specification requirements, and code modules
Identifying each computer software configuration item in the process
Group basic details of why, when, and what changes will be made and who will be in
charge of making them
Create a list of necessary resources, like tools, files, documents, etc.
Identifying and classifying the components that are covered by the project
Developing a way to track the hierarchy of different versions of the software
Identifying the essential relationships between various components
Establishing various baselines for the product, including developmental, functional, and
product baselines
Developing a standardized label scheme for all products, revisions, and files so that
everyone is on the same page.
3. Change Control:
Change control is the method used to ensure that any changes that are made are consistent
with the rest of the project. Having these controls in place helps with quality assurance, and
the approval and release of new baseline(s). Change control is essential to the successful
completion of the project.
In this step, requests to change configurations are submitted to the team and approved or
denied by the software configuration manager. The most common types of requests are to add
or edit various configuration items or change user permissions.
This procedure includes:
Recording and evaluating changes made from one baseline to the next
Monitoring the status and resolution of all change requests
Maintaining documentation of each change made as a result of change requests and
to reach another baseline
Checking previous versions for analysis and testing.
Making sure that the goals laid out in the planning and identification step are met
Ensuring that the software complies with identified configuration control standards
Making sure changes from baselines match the reports
Validating that the project is consistent and complete according to the goals of the project.
The SCM process is multidisciplinary, involving just about every member of the software
development team.
There are a number of tools available to help facilitate the software configuration
management process. The purpose of these tools is the automation of traditionally manual
tasks, allowing for greater accuracy, speed and control. More specifically, they can help with:
Alerts and Reports: A good SCM tool will provide alerts and reports if there are any
deviations from the agreed upon baseline. This data will be pushed through in close to real-
time, allowing managers to act fast if something goes off track.
Track Changes: SCM tools will automatically track changes to servers or applications and
will also allow manual entry of such data. Change auditing can also be done via monitoring
script outputs.
Configuration Comparisons: The best software configuration management tools will
provide a way to identify differences between configurations.
Faster Troubleshooting: Errors, missteps, and issues are identified quickly so that
developers can take action before the problem grows.
Inventory Tracking: Most SCM tools will feature a way to track hardware and software
assets so that you don’t have to keep a manual list.
Patch Management: SCM tools can help you track all the details surrounding patch
management as you distribute updated software.
There are some things to consider before embracing an SCM tool, including:
Resource Drain: You must have the resources to support the process from beginning to
end
Knowledge Limitations: Everyone involved must have a profound knowledge of the
software management tools being used
SMB Disadvantage: The scope of what is needed to use these tools effectively may be
difficult for a small business to support
Hardware Specs: Fast and highly configured hardware is required for the process to run
smoothly.
CASE Tools:
The set of application programs to automate software development lifecycle activities and are
used by managers in a project, engineers and analysts to build a software system is called CASE
tools and the software development cycle stages can be simplified using several tools such as
design, analysis, project management, database management, documentation, etc. and the use
of these tools speeds up the project development to obtain desired results.
source of integrated and consistent information. The central place of storage consisting
information about the management is a central repository. The central repository also
Lower: Implementation, testing, and maintenance can be performed using lower case.
Integrated: All the stages of the software development life cycle right from the
integrated tools.
1. Diagram Tools
The components of the system, data flow, control flow among the various components of
software and the structure of the system can be represented in graphical form using diagram
tools.
Example: The state-of-the-art flowcharts can be created using flow chart maker tool.
2. Process Modeling
The software process model can be created using process modelling tools for software
development. The managers can choose a process model using process modelling tools or make
3. Project Management
Planning of the project, estimation of cost and efforts, scheduling of project and planning of
resources can be done using project management tools. All the steps in the execution of the
project must be strictly followed by the managers in management of software project. The
project information can be stored and shared in real time using the tools of project management
4. Documentation Tools
Before the beginning of software process, documentation of the software project must begin.
This documentation must cover the all the software development life cycle phases and the
completion of the software development phase as well. The documents are generated by the
documentation tools for both technical and end users. The in-house professionals in the
development team who refer the manual maintained for the system, manual maintained for
reference, manual for training, manuals for installation etc. make the technical users. The
functioning of the system and how system works is described in the end user documents.
5. Analysis
Requirements gathering, inconsistency checks, diagrams inaccuracy, redundancies in the data
6. Design
The block structure of the software can be designed by the software designers using design
tools which are again broken down into smaller modules using techniques of refinement. The
detailing of every module and the interconnections between the modules can be done using
this.
Automatic tracking, management of version, and management of release can be done with the
8. Change Control
Change Control are a part of configuration management. The changes that occur in the software
after fixing its baseline or after the first release of the software are dealt by change control
tools. Tracking the changes, management of files, management of codes etc. can be automated
using change control. The change policy of the organization can be enforced by using change
control.
9. Programming
The programming environments like integrated development environment , library consisting
of in built modules, simulation are all included in programming tools. The development of
software product is aided by these and simulation and testing features are included.
10. Prototyping
The simulated version of the software product to be built is called a prototype in software. The
look and feel of the product is provided by the prototype and several aspects of the actual
product can be simulated using prototyping. Graphical libraries are contained in the prototyping
tools. User interfaces and design that are hardware independent can be created using
prototyping. Rapid prototypes can be built using prototyping based on the existing information.
tools. The web page that is being developed can be previewed to see how it looks after
quality is as per the standards of the organization can be performed using quality assurance
tools. The configuration change control and software testing tools come under the category of
QA tools.
13. Maintenance
If there are any modifications after the delivery of the software product can be done through
software maintenance tools. Techniques for automatically logging, error reporting, generation
of error tickets automatically and root cause analysis are used in the maintenance phase of the
Where,
The constant values a,b,c, and d for the Basic Model for the different categories of the system
The above formula is used for the cost estimation of for the basic COCOMO model,
and also is used in the subsequent models. The constant values a,b,c and d for the
Basic Model for the different categories of system:
Software Projects a b c d
Product Attributes
Hardware Attributes
Personnel attributes
Project Attributes
Nominal
Very Very
;
Cost Drivers Low Low High High
The project manager is to rate these 15 different parameters for a particular project
on a scale of one to three. Then, depending on these ratings, appropriate cost driver
values are taken from the above table. These 15 values are then multiplied to
calculate the EAF (Effort Adjustment Factor). The Intermediate COCOMO formula
now takes the form:
Software Projects a b
5. Detailed Model –
Detailed COCOMO incorporates all characteristics of the intermediate version with
an assessment of the cost driver’s impact on each step of the software engineering
process. The detailed model uses different effort multipliers for each cost driver
attribute. In detailed cocomo, the whole software is divided into different modules
and then we apply COCOMO in different modules to estimate effort and then sum the
effort.
The Six phases of detailed COCOMO are:
1. Planning and requirements
2. System design
3. Detailed design
4. Module code and test
5. Integration and test
6. Cost Constructive model
The effort is calculated as a function of program size and a set of cost drivers are
given according to each phase of the software lifecycle.
Resource Allocation Models:
The Lawrence Putnam model describes the time and effort requires finishing a software project of a
specified size. Putnam makes a use of a so-called The Norden/Rayleigh Curve to estimate project effort,
schedule & defect rate as shown in fig:
Putnam noticed that software staffing profiles followed the well known Rayleigh distribution.
Putnam used his observation about productivity levels to derive the software equation:
K is the total effort expended (in PM) in product development, and L is the product estimate
in KLOC .
td correlate to the time of system and integration testing. Therefore, td can be relatively
considered as the time required for developing the product.
Ck Is the state of technology constant and reflects requirements that impede the development
of the program.
The exact value of Ck for a specific task can be computed from the historical data of the
organization developing it.
Putnam proposed that optimal staff develop on a project should follow the Rayleigh curve.
Only a small number of engineers are required at the beginning of a plan to carry out planning
and specification tasks. As the project progresses and more detailed work are necessary, the
number of engineers reaches a peak. After implementation and unit testing, the number of
project staff falls.
Effect of a Schedule change on Cost
Where, K is the total effort expended (in PM) in the product development
Ck Is the state of technology constant and reflects constraints that impede the progress of the
program
From the above expression, it can be easily observed that when the schedule of a project is
compressed, the required development effort as well as project development cost increases in
proportion to the fourth power of the degree of compression. It means that a relatively small
compression in delivery schedule can result in a substantial penalty of human effort as well as
development cost.
Risk Identification
It is the procedure of determining which risk may affect the project most. This process
involves documentation of existing risks.
Risk register
Plan risk management should take place early in the project, it can impact on various aspects
for example: cost, time, scope, quality and procurement.
The inputs for qualitative Project Risk Analysis and Management includes
Control Risks
Control risk is the procedure of tracking identified risks, identifying new risks, monitoring
residual risks and evaluating risk.
Project Procurement Management also includes controlling any contract issued by an outside
organization and get work done outside the project team.
Requirements documentation
Teaming agreements
Risk register
Scope baseline
Project schedule
Activity cost estimates
Cost performance baseline
Risk related contract decisions
Enterprise environmental factors
Organizational process assets
Selecting a seller
Receiving seller responses
Awarding a contract
The benefit of conducting procurement process is that it provides alignment of external and
internal stakeholder expectations through established agreements.
Control Procurements
It is the process of monitoring contract performance and correction to the contract as per the
guidelines. It will ensure that buyers and sellers both meet the procurement requirement
according to the terms of the legal agreement.
Close procurements
This step involves documenting agreements and other documents for future reference.
Closed procurements
Organizational process assets updates
Identifying Stakeholders
It is the process of identifying the groups, people or organization that can influence project
outcomes. It allows the project manager to identify appropriate stakeholders.
Issue log
Change request
Project management plan updates
Project documents updates
Organizational process assets updates