350 likes | 716 Views
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.
E N D
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 • Software is engineered, not manufactured • Software does not wear out • Most software continues to be custom built
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.
Software Crisis • During 1960-1970, most software development faced the following problems: • Overdue schedule • Exceeding initial budget • Inadequate software quality • High software maintenance cost
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.
Engineering Principles • The engineering principles used in software engineering comprises: • Analysis • Design • Implementation • Testing
Software Engineering Layers Software Engineering Software Engineering tools methods process model a “quality” focus
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.
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
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
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)
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.
CMM Level 2: Repeatable • Basic Project Management processes are established to track cost, schedule, and functionality.
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”.
CMM Level 4: Managed • Detailed measures of the software process and product quality are collected.
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.
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
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.
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.
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.
References • Pressman, Chapter 1, 2