{"title":"Formal Methods","authors":"M. Hinchey, Jonathan P. Bowen, Emil Vassev","doi":"10.1081/E-ESE-120044313","DOIUrl":"https://doi.org/10.1081/E-ESE-120044313","url":null,"abstract":"P reducing correct, reliable software in systems of ever increasing complexity is a problem with no immediate end in sight. The software industry suffers from a plague of bugs on a near-biblical scale. One promising technique in alleviating this problem is the application of formal methods that provide a rigorous mathematical basis to software development. When correctly applied, formal methods produce systems of the highest integrity and thus are especially recommended for securityand safety-critical systems. 1 3 Unfortunately, although projects based on formal methods are proliferating, the use of these methods is still more the exception than the rule,4 which results from many misconceptions regarding their costs, difficulties, and payoffs.5,6 Surveys of formal methods applied to large problems79in industry help dispel these misconceptions and show that formal methods projects can be completed on schedule and within budget. Moreover, these surveys show that formal methods projects produce correct software (and hardware) that is well structured, maintainable, and satisfies customer requirements. Representative case studies explain this in detail.‘O The subjective question “What makes a formal methods project successful?“cannot be definitively answered. However, through observations of many recently completed and in-progress projects-successful and otherwise-we’ve come up with ten “commandments” that, if adhered to, will greatly increase a project’s chances for success.","PeriodicalId":386020,"journal":{"name":"Encyclopedia of Software Engineering","volume":"15 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-14","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130121621","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"IEEE Computer Society","authors":"Margo McCall","doi":"10.1081/E-ESE-120046042","DOIUrl":"https://doi.org/10.1081/E-ESE-120046042","url":null,"abstract":"This standard specifies common public-key cryptographic techniques, including mathematical primitives for secret value (key) derivation, public-key encryption, and digital signatures, and cryptographic schemes based on those primitives. It also specifies related cryptographic parameters, public keys, and private keys. The purpose of this standard is to provide a reference for specifications on a variety of techniques from which applications may select.","PeriodicalId":386020,"journal":{"name":"Encyclopedia of Software Engineering","volume":"17 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134509985","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Object-Oriented Analysis and Design","authors":"R. Sangwan","doi":"10.1081/E-ESE-120044216","DOIUrl":"https://doi.org/10.1081/E-ESE-120044216","url":null,"abstract":"Object-oriented analysis and design (OOAD) has over the years, become a vast field, encompassing such diverse topics as design process and principles, documentation tools, refactoring, and design and architectural patterns. For most students the learning experience is incomplete without implementation. This new textbook provides a comprehensive introduction to OOAD. The salient points of its coverage are: A sound footing on object-oriented concepts such as classes, objects, interfaces, inheritance, polymorphism, dynamic linking, etc. A good introduction to the stage of requirements analysis. Use of UML to document user requirements and design. An extensive treatment of the design process. Coverage of implementation issues. Appropriate use of design and architectural patterns. Introduction to the art and craft of refactoring. Pointers to resources that further the readers knowledge. All the main case-studies used for this book have been implemented by the authors using Java. The text is liberally peppered with snippets of code, which are short and fairly self-explanatory and easy to read. Familiarity with a Java-like syntax and a broad understanding of the structure of Java would be helpful in using the book to its full potential.","PeriodicalId":386020,"journal":{"name":"Encyclopedia of Software Engineering","volume":"114 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-11-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123314219","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Agile Software Development: Teams","authors":"Roland Cuellar, Sanjiv Augustine","doi":"10.1081/E-ESE-120044246","DOIUrl":"https://doi.org/10.1081/E-ESE-120044246","url":null,"abstract":"Agile software development utilizes iteration, feedback, and convergence mechanisms in order to achieve a solution. Given this algorithm, Agile projects operate on a fundamentally different set of principles than those of traditional software development methodologies. An understanding of these principles and how they impact management is key to effectively managing Agile projects.","PeriodicalId":386020,"journal":{"name":"Encyclopedia of Software Engineering","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-11-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124683928","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
F. McCaffery, J. Burton, Valentine Casey, A. Dorling
{"title":"Medical Device Industry: Software Process Improvement","authors":"F. McCaffery, J. Burton, Valentine Casey, A. Dorling","doi":"10.1081/E-ESE-120046037","DOIUrl":"https://doi.org/10.1081/E-ESE-120046037","url":null,"abstract":"","PeriodicalId":386020,"journal":{"name":"Encyclopedia of Software Engineering","volume":"59 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-11-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114075222","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Requirements Engineering: Principles and Practice","authors":"J. Dick","doi":"10.1081/E-ESE-120044859","DOIUrl":"https://doi.org/10.1081/E-ESE-120044859","url":null,"abstract":"This entry defines and describes the discipline of requirements engineering. Effective requirements practices are vital to the success of software development projects. At the outset, requirements help the customer and supplier agree on what is to be achieved; during development, they define precisely what is to be built; and during acceptance, they describe how the product is to be tested. Aspects of the discipline covered in the entry include how requirements are expressed, modeled, analyzed, validated, and traced.","PeriodicalId":386020,"journal":{"name":"Encyclopedia of Software Engineering","volume":"7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-11-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122262089","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Programming Phase: Formal Methods","authors":"R. Paige, J. Woodcock, P. Brooke, Ana Cavalcanti","doi":"10.1081/E-ESE-120044149","DOIUrl":"https://doi.org/10.1081/E-ESE-120044149","url":null,"abstract":"","PeriodicalId":386020,"journal":{"name":"Encyclopedia of Software Engineering","volume":"76 7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-11-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133840921","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}