Professional Documents
Culture Documents
Problem Definition in Different Terms
Problem Definition in Different Terms
of
.how.they.are.applied.to.design.problems?
1|Page
practical engineering problems. In these cases, heuristics provide a realistic approach for
finding good approximations of the solution. In some cases, heuristics can lead to optimal
solutions; in others, they can lead to solutions that are far from optimal or no solution at all.
Algorithms and heuristics are both used heavily in the design of engineering systems and
determining their appropriateness for solving particular problems is essential to meeting
other project demands.
2. Explain why it is essential that every version of a component should be uniquely
identified. Comment on the problems of using a version identification scheme that is
simply based on version numbers?
Ans). The signature on the source code file is a checksum calculated from data in the
file. A checksum function calculates a unique number using the source text as input. If
you change the source code (even by one character), this will generate a different
checksum. You can therefore be confident that source code files with different
checksums are actually different. The checksum is assigned to the source code just before
compilation and uniquely identifies the source file. The build system then tags the
generated object code file with the checksum signature. If there is no object code file with
the same signature as the source code file to be included in a system, then recompilation
of the source code is necessary.
Version Identification: -
Version and release identification Managed versions are assigned identifiers when they
are submitted to the system. These identifiers are usually based on the name of the
configuration item (e.g., ButtonManager), followed by one or more numbers. So
ButtonManager 1.3 means the third version in code line 1 of the ButtonManager
component. Some CM systems also allow the association of attributes with versions (e.g.,
mobile, small screen), which can also be used for version identification. A consistent
identification system is important because it simplifies the problem of defining
configurations. It makes it simpler to use shorthand references (e.g., *.V2 meaning
version 2 of all components). The checksum approach has the advantage of allowing
many different versions of the object code of a component to be maintained at the same
time. The signature rather than the file name is the link between source and object code.
The source code and object code files have the same signature. Therefore, when you
recompile a component, it does not overwrite the object code, as would normally be the
case when the timestamp is used. Rather, it generates a new object code file and tags it
with the source code signature. Parallel compilation is possible and different versions of a
component may be compiled at the same time.
2|Page
complexity of today’s systems has created a set of particular challenges that makes it hard
for software engineers to meet the continuous customer demand for higher software
quality. These challenges have prompted software engineers to pay closer attention to the
design process to better understand, apply, and promulgate well known design principles,
processes, and professional practices to overcome these challenges. Some of the major
challenges include requirements volatility, design process, quality issues (e.g.,
performance, usability, security), distributed software development, efficient allocation of
human resources to development tasks, limited budgets, unreasonable expectations and
schedules, fast-changing technology, and accurate transformation from software
requirement to a software product.
4. Imagine a situation where two developers are simultaneously modifying three different
software components. What difficulties might arise when they try to merge the changes
that they have made?
Ans). There is the usual problem where developers each make changes to the same
component and these changes are, in some way, incompatible. However, where several
components are being changed at the same time, the problems are exacerbated because
there may be dependencies between the components that are affected by the changes. For
example, say developer A checks out components X and Y and decides to implement a
change by changing Y, which depends on a particular feature of X. Developer A Checks
X and Y back in with no changes recorded as being made to X. Developer B also is
working on X and Y and changes both X and Y. However, the changes made to X mean
that the assumptions made by Developer A no longer hold. However, incompatibility is
not detected as there has only been a single change made to component X. With more
than 2 components, the problem becomes even worse because of the chains of
dependencies that can be introduced. These can be very difficult or impossible to detect
automatically.
5. Suggest five possible problems that could arise if a company does not develop effective
configuration management policies and processes.
Ans).
1. New versions of software systems cannot be created effectively as they change.
Developers cannot keep track of the changes to the software.
2. Controlling the costs and effort involved in making changes to a system is difficult.
3. Wrong version of a system may be delivered to the customers or forget where the
software source code for a particular version of the system or component is stored
4. If someone leaves the company, protecting investments in software and the ability to
reproduce a build with the correct components or continue development on a project is
difficult.
5. Ineffective quality management process because configuration management may be
seen as part of a more general quality management process.
3|Page
4|Page