Professional Documents
Culture Documents
(Autonomous)
DUNDIGAL – 500 043,HYDERABAD
Assignment Questions
Set – 1
1970s
• Cap Gemini SDM, initially from PANDATA, the primary English interpretation was distributed in
1974. SDM represents System Development Methodology
1980s
• Structured Systems Analysis and Design Methodology (SSADM) from 1980 onwards
1990s
• Object-situated programming (OOP) has been created since the mid 1960s, and created as a
predominant programming approach during the mid-1990s
Verb approaches
Every software development methodology framework acts as a basis for applying specific approaches to
develop and maintain software. Several software development approaches have been used since the origin
of information technology. These are:[2]
•Project is partitioned into consecutive stages, with some cover and splash back adequate between
stages.
•Emphasis is on arranging, time plans, deadlines, spending plans and usage of a whole framework at
once.
•Tight control is kept up over the life of the task by means of broad composed documentation, formal
audits, and endorsement/signoff by the client and data innovation the executives happening toward the
finish of most stages before starting the following stage.
Prototyping
Software prototyping, is the development approach of exercises during software development, the
formation of models, i.e., deficient renditions of the software program being created.
•Not an independent, complete development methodology, yet rather a way to deal with taking care of
chosen portions of a bigger, increasingly conventional development methodology (for example
incremental, spiral, or rapid application development (RAD)).
•Attempts to diminish inalienable undertaking hazard by breaking a task into littler fragments and
giving more simplicity of-progress during the development procedure.
•User is included all through the development procedure, which improves the probability of client
acknowledgment of the last usage.
•Small-scale mock-ups of the framework are created following an iterative adjustment process until the
model develops to meet the clients' prerequisites.
•While most models are created with the desire that they will be disposed of, it is conceivable now and
again to develop from model to working framework.
•A essential comprehension of the central business issue is important to abstain from taking care of an
inappropriate issue.
INSTITUTE OF AERONAUTICAL ENGINEERING
(Autonomous)
DUNDIGAL – 500 043,HYDERABAD
Spiral development
Other practices
Other methodology rehearses include:
•Object-arranged development techniques, for example, Grady Booch's article situated plan (OOD),
otherwise called object-arranged examination and structure (OOAD). The Booch model incorporates six
graphs: class, object, state change, association, module, and process.
•Top-down programming: advanced during the 1970s by IBM scientist Harlan Mills (and Niklaus Wirth) in
created organized programming.
•Unified Process (UP) is an iterative software development methodology framework, in view of Unified
Modeling Language (UML). UP sorts out the development of software into four stages, each comprising of
at least one executable emphasess of the software at that phase of development: commencement,
elaboration, development, and rules. Numerous devices and items exist to encourage UP usage. One of the
more mainstream renditions of UP is the Rational Unified Process (RUP).
•Agile software development alludes to a gathering of software development procedures dependent on
iterative development, where necessities and arrangements advance by means of coordinated effort between
self-sorting out cross-practical groups. The term was begat in the year 2001 when the Agile Manifesto was
figured.
•Integrated software development alludes to a deliverable based software development framework utilizing
the three essential IT (anticipate the executives, software development, software testing) life cycles that can
be utilized utilizing different (iterative, waterfall, spiral, nimble) software development approaches, where
prerequisites and arrangements advance through coordinated effort between self-sorting out cross-practical
groups.
Explain which software model is suggested if the problem stated by the client have uncertainties
which lead to loss if it not planned and solved.
A) One of the basic notions of the software development process is SDLC models which stands for Software
Development Life Cycle models. SDLC – is a continuous process, which starts from the moment, when it’s
made a decision to launch the project, and it ends at the moment of its full remove from the
exploitation. There is no one single SDLC model. They are divided into main groups, each with its features
and weaknesses.
Evolving from the first and oldest “waterfall” SDLC model, their variety significantly expanded. The SDLC
models diversity is predetermined by the wide number of product types – starting with a web application
INSTITUTE OF AERONAUTICAL ENGINEERING
(Autonomous)
DUNDIGAL – 500 043,HYDERABAD
Waterfall model
Iterative model
Spiral model
V-shaped model
Agile model
No matter what type of the models has been chosen, each of them has basic stages which are used by
every software development company. Let’s explore those stages as this is important for the understanding
of the each of SDLC models and the differences between them.
Each software development life cycle model starts with the analysis, in which the stakeholders of the
process
discuss the requirements for the final product. The goal of this stage is the detailed definition of the system
requirements. Besides, it is needed to make sure that all the process participants have clearly understood the
tasks and how every requirement is going to be implemented. Often, the discussion involves the QA
specialists who can interfere the process with additions even during the development stage if it is necessary.
At the second phase of the software development life cycle, the developers are actually designing the
architecture. All the different technical questions that may appear on this stage are discussed by all the
stakeholders, including the customer. Also, here are defined the technologies used in the project, team load,
limitations, time frames, and budget. The most appropriate project decisions are made according to the
defined requirements.
After the requirements approved, the process goes to the next stage – actual development. Programmers
start here with the source code writing while keeping in mind previously defined requirements. The system
administrators adjust the software environment, front-end programmers develop the user interface of the
program and the logics for its interaction with the server.
The programming by itself assumes four stages
Algorithm development
Compilation
INSTITUTE OF AERONAUTICAL ENGINEERING
(Autonomous)
DUNDIGAL – 500 043,HYDERABAD
Stage 4. Testing
The testing phase includes the debugging process. All the code flaws missed during the development are
detected here, documented, and passed back to the developers to fix. The testing process repeats until all the
critical issues are removed and software workflow is stable.
Stage 5. Deployment
When the program is finalized and has no critical issues – it is time to launch it for the end users. After the
new program version release, the tech support team joins. This department provides user feedback; consult
and support users during the time of exploitation. Moreover, the update of selected components is included
in this phase, to make sure, that the software is up-to-date and is invulnerable to a security breach.
SDLC MODELS
Waterfall – is a cascade SDLC model, in which development process looks like the flow, moving step by
step through the phases of analysis, projecting, realization, testing, implementation, and support. This
SDLC model includes gradual execution of every stage completely. This process is strictly documented and
predefined with features expected to every phase of this software development life cycle model.
ADVANTAGES DISADVANTAGES
Simple to use and understand The software is ready only after the last stage is over
Management simplicity thanks to its rigidity: every phase High risks and uncertainty
has a defined result and process review
Development stages go one by one Not the best choice for complex and object-oriented projects
Perfect for the small or mid-sized projects where Inappropriate for the long-term projects
requirements are clear and not equivocal
Easy to determine the key points in the development cycle The progress of the stage is hard to measure while it is still in the
development
Easy to classify and prioritize tasks Integration is done at the very end, which does not give the option
of identifying the problem in advance
No ambiguous requirements
The Iterative SDLC model does not need the full list of requirements before the project starts. The
development process may start with the requirements to the functional part, which can be expanded later.
The process is repetitive, allowing to make new versions of the product for every cycle. Every iteration
(which last from two to six weeks) includes the development of a separate component of the system, and
after that, this component is added to the functional developed earlier. Speaking with math terminology, the
iterative model is a realization of the sequential approximation method; that means a gradual closeness to
the planned final product shape.
ADVANTAGES DISADVANTAGES
Some functions can be quickly developed at the Iterative model requires more resources than the waterfall model
beginning of the development lifecycle
The progress is easy measurable Issues with architecture or design may occur because not all the
requirements are foreseen during the short planning stage
The shorter iteration is - the easier testing and Bad choice for the small projects
debugging stages are
It is easier to control the risks as high-risk tasks are The process is difficult to manage
completed first
Problems and risks defined within one iteration can The risks may not be completely determined even at the final stage of the
be prevented in the next sprints project
Flexibility and readiness to the changes in the Risks analysis requires involvement of the highly-qualified specialists
requirements
The main task is predefined, but the details may advance with the time
Spiral model – is SDLC model, which combines architecture and prototyping by stages. It is a combination
of the Iterative and Waterfall SDLC models with the significant accent on the risk analysis. The main issue
of the spiral model – is defining the right moment to make a step into the next stage. The preliminary set
time frames are recommended as the solution to this issue. The shift to the next stage is done according to
the plan, even if the work on the previous stage isn’t done yet. The plan is introduced basing on the statistic
data, received during the previous projects even from the personal developer’s experience.
ADVANTAGES DISADVANTAGES
Lifecycle is divided into small parts, and if the risk concentration is higher, Can be quite expensive
the phase can be finished earlier to address the treats
The development process is precisely documented yet scalable to the changes The risk control demands involvement of the
highly-skilled professionals
The scalability allows to make changes and add new functionality even at the Can be ineffective for the small projects
relatively late stages
The earlier working prototype is done - sooner users can point out the flaws Big number of the intermediate stages requires
excessive documentation
The projects with mid or high-level risk, where it is important to prevent these risks
The new product that should be released in a few stages to have enough of clients feedback
V-shaped SDLC model is an expansion of classic waterfall model and it’s based on associated test stage for
the every development stage. This is a very strict model and the next stage is started only after the previous
phase. This is also called “Validation and verification” model. Every stage has the current process control,
to make sure that the conversion to the next stage is possible.
INSTITUTE OF AERONAUTICAL ENGINEERING
(Autonomous)
DUNDIGAL – 500 043,HYDERABAD
ADVANTAGES DISADVANTAGES
Every stage of V-shaped model has strict results so it’s easy to control Lack of the flexibility
Testing and verification take place in the early stages Bad choice for the small projects
Good for the small projects, where requirements are static and clear Relatively big risks
For the small and mid-sized projects, where requirements are strictly predefined
The engineers of the required qualification, especially testers, are within easy reach.
In the agile methodology after every development iteration, the customer is able to see the result and
understand if he is satisfied with it or he is not. This is one of the advantages of the agile software
development life cycle model. One of its disadvantages is that with the absence of defined requirements it is
difficult to estimate the resources and development cost. Extreme programming is one of the practical use
of the agile model. The basis of such model consists of short weekly meetings – Sprints which are the part
of the Scrum approach.
ADVANTAGES DISADVANTAGES
Corrections of functional requirements are implemented into the Difficulties with measuring the final cost because of
development process to provide the competitiveness permanent changes
Project is divided by short and transparent iterations The team should be highly professional and client-oriented
Risks are minimized thanks to the flexible change process New requirements may conflict with the existing
architecture
Fast release of the first product version With all the corrections and changes there is possibility that
the project will exceed expected time
Less price for the changes implemented because of the many iterations
INSTITUTE OF AERONAUTICAL ENGINEERING
(Autonomous)
DUNDIGAL – 500 043,HYDERABAD
Functional Requirements: These are the requirements that the end user specifically demands as basic
facilities that the system should offer. All these functionalities need to be necessarily incorporated into the
system as a part of the contract. These are represented or stated in the form of input to be given to the
system, the operation performed and the output expected. They are basically the requirements stated by the
user which one can see directly in the final product, unlike the non-functional requirements.
Non-functional requirements: These are basically the quality constraints that the system must satisfy
according to the project contract. The priority or extent to which these factors are implemented varies from
one project to other. They are also called non-behavioral requirements.
They basically deal with issues like:
Portability
Security
Maintainability
Reliability
Scalability
Performance
Reusability
Flexibility
Following are the differences between Functional and Non Functional Requirements
It specifies “What should the software system It places constraints on “How should the software
Helps you verify the functionality of the Helps you to verify the performance of the
INSTITUTE OF AERONAUTICAL ENGINEERING
(Autonomous)
DUNDIGAL – 500 043,HYDERABAD
software. software.
Functional Testing like System, Integration, Non-Functional Testing like Performance, Stress,
End to End, API testing, etc is done. Usability, Security testing, etc are done.
Example Example
functions
1. Errors should be color coded such as green for grammar and red for spelling.
2. The user should be able to correct all mistakes at once.
3. When correcting, there should be an explanation or definition that pops up with the
suggestions.
4. The user should be able to ignore errors.
5. The user should be able to turn on auto correct which will correct as the user types.
An abstraction is a tool that enables a designer to consider a component at an abstract level without
bothering about the internal details of the implementation. Abstraction can be used for existing element as
well as the component being designed.
1. Functional Abstraction
2. Data Abstraction
Functional Abstraction
i. A module is specified by the method it performs.
ii. The details of the algorithm to accomplish the functions are not visible to the user of the function.
Data Abstraction
Details of the data elements are not visible to the users of data. Data Abstraction forms the basis for Object
Oriented design approaches.
Modularity
Modularity specifies to the division of software into separate modules which are differently named and
addressed and are integrated later on in to obtain the completely functional software. It is the only property
that allows a program to be intellectually manageable. Single large programs are difficult to understand and
read due to a large number of reference variables, control paths, global variables, etc.
o Each module is a well-defined system that can be used with other applications.
o Each module has single specified objectives.
o Modules can be separately compiled and saved in the library.
o Modules should be easier to use than to build.
o Modules are simpler from outside than inside.
Advantages of Modularity
Disadvantages of Modularity
Modular Design
Modular design reduces the design complexity and results in easier and faster implementation by allowing
parallel development of various parts of a system. We discuss a different section of modular design in detail
in this section:
2. Information hiding: The fundamental of Information hiding suggests that modules can be characterized
by the design decisions that protect from the others, i.e., In other words, modules should be specified that
data include within a module is inaccessible to other modules that do not need for such information.
The use of information hiding as design criteria for modular system provides the most significant benefits
when modifications are required during testing's and later during software maintenance. This is because as
most data and procedures are hidden from other parts of the software, inadvertent errors introduced during
modifications are less likely to propagate to different locations within the software .
Explain briefly about the design process and also explain its characteristics.
INSTITUTE OF AERONAUTICAL ENGINEERING
(Autonomous)
DUNDIGAL – 500 043,HYDERABAD
Engineers do not always follow the engineering design process steps in order, one after another. It is very
common to design something, test it, find a problem, and then go back to an earlier step to make a
modification or change to your design. This way of working is called iteration, and it is likely that your
process will do the same!
The engineering design process starts when you ask the following questions about problems that you
observe:
Learn from the experiences of others — this can help you find out about existing solutions to similar
problems, and avoid mistakes that were made in the past. So, for an engineering design project, do
background research in two major areas:
Users or customers
Existing solutions
3. Specify Requirements
Design requirements state the important characteristics that your solution must meet to succeed. One of the
best ways to identify the design requirements for your solution is to analyze the concrete example of a
similar, existing product, noting each of its key features.
4. Brainstorm Solutions
There are always many good possibilities for solving design problems. If you focus on just one before
looking at the alternatives, it is almost certain that you are overlooking a better solution. Good designers try
to generate as many possible solutions as they can.
Look at whether each possible solution meets your design requirements. Some solutions probably meet
more requirements than others. Reject solutions that do not meet the requirements.
Development involves the refinement and improvement of a solution, and it continues throughout the
design process, often even after a product ships to customers.
7. Build a Prototype
A prototype is an operating version of a solution. Often it is made with different materials than the final
version, and generally it is not as polished. Prototypes are a key step in the development of a final solution,
allowing the designer to test how the solution will work.
The design process involves multiple iterations and redesigns of your final solution. You will likely test
your solution, find new problems, make changes, and test new solutions before settling on a final design.
9. Communicate Results
To complete your project, communicate your results to others in a final report and/or a display board.
Professional engineers always do the same, thoroughly documenting their solutions so that they can be
manufactured and supported
Explain the integration testing process and system testing process and discuss their outcomes
INSTITUTE OF AERONAUTICAL ENGINEERING
(Autonomous)
DUNDIGAL – 500 043,HYDERABAD
System Testing is a type of software testing that is performed on a complete integrated system to evaluate
the compliance of the system with the corresponding requirements.
In system testing, integration testing passed components is taken as input. The goal of integration testing is
to detect any irregularity between the units that are integrated together. System testing detects defects within
both the integrated units and the whole system. The result of system testing is the observed behavior of a
component or a system when it is tested.
System Testing is carried out on the whole system in the context of either system requirement
specifications or functional requirement specifications or in the context of both. System testing tests the
design and behavior of the system and also the expectations of the customer. It is performed to test the
system beyond the bounds mentioned in the software requirements specification (SRS).
System Testing is basically performed by a testing team that is independent of the development team that
helps to test the quality of the system impartial. It has both functional and non-functional testing.
System Testing is performed after the integration testing and before the acceptance testing.
Performance Testing:
Performance Testing is a type of software testing that is carried out to test the speed, scalability, stability
and reliability of the software product or application.
Load Testing:
Load Testing is a type of software testing which is carried out to determine the behavior of a system or
software product under extreme load.
Stress Testing:
Stress Testing is a type of software testing performed to check the robustness of the system under the
varying loads.
Scalability Testing:
Scalability Testing is a type of software testing which is carried out to check the performance of a
software application or system in terms of its capability to scale up or scale down the number of user
request load
Discuss software failures and faults? What are test coverage criteria, testing issues
A) What is a Failure?
Under certain circumstances, the product may produce wrong results. It is defined as the deviation of the
delivered service from compliance with the specification.
Not all the defects result in failure as defects in dead code do not cause failure.
INSTITUTE OF AERONAUTICAL ENGINEERING
(Autonomous)
DUNDIGAL – 500 043,HYDERABAD
Results of Failure
Loss of Time
Loss of Money
Loss of Business Reputation.
Injury
Death
What is a Fault?
Software fault is also known as defect, arises when the expected result don't match with the actual results. It
can also be error, flaw, failure, or fault in a computer program. Most bugs arise from mistakes and errors
made by developers, architects.
Fault Types
Following are the fault types associated with any:
Business Logic Faults
Functional and Logical Faults
Faulty GUI
Performance Faults
Security Faults
Preventing Faults
Following are the methods for preventing programmers from introducing Faulty code during development:
Programming Techniques adopted
Software Development methodologies
INSTITUTE OF AERONAUTICAL ENGINEERING
(Autonomous)
DUNDIGAL – 500 043,HYDERABAD
You can identify gaps in requirements, test cases and defects at an early level and code level.
You can prevent defect leakage using Test coverage analysis.
Test coverage also helps in Regression testing, test case prioritization, test suite augmentation and test
suite minimization.
Test Coverage Techniques
Statement Coverage
Statement coverage ensures that all the statements in the source code have been tested at least once. It provides
the details of both executed and failed code blocks out of total code blocks.
Let’s understand it with the example of the flow diagram. In the given example, this path 1A-2C-3D-E-4G-5H
covers all the statements and hence it requires only on a test case to cover all the requirements. One test case
means one statement coverage.
In complex code, a single path is not sufficient to cover all the statements. In that case, you need to write multiple
test cases to cover all the statements.
Advantages:
It can be applied directly to object code and does not require processing source code.
It verifies what the written code is expected to do and not to do
Disadvantages:
It covers only true conditions of every statement.
Does not report when loop reaches to the terminations.
Statement coverage is completely insensitive to the logical operators (|| and &&)
Software testing issues:
INSTITUTE OF AERONAUTICAL ENGINEERING
(Autonomous)
DUNDIGAL – 500 043,HYDERABAD
Reactive risk management is often compared to a firefighting scenario. The reactive risk management kicks into
action once an accident happens, or problems are identified after the audit. The accident is investigated, and
measures are taken to avoid similar events happening in the future. Further, measures will be taken to reduce the
negative impact the incident could cause on business profitability and sustainability.
Reactive risk management catalogues all previous accidents and documents them to find the errors which lead to the
accident. Preventive measures are recommended and implemented via the reactive risk management method.
This is the earlier model of risk management. Reactive risk management can cause serious delays in a workplace due
to the unpreparedness for new accidents. The unpreparedness makes the resolving process complex as the cause of
accident needs investigation and solution involve high cost, plus extensive modification.
Contrary to reactive risk management, proactive risk management seeks to identify all relevant risks earlier,
before an incident occurs. The present organization has to deal with an era of rapid environmental change that is
caused by technological advancements, deregulation, fierce competition, and increasing public concern. So, a risk
management which relies on past incidents is not a good choice for any organization. Therefore, new thinking in risk
management was necessary, which paved the way for proactive risk management.
Proactive risk management can be defined as “Adaptive, closed loop feedback control strategy based on
measurement, observation of the present safety level and planned explicit target safety level with a creative
intellectuality”. The definition relates to the flexibility and creative intellectual power of humans who have a high
sense of safety concern. Though, humans are the source of error, they can also be a very important safety source as
per proactive risk management. Further, the closed loop strategy refers to setting up of boundaries to operate within.
These boundaries are considered to have safe performance level.
Accidental analysis is part of the proactive risk management, with which accident scenarios are built and the key
employees and stakeholders who may create the error for an accident, are identified. So, past accidents are important
Now, we will look at the differences between the two risk management approaches.
Reactive: “A response based risk management approach, which is dependent on accident evaluation and audit
based findings.”
INSTITUTE OF AERONAUTICAL ENGINEERING
(Autonomous)
DUNDIGAL – 500 043,HYDERABAD
Reactive risk management: Reactive risk management attempts to reduce the tendency of the same or similar
accidents which happened in past being repeated in future.
Proactive risk management: Proactive risk management attempts to reduce the tendency of any accident happening
in future by identifying the boundaries of activities, where a breach of the boundary can lead to an accident.
Timeframe
Reactive risk management: Reactive risk management solely depends on past accidental analysis and response.
Proactive risk management: Proactive risk management combines a mixed method of past, present and future
prediction before finding solutions to avoid risks.
Flexibility
Reactive risk management: Reactive risk management does not accommodate prediction, creativity, and problem-
solving ability of humans in its approach which makes it less flexible to changes and challenges.
Your project probably has software configuration management (SCM) in place. If designed well, SCM is a major
component of software change management. All too often, however, SCM is an add-on process, focused primarily
on capturing the software’s significant versions for future reference. In the worst cases, SCM functions as a
specialized backup procedure. If SCM is left at this low level, the unfortunate project manager can only watch the
changes as they happen, preach against making bad changes, and hope the software evolves into what it should be.
Of course, evolution is difficult to predict and schedule.
Software change management is the process of selecting which changes to encourage, which to allow, and which to
prevent, according to project criteria such as schedule and cost. The process identifies the changes’ origin, defines
critical project decision points, and establishes project roles and responsibilities. The necessary process components
and their relationships are shown in Figure 1. You need to define a change management process and policy within
your company’s business structure and your team’s development process. Change management is not an isolated
process. The project team must be clear on what, when, how, and why to carry it out.
INSTITUTE OF AERONAUTICAL ENGINEERING
(Autonomous)
DUNDIGAL – 500 043,HYDERABAD
The relationship between change tracking and SCM is at the heart of change management. SCM standards
commonly define change control as a subordinated task after configuration identification. This has led some
developers to see SCM as a way to prevent changes rather than facilitate them. By emphasizing the change tracking
and SCM relationship, change management focuses on selecting and making the correct changes as efficiently as
possible. In this context, SCM addresses versions, workspaces, builds, and releases.
A change data repository supports any change management process. When tracking changes, developers, testers, and
possibly users enter data on new change items and maintain their status. SCM draws on the change data to document
the versions and releases, also stored in a repository, and updates the data store to link changes to their
implementation.
Software change management is an integral part of project management. The only way for developers to accomplish
their project goals is to change their software. Change management directs and coordinates these changes.
A variety of issues drive software changes. Understanding the origins of prospective changes is the first step in
prioritizing them. The sources of change can be classified as planned development, unexpected problems, or
enhancements.
Planned Software Development. Ideally, all software change would result from your required and planned
development effort, driven by requirements and specifications, and documented in your design. However, adding
new code is a change you must manage. Adding functions that were not requested (no matter how useful and clever)
consumes project resources and increases the risk of errors downstream. Even requested features may range in
priority from “mandatory” to “nice to have.” Monitoring the cost to implement each request identifies features that
adversely affect the project’s cost-to-benefit ratio.
Unexpected Problems. You will undoubtedly discover problems during any development effort and spend resources
to resolve them. The effort expended and the effort’s timing need to be proportional to the problem—small bugs
should not consume your project budget.
The team must determine whether the code fails to implement the design properly or whether the design or
requirements are flawed. In the latter case, you should be sure to correct design or requirements errors. Integrated
change management toolsets, which I’ll discuss later in the article, can make the process seamless: change to a code
file can prompt the developer to update the corresponding documentation files. The investment in documentation
updates will be recovered many times over when the software is maintained later.
Enhancements. All software projects are a research and development effort to some extent, so you will receive
enhancement ideas. Here is where project management is most significant: the idea could be a brilliant shortcut to
INSTITUTE OF AERONAUTICAL ENGINEERING
(Autonomous)
DUNDIGAL – 500 043,HYDERABAD
You should address changes when they are only potential changes, before they’ve consumed project resources. Like
any project task, changes follow a life cycle, or change process, that you must track. In fact, three critical decision
points, as shown in Figure 2, drive any change process. These decision points form the framework of change
management.
After testing, you must still review the change to ensure it won’t negatively
affect other parts of the application. For example, the developer may have
changed a correct user prompt to match the incorrect software logic. If the testing indicates a risk of further
problems, you might want to reject the change request even at this point.
Rejected or Postponed Requests. At any of the decision points, you can decide whether to reject or postpone the
change request. In this case, retain the change request and all associated documentation. This is important because if
the idea comes up again, you need to know why you decided against it before. And, if circumstances change, you
may want to move ahead with the change with as little rework as possible.
Emergency Processing. If a problem has shut down testing—or worse, a production system—you may not have
time for a full analysis and formal decision. The change management process should include an emergency path
distinct from the flow shown in Figure 2, with shortened analysis and streamlined approval. Focus this process on an
immediate resolution, whether a code “hack” or a work-around, that eliminates the shutdown. You can update the
change request to document the quick fix and change it to a lower priority. By leaving the change request open, you
won’t omit the full analysis and resolution, but you can properly schedule and manage these activities. Alternately,
you can close the emergency change request when the fix is in place, and create a new change request to drive a
complete resolution.
INSTITUTE OF AERONAUTICAL ENGINEERING
(Autonomous)
DUNDIGAL – 500 043,HYDERABAD
The change management process requires several decision-makers at the various decision points. Your change
management process should address the following questions:
• Who will make the decision? Ultimately, the project manager is responsible for these decisions, but you can
delegate some of them to other project leaders.
• Who must give input for the decision? Who can give input?
• Who will perform the analysis, implementation, and testing? This can be specified generally, although each issue
may require particular contributors.
• Who must be notified once the decision is made? When, how, and in how much detail will the notice be given?
• Who will administer and enforce the procedures? Often this becomes a task for SCM or the release manager, since
it directly impacts their efforts.
You don’t need to handle all issues at all project stages the same way. Think of the project as consisting of
concentric worlds starting with the development team, expanding to the test team, the quality team, and finally the
customer or user. As your team makes requirements, design, and software available to wider circles, you need to
include these circles in change decisions. For example, accepting a change to a code module will require retesting the
module. You must notify the test team, who should at least have a say in the scheduling. The standard SCM
baselines represent an agreement between the customer and the project team about the product: initially the
requirements, then the design, and finally the product itself. The customer must approve any change to the agreed-
upon items. The change management process helps you maintain good faith with the customer and good
communication between project members.
Because of the volume of data involved, you often need tool support to manage software change. As with any type of
tool, you should get the right tool for your job. Your process should drive the tool; don’t expect the tool to solve the
problems alone. Unfortunately, you often don’t know what process you want until you’ve tried using the wrong tool.
Keep in mind that if you’re producing software now, you have at least one process already at work. Identifying the
best current process and the problems with it are the first steps to defining a better process.
A successful system coordinates people, process, and technology. Once you define the process and tools, ensure that
your team is trained and motivated to use them. The best tool is worthless if it is not used properly, whether from
lack of skill or resentment over being forced to use it. Process and tool training should make the tool’s benefits clear
to your team.
Change management’s most important components are an SCM tool and a problem-report and change-request
tracking tool. Increasingly, change management toolsets integrate with one another and with development tools such
as requirements or test case tracing. For example, you can link a new version directly to the change request it
implements and to tests completed against it.
At the simple and inexpensive end of the tool scale are SCCS (part of most UNIX systems) and RCS, which define
the basics of version control. Various systems build on these, including CVS and Sun’s TeamWare, adding functions
such as workspace management, graphical user interface, and (nearly) automatic merging. In the midrange are
products such as Microsoft’s SourceSafe, Merant’s PVCS, MKS Source Integrity, and Continuus/CM, which
INSTITUTE OF AERONAUTICAL ENGINEERING
(Autonomous)
DUNDIGAL – 500 043,HYDERABAD
SCM Tools
SCM tools range from simple version engines, like SCCS, to sophisticated environments, like Rational’s ClearCase,
that provide for all SCM functions. Generally, the most significant selection factor is the complexity of your
development plan: how much parallel work the tool must support and how many versions it must track. If your
project involves changing the same code in two different ways simultaneously (for example, maintaining the
production version while developing the next release), carefully review how the tool handles branches and merges.
Most tools lock files while they are being updated; if simultaneous change is your norm, look for tools that provide
either a change-and-merge or a change-set process model. Performance and scalability are also issues for large
projects. The larger the number of files in your project, the more you need features like directory archival and logical
links between artifacts. These links that let code updates prompt the developer to update documentation. With a large
project team, you need triggers to automate notification and other coordinated actions.
You should go into demos with a sketch of how your development process works, especially if you’re considering a
significant tool expenditure. This lets you ask specifically how the tool could handle your needs. The tool budget will
need to include the effort to define and document procedures, write scripts and integration artifacts, and train the
team. If the tool is new to your organization, verify that the vendor can support your implementation or recommend a
consultant who can.
The key to a good issue tracking system is the ability to tailor it to your process and standards. Every project tends to
want different report fields, called by different names, taking different values. Too much variation from these
expectations cause even a good tracking tool to seem counterintuitive and frustrating. If your team doesn’t like to use
the tool, you won’t get the complete tracking that you need. If you currently have a tracking system (even paper-
based), use it as a pattern for what you want. If you’re starting from scratch, think through the change process and
ask what information the participants need.
As with other tools, estimate the volume of data the tool needs to handle and verify that it will perform at that level.
Consider how many individuals need to use the tool at one time and whether you need strict controls over who can
change various parts of the data. If you conduct your reviews in meetings, report generation will be a significant part
of tool use. For an electronic approval cycle, the e-mail interface is vital. Increasingly, tools are providing a web
interface to simplify distributed use.
Change management lets you control software evolution and provides the basis for metrics and process
improvement. Data collected under a consistent process supports estimating and planning, reducing risk, and making
development more predicable. In the long run, managed change reduces the time to market, improves quality, and
increases customer satisfaction. By understanding the origins of change, the critical decision points, and the roles in
the decision process, you will gain enough control to manage, rather than just watch, software
INSTITUTE OF AERONAUTICAL ENGINEERING
(Autonomous)
DUNDIGAL – 500 043,HYDERABAD