Software Processes. Topics covered



Similar documents
To introduce software process models To describe three generic process models and when they may be used

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

Socio-Technical Systems

Objectives. The software process. Basic software process Models. Waterfall model. Software Processes

Socio technical Systems. Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 2 Slide 1

Systems Engineering. Designing, implementing, deploying and operating systems which include hardware, software and people

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

The software process. Generic software process models. Waterfall model. Software Development Methods. Bayu Adhi Tama, ST., MTI.

Software Engineering UNIT -1 OVERVIEW

Software Processes. The software process. Generic software process models. Waterfall model. Waterfall model phases

Software Engineering. Software Development Process Models. Lecturer: Giuseppe Santucci

Software Processes. Coherent sets of activities for specifying, designing, implementing and testing software systems

Overview. System Definition Webster s Dictionary. System Engineering Hierarchy. System Engineering. Computer-Based Systems [PRE2005]

Modelli di sviluppo software. Enrico Giunchiglia

Software Engineering. Objectives. Designing, building and maintaining large software systems

Unit 1 Learning Objectives

Software Engineering. What is a system?

Lecture 3 Software Development Processes

Chapter 2 Software Processes

Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology

IV. Software Lifecycles

Chapter 3. Software Processes

Rapid software development. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 1

Software Development Life Cycle (SDLC)

Software Engineering. Software Engineering. Software Costs

Software Life Cycle Processes

Software Engineering Reference Framework

Software Process for QA

CS4507 Advanced Software Engineering

Rapid Software Development

A Capability Maturity Model (CMM)

Rapid software development. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 1

CDC UNIFIED PROCESS JOB AID

Foundations of software engineering

2. Analysis, Design and Implementation

CSCI-485: Software Design

Software Development Processes. Software Life-Cycle Models

Software Development Process Models and their Impacts on Requirements Engineering Organizational Requirements Engineering

Software Project Models

CMSC 435: Software Engineering Course overview. Topics covered today

Basic Trends of Modern Software Development

CSE 435 Software Engineering. Sept 16, 2015

2. Analysis, Design and Implementation

Advanced Software Engineering. Software Development Processes

Software Development: The Waterfall Model

Classical Software Life Cycle Models

Agile methods. Objectives

Software Development Processes. Software Life-Cycle Models. Process Models in Other Fields. CIS 422/522 Spring

Requirements Engineering Process

How To Understand Software Engineering

And the Models Are System/Software Development Life Cycle. Why Life Cycle Approach for Software?

Chapter 9 Software Evolution

General Problem Solving Model. Software Development Methodology. Chapter 2A

Basic Testing Concepts and Terminology

Software Engineering Question Bank

Software Engineering. So(ware Evolu1on

BCS THE CHARTERED INSTITUTE FOR IT. BCS HIGHER EDUCATION QUALIFICATIONS BCS Level 6 Professional Graduate Diploma in IT SOFTWARE ENGINEERING 2

What is a life cycle model?

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

Business Modeling with UML

Introduction to Systems Analysis and Design

Your Software Quality is Our Business. INDEPENDENT VERIFICATION AND VALIDATION (IV&V) WHITE PAPER Prepared by Adnet, Inc.

Agile So)ware Development

SE464/CS446/ECE452 Software Life-Cycle and Process Models. Instructor: Krzysztof Czarnecki

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

Requirements Engineering Processes. Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 7 Slide 1

CS 487. Week 8. Reference: 1. Software engineering, roger s. pressman. Reading: 1. Ian Sommerville, Chapter 3. Objective:

11.1 What is Project Management? Object-Oriented Software Engineering Practical Software Development using UML and Java. What is Project Management?

CREDENTIALS & CERTIFICATIONS 2015

SOFTWARE CONFIGURATION MANAGEMENT GUIDEBOOK

Module 2. Software Life Cycle Model. Version 2 CSE IIT, Kharagpur

Best-Practice Software Engineering: Software Processes to Support Project Success. Dietmar Winkler

International Journal of Advance Research in Computer Science and Management Studies

6. Software Lifecycle Models. A software lifecycle model is a standardised format for planning organising, and running a new development project.

Fundamentals of Measurements

Applying CMMI SM In Information Technology Organizations SEPG 2003

The Role of the Software Architect

Systems Development Life Cycle (SDLC)

1.1 The Nature of Software... Object-Oriented Software Engineering Practical Software Development using UML and Java. The Nature of Software...

Contents. Introduction and System Engineering 1. Introduction 2. Software Process and Methodology 16. System Engineering 53

Overview. Software engineering and the design process for interactive systems. Standards and guidelines as design rules

Exhibit F. VA CAI - Staff Aug Job Titles and Descriptions Effective 2015

Example Software Development Process.

Topics covered. An Introduction to Software Engineering. FAQs about software engineering Professional and ethical responsibility

Software Testing. Knowledge Base. Rajat Kumar Bal. Introduction

Chapter 8 Software Testing

CSC 492 The Practice of Software Engineering. Lecture 3 University of Mount Union Software Life Cycle Models

Configuration Management. Software Configuration Management. Example of System Families. Configuration Management

(Refer Slide Time: 01:52)

COMP 354 Introduction to Software Engineering

Configuration management. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 29 Slide 1

Unit I. Introduction

What is a requirement? Software Requirements. Descriptions and specifications of a system

Module 2. Software Life Cycle Model. Version 2 CSE IIT, Kharagpur

SOFTWARE ENGINEERING IT 0301 Semester V B.Nithya,G.Lakshmi Priya Asst Professor SRM University, Kattankulathur

SWEBOK Certification Program. Software Engineering Management

Acknowledgement. Software Engineering. CS 3141: Team Software Project Introduction

Transcription:

Software Processes cmsc435-1 Topics covered Systems vs. software engineering Software process models Process iteration Process activities Computer-aided software engineering cmsc435-2

What is a system? A purposeful collection of inter-related components working together to achieve some common objective. A system may include software, mechanical, electrical and electronic hardware and be operated by people. System components are dependent on other system components The properties and behavior of system components are inextricably inter-mingled cmsc435-3 System categories Technical computer-based systems Systems that include hardware and software but where the operators and operational processes are not normally considered to be part of the system. Socio-technical systems Systems that include technical systems but also operational processes and people who use and interact with the technical system. Sociotechnical systems are governed by organizational policies and rules. cmsc435-4

Emergent properties Properties of the system as a whole rather than properties that can be derived from the properties of components of a system Emergent properties are a consequence of the relationships between system components They can therefore only be assessed and measured once the components have been integrated into a system cmsc435-5 Examples of emergent properties Property Volume Reliability Security Repairability Usability Description The volume of a system (the total space occupied) varies depending on how the component assemblies are arranged and connected. System reliability depends on component reliability but unexpected interactions can cause new types of failure and therefore affect the reliability of the system. The security of the system (its ability to resist attack) is a complex property that cannot be easily measured. Attacks may be devised that were not anticipated by the system designers and so may defeat built-in safeguards. This property reflects how easy it is to fix a problem with the system once it has been discovered. It depends on being able to diagnose the problem, access the components that are faulty and modify or replace these components. This property reflects how easy it is to use the system. It depends on the technical system components, its operators and its operating environment. cmsc435-6

Additional properties Safety U nderstandability P ortability Secu rity Testability Us abili ty R eliability A daptability R eusabil ity R esilience M odularity Efficiency R obustness C om plexity Lea rnability cmsc435-7 Types of emergent property Functional properties These appear when all the parts of a system work together to achieve some objective. For example, a bicycle has the functional property of being a transportation device once it has been assembled from its components. Non-functional emergent properties Examples are reliability, performance, safety, and security. These relate to the behavior of the system in its operational environment. They are often critical for computer-based systems as failure to achieve some minimal defined level in these properties may make the system unusable. cmsc435-8

Influences on reliability Hardware reliability What is the probability of a hardware component failing and how long does it take to repair that component? Software reliability How likely is it that a software component will produce an incorrect output. Software failure is usually distinct from hardware failure in that software does not wear out. Operator reliability How likely is it that the operator of a system will make an error? cmsc435-9 Reliability relationships Hardware failure can generate spurious signals that are outside the range of inputs expected by the software. Software errors can cause alarms to be activated which cause operator stress and lead to operator errors. The environment in which a system is installed can affect its reliability. cmsc435-10

Non-functional requirements Properties such as performance and reliability can be measured. Are benchmarks really effective? However, some properties are properties that the system should not exhibit Safety - the system should not behave in an unsafe way; What does this even mean? Security - the system should not permit unauthorized use. Measuring or assessing these properties is hard. cmsc435-11 Systems engineering Specifying, designing, implementing, validating, deploying and maintaining socio-technical systems. Concerned with the services provided by the system, constraints on its construction and operation and the ways in which it is used. Involves engineers from different disciplines who must work together Much scope for misunderstanding here. Different disciplines use a different vocabulary and much negotiation is required. cmsc435-12

System requirements problems Complex systems are usually developed to address wicked problems Problems that are not fully understood; Changing as the system is being specified. Must anticipate hardware/communications developments over the lifetime of the system. Hard to define non-functional requirements (particularly) without knowing the component structure of the system. cmsc435-13 The system design process Partition requirements Organize requirements into related groups. Identify sub-systems Identify a set of sub-systems which collectively can meet the system requirements. Assign requirements to sub-systems Causes particular problems when COTS are integrated. (COTS to be looked at separately.) Specify sub-system functionality. Define sub-system interfaces Critical activity for parallel sub-system development. cmsc435-14

System design problems Requirements partitioning to hardware, software and human components may involve a lot of negotiation. Difficult design problems are often assumed to be readily solved using software. Is this realistic? Hardware platforms may be inappropriate for software requirements so software must compensate for this. cmsc435-15 System modelling An architectural model presents an abstract view of the sub-systems making up a system May include major information flows between sub-systems Usually presented as a block diagram May identify different types of functional component in the model cmsc435-16

Sub-system development Typically parallel projects developing the hardware, software and communications. May involve some COTS (Commercial Off-the- Shelf) systems procurement. Lack of communication across implementation teams. Bureaucratic and slow mechanism for proposing system changes means that the development schedule may be extended because of the need for rework. cmsc435-17 System integration The process of putting hardware, software and people together to make a system. Should be tackled incrementally so that subsystems are integrated one at a time. Interface problems between sub-systems are usually found at this stage. May be problems with uncoordinated deliveries of system components. cmsc435-18

After completion, the system has to be installed in the customer s environment Environmental assumptions may be incorrect; May be human resistance to the introduction of a new system; System may have to coexist with alternative systems for some time; May be physical installation problems (e.g. cabling problems); Operator training has to be identified. cmsc435-19 System installation System evolution Large systems have a long lifetime. They must evolve to meet changing requirements. Evolution is inherently costly Changes must be analyzed from a technical and business perspective; Sub-systems interact so unanticipated problems can arise; There is rarely a rationale for original design decisions; System structure is corrupted as changes are made to it. Existing (usually older) systems which must be maintained are sometimes called legacy systems. cmsc435-20

System decommissioning Taking the system out of service after its useful lifetime. May require removal of materials (e.g. dangerous chemicals) which pollute the environment Should be planned for in the system design by encapsulation. May require data to be restructured and converted to be used in some other system. cmsc435-21 Organizations/people/systems Socio-technical systems are organizational systems intended to help deliver some organizational or business goal. If you do not understand the organizational environment where a system is used, the system is less likely to meet the real needs of the business and its users. cmsc435-22

Human and organizational factors Process changes Does the system require changes to the work processes in the environment? Job changes Does the system de-skill the users in an environment or cause them to change the way they work? Organizational changes Does the system change the political power structure in an organization? cmsc435-23 cmsc435-24 System procurement Acquiring a system for an organization to meet some need Some system specification and architectural design is usually necessary before procurement You need a specification to let a contract for system development The specification may allow you to buy a COTS system. Almost always cheaper than developing a system from scratch (But not as cheap as assumed!) Large complex systems usually consist of a mix of off the shelf and specially designed components. The procurement processes for these different types of component are usually different.

Procurement issues Requirements may have to be modified to match the capabilities of off-the-shelf components. The requirements specification may be part of the contract for the development of the system. There is usually a contract negotiation period to agree changes after the contractor to build a system has been selected. cmsc435-25 Contractors and sub-contractors The procurement of large hardware/software systems is usually based around some principal contractor. Sub-contracts are issued to other suppliers to supply parts of the system. Customer interaction with the principal contractor and does not deal directly with sub-contractors. cmsc435-26

Legacy systems Existing systems that have been developed using old or obsolete technology. Crucial to the operation of a business and it is often too risky to discard these systems Bank customer accounting system; Aircraft maintenance system. Legacy systems constrain new business processes and consume a high proportion of company budgets. Issues: Do we throw away and restart or continue to maintain? What are the economics (costs and risk) of each approach If system depends on other COTS, will upgrades to those be available? cmsc435-27 Legacy system components Hardware - may be obsolete mainframe hardware. Support software - may rely on support software from suppliers who are no longer in business. Application software - may be written in obsolete programming languages. Application data - often incomplete and inconsistent. Business processes - may be constrained by software structure and functionality. Business policies and rules - may be implicit and embedded in the system software. Laws and regulations change. cmsc435-28

The software process A structured set of activities required to develop a software system Specification; Design; Validation; Evolution. A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective. cmsc435-29 Generic software process models The waterfall model Separate and distinct phases of specification and development. Evolutionary development Specification, development and validation are interleaved. Component-based software engineering The system is assembled from existing components. There are many variants of these models e.g. formal development where a waterfall-like process is used but the specification is a formal specification that is refined through several stages to an implementable design. cmsc435-30

Waterfall model cmsc435-31 Also called the V-process REQUIREMENTS ANALYSIS Validate requirements OPERATION & MAINTENANC SYSTEM DESIGN Verify design SYSTEM TESTING ACCEPTANCE TESTING PROGRAM DESIGN UNIT & INTE- GRATION TESTING CODING cmsc435-32

Waterfall model phases Requirements analysis and definition System and software design Implementation and unit testing Integration and system testing Operation and maintenance The main drawback of the waterfall model is the difficulty of accommodating change after the process is underway. One phase has to be complete before moving onto the next phase. But nobody really implements a system using the waterfall model. cmsc435-33 Software development - Reality REQUIREMENTS ANALYSIS MAINTENANCE SYSTEM DESIGN DELIVERY SYSTEM TESTING PROGRAM DESIGN INTEGRATION TESTING UNIT TESTING PROGRAM IMPLEMENTATION cmsc435-34

Waterfall model problems Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements. Therefore, this model is only appropriate when the requirements are well-understood and changes will be fairly limited during the design process. Few business systems have stable requirements. The waterfall model is mostly a guideline used for large systems engineering projects where a system is developed at several sites. cmsc435-35 Evolutionary development Exploratory development Objective is to work with customers and to evolve a final system from an initial outline specification. Should start with well-understood requirements and add new features as proposed by the customer. Throw-away prototyping Objective is to understand the system requirements. Should start with poorly understood requirements to clarify what is really needed. cmsc435-36

Evolutionary development Concurrent activities Specification Initial version Outline description Development Intermediate versions Validation Final version cmsc435-37 Evolutionary development Problems Lack of process visibility; Systems are often poorly structured; Special skills (e.g. in languages for rapid prototyping) may be required. Applicability For small or medium-size interactive systems; For parts of large systems (e.g. the user interface); For short-lifetime systems. cmsc435-38

Component-based software engineering Based on systematic reuse where systems are integrated from existing components or COTS (Commercial-off-the-shelf) systems. Process stages Component analysis; Requirements modification; System design with reuse; Development and integration. This approach is becoming increasingly used as component standards have emerged. cmsc435-39 Reuse-oriented development What we have affects requirements cmsc435-40

Process iteration System requirements ALWAYS evolve in the course of a project so process iteration where earlier stages are reworked is always part of the process for large systems. Iteration can be applied to any of the generic process models. Two (related) approaches Incremental delivery; Spiral development. cmsc435-41 Incremental delivery Rather than deliver the system as a single delivery, the development and delivery is broken down into increments with each increment delivering part of the required functionality. User requirements are prioritised and the highest priority requirements are included in early increments. Once the development of an increment is started, the requirements are frozen though requirements for later increments can continue to evolve. cmsc435-42

Incremental development cmsc435-43 Incremental development advantages Customer value can be delivered with each increment so system functionality is available earlier. Early increments act as a prototype to help elicit requirements for later increments. Lower risk of overall project failure. The highest priority system services tend to receive the most testing. cmsc435-44

Chief programmer team development Standard development has an architect dividing design into separate function each developed by a separate group Chief programmer team Chief programmer does most of design Chief programmer Assistant chief programmer Senior Librarian Administration Test tea programmers cmsc435-45 Junior programmers Project organization For this semester, project team members will have the following roles: 1. Manager 2. Development Manager/Chief programmer 3. Support Manager 4. Quality Assurance Manager 5. Programmer (if team has 5 members) All team members also have role as programmer and developer as needed cmsc435-46

Responsibilities: 1. Manager Build and maintain an effective team. Motivate all team members to work aggressively on the project. Resolve all the issues team members bring to you. Keep the instructor fully informed about the team s progress. Perform effectively as the team s meeting facilitator. Deliverables: Risk management plan (initial and final) cmsc435-47 2. Chief programmer Responsibilities: Produce a superior product (documented and meeting all functional and operational objectives and quality criteria). Fully utilize the team members skills and abilities. Deliverable: Software requirements, design, code, or test results as appropriate cmsc435-48

3. Support Manager Responsibilities: Provide the team with suitable tools and methods to support its work. Prevent unauthorized changes to baseline products. Keep the risk-tracking system functional to keep the team s risks and issues recorded and reported each week. Ensure that the team meets its reuse goals for the development cycle. Deliverables: Documentation as needed cmsc435-49 4. Quality Assurance Manager Responsibilities: Produce a complete, precise, and accurate plan for the team and for every team member. Accurately report team status every week. Deliverables: Weekly group status cmsc435-50

Responsibilities: 5. Programmer Implement assigned changes Unit test assigned changes Deliverables: Put revised source programs into project library cmsc435-51 Data collection log Everyone will turn in a weekly effort and defect form Effort form: Activity: Plan, design, code, test, debug, document, Date Time (min) Class Activity Defect form (during development phase): Failure type: Exception, Wrong output, Error message, Cause?: Fault (if known) Class: Which class caused fault, if known Date Failure type Cause? Class cmsc435-52

At end of each phase, rate your group cmsc435-53 Extreme programming An approach to development based on the development and delivery of very small increments of functionality. Relies on constant code improvement, user involvement in the development team and pairwise programming. An aspect of agile programming. Covered later. cmsc435-54

Spiral development Process is represented as a spiral rather than as a sequence of activities with backtracking. Each loop in the spiral represents a phase in the process. No fixed phases such as specification or design - loops in the spiral are chosen depending on what is required. Risks are explicitly assessed and resolved throughout the process. cmsc435-55 Spiral model of the software process cmsc435-56

Spiral model sectors Objective setting Specific objectives for the phase are identified. Risk assessment and reduction Risks are assessed and activities put in place to reduce the key risks. Development and validation A development model for the system is chosen which can be any of the generic models. Planning The project is reviewed and the next phase of the spiral is planned. cmsc435-57 Process activities Software specification Software design and implementation Software validation Software evolution cmsc435-58

Software specification The process of establishing what services are required and the constraints on the system s operation and development. Requirements engineering process Feasibility study; Requirements elicitation and analysis; Requirements specification; Requirements validation. cmsc435-59 The requirements engineering process cmsc435-60

Software design and implementation The process of converting the system specification into an executable system. Software design Design a software structure that realizes the specification; Implementation Translate this structure into an executable program; The activities of design and implementation are closely related and may be inter-leaved. cmsc435-61 Design process activities Architectural design Abstract specification Interface design Component design Data structure design Algorithm design cmsc435-62

The software design process cmsc435-63 Structured methods Systematic approaches to developing a software design. The design is usually documented as a set of graphical models. Possible models Object model; Sequence model; State transition model; Structural model; Data-flow model. cmsc435-64

Programming and debugging Translating a design into a program and removing errors from that program. Programming is a personal activity. Various styles and editing tools for developing code. Programmers carry out some program testing to discover faults in the program and remove these faults in the debugging process. cmsc435-65 The debugging process cmsc435-66

Software validation Verification and validation (V & V) is intended to show that a system conforms to its specification and meets the requirements of the system customer. Involves checking and review processes and system testing. System testing involves executing the system with test cases that are derived from the specification of the real data to be processed by the system. cmsc435-67 The testing process cmsc435-68

Testing stages Component or unit testing Individual components are tested independently; Components may be functions or objects or coherent groupings of these entities. System testing Testing of the system as a whole. Testing of emergent properties is particularly important. Acceptance testing Testing with customer data to check that the system meets the customer s needs. cmsc435-69 Testing phases cmsc435-70

Software evolution Software is inherently flexible and can change. As requirements change through changing business circumstances, the software that supports the business must also evolve and change. Although there has been a demarcation between development and evolution (maintenance) this is increasingly irrelevant as fewer and fewer systems are completely new. cmsc435-71 System evolution cmsc435-72

Static workflows Workflow Business modelling Requirements Analysis and design Implementation Test Deployment Configuration and change management Project management Environment Description The business processes are modelled using business use cases. Actors who interact with the system are identified and use cases are developed to model the system requirements. A design model is created and documented using architectural models, component models, object models and sequence models. The components in the system are implemented and structured into implementation sub-systems. Automatic code generation from design models helps accelerate this process. Testing is an iterative process that is carried out in conjunction with implementation. System testing follows the completion of the implementation. A product release is created, distributed to users and installed in their workplace. This supporting workflow managed changes to the system This supporting workflow manages the system development This workflow is concerned with making appropriate software tools available to the software development team. cmsc435-73 Computer-aided software engineering Computer-aided software engineering (CASE) is software to support software development and evolution processes. Activity automation Graphical editors for system model development; Data dictionary to manage design entities; Graphical UI builder for user interface construction; Debuggers to support program fault finding; Automated translators to generate new versions of a program. cmsc435-74

Case technology Case technology has led to significant improvements in the software process. However, these are not the order of magnitude improvements that were once predicted Software engineering requires creative thought - this is not readily automated; Software engineering is a team activity and, for large projects, much time is spent in team interactions. CASE technology does not really support these. cmsc435-75 CASE classification Classification helps us understand the different types of CASE tools and their support for process activities. Functional perspective Tools are classified according to their specific function. Process perspective Tools are classified according to process activities that are supported. Integration perspective Tools are classified according to their organization into integrated units. cmsc435-76

Functional tool classification Tool type Planning tools Editing tools Change management tools Configuration management tools Prototyping tools Method-support tools Language-processing tools Program analysis tools Testing tools Debugging tools Documentation tools Re-engineering tools Examples PERT tools, estimation tools, spreadsheets Text editors, diagram editors, word processors Requirements traceability tools, change control systems Version management systems, system building tools Very high-level languages, user interface generators Design editors, data dictionaries, code generators Compilers, interpreters Cross reference generators, static analysers, dynamic analysers Test data generators, file comparators Interactive debugging systems Page layout programs, image editors Cross-reference systems, program re-structuring systems cmsc435-77 Activity-based tool classification cmsc435-78

Tools CASE integration Support individual process tasks such as design consistency checking, text editing, etc. Workbenches Support a process phase such as specification or design, Normally include a number of integrated tools. Environments Support all or a substantial part of an entire software process. Normally include several integrated workbenches. (e.g., Eclipse) cmsc435-79 Tools, workbenches, environments cmsc435-80

Key points Software processes are the activities involved in producing and evolving a software system. Software process models are abstract representations of these processes. General activities are specification, design and implementation, validation and evolution. Generic process models describe the organization of software processes. Examples include the waterfall model, evolutionary development and component-based software engineering. Iterative process models describe the software process as a cycle of activities. cmsc435-81 Key points Requirements engineering is the process of developing a software specification. Design and implementation processes transform the specification to an executable program. Validation involves checking that the system meets to its specification and user needs. Evolution is concerned with modifying the system after it is in use. The Rational Unified Process is a generic process model that separates activities from phases. CASE technology supports software process activities. cmsc435-82