1 / 20

Software Engineering - Abdul Majeed

Software Engineering - Abdul Majeed. Contents of the Seminar. What is software? Definition of Software Engineering Software Process Generic view of Software Engineering Software Process Paradigms Software Testing Strategies. What is software?.

hamiltone
Download Presentation

Software Engineering - Abdul Majeed

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 - Abdul Majeed

  2. Contents of the Seminar • What is software? • Definition of Software Engineering • Software Process • Generic view of Software Engineering • Software Process Paradigms • Software Testing Strategies

  3. What is software? • Computer programsandassociated documentation • Software productsmay be developed for a particular customer or may be developed for a general market • Software productsmay be • Generic - developed to be sold to a range of different customers • Bespoke(custom) - developed for a single customer according to their specification

  4. What issoftware engineering? Software engineeringis an engineering discipline which is concerned with all aspects of software production (development and maintenance). In general sense the product will exist three times of the development duration so the total efforts will be distributed as 30/70 or 40/60 for development and maintenance respectively.

  5. Economic and Management aspects of SE • Software production = development + maintenance (evolution) • Development costs will be 40% • 40% analysis and design • 20% coding • 40% testing • Maintenance costs > 60% of all development costs • 20% corrective • 30% adaptive • 50% perfective • Quicker development is not always preferable • higher up-front costs may defray downstream costs • poorly designed/implemented software is a critical cost factor

  6. Economic and Management aspects of SE

  7. the practicalities of developing • delivering useful software • theory • fundamentals What is the difference between software engineering and computer science? Computer Science Software Engineering is concerned with Computer science theoriesare currently insufficient to act as a complete underpinning for software engineering, BUT it is a foundation for practical aspects of software engineering

  8. What is the difference between software engineering and system engineering? • Software engineeringis part ofSystem engineering • System engineeringis concerned with all aspects of computer-based systems development including • hardware, • softwareand • process engineering • System engineersare involved in system specification, architectural design, integrationand deployment

  9. What is asoftware process? • Aset of activitieswhose goal is the development or evolution of software • Generic activities in all software processes are: • Specification - what the system should do and its development constraints • Development - production of the software system • Validation - checking that the software is what the customer wants • Evolution - changing the software in response to changing demands

  10. Generic view of SE • There are Three Phases of any software process • Definition phase which include activities such as • - System/Information engineering • - Software project planning • - Requirement analysis • 2. Development phase which include activities such as • - Design • - Coding • - Testing • 3. Maintenance which include activities such as • - Fixing the bugs • - Adaptation • - Enhancement

  11. Software Process Paradigms Different categories of software process paradigms are - Classical Life Cycle Model/ Linear Sequential Model/Waterfall Model - Prototype Model - Rapid Application Development Model (RAD) - Evolutionary Model (Incremental and Spiral Model) - Component based model - Formal Transformation

  12. Software Development LifecycleWaterfall Model Requirements Design Implementation Integration Validation Deployment

  13. Software Development LifecycleSpiral Model

  14. Requirements • Problem Definition→ Requirements Specification • determine exactly what the customer and user want • develop a contract with the customer • specifieswhat the software product is to do • Difficulties • client asks for wrong product • client is computer/software illiterate • specifications are ambiguous, inconsistent, incomplete

  15. Architecture/Design • Requirements Specification→ Architecture/Design • architecture: decompose software into modules with interfaces • design: develop module specifications (algorithms, data types) • maintain a record of design decisions and traceability • specifieshow the software product is to do its tasks • Difficulties • miscommunication between module designers • design may be inconsistent, incomplete, ambiguous

  16. Architecture vs. Design • Architecture is concerned with the selection of architectural elements, their interactions, and the constraints on those elements and their interactions necessary to provide a framework in which to satisfy the requirements and serve as a basis for the design. • Design is concerned with the modularization and detailed interfaces of the design elements, their algorithms and procedures, and the data types needed to support the architecture and to satisfy the requirements.

  17. Implementation & Integration • Design → Implementation • implement modules; verify that they meet their specifications • combine modules according to the design • specifieshow the software product does its tasks • Difficulties • module interaction errors • order of integration may influence quality and productivity

  18. Software Testing Strategy Testing is categorized into - Unit Testing verifies the coding of the product - Integration Testing verifies the design of the product - Validation Testing verifies the requirement - System Testing verifies system engineering

  19. System testing Validationtesting Integration testing Unit testing Code Design Requirements System engineering Software Testing Strategy

  20. Software Testing Strategy Integration testing includes - Top down using stubs - Bottom up using drivers Validation testing includes - Alpha testing - Beta testing System testing includes - Recovery testing - Security testing - Stress testing - Performance testing

More Related