Reliable Software Programming
Software reliability is an important facet of software quality. It is defined as "the probability of failure-free operation of a computer program in a specified environment for a specified time"
To improve software reliability can be applied at different stages of a program's development, in the case of real software. These stages principally include: requirements, design, programming, testing, and runtime evaluation. The study of theoretical software reliability is predominantly concerned with the concept of correctness, a mathematical field of computer science which is an outgrowth of language and automata theory.
A program cannot be expected to work as desired if the developers of the program do not, in fact, know the program's desired behaviour in advance, or if they cannot at least determine its desired behaviour in parallel with development, in sufficient detail. What level of detail is considered sufficient is hotly debated. The idea of perfect detail is attractive, but may be impractical, if not actually impossible, in practice. This is because the desired behaviour tends to change as the possible range of the behaviour is determined through actual attempts, or more accurately, failed attempts, to achieve it.
Whether a program's desired behaviour can be successfully specified in advance is a moot point if the behaviour cannot be specified at all, and this is the focus of attempts to formalize the process of creating requirements for new software projects. In situ with the formalization effort is an attempt to help inform non-specialists, particularly non-programmers, who commission software projects without sufficient knowledge of what computer software is in fact capable. Communicating this knowledge is made more difficult by the fact that, as hinted above, even programmers cannot always know in advance what is actually possible for software in advance of trying.
While requirements are meant to specify what a program should do, design is meant, at least at a high level, to specify how the program should do it. The usefulness of design is also questioned by some, but those who look to formalize the process of ensuring reliability often offer good software design processes as the most significant means to accomplish it. Software design usually involves the use of more abstract and general means of specifying the parts of the software and what they do. As such, it can be seen as a way to break a large program down into many smaller programs, such that those smaller pieces together do the work of the whole program.
The purposes of high-level design are as follows. It separates what are considered to be problems of architecture, or overall program concept and structure, from problems of actual coding, which solve problems of actual data processing. It applies additional constraints to the development process by narrowing the scope of the smaller software components, and thereby - it is hoped - removing variables which could increase the likelihood of programming errors. It provides a program template, including the specification of interfaces, which can be shared by different teams of developers working on disparate parts, such that they can know in advance how each of their contributions will interface with those of the other teams. Finally, and perhaps most controversially, it specifies the program independently of the implementation language or languages, thereby removing language-specific biases and limitations which would otherwise creep into the design, perhaps unwittingly on the part of programmer-designers.
The history of computer programming language development can often be best understood in the light of attempts to master the complexity of computer programs, which otherwise becomes more difficult to understand in proportion (perhaps exponentially) to the size of the programs. (Another way of looking at the evolution of programming languages is simply as a way of getting the computer to do more and more of the work, but this may be a different way of saying the same thing.) Lack of understanding of a program's overall structure and functionality is a sure way to fail to detect errors in the program, and thus the use of better languages should, conversely, reduce the number of errors by enabling a better understanding.
Improvements in languages tend to provide incrementally what software design has attempted to do in one fell swoop: consider the software at ever greater levels of abstraction. Such inventions as statement, sub-routine, file, class, template, library, component and more have allowed the arrangement of a program's parts to be specified using abstractions such as layers, hierarchies and modules, which provide structure at different granularities, so that from any point of view the program's code can be imagined to be orderly and comprehensible.
In addition, improvements in languages have enabled more exact control over the shape and use of data elements, culminating in the abstract data type. These data types can be specified to a very fine degree, including how and when they are accessed, and even the state of the data before and after it is accessed..
Software testing, when done correctly, can increase overall software quality of conformance by testing that the product conforms to its requirements. Testing includes, but is not limited to:
A number of agile methodologies use testing early in the development cycle to ensure quality in their products. For example, the test-driven development practice, where tests are written before the code they will test, is used in Extreme Programming to ensure quality.
Runtime reliability determinations are similar to tests, but go beyond simple confirmation of behaviour to the evaluation of qualities such as performance and interoperability with other code or particular hardware configurations.....
For more details and consultancy about software development ,please visit our site www.sehelsoft.com
Related Tags: software development company, software programming, affordable software development
Recent articles in this category:
- Web Development Projects - Developers Tools Tips
Open source usually refers to software that is released with source code under a license that ensur
- A Guide to Cnc Kits
Building a CNC machine means that you would require a lot of tools, parts or different components.
- Xlphoto Printing, the Best Choice for Banner Printing and Poster Printing
Suppose, you have visited a tourist spot or a hill station; over there, you have witnessed some of
- Designing an Ecommerce Site
In a recent article I talked about Google AdSense placement based on eye-tracking research. Howeve
- Asp.net Development Benefits
Rightway solution has been keenly looking out for. Microsoft ASP.NET is a free technology that allo
- Choosing Offshore Software Development Company
To turn into successful and gain the full benefits of software outsourcing, you require preferring
- E-commerce and Web Portal Development in Vietnam
VIETNAM, owing to its superior intellectual capital has emerged as the ultimate destination for
- Types of Softwares
Computer software is a general term used to describe a collection of computer programs, procedur
- Offshore it Out Sourcing Consultancy in Vietnam
Vendors who provide Off shore IT Outsourcing Consultancy services are referred to as outsourcing
- Software Development for Your Need
Why do we use software development? Well this is done for one main reason and that is o provide v
Most viewed articles in this category:
- Oracle Applications (Oracle E-Business Suite) Customizations: What is it?
Oracle recommends every company that installs Oracle Applications to avoid any customization, but I
- Offshore Outsourcing: An All Win Premise
The awareness that outsourcing can boost productivity sans forfeit of class has impelled MNC’s
- Oracle E-Business Suite vs. Microsoft Dynamics AX - Axapta: LATAM and Brazil
In this small article we will only concentrate on Microsoft Dynamics Axapta (and will not consider M
- SAP Business One vs. Microsoft Dynamics GP - highlights for consultant
In this small article we will not make side-by-side technical specs comparison. We would rathe
- Microsoft Great Plains - licensing and product versions
Current Microsoft Business Solutions Great Plains has more that 10 years of history. Former Gr
- OCR Software - Optical Character Recognition or Optical Crud Recognition?
Optical Character Recognition (OCR) refers to a software technology and processes that involve the t
- Microsoft Dynamics AX - Axapta - technical notes plus customization
Axapta or current name Microsoft Dynamics AX has one of the newest ERP design and architecture among
- Microsoft Dynamics AX-GP-NAV-CRM: trends and international recommendations
Microsoft Great Plains/Microsoft Dynamics GP, Microsoft Navision (former Attain) Microsoft Dynamics
- Microsoft Moves to Small Business Accounting/Retail Market - stakes and thoughts
In this small article we will be looking at the new opportunities for Microsoft Small Business Serve
- Microsoft Axapta - Dynamics AX: Brazilian Portuguese version - consultant highlights
Axapta/Microsoft Dynamics AX short overview. Navision Axapta was designed by Navision Software