Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing

  • Published on

  • View

  • Download

Embed Size (px)


  • Software Engineering Issues

    Software Engineering ConceptsSystem SpecificationsProcedural DesignObject-Oriented DesignSystem Testing

  • Software EngineeringSoftware crisis:Arose from the rapid increase in the size and complexity of computer applications.Software engineering:Evolved in response to the problems of cost, productivity, and reliability of large and complex software systems.Definition:The application of engineering (systematic, disciplined, quantifiable) approach to the development, operation, and maintenance of software

  • Waterfall Software Life-Cycle ModelWhat to do How to do Look at the system from the point of view of the end userWritten from the point of view of system developers and programmersOutlines the most significant characteristics, the most important data structures and algorithms, modules or objectsCoding and preliminary testingSeveral levels of testing for individual parts, communication between the parts, and the entire systemCorrective, perfective, adaptive, and enhancement maintenance

  • System SpecificationsThe specificationsmust contain a complete description of all of the functions and constraints of the desired system, the performance needed from the system, and the interaction between the software and the usersmust be clearly and precisely writtenmust be consistentcontain all of the information needed to write and test the software

  • Sample SpecificationsFormat of the inputLexical rules for labelsContent of the inputContext-dependent restrictionsImplementation restrictionForm and content of the outputOutput conditionConstraints on the output valuesEfficiencyEase of useReliability

  • Decision Table Specification for Combinations of Conditions

  • Error ConditionsEffective handling of error conditions is essential to the creation of a usable software product.Ignore the error and continue normally

    Abort or halt with no output

    Issue an error message and continue processingA program should not crash when presented with any inputGarbage In---Meaningful Error Messages Out

  • Data Flow Diagrams

  • Top-Down Design of Data Flow Diagram

  • Top-Down Design of Data Flow Diagram

  • Principles of Modular DesignMeet the system specificationsEasy to implement, understand, and maintainHave high cohesion within a moduleHave low coupling between different modules

  • Modular Design as a Partitioning ofData Flow Diagram

  • Minimization of Coupling between Modules

  • Modularized Assembler Design

  • Calling Structure for Modules

  • Parameters and Calling Sequence for Modules

  • Object-Oriented Design of an Assembler

  • Object-Oriented Design of an Assembler

  • System TestingUnit testingIndividual modules are tested in isolation from the rest of the systemBlack box testingTest cases are generated from the specifications for the moduleWhite box testingTest cases are designed that force the module through certain statementsIntegration testingInterfaces between modules are tested via an incremental approachBottom-up orderingTop-down orderingSystem testingEntire system are tested to verify that it meets all of the requirements and specificationsAlpha testingPerformed by the organization that developed the system, before it is released to any outside users.Beta testingPlacing the system into actual use in a limited number of environmentsAcceptance testingPerformed by the customers to decide whether or not to accept delivery of the system

  • Bottom-Up TestingBottom-up testing begins with passive objects that do not invoke methods on other objects.The sequence continues with other objects that invoke methods only on objects that have already been tested.It is necessary to simulate the remainder of the system by writing test driver program for each module.

  • Top-Down TestingModules are unit tested and integrated into partial systems beginning at the highest level of the hierarchical structure.During the top-down testing, we must simulate the presence of lower-level modules by writing stubs.