1 / 23

Software Engineering

Software Engineering. Lecture 1 Introduction to Software Engineering. Software Definition. Software is: A product A vehicle for delivering another product Software is collection of: Program Documentation Data Procedure. Software Characteristics.

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.


Presentation Transcript

  1. Software Engineering Lecture 1 Introduction to Software Engineering

  2. Software Definition • Software is: • A product • A vehicle for delivering another product • Software is collection of: • Program • Documentation • Data • Procedure

  3. Software Characteristics • Software is engineered, not manufactured • Software does not wear out • Most software continues to be custom built

  4. Failure Curves for software

  5. Software Myths • Myth: If we get behind schedule, add more programmers. • Reality: Adding people to a late software project makes it later. • Myth: Software Engineering will make us create many and unnecessary documentation. • Reality: Software engineering is not about creating documents. It is about creating quality. Better quality leads to reduced rework. Reduced rework results in faster delivery times.

  6. Software Crisis • During 1960-1970, most software development faced the following problems: • Overdue schedule • Exceeding initial budget • Inadequate software quality • High software maintenance cost

  7. Software Engineering • Software engineering is first coined in 1968 at a software conference organized by NATO at Garmisch, Germany as a solution to the software crisis. • Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines.

  8. Engineering Principles • The engineering principles used in software engineering comprises: • Analysis • Design • Implementation • Testing

  9. Software Engineering Layers Software Engineering Software Engineering tools methods process model a “quality” focus

  10. Software Engineering Layers (cont.) • Tools: Software Tools (Word Processors, Diagramming Tools, Project Tools, Compilers, etc.) • Methods: Modeling methods (DFD, ERD, Gantt Chart,etc.) • Process: Waterfall, Spiral, Incremental, etc.

  11. Software Engineering Phases • Definition Phase (What) • Systems Engineering, Project Planning, Requirements Analysis • Development Phase (How) • Software Design, Code Generation, Software Testing • Support Phase (Change) • Correction, Adaptation, Enhancement, Prevention

  12. Umbrella Activities • Umbrella activities are activities that are applied throughout the software process: • Project tracking and control • Software Quality Assurance • Software Configuration Management • Document Preparation and Management

  13. Capability Maturity Model • CMM is used to determine an organization’s current state of process maturity • Five levels of CMM: • Level 1: Initial (Ad Hoc) • Level 2: Repeatable (Basic project management) • Level 3: Defined (Process standardization) • Level 4: Managed (Quantitative Management) • Level 5: Optimized (Continuous process improvement)

  14. CMM Level 1: Initial • The software process is characterized as ad hoc and occasionally even chaotic. Few processes are defined, and success depends on individual effort.

  15. CMM Level 2: Repeatable • Basic Project Management processes are established to track cost, schedule, and functionality.

  16. CMM Level 3: Defined • The process is “tailored from the organization’s set of standard processes according to the organization’s tailoring guidelines, and contributes work products, measures, and other process-improvement information to the organizational process assets”.

  17. CMM Level 4: Managed • Detailed measures of the software process and product quality are collected.

  18. CMM Level 5: Optimized • The process area is adapted and optimized using quantitative means to meet changing customer needs and to continually improve the efficacy of the process area under consideration.

  19. Personal Software Process • The Personal Software Process (PSP) emphasizes personal measurement of both the work product that is produced and the resultant quality of work product (Humphrey 1997). • The PSP process model defined five framework activities: • Planning • High-Level Design • High-Level Design Review • Development • Postmortem

  20. Personal Software Process (cont.) • PSP stresses the need for each software engineer to identify errors early and, as important, to understand the types of errors that he/she is likely to make. • This is accomplished through a rigorous assessment activity performed on all work products produced by the software engineer. • PSP can improve the productivity and software quality. However, PSP has not been widely adopted throughout the industry due to human nature and organizational inertia.

  21. Team Software Process (TSP) • TSP is an extension of PSP. • The goal of TSP is to build a “self-directed” project team that organizes itself to produce high-quality software: • Build self-directed teams that plan and track their work, establish goals, and own their processes and plans. • Show managers how to coach and motivate their teams. • Accelerate software process improvement. • Provide improvement guidance to high-maturity organizations. • Facilitate university teaching of industrial-grade team skills.

  22. Summary • Software Engineering is a discipline that integrates process, methods, and tools for the development of computer software. • The Capability Maturity Model Integration (CMMI) is a comprehensive process meta-model that describes the specific goals, practices, and capabilities that should be present in a mature software process. • Personal and Team Software process emphasize measurement, planning, and self-direction as key ingredients for a successful software process.

  23. References • Pressman, Chapter 1, 2

More Related