1 / 21

Software Engineering

Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing. Software Engineering. Software crisis: Arose from the rapid increase in the size and complexity of computer applications. Software engineering:

dbaumgarten
Download Presentation

Software Engineering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Engineering IssuesSoftware Engineering ConceptsSystem SpecificationsProcedural DesignObject-Oriented DesignSystem Testing

  2. Software Engineering • Software 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

  3. Waterfall Software Life-Cycle Model Look at the system from the point of view of the end user What to do Written from the point of view of system developers and programmers Outlines the most significant characteristics, the most important data structures and algorithms, modules or objects How to do Coding and preliminary testing Several levels of testing for individual parts, communication between the parts, and the entire system Corrective, perfective, adaptive, and enhancement maintenance

  4. System Specifications • The specifications • must 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 users • must be clearly and precisely written • must be consistent • contain all of the information needed to write and test the software

  5. Sample Specifications Format of the input Lexical rules for labels Content of the input Context-dependent restrictions Implementation restriction Form and content of the output Constraints on the output values Output condition Efficiency Ease of use Reliability

  6. Decision Table Specification for Combinations of Conditions

  7. Error Conditions • Effective 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 processing • A program should not “crash” when presented with any input • Garbage In---Meaningful Error Messages Out

  8. Data Flow Diagrams

  9. Top-Down Design of Data Flow Diagram

  10. Top-Down Design of Data Flow Diagram

  11. Principles of Modular Design • Meet the system specifications • Easy to implement, understand, and maintain • Have high cohesion within a module • Have low coupling between different modules

  12. Modular Design as a Partitioning ofData Flow Diagram

  13. Minimization of Coupling between Modules

  14. Modularized Assembler Design

  15. Calling Structure for Modules

  16. Parameters and Calling Sequence for Modules

  17. Object-Oriented Design of an Assembler

  18. Object-Oriented Design of an Assembler

  19. System Testing • Unit testing • Individual modules are tested in isolation from the rest of the system • Black box testing • Test cases are generated from the specifications for the module • White box testing • Test cases are designed that force the module through certain statements • Integration testing • Interfaces between modules are tested via an incremental approach • Bottom-up ordering • Top-down ordering • System testing • Entire system are tested to verify that it meets all of the requirements and specifications • Alpha testing • Performed by the organization that developed the system, before it is released to any outside users. • Beta testing • Placing the system into actual use in a limited number of environments • Acceptance testing • Performed by the customers to decide whether or not to accept delivery of the system

  20. Bottom-Up Testing • Bottom-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.

  21. Top-Down Testing • Modules 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.

More Related