Unit-5 Oose Question and Answers

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 14

UNIT-5

1 Define Lehman’s Laws of system evolution 4M

Ans:

Lehman’s first law: A software product must change continually or become progressively less
useful. Every software product continues to evolve after its development through maintenance efforts.
Larger products stay in operation for longer times because of higher replacement costs and therefore
tend to incur higher maintenance efforts. This law clearly shows that every product irrespective of
how well designed must undergo maintenance. In fact, when a product does not need any more
maintenance, it is a sign that the product is about to be retired/discarded. This is in contrast to the
common intuition that only badly designed products need maintenance. In fact, good products are
maintained and bad products are thrown away.

Lehman’s second law: The structure of a program tends to degrade as more and more maintenance is
carried out on it. The reason for the degraded structure is that when you add a function during
maintenance, you build on top of an existing program, often in a way that the existing program was
not intended to support. If you do not redesign the system, the additions will be more complex that
they should be. Due to quick-fix solutions, in addition to degradation of structure, the documentations
become inconsistent and become less helpful as more and more maintenance is carried out.

Lehman’s third law: Over a program’s lifetime, its rate of development is approximately constant.
The rate of development can be quantified in terms of the lines of code written or modified. Therefore
this law states that the rate at which code is written or modified is approximately the same during
development and maintenance.

2 List the Types of Software Maintenance 4M

Ans:

There are three types of software maintenance, which are described as follows:
Corrective: Corrective maintenance of a software product is necessary either to rectify the bugs
observed while the system is in use.
Adaptive: A software product might need maintenance 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 or software.
Perfective: A software product needs maintenance to support the new features that users want it to
support, to change different functionalities of the system according to customer demands, or to
enhance the performance of the system.
3 What is Software Configuration Management 4M

Ans:
 The results (also called as the deliverables) of a large software development effort typically
consist of a large number of objects, e.g., source code, design document, SRS document, test
document, user’s manual, etc.
 These objects are usually referred to and modified by a number of software developers
through out the life cycle of the software.
 The state of each deliverable object changes as development progresses and also as bugs are
detected and fixed.

The configuration of the software is the state of all project deliverables at any point of time; and
software configuration management deals with effectively tracking and controlling the
configuration of a software during its life cycle.

4 What is Reverse Engineering 4M

Ans:

 Software reverse engineering is the process of recovering the design and the requirements
specification of a product from an analysis of its code.
 The purpose of reverse engineering is to facilitate maintenance work by improving the
understandability of a system and to produce the necessary documents for a legacy system.
Reverse engineering is becoming important, since legacy software products lack proper
documentation, and are highly unstructured.
 Even well-designed products become legacy software as their structure degrades through a
series of maintenance efforts.
 The first stage of reverse engineering usually focuses on carrying out cosmetic changes to the
code to improve its readability, structure, and understandability, without changing any of its
functionalities
 A program can be reformatted using any of the several available prettyprinter programs which
layout the program neatly.
 Many legacy software products are difficult to comprehend with complex control structure and
unthoughtful variable names.
 Assigning meaningful variable names is important that meaningful variable names is the most
helpful code documentation.
 All variables, data structures, and functions should be assigned meaningful names wherever
possible.
 Complex nested conditionals in the program can be replaced by simpler conditional statements
or whenever appropriate by case statements.
 After the cosmetic changes have been carried out on a legacy software, the process of
extracting the code, design, and the requirements specification can begin.
 In order to extract the design, a full understanding of the code is needed.
 Some automatic tools can be used to derive the data flow and control flow diagram from the
code.
 The structure chart (module invocation sequence and data interchange among modules) should
also be extracted.
 The SRS document can be written once the full code has been thoroughly understood and the
design extracted.

5 Explain the baseline of Software Lifecycle 7M

Ans:

 The concept of a baseline in the software lifecycle refers to a well-defined reference point that
captures the state of a software project at a specific moment in time.
 It serves as a foundation or starting point against which subsequent changes and developments
are measured and tracked throughout the software development lifecycle.
Here's a breakdown of baselines in the software lifecycle:

Types of Baselines

Functional Baseline:
Represents the initial set of functional requirements and specifications agreed upon with stakeholders.
It captures the essential functionalities the software must deliver.

Configuration Baseline:

Captures the configuration items and their versions, including source code, documentation, libraries,
and other components that form the software system.

Development Baseline:

Marks the point at which development activities begin. It includes initial code versions, architecture,
design, and development plans.

Test Baseline:

Comprises the software version ready for testing. It includes test plans, test cases, and a snapshot of
the software used for testing purposes.

Production Baseline:

The version of the software that is considered stable and ready for deployment into the production
environment. It has passed all necessary tests and validations.

Importance and Purpose of Baselines:

Reference Point:Baselines provide a clear starting point for development, allowing teams to track
changes and deviations throughout the software lifecycle.
Change Control:Facilitate change management by enabling comparisons between baselines to assess
modifications, ensuring proper documentation and authorization of changes.
Risk Management:Help in risk assessment by providing a stable reference to evaluate the impact of
changes or issues discovered during development.
Quality Assurance:Serve as a benchmark for quality, ensuring that the software meets specified
requirements and standards at different stages.
Traceability and Accountability:Enable traceability by identifying and documenting changes made
from one baseline to another, attributing responsibility for those changes.

Baselines in the software lifecycle serve as reference points that aid in managing change, ensuring
quality, and facilitating effective project management by providing a clear understanding of the
software's evolution and progress throughout its development journey.

6 Explain the Software Configuration Management Tools 7M

Ans:
Software Configuration Management (SCM) tools are essential in managing the changes that occur
throughout the software development lifecycle. These tools help teams control and track
modifications to software, enabling collaboration, version control, and seamless integration of
changes. Here's an overview of SCM tools and their functionalities:

Version Control Systems (VCS)

 Git: Widely used distributed version control system allowing collaborative development,
branching, merging, and tracking changes efficiently.
 Subversion (SVN): Centralized version control system enabling versioning, branching, and
merging of code.
 Mercurial: Distributed version control system similar to Git, facilitating collaborative
software development.

Configuration Management Tools

 Ansible: Automates software provisioning, configuration management, and application


deployment, aiding in maintaining consistent environments.
 Puppet: Automates the configuration management process, allowing deployment and
management of infrastructure as code.
 Chef: Configures and manages infrastructure through reusable code, promoting automation
and consistency in deployments.

Continuous Integration/Continuous Deployment (CI/CD) Tools

 Jenkins: An open-source automation server that enables continuous integration and delivery,
automating builds, tests, and deployments.
 Travis CI: Cloud-based CI service that automates testing and deployment processes for
GitHub repositories.
 CircleCI: Provides automated testing and continuous integration capabilities, integrating with
various version control systems.

Repository Hosting Platforms

 GitHub: Offers hosting for Git repositories, collaboration features, issue tracking, and project
management tools.
 GitLab: Provides a platform for the entire DevOps lifecycle, including source code
repositories, CI/CD pipelines, issue tracking, and more.
 Bitbucket: Hosts Git and Mercurial repositories with integration capabilities for issue tracking,
CI/CD, and code review.

Key Functionality and Benefits of SCM Tools

 Version Control: Tracks changes, maintains a history of modifications, and enables


collaboration among team members.
 Branching and Merging: Allows multiple parallel developments through branching and
seamless integration of changes via merging.
 Traceability and Auditability: Tracks who made changes, when, and why, facilitating
traceability and compliance.
 Automated Builds and Deployment: Streamlines the process of building, testing, and
deploying software.
 Collaboration and Code Review: Enables team collaboration, code review, and discussion
on changes made to the codebase.

SCM tools play a pivotal role in ensuring that software development teams efficiently manage
changes, maintain version control, automate workflows, and foster collaboration throughout the
development process. The choice of tooling often depends on specific project requirements, team
preferences, and the complexity of the development environment.

7 Explain about Software Reengineering Activities 7M

Ans:
 When we need to update the software to keep it to the current market, without impacting its
functionality, it is called software re-engineering. It is a thorough process where the design of
software is changed and programs are re-written.
 Legacy software cannot keep tuning with the latest technology available in the market. As the
hardware become obsolete, updating of software becomes a headache. Even if software grows
old with time, its functionality does not.
 For example, initially Unix was developed in assembly language. When language C came into
existence, Unix was re-engineered in C, because working in assembly language was difficult.
 Other than this, sometimes programmers notice that few parts of software need more
maintenance than others and they also need re-engineering.

Re-Engineering Process

 Decide what to re-engineer. Is it whole software or a part of it?


 Perform Reverse Engineering, in order to obtain specifications of existing software.
 Restructure Program if required. For example, changing function-oriented programs into
object-oriented programs.
 Re-structure data as required.
 Apply Forward engineering concepts in order to get re-engineered software.
Reverse Engineering

It is a process to achieve system specification by thoroughly analyzing, understanding the existing


system. This process can be seen as reverse SDLC model, i.e. we try to get higher abstraction level by
analyzing lower abstraction levels.

An existing system is previously implemented design, about which we know nothing. Designers then
do reverse engineering by looking at the code and try to get the design. With design in hand, they try
to conclude the specifications. Thus, going in reverse from code to system specification.

Program Restructuring

It is a process to re-structure and re-construct the existing software. It is all about re-arranging the
source code, either in same programming language or from one programming language to a different
one. Restructuring can have either source code-restructuring and data-restructuring or both.

Re-structuring does not impact the functionality of the software but enhance reliability and
maintainability. Program components, which cause errors very frequently can be changed, or updated
with re-structuring.

The dependability of software on obsolete hardware platform can be removed via re-structuring.

Forward Engineering

Forward engineering is a process of obtaining desired software from the specifications in hand which
were brought down by means of reverse engineering. It assumes that there was some software
engineering already done in the past.

Forward engineering is same as software engineering process with only one difference – it is carried
out always after reverse engineering.
8 Summarise the Tools which support Software Maintenance 7M

Ans:
Software maintenance involves modifying the existing software system and recording all the
modifications made to it. For this, various maintenance tools are used. One of the commonly used
maintenance tool is text editor. This tool creates a copy of the documentation or the code. The key
feature of this tool is that it provides a medium to roll back (when required) from the current version
of a file to the previous one. Several other tools used in software maintenance are listed in Table.
Table Software Maintenance Tools

Name Description

File comparator Compares two files or systems and maintains the


record of the differences in the files. In addition, it
determines whether the two files or the systems are
identical.

Compiler and linker Compilers are used to check syntax errors and in
some cases, locate the type of errors. When the
code is compiled, the linker is used to link the code
with other components, which are required for the
program execution. Linkers sometimes are used to
track the version numbers of the components so that
appropriate versions are linked together.

Debugger Allows tracing the logic of the program and


examines the contents of
the registers and memory areas.

Cross-reference generator Assures that the changes in code are in compliance


with the existing code. When a change to a
requirement is requested, this tool enables to know
which other requirements, design, and code
components will be affected.

Static code analyzer Measures information about the code attributes such
as the number of lines of code, number of spanning
paths, and so on. This can be calculated when the
new versions of the system are developed.

9 Examine about Software Configuration Management Functions 10


M
Ans:

Software Configuration Management (SCM) encompasses a range of functions and practices aimed at
managing software systems, controlling changes, and ensuring the integrity of software products
throughout their lifecycle. These functions are crucial for maintaining the consistency, reliability, and
traceability of software. Here are the primary functions of Software Configuration Management:
Version Control

 Revision Control: Tracks changes made to software artifacts, managing different versions and
facilitating rollbacks if necessary.
 Branching and Merging: Allows parallel development by creating branches and merging
changes back into the main codebase, ensuring code consistency.

Configuration Identification

 Baseline Management: Identifies and labels specific versions of software components,


establishing a baseline for further development.
 Configuration Item Identification: Defines and manages individual elements (code,
documents, configurations) to be placed under SCM control.

Change Control

 Change Management: Tracks, evaluates, and approves or rejects changes to software


configurations, ensuring proper documentation and authorization.
 Change Tracking: Monitors and logs changes, including the reasons behind them and the
individuals responsible.

Configuration Status Accounting

 Recording and Reporting: Maintains detailed records of configurations, versions, changes,


and their status over time, facilitating auditing and compliance.
 Configuration Audit: Verifies the consistency and completeness of software configurations
against established baselines.

Configuration Verification and Audit

 Quality Assurance: Ensures that configurations meet defined quality standards and adhere to
specified processes and guidelines.
 Auditing and Compliance: Conducts periodic reviews to ensure adherence to standards,
policies, and regulatory requirements.

Build Management
 Automated Builds: Manages the process of compiling, linking, and packaging software
components into executable code or deployable artifacts.
 Release Management: Orchestrates the release process, including versioning, packaging, and
distributing software to end-users or other systems.

Environment Management

 Environment Configuration: Controls and manages various development, testing, staging,


and production environments to maintain consistency.
 Dependency Management: Tracks and manages dependencies (libraries, frameworks,
modules) used in the software, ensuring compatibility and consistency across environments.

Workflow and Collaboration

 Process Automation: Automates workflows, such as code review, testing, and deployment, to
streamline development processes.
 Collaboration Tools: Facilitates communication, collaboration, and documentation among
team members working on software development.

Disaster Recovery and Backup

 Backup and Recovery: Implements strategies to back up software configurations and ensures
recovery mechanisms in case of data loss or system failure.
 Redundancy and Contingency Planning: Establishes contingency plans to mitigate risks and
minimize disruptions in case of configuration failures.

Effective Software Configuration Management functions help organizations maintain control over
their software assets, streamline development processes, ensure product quality, and facilitate
compliance with industry standards and regulations. It ensures that software evolves in a controlled
and manageable manner while meeting changing business requirements.
10 Classify Software maintenance process and activities 10
M

Ans:

Software maintenance is the process of changing, modifying, and updating software to keep up with
customer needs. Software maintenance is done after the product has launched for several reasons
including improving the software overall, correcting issues or bugs, to boost performance, and more.

Institute of Electrical and Electronics Engineers (IEEE) has provided a framework including various
maintenance activities for carrying out software maintenance methods. These sequential various
maintenance activities are as following –

 Identification and Tracing is the first activity where the requirement of correction and
modification is identified, and the problem is traced either by the reports of the user or by the
system through error messages or logs. This process is also important particularly as it helps in
classifying the type of maintenance.
 Analysis of the type of maintenance is then carried out by deeply analysing the modification
that is best for the software product. Here the impact of the modification on the system is also
calculated along with the cost of maintenance.
 Design of the maintenance is finalized. If the impact of a certain modification is negative, then
an alternative model of modification is worked upon. New modules that are to be replaced or
changed are designed.
 Implementation of the new module that has been designed is done by coding the structure
and unit testing the whole designed structure parallelly.
 System testing of the new created design is done by testing the system as a whole by
following various regressive testing procedures.
 Next step is for acceptance testing where the new design is introduced to the users for testing.
Here they test the new modules and if any problems emerge then they are reported back to the
organization.
 Once the acceptance testing is completed and all issues are resolved, the software is ready to
be delivered by way of small updates or new installation of the system. The final testing
occurs once the delivery of the software is done – the clients can come up with the problems
that are emerging.
 Maintenance management is carried out by configuration management where version control
tools work towards managing versions of the modifications in software.

11 Identify the Patterns for Software Maintenance 10


M

Ans:
Software maintenance involves various activities aimed at keeping a software system in good working
condition, adapting it to changing requirements, and fixing issues that arise. Here are some common
patterns and best practices used in software maintenance:

Corrective Maintenance Patterns

 Bug Fixing: Identify, isolate, and rectify bugs/errors found in the software.
 Patch Management: Regularly update the software with patches to fix vulnerabilities and
bugs.
 Root Cause Analysis: Investigate deeply to find the fundamental cause of recurring issues
and fix them permanently.

Adaptive Maintenance Patterns

 Enhancements: Implement new features or modify existing functionalities to adapt to


changing requirements.
 Configuration Management: Manage configurations to accommodate changes without
affecting the entire system.
 Refactoring: Restructure the code to improve readability, maintainability, and scalability
without changing its external behaviour.

Perfective Maintenance Patterns

 Performance Optimization: Identify and improve areas in the software to enhance


performance and efficiency.
 Code Optimization: Optimize code to improve execution time, reduce resource usage, and
enhance overall system performance.
 Documentation Update: Keep documentation up-to-date to reflect changes made in the
software.

Preventive Maintenance Patterns

 Code Review and Analysis: Regularly review code for potential issues and perform static code
analysis to catch vulnerabilities early.
 Automated Testing: Develop and maintain automated test suites to ensure new changes don't
introduce regressions or break existing functionality.
 Proactive Upgrades: Keep dependencies, libraries, and frameworks up-to-date to avoid
potential security vulnerabilities or compatibility issues.

Other Maintenance Patterns

 Legacy System Modernization: Upgrade or migrate legacy systems to modern technologies to


improve efficiency and maintainability.
 Monitoring and Logging: Implement robust monitoring and logging systems to detect issues
early and gather data for analysis.
 Continuous Improvement: Foster a culture of continuous improvement by gathering feedback,
learning from incidents, and applying lessons to future maintenance.

12 Identify the tasks in Software Configuration management 10


M

Ans:

In Software Engineering, Software Configuration Management(SCM) is a process to


systematically manage, organize, and control the changes in the documents, codes, and other entities
during the Software Development Life Cycle. The primary goal is to increase productivity with
minimal mistakes. SCM is part of cross-disciplinary field of configuration management and it can
accurately determine who made which revision.
It uses the tools which keep that the necessary change has been implemented adequately to the
appropriate component. The SCM process defines a number of tasks:
o Identification of objects in the software configuration
o Version Control
o Change Control
o Configuration Audit
o Status Reporting

Identification of objects in the software configuration

Basic Object: Unit of Text created by a software engineer during analysis, design, code, or test.

Aggregate Object: A collection of essential objects and other aggregate objects. Design Specification
is an aggregate object.

Each object has a set of distinct characteristics that identify it uniquely: a name, a description, a list of
resources, and a "realization."

The interrelationships between configuration objects can be described with a Module


Interconnection Language (MIL).

Version Control

Version Control combines procedures and tools to handle different version of configuration objects
that are generated during the software process.

Version control in the context of SCM: Configuration management allows a user to specify the
alternative configuration of the software system through the selection of appropriate versions. This is
supported by associating attributes with each software version, and then allowing a configuration to
be specified [and constructed] by describing the set of desired attributes.

Change Control

 Change control in the context of SCM is: Change Control is Vital. But the forces that make it
essential also make it annoying.
 We worry about change because a small confusion in the code can create a big failure in the
product. But it can also fix a significant failure or enable incredible new capabilities.
 We worry about change because a single rogue developer could sink the project, yet brilliant
ideas originate in the mind of those rogues, and
 A burdensome change control process could effectively discourage them from doing creative
work.
 A change request is submitted and calculated to assess technical merit; potential side effects,
the overall impact on other configuration objects and system functions, and projected cost of
the change.
 The results of the evaluations are presented as a change report, which is used by a change
control authority (CCA) - a person or a group who makes a final decision on the status and
priority of the change.
 The "check-in" and "check-out" process implements two necessary elements of change
control-access control and synchronization control.
 Access Control governs which software engineers have the authority to access and modify a
particular configuration object.
 Synchronization Control helps to ensure that parallel changes, performed by two different
people, don't overwrite one another.

Configuration Audit

 SCM audits to verify that the software product satisfies the baselines requirements and ensures
that what is built and what is delivered.
 SCM audits also ensure that traceability is maintained between all CIs and that all work
requests are associated with one or more CI modification.
 SCM audits are the "watchdogs" that ensures that the integrity of the project's scope is
preserved.

Status Reporting

Configuration Status reporting (sometimes also called status accounting) providing accurate status and
current configuration data to developers, testers, end users, customers and stakeholders through admin
guides, user guides, FAQs, Release Notes, Installation Guide, Configuration Guide, etc.

You might also like