Quality Software

Embed Size (px)

Citation preview

  • 8/13/2019 Quality Software

    1/5

    goryQuality

    attributeDescription

    sign

    alities

    Conceptual

    Integrity

    Conceptual integrity defines the consistency and coherence of the overall design. This

    includes the way that components or modules are designed, as well as factors such as

    coding style and variable naming.

    Maintainability Maintainability is the ability of the system to undergo changes with a degree of ease.

    These changes could impact components, services, features, and interfaces when adding

    or changing the functionality, fixing errors, and meeting new business requirements.

    Reusability Reusability defines the capability for components and subsystems to be suitable for use

    in other applications and in other scenarios. Reusability minimizes the duplication of

    components and also the implementation time.

    n-time

    alities

    Availability Availability defines the proportion of time that the system is functional and working. It

    can be measured as a percentage of the total system downtime over a predefined period

    Availability will be affected by system errors, infrastructure problems, malicious attacks,

    and system load.

    Interoperability Interoperability is the ability of a system or different systems to operate successfully by

    communicating and exchanging information with other external systems written and run

    by external parties. An interoperable system makes it easier to exchange and reuse

    information internally as well as externally.

    Manageability Manageability defines how easy it is for system administrators to manage the applicatio

    usually through sufficient and useful instrumentation exposed for use in monitoring

    systems and for debugging and performance tuning.

    Performance Performance is an indication of the responsiveness of a system to execute any action

    within a given time interval. It can be measured in terms of latency or throughput.

    Latency is the time taken to respond to any event. Throughput is the number of events

    that take place within a given amount of time.

    Reliability Reliability is the ability of a system to remain operational over time. Reliability is

    measured as the probability that a system will not fail to perform its intended functions

    over a specified time interval.

    Scalability Scalability is ability of a system to either handle increases in load without impact on the

    performance of the system, or the ability to be readily enlarged.

    Security Security is the capability of a system to prevent malicious or accidental actions outside o

    the designed usage, and to prevent disclosure or loss of information. A secure system

    aims to protect assets and prevent unauthorized modification of information.

  • 8/13/2019 Quality Software

    2/5

    Quality Software

    Good software

    Basically there are FOUR ( 4 ) attributes of a good software ... 1. Maintainability The software

    should be written in a way that it can be evolve to meet changing needs of the customer . Sincethe change of needs ( requirement change of customer ) is unavoidable, this is a CRITICAL

    ATTRIBUTE .2. DependabilityA software MUST be Trustworthy ( can we trust the software ? )

    , Reliable , Safe andSecured ( are we secured using this software ? ) . Use of the software shouldnot be harmful to the customer in anyway ( even something goes wrong ) . Even at a system

    failure, a dependable software

    should NOT cause physical or economical damage . Also malicious users should not be able to

    access or damage the system .3. EfficiencyA software should be efficient in everyway . The

    software should not make wasteful of system resources ( ex. memory, processing cycles ) . Responsiveness

    should be there, and the memory utilization should be minimum and also the processing time is a

    consideration .4. AcceptabilityThe software must be acceptable to the group of users forwhich it's designed for . Software should be understandable , reliable and compatiblewith other systems they use .

    Prototyping[edit]

    Software prototyping,is the development approach of activities duringsoftware development,the creation

    of prototypes, i.e., incomplete versions of the software program being developed.

    The basic principles are:[2]

    Not a standalone, complete development methodology, but rather an approach to handle selected

    parts of a larger, more traditional development methodology (i.e. incremental, spiral, or rapid

    application development (RAD)).

    Attempts to reduce inherent project risk by breaking a project into smaller segments and providing

    more ease-of-change during the development process.

    tem

    alities

    Supportability Supportability is the ability of the system to provide information helpful for identifying

    and resolving issues when it fails to work correctly.

    Testability Testability is a measure of how easy it is to create test criteria for the system and its

    components, and to execute these tests in order to determine if the criteria are met.Good testability makes it more likely that faults in a system can be isolated in a timely

    and effective manner.

    er

    alities

    Usability Usability defines how well the application meets the requirements of the user and

    consumer by being intuitive, easy to localize and globalize, providing good access for

    disabled users, and resulting in a good overall user experience.

    http://en.wikipedia.org/w/index.php?title=Software_development_methodology&action=edit&section=6http://en.wikipedia.org/w/index.php?title=Software_development_methodology&action=edit&section=6http://en.wikipedia.org/w/index.php?title=Software_development_methodology&action=edit&section=6http://en.wikipedia.org/wiki/Software_prototypinghttp://en.wikipedia.org/wiki/Software_prototypinghttp://en.wikipedia.org/wiki/Software_developmenthttp://en.wikipedia.org/wiki/Software_developmenthttp://en.wikipedia.org/wiki/Software_developmenthttp://en.wikipedia.org/wiki/Software_development_methodology#cite_note-CMS08-2http://en.wikipedia.org/wiki/Software_development_methodology#cite_note-CMS08-2http://en.wikipedia.org/wiki/Software_development_methodology#cite_note-CMS08-2http://en.wikipedia.org/wiki/Software_development_methodology#cite_note-CMS08-2http://en.wikipedia.org/wiki/Software_developmenthttp://en.wikipedia.org/wiki/Software_prototypinghttp://en.wikipedia.org/w/index.php?title=Software_development_methodology&action=edit&section=6
  • 8/13/2019 Quality Software

    3/5

    User is involved throughout the development process, which increases the likelihood of user

    acceptance of the final implementation.

    Small-scale mock-ups of the system are developed following an iterative modification process until

    the prototype evolves to meet the users requirements.

    While most prototypes are developed with the expectation that they will be discarded, it is possible in

    some cases to evolve from prototype to working system.

    A basic understanding of the fundamental business problem is necessary to avoid solving the wrong

    problem.

    Incremental development[edit]

    Various methods are acceptable for combining linear and iterative systems development methodologies,

    with the primary objective of each being to reduce inherent project risk by breaking a project into smaller

    segments and providing more ease-of-change during the development process.

    The basic principles are:[2]

    A series of mini-Waterfalls are performed, where all phases of the Waterfall are completed for a small

    part of a system, before proceeding to the next increment, or

    Overall requirements are defined before proceeding to evolutionary, mini-Waterfall development of

    individual increments of a system, or

    The initial software concept, requirements analysis, and design of architecture and system core are

    defined via Waterfall, followed by iterative Prototyping, which culminates in installing the final

    prototype, a working system.

    Recoverytesting is the forced failure of the software in a variety of ways to verify that recovery is properly

    performed. Recovery testing should not be confused withreliability testing,which tries to discover the

    specific point at which failure occurs.Recovery testing is basically done in order to check how fast and

    better the application can recover against any type of crash or hardware failure etc

    Robustness testingis any quality assurance methodology focused on testing the robustness of

    software. Robustness testing has also been used to describe the process of verifying the robustness (i.e.

    correctness) of test cases in a test process.

    ANSIandIEEEhave defined robustness as the degree to which a system or component can function

    correctly in the presence of invalid inputs or stressful environmental conditions

    Boundary value analysis:

    Its widely recognized that input values at the extreme ends of input domain cause more

    errors in system. More application errors occur at the boundariesof input domain.

    Boundary value analysis testing technique is used to identify errors at boundaries rather

    than finding those exist in center of input domain

    Alpha testing[edit]

    http://en.wikipedia.org/w/index.php?title=Software_development_methodology&action=edit&section=7http://en.wikipedia.org/w/index.php?title=Software_development_methodology&action=edit&section=7http://en.wikipedia.org/w/index.php?title=Software_development_methodology&action=edit&section=7http://en.wikipedia.org/wiki/Software_development_methodology#cite_note-CMS08-2http://en.wikipedia.org/wiki/Software_development_methodology#cite_note-CMS08-2http://en.wikipedia.org/wiki/Software_development_methodology#cite_note-CMS08-2http://en.wikipedia.org/wiki/Reliability_testinghttp://en.wikipedia.org/wiki/Reliability_testinghttp://en.wikipedia.org/wiki/Reliability_testinghttp://en.wikipedia.org/wiki/ANSIhttp://en.wikipedia.org/wiki/ANSIhttp://en.wikipedia.org/wiki/IEEEhttp://en.wikipedia.org/wiki/IEEEhttp://en.wikipedia.org/wiki/IEEEhttp://en.wikipedia.org/w/index.php?title=Software_testing&action=edit&section=25http://en.wikipedia.org/w/index.php?title=Software_testing&action=edit&section=25http://en.wikipedia.org/w/index.php?title=Software_testing&action=edit&section=25http://en.wikipedia.org/w/index.php?title=Software_testing&action=edit&section=25http://en.wikipedia.org/wiki/IEEEhttp://en.wikipedia.org/wiki/ANSIhttp://en.wikipedia.org/wiki/Reliability_testinghttp://en.wikipedia.org/wiki/Software_development_methodology#cite_note-CMS08-2http://en.wikipedia.org/w/index.php?title=Software_development_methodology&action=edit&section=7
  • 8/13/2019 Quality Software

    4/5

    Alpha testing is simulated or actual operational testing by potential users/customers or an independent

    test team at the developers' site. Alpha testing is often employed for off-the-shelf software as a form of

    internal acceptance testing, before the software goes to beta testing.[35]

    Beta testing[edit]

    Beta testing comes after alpha testing and can be considered a form of external user acceptance testing.Versions of the software, known asbeta versions,are released to a limited audience outside of the

    programming team. The software is released to groups of people so that further testing can ensure the

    product has few faults orbugs.Sometimes, beta versions are made available to the open public to

    increase thefeedbackfield to a maximal number of future users

    Rapid application development(RAD) is asoftware development methodologythat uses minimal

    planning in favor of rapid prototyping. The "planning" of software developed using RAD is interleaved with

    writing the software itself. The lack of extensive pre-planning generally allows software to be written muchfaster, and makes it easier to change requirements.

    1. Requirements Planning phasecombines elements of the system planning and systems

    analysis phases of theSystems Development Life Cycle(SDLC). Users, managers, and IT staff

    members discuss and agree on business needs, project scope, constraints, and system

    requirements. It ends when the team agrees on the key issues and obtains management

    authorization to continue.

    2. User design phaseduring this phase, users interact with systems analysts and develop

    models and prototypes that represent all system processes, inputs, and outputs. The RAD

    groups or subgroups typically use a combination of Joint Application Development (JAD)

    techniques and CASE tools to translate user needs into working models. User Designis a

    continuous interactive process that allows users to understand, modify, and eventually approve a

    working model of the system that meets their needs.

    3. Construction phasefocuses on program and application development task similar to the

    SDLC. In RAD, however, users continue to participate and can still suggest changes or

    improvements as actual screens or reports are developed. Its tasks are programming and

    application development, coding, unit-integration and system testing.

    4. Cutover phaseresembles the final tasks in the SDLC implementation phase, including data

    conversion, testing, changeover to the new system, and user training. Compared with traditional

    methods, the entire process is compressed. As a result, the new system is built, delivered, and

    placed in operation much sooner.Advantages

    Flexible and adaptable to changes

    Can handle large projects without a doubt

    RAD realizes an overall reduction in project risk

    RAD realizes an overall reduction in project risk.

    http://en.wikipedia.org/wiki/Software_testing#cite_note-35http://en.wikipedia.org/wiki/Software_testing#cite_note-35http://en.wikipedia.org/wiki/Software_testing#cite_note-35http://en.wikipedia.org/w/index.php?title=Software_testing&action=edit&section=26http://en.wikipedia.org/w/index.php?title=Software_testing&action=edit&section=26http://en.wikipedia.org/w/index.php?title=Software_testing&action=edit&section=26http://en.wikipedia.org/wiki/User_acceptance_testinghttp://en.wikipedia.org/wiki/User_acceptance_testinghttp://en.wikipedia.org/wiki/User_acceptance_testinghttp://en.wikipedia.org/wiki/Beta_versionhttp://en.wikipedia.org/wiki/Beta_versionhttp://en.wikipedia.org/wiki/Beta_versionhttp://en.wikipedia.org/wiki/Computer_bughttp://en.wikipedia.org/wiki/Computer_bughttp://en.wikipedia.org/wiki/Computer_bughttp://en.wikipedia.org/wiki/Feedback#In_organizationshttp://en.wikipedia.org/wiki/Feedback#In_organizationshttp://en.wikipedia.org/wiki/Feedback#In_organizationshttp://en.wikipedia.org/wiki/Software_development_methodologyhttp://en.wikipedia.org/wiki/Software_development_methodologyhttp://en.wikipedia.org/wiki/Software_development_methodologyhttp://en.wikipedia.org/wiki/Systems_Development_Life_Cyclehttp://en.wikipedia.org/wiki/Systems_Development_Life_Cyclehttp://en.wikipedia.org/wiki/Systems_Development_Life_Cyclehttp://en.wikipedia.org/wiki/Systems_Development_Life_Cyclehttp://en.wikipedia.org/wiki/Software_development_methodologyhttp://en.wikipedia.org/wiki/Feedback#In_organizationshttp://en.wikipedia.org/wiki/Computer_bughttp://en.wikipedia.org/wiki/Beta_versionhttp://en.wikipedia.org/wiki/User_acceptance_testinghttp://en.wikipedia.org/w/index.php?title=Software_testing&action=edit&section=26http://en.wikipedia.org/wiki/Software_testing#cite_note-35
  • 8/13/2019 Quality Software

    5/5

    Generally Rad incorporates short development cycles (According to the wiki.answer.com)