Formal Specification Techniques for Engineering Modular C Programs


Book Description

Software is difficult to develop, maintain, and reuse. Two factors that contribute to this difficulty are the lack of modular design and good program documentation. The first makes software changes more difficult to implement. The second makes programs more difficult to understand and to maintain. Formal Specification Techniques for Engineering Modular C Programs describes a novel approach to promoting program modularity. The book presents a formal specification language that promotes software modularity through the use of abstract data types, even though the underlying programming language may not have such support. This language is structured to allow useful information to be extracted from a specification, which is then used to perform consistency checks between the specification and its implementation. Formal Specification Techniques for Engineering Modular C Programs also describes a specification-driven, software re-engineering process model for improving existing programs. The aim of this process is to make existing programs easier to maintain and reuse while keeping their essential functionalities unchanged. Audience: Suitable as a secondary text for graduate level courses in software engineering, and as a reference for researchers and practitioners in industry.




Formal Specification Techniques for Engineering Modular C Programs


Book Description

Begins a series for software engineers discussing current research topics and their applications, updated versions of ideas and notations, and authoritative references on specialized topics. Describes a new approach to making software more modular and so easier to change. Presents a formal specification language that promotes modularity through the use of abstract data types even though the underlying programming language does not have such support. The language allows useful information to be extracted from a specification and used to perform some consistency checks between the specification and its implementation. A reference for researchers and practitioners and a secondary text for a graduate course in software engineering. Based on Tan's 1994 doctoral thesis for MIT. Annotation copyright by Book News, Inc., Portland, OR




Formal Specification Techniques for Engineering Modular C Programs


Book Description

Software is difficult to develop, maintain, and reuse. Two factors that contribute to this difficulty are the lack of modular design and good program documentation. The first makes software changes more difficult to implement. The second makes programs more difficult to understand and to maintain. Formal Specification Techniques for Engineering Modular C Programs describes a novel approach to promoting program modularity. The book presents a formal specification language that promotes software modularity through the use of abstract data types, even though the underlying programming language may not have such support. This language is structured to allow useful information to be extracted from a specification, which is then used to perform consistency checks between the specification and its implementation. Formal Specification Techniques for Engineering Modular C Programs also describes a specification-driven, software re-engineering process model for improving existing programs. The aim of this process is to make existing programs easier to maintain and reuse while keeping their essential functionalities unchanged. Audience: Suitable as a secondary text for graduate level courses in software engineering, and as a reference for researchers and practitioners in industry.




Identifying Relevant Information for Testing Technique Selection


Book Description

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.




Multimedia Software Engineering


Book Description

Multimedia has two fundamental characteristics that can be expressed by the following formula: Multimedia = Multiple Media + Hypermedia. How can software engineering take advantage of these two characteristics? Will these two characteristics pose problems in multimedia systems design? These are some of the issues to be explored in this book. The first two chapters will be of interest to managers, software engineers, programmers, and people interested in gaining an overall understanding of multimedia software engineering. The next six chapters present multimedia software engineering according to the conceptual framework introduced in Chapter One. This is of particular use to practitioners, system developers, multimedia application designers, programmers, and people interested in prototyping multimedia applications. The next three chapters are more research-oriented and are mainly intended for researchers working on the specification, modeling, and analysis of distributed multimedia systems, but will also be relevant to scientists, researchers, and software engineers interested in the systems and theoretical aspects of multimedia software engineering. Multimedia Software Engineering can be used as a textbook in a graduate course on multimedia software engineering or in an undergraduate course on software design where the emphasis is on multimedia applications. It is especially suitable for a project-oriented course.




Experimentation in Software Engineering


Book Description

It is my belief that software engineers not only need to know software engineering methods and processes, but that they also should know how to assess them. Conse quently, I have taught principles of experimentation and empirical studies as part of the software engineering curriculum. Until now, this meant selecting a text from another discipline, usually psychology, and augmenting it with journal or confer ence papers that provide students with software engineering examples of experi ments and empirical studies. This book fills an important gap in the software engineering literature: it pro vides a concise, comprehensive look at an important aspect of software engineer ing: experimental analysis of how well software engineering methods, methodologies, and processes work. Since all of these change so rapidly in our field, it is important to know how to evaluate new ones. This book teaches how to go about doing this and thus is valuable not only for the software engineering stu dent, but also for the practicing software engineering professional who will be able to • Evaluate software engineering techniques. • Determine the value (or lack thereof) of claims made about a software engineer ing method or process in published studies. Finally, this book serves as a valuable resource for the software engineering researcher.




Software Process Modeling


Book Description

This book brings together experts to discuss relevant results in software process modeling, and expresses their personal view of this field. It is designed for a professional audience of researchers and practitioners in industry, and graduate-level students.




Process Improvement in Practice


Book Description

Faster, better and cheaper are challenges that IT-companies face every day. The customer's expectations shall be met in a world where constant change in environment, organization and technology are the rule rather that the exception. A solution for meeting these challenges is to share knowledge and experience - use the company's own experience, and the experience of other companies. Process Improvement in Practice - A Handbook for IT Companies tackles the problems involved in launching these solutions. Process Improvement in Practice - A Handbook for IT Companies is designed for small IT companies who wish to start with systematic improvement. The methods and techniques in this handbook are tried in practice, and have proven to be easy to use and scalable for local needs. Managers and developers will discover useful tips to initiate improvement work efficiently. This practical handbook is based on the authors' improvement work in a range of companies since the mid-nineties. Process Improvement in Practice - A Handbook for IT Companies is designed for a professional audience, composed of researchers and practitioners in industry. This book is also suitable for graduate-level students in software process improvement and software engineering.




Non-Functional Requirements in Software Engineering


Book Description

Non-Functional Requirements in Software Engineering presents a systematic and pragmatic approach to `building quality into' software systems. Systems must exhibit software quality attributes, such as accuracy, performance, security and modifiability. However, such non-functional requirements (NFRs) are difficult to address in many projects, even though there are many techniques to meet functional requirements in order to provide desired functionality. This is particularly true since the NFRs for each system typically interact with each other, have a broad impact on the system and may be subjective. To enable developers to systematically deal with a system's diverse NFRs, this book presents the NFR Framework. Structured graphical facilities are offered for stating NFRs and managing them by refining and inter-relating NFRs, justifying decisions, and determining their impact. Since NFRs might not be absolutely achieved, they may simply be satisfied sufficiently (`satisficed'). To reflect this, NFRs are represented as `softgoals', whose interdependencies, such as tradeoffs and synergy, are captured in graphs. The impact of decisions is qualitatively propagated through the graph to determine how well a chosen target system satisfices its NFRs. Throughout development, developers direct the process, using their expertise while being aided by catalogues of knowledge about NFRs, development techniques and tradeoffs, which can all be explored, reused and customized. Non-Functional Requirements in Software Engineering demonstrates the applicability of the NFR Framework to a variety of NFRs, domains, system characteristics and application areas. This will help readers apply the Framework to NFRs and domains of particular interest to them. Detailed treatments of particular NFRs - accuracy, security and performance requirements - along with treatments of NFRs for information systems are presented as specializations of the NFR Framework. Case studies of NFRs for a variety of information systems include credit card and administrative systems. The use of the Framework for particular application areas is illustrated for software architecture as well as enterprise modelling. Feedback from domain experts in industry and government provides an initial evaluation of the Framework and some case studies. Drawing on research results from several theses and refereed papers, this book's presentation, terminology and graphical notation have been integrated and illustrated with many figures. Non-Functional Requirements in Software Engineering is an excellent resource for software engineering practitioners, researchers and students.




Software Defect and Operational Profile Modeling


Book Description

also in: THE KLUWER INTERNATIONAL SERIES ON ASIAN STUDIES IN COMPUTER AND INFORMATION SCIENCE, Volume 1