|
Showing 1 - 5 of
5 matches in All Departments
Engineering tasks are supposed to achieve defined goals under
certain project constraints. Example goals of software engineering
tasks include achieving a certain functionality together with some
level of reliability or performance. Example constraints of
software engineering tasks include budget and time limitations or
experience limitations of the developers at hand. Planning of an
engineering project requires the selection of techniques, methods
and tools suited to achieve stated goals under given project
constraints. This assumes sufficient knowledge regarding the
process-product relationships (or effects) of candidate techniques,
methods and tools. Planning of software projects suffers greatly
from lack of knowledge regarding the process-product relationships
of candidate techniques, methods and tools. Especially in the area
of testing a project planner is confronted with an abundance of
testing techniques, but very little knowledge regarding their
effects under varying project conditions. This book offers a novel
approach to addressing this problem: First, based on a
comprehensive initial characterization scheme (see chapter 7) an
overview of existing testing techniques and their effects under
varying conditions is provided to guide the selection of testing
approaches. Second, the optimisation of this knowledge base is
suggested based on experience from experts, real projects and
scientific experiments (chapters 8, 9, and 10). This book is of
equal interest to practitioners, researchers and students.
Practitioners interested in identifying ways to organize their
company-specific knowledge about testing could start with the
schema provided in this book, and optimise it further by applying
similar strategies as offered in chapters 8 and 9.
Program understanding plays an important role in nearly all
software related tasks. It is vital to the development, maintenance
and reuse activities. Program understanding is indispensable for
improving the quality of software development. Several development
activities such as code reviews, debugging and some testing
approaches require programmers to read and understand programs.
Maintenance activities cannot be performed without a deep and
correct understanding of the component to be maintained. Program
understanding is vital to the reuse of code components because they
cannot be utilized without a clear understanding of what they do.
If a candidate reusable component needs to be modified, an
understanding how it is designed is also required. of This
monograph presents a* knowledge-based approach to the automation of
program understanding. This approach generates rigorous program
documentation mechanically by combining and building on strengths
of a practical program decomposition method, the axiomatic
correctness notation, and the knowledge based analysis approaches.
More specifically, this approach documents programs by generating
first order predicate logic annotations of their loops. In this
approach, loops are classified according to their complexity
levels. Based on this taxonomy, variations on the basic analysis
approach that best fit each of the different classes are described.
In general, mechanical annotation of loops is performed by first
decomposing them using data flow analysis. This decomposition
encapsulates interdependent statements in events, which can be
analyzed individually.
Engineering tasks are supposed to achieve defined goals under
certain project constraints. Example goals of software engineering
tasks include achieving a certain functionality together with some
level of reliability or performance. Example constraints of
software engineering tasks include budget and time limitations or
experience limitations of the developers at hand. Planning of an
engineering project requires the selection of techniques, methods
and tools suited to achieve stated goals under given project
constraints. This assumes sufficient knowledge regarding the
process-product relationships (or effects) of candidate techniques,
methods and tools. Planning of software projects suffers greatly
from lack of knowledge regarding the process-product relationships
of candidate techniques, methods and tools. Especially in the area
of testing a project planner is confronted with an abundance of
testing techniques, but very little knowledge regarding their
effects under varying project conditions. This book offers a novel
approach to addressing this problem: First, based on a
comprehensive initial characterization scheme (see chapter 7) an
overview of existing testing techniques and their effects under
varying conditions is provided to guide the selection of testing
approaches. Second, the optimisation of this knowledge base is
suggested based on experience from experts, real projects and
scientific experiments (chapters 8, 9, and 10). This book is of
equal interest to practitioners, researchers and students.
Practitioners interested in identifying ways to organize their
company-specific knowledge about testing could start with the
schema provided in this book, and optimise it further by applying
similar strategies as offered in chapters 8 and 9.
Program understanding plays an important role in nearly all
software related tasks. It is vital to the development, maintenance
and reuse activities. Program understanding is indispensable for
improving the quality of software development. Several development
activities such as code reviews, debugging and some testing
approaches require programmers to read and understand programs.
Maintenance activities cannot be performed without a deep and
correct understanding of the component to be maintained. Program
understanding is vital to the reuse of code components because they
cannot be utilized without a clear understanding of what they do.
If a candidate reusable component needs to be modified, an
understanding how it is designed is also required. of This
monograph presents a. knowledge-based approach to the automation of
program understanding. This approach generates rigorous program
documentation mechanically by combining and building on strengths
of a practical program decomposition method, the axiomatic
correctness notation, and the knowledge based analysis approaches.
More specifically, this approach documents programs by generating
first order predicate logic annotations of their loops. In this
approach, loops are classified according to their complexity
levels. Based on this taxonomy, variations on the basic analysis
approach that best fit each of the different classes are described.
In general, mechanical annotation of loops is performed by first
decomposing them using data flow analysis. This decomposition
encapsulates interdependent statements in events, which can be
analyzed individually."
We have only begun to understand the experimental nature of
software engineering, the role of empirical studies and measurement
within software engineering, and the mechanisms needed to apply
them successfully. This volume presents the proceedings of a
workshop whose purpose was to gather those members of the software
engineering community who support an engineering approach based
upon empirical studies to provide an interchange of ideas and
paradigms for research. The papers in the volume are grouped into
six parts corresponding to the workshop sessions: The experimental
paradigm in software engineering; Objectives and context of
measurement/experimentation; Procedures and mechanisms for
measurement/experimentation; Measurement-based modeling; packaging
for reuse/reuse of models; and technology transfer, teaching and
training. Each part opens with a keynote paper and ends with a
discussion summary. The workshop served as an important event in
continuing to strengthen empirical software engineering as a major
subdiscipline ofsoftware engineering. The deep interactions and
important accomplishments from the meeting documented in these
proceedings have helped identify key issues in moving software
engineering as a whole towards a true engineering discipline.
|
|