4. RFORMAL LANGUAGES IN SOFWARE DEVELOPMENT LIFE CYCLE 7, 8As we know that SDLC is a waterfall and in waterfall there is a predictive model flow of sequential phases in which outputs of stages are the inputs for the proceeding stages. This can be seen in the image below, where process flow is project input and then project planning, analysis, design, implementation and maintenance are the next steps and each of them is input for its upcoming stage. SDLC ensures a high quality product is delivered and that is by decreasing the risk. Formal languages can be used in two phases of SDLC and those are:Specification (Requirements Analysis Phase)Verification (Testing/Verification Phase)Specification:It is the process in which we describe the behavior of the system and its desired properties. Formal specification language describe system properties which might include its functional and timing behavior, internal structure and performance characters. 9 Vienna Development Model, Larch and Zed are used for specifying behavior of the systems while different other formal methods such as CCS, State charts, I/O automata, Lamport and Temporal Logic are the once which focus specifying the behavior of the systems while RAISE is used to handle rich state spaces and there is another one that is LOTOS that used to handle complexity which arise due to concurrency.Verification: The process to approve or disapprove the correctness of the system is called as verification or testing. There are two very important forms of it:• Model Checking• Theorem ProvingModel Checking:The process in which a finite state model of the system is built and then its state space is mechanically investigated. NuSMV and SPIN are very well known and equivalent model checksTheorem Proving:The process is another approach for verification of a specification in which a model of the system is described in the form mathematical language and desired properties of the system can be proved using the theorem prover. Specifications which are checked or proved by the theorem prover are then written in the mathematical notation form. Zed is the most common example of this type system.5. GOALS FOR FORMAL METHODS 10 Since we know that formal methods can be applied at different stages of the software development life cycle (SDLC). So, from these details we can obtain the following goals for formal methods:1. Formal methods make it sure that implementation of the inputted software and hardware products have satisfied the requirements specifications agreed.2. Formal methods support the creation of the specifications which describe the real requirements of the user and those cannot be identical to what we state from the client/user. Unambiguity of the formal methods can help achieve this and it will also help prove the possibility of certain properties.3. Formal methods basically deal with development and maintenance of critical and reliable systems on time and within the budget. It helps increase trustworthiness of the system in the sense that system is not just built correct it is actually correct. They provide evidence which on late stages ensures that the system indeed satisfies the demand of requirements, security and reliability as well. 6. BENEFITS OF FORMAL METHODS Early activities (requirements analysis) in the software development life cycle(SDLC) is one of the most important. Most effective use of formal methods is at these early stages which it is essential to write the specification formally instead of writing them informally. It is very efficient to analyze formal specification as early as possible. So, as per my limited research and knowledge I found following few points that are major benefits of formal methods:• Measurement of correctness• Discipline• Guaranteed correctness• Precision• Early defect detection• Error Prone• Rigorous Analysis• Abstraction• Trustworthiness• Effective test casesMeasurement of correctness:Use of formal methods gives us a measure of correctness for a system as opposed to current process quality measures available and being used in the market.Discipline:Formal systems require an engineer to think out a design in a more thorough fashion so that means formal methods are proof of correctness and they are going to require a rigorous specification goals and not just an operation. Which means it will help us identify faulty reasoning far earlier than traditional approaches being used for software development. 11 So discipline is involved in the formal specification and has been proved very useful even on already built systems. As an example PVS system is being used by software engineers and they report several microcode errors in one of their microprocessor designs 12Guaranteed correctness:Formal analysis tools such as model checkers consider all possible execution paths in a system and If there is any possibility of an error a model checker will definitely find it. In a multi-threaded system where we have to deal with the concurrency formal analysis can help us explore all the possible interleaving and event orderings. So, this level of coverage is almost impossible to achieve using standard testing methods.Precision:If we talk traditionally then we know that disciplines have moved things to jargons and formal notation as the weaknesses of natural language descriptions become more glaringly obvious. So, there is no reason that systems engineering will differ, so there are several formal which are almost used exclusively for notationing. For engineers designing for safe or critical systems the benefits of formal methods become more useful. Many other design approaches our formal verification very clearly set its goals and approaches. So, in a safety or critical system sometimes ambiguity can be extremely dangerous and one of the primary benefits as well for the formal approaches.Early defect detection:Formal methods have one of the major benefits and that is early error detection because formal methods are applied at the very early stage of the software development life cycle and that is software requirement analysis and specifications stage. So, this becomes very easy to find and get rid of errors even before the development process starts.Error Prone: Formal descriptions also forces writers to ask all sort of questions, even such questions which are normally postponed until coding. Which helps to reduce the errors and misconceptions about the requirements or specifications? Formal methods have the property of completeness as it covers all aspects of the system and that too from the very early stage of the system development.Rigorous Analysis: Formality of the description allows us to carry out rigorous analysis. And formal descriptions are generally extracted from different points of views so, which means one can determine that what the important properties are as an example, satisfaction of highest level requirements and correctness of the proposed design for the system.Abstraction:If the requirements of the hardware or the software that is under development is simple then development team can quickly code it but, in most of the systems that is not the case and in some cases code becomes too large and it needed detailed description of the system. In such cases formal specifications or the descriptions that is abstracted becomes a precise and in some sense a complete understanding of it. So, abstraction allows even a human reader to understand the large picture of the product being developed.Trustworthiness: Formal methods another important benefit is that they provide the kind of evidence to development team that is required in heavily regulated industries such as aviation. So using such evidence we can demonstrate and provide the concrete reasons that helps increase the trust in the product under the development.Effective test cases:As per formal specification we can obtain systematically derive effective which can be pulled from the specification. So, it is very cost effect because price has been saved that was going to be applied on writing the test cases. 7. LIMITATIONS AND ISSUES OF FORMAL METHODSFormal methods play a very important role in software development life cycle but, still this methods have some limitations. And these shortcomings keep a limit on the effectiveness of the formal methods. So, we are going to discuss a few of the limitations and issues with formal methods and then we will discuss how to overcome few of them.• Correctness of specification• Correctness of implementation• Correctness of proof• Expensive• The Inadequate Tool Support• Increase in Development Cycle• Lack of Skilled Persons with Mathematical BackgroundCorrectness of specification:We know that generally user requirements might be different from what the user states and will usually vary with the time passes, so while we are using formal methods, there is no way to gurantee that user requirements will be correct and complete with respect to user’s informal requirements. So, there are a lot of appraches and methods available that helps reduce the probability of the incorrect specifications but, all the specificatiosn starts from an informal. so, we can never be sure that all user requirements are correct and/or complete.Correctness of implementation:It is also very difficult to identify that the program will satisfy the given specifications from the user. As an example when we are using a verification checking approach like Hoare logic then we have to identify the loop invariants so that means doing this automatically is impossible. So, as a result possibility is that proof for correctness of implementation with respect to specification may fail. Correctness of proof:Proofs for correctness play a very important part in the formal methods and for the success of the software product. They increase the probability of a program’s correctness. But, it usually becomes impossible to ensure about the correctness of the specification. Main problem with proofs is in the creation of the proofs, as sometimes we have a possibility that proof of correctness might fail and sometimes it does not.Expensive: Business managers always have faith in the formal methods and they believe that they can enhance the quality of the software system but, formal methods are not widely used because implementation of these methods becomes a costly and unfeasible approach. So, most considerable doubt in formal methods usage is expensiveness. Because this is not just buying the tools for implementation it also involves the cost of training the software engineers to use these tools. The Inadequate Tool Support:We all know that in United States of America lack of tool support is a huge barrier in adopting the formal methods in software development cycle. They also highlighted that this is the most common reason for which formal methods does not get appreciation from real world at least they are not being used in commercial industries.Increase in Development Cycle:Since we know that formal methods does require extra efforts for the software development creation so this is one many causes that extra efforts of implementation of the formal methods so that total time to complete the project also increases.Lack of Skilled Persons with Mathematical Background:Since we know that formal method for commercial applications development are not often commonly used so many of the software engineers face problems because most of the software developers are not good mathematics so they face problems in adopting formal methods. Formal verification also needs mathematical skills and that is not only due to lack of knowledge that is because of complex interactions between the program subcomponents. So, we need to train them for these skills and that means economy will go down. 8. SOLUTION TO SOME THESE ISSUESFrom the above issues we are discussing solutions to few of the problems:Solution: Tutorials & Trainings Help to Build Mathematical KnowledgeTo build the knowledge about the formal methods in software development organization on their own we need a very high quality tutorials and self learning materials to be available for them. Self-training materials allow independent developers to become familiar with new tools and that too very easily.Solution: Ramp-Up Cost for Formal Methods Pay off over Many Projects (Expensiveness)Ramp-up cost will play a significant role in the implementation of formal methods so the vast number of software development tools and methodologies will place their focus on long term cost savings such as testing or verification and test cases can be determined from formal methods. While formal methods may not be appropriate or cost effective for one or two time usage on a particular project but, most of the time they will be.Solution: Formal Methods Supported by Variety of ToolsIn early 80 tools for Computer Aided software engineering and Computer aided structure programming were seen as the mean of increasing programmer’s productivity and that means reducing the programming bugs but, now tool support can see as a source for increasing the productivity and accuracy for formal developments. So, there are many tools available that provide support to formal methods such as FSM (Finite state machines), VDM, Zed and OBJ. These are used to increase the productivity and accuracy in all the phases of a system.9. ISSUES SHOULD BE ADDRESSED BY FORMAL METHODSThere are few issues that I believe should have been addressed in Formal methods but those are not addressed.Creativity: Formal methods are very descriptive we all know that and they are also analytical in nature but, they should not be considered as creative. There are only formal ways of describing and analyzing designs but, there is no such thing as formal design process. So, in order to develop a real system we must combine formal methods with different other approaches (informal).Software Product Quality: Formal methods deal only with the software itself and its documentation but, skip other important components of software systems such as customer support, training, maintenance and installation of the software itself. These components and their quality is also very important for a software product quality. Formal methods have no contribution in this department so as a result most of the successful providers of the software products have to put a lot of efforts post the development of the software product on these aspects of the software system.Social and Ecological Environment: Software systems normally takes input from external users or resources and these inputs cannot be predictable so this is obviously ignored issue definitely create problems of developing a correct specification and then deciding on what is the next behavior. Unfortunately formal methods have no contribution on this particular issue as well.10. CONCLUSIONIn this paper I have tried to present different aspects of the formal methods. Major defects that arise in the software development due to poor requirement analysis. But, we know that from this that formal methods are not a complete solution but, only a part of solution the problem related to requirement analysis and its success is crucially depends on the integration of them into larger processes. It also helps understand the potential and useful benefits of formal methods and that also put light on the possible issues in the formal methods and solution to some of those. This also indicates that there is a need in software development field to make all the methods to be more specific to requirement phase because that is the most important phase of any software. This work also motivates software engineers to incorporate security in requirement phase so that they can meet product quality easily.