SOFTWARE ENGINEERING. Objectives Have a basic understanding of the origins of Software development, in particular the problems faced in the Software Crisis.

Slides:



Advertisements
Similar presentations
Adaptive Processes Introduction to Software Engineering Adaptive Processes.
Advertisements

Developed by Reneta Barneva, SUNY Fredonia
Lecture 1: Software Engineering: Introduction
Lecture # 2 : Process Models
Software Project Management
Ch 3 System Development Environment
What is Software Engineering? And why is it so hard?
Software Engineering II
Lecture 13 Revision IMS Systems Analysis and Design.
Analysis Stage (Phase I) The goal: understanding the customer's requirements for a software system. n involves technical staff working with customers n.
Chapter 1 The Systems Development Environment 1.1 Modern Systems Analysis and Design Third Edition.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 An Introduction to Software Engineering.
Developed by Reneta Barneva, SUNY Fredonia The Process.
An Introduction to Software Engineering
 Software Software  Program vs Software Products Program vs Software Products  Software Characteristics Software Characteristics  Software Crisis.
Chapter 1 The Systems Development Environment
Chapter : Software Process
The Systems Development Environment. Learning Objectives Define information systems analysis and design. Describe the different types of information systems.
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
1 Shawlands Academy Higher Computing Software Development Unit.
CSI315 Web Applications and Technology Overview of Systems Development (342)
Chapter 2 The process Process, Methods, and Tools
Chapter 2 The Process.
Chapter 1 The Systems Development Environment
1 Chapter 2 The Process. 2 Process  What is it?  Who does it?  Why is it important?  What are the steps?  What is the work product?  How to ensure.
1M.Sc.(I.T.), VNSGU, Surat. Structured Analysis Focuses on what system or application is required to do. It does not state how the system should be implement.
Chapter 2 소프트웨어공학 Software Engineering 임현승 강원대학교
Introduction to Software Engineering
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
Chapter 2: Software Process Omar Meqdadi SE 2730 Lecture 2 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
DISCLAIMER I HEREBY MAKE NO CLAIM THAT THE SAME QUESTIONS WILL BE REPEATED OR ASKED IN THE INTERVIEW AND AS YOU DOWNLOAD THIS POWERPOINT SLIDES IT IS UNDERSTOOD.
Chapter 10 Information Systems Analysis and Design
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
What is a Business Analyst? A Business Analyst is someone who works as a liaison among stakeholders in order to elicit, analyze, communicate and validate.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 1 An Introduction to Software Engineering.
Software Development Cycle What is Software? Instructions (computer programs) that when executed provide desired function and performance Data structures.
1 Software Engineering Ian Sommerville th edition Instructor: Mrs. Eman ElAjrami University Of Palestine.
Software Engineering - I
The Software Development Process
Developed by Reneta Barneva, SUNY Fredonia The Process.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Software Development Life Cycle (SDLC)
Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing.
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
Software Engineering Introduction.
Modelling the Process and Life Cycle. The Meaning of Process A process: a series of steps involving activities, constrains, and resources that produce.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution Structured programming Product SW.
Software Engineering INTRODUCTION TO SOFTWARE DEVELOPMENT.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
PI2134 Software Engineering IT Telkom.  Layered technology  Software Process  Generic Process (by Pressman)  Fundamental activities (by Sommerville)
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 An Introduction to Software Engineering.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Software Design. Introduction Designing engineering encompasses the set of principles concepts and practices that lead to the development of a high quality.
CS646: Software Design and Architectures Introduction and Overview †  Definitions.  The general design process.  A context for design: the waterfall.
Software Design Process. What is software? mid-1970s executable binary code ‘source code’ and the resulting binary code 1990s development of the Internet.
Chapter 1 The Systems Development Environment
Chapter 1 The Systems Development Environment
Software Life Cycle “What happens in the ‘life’ of software”
Chapter 1 The Systems Development Environment
Software Processes (a)
Chapter 1 The Systems Development Environment
Software Life Cycle Models
Software Engineering B.E IT Sem-VII
Introduction to Software Testing
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
What is Software? Software is: (1) instructions (computer programs) that when executed provide desired features, function, and performance; (2) data structures.
Introduction Software Engineering.
Chapter 1 The Systems Development Environment
Presentation transcript:

SOFTWARE ENGINEERING

Objectives Have a basic understanding of the origins of Software development, in particular the problems faced in the Software Crisis Knowledge of the concepts of Software Engineering Definition of Software Engineering, and the desired Software Characteristics The paradigms. For each paradigm, know the associated diagram, description of the steps involved in it Ability to read a given scenario and recommend with justification the paradigm for it Ability to identify the continually changing nature of software development

The early years (50-60) Second Era (60-Mid70s) Third Era (70-mid80) Fourth Era (80's and beyond) Batch orientation The system handles the job at once in sequence Multiprogramming and Multi - User Systems. Personal Computers came to be widely used. Increased use of desktop systems Limited Distribution Computers were not widely used. Software become distributed - this was the start of the software crisis. Micro Computers also were used in other products Object Oriented Technologies They were highly customized - they were produced only to meet specific needs. Therefore there was a greater need for software Expert System AI Parallel Computing Software Crisis The emergence of software engineering

The task description and the requirements frequently change even during the program design phase, and continue to change even after the software system has long since been in use. The task description and the requirements frequently change even during the program design phase, and continue to change even after the software system has long since been in use.

The major problems Correctness Correctness Efficiency Efficiency Mastery of Complexity Mastery of Complexity Interface specification Interface specification Reliability Reliability Flexibility Flexibility Documentation Documentation Maintainability Maintainability Project organization. Project organization.

DEFINITION OF SOFTWARE Instructions (computer programs) on execution provide desired function and performance Instructions (computer programs) on execution provide desired function and performance Data structures that enable programs to adequately manipulate information Data structures that enable programs to adequately manipulate information Documents that describes the operation and use of the programs Documents that describes the operation and use of the programs

Software and Hardware When hardware is built the human creative process (Analysis, Design, Construction, testing) is ultimately transferred into a physical form When hardware is built the human creative process (Analysis, Design, Construction, testing) is ultimately transferred into a physical form Software is logical rather than physical system element. Software is logical rather than physical system element. Software is engineered (or developed) – it is not manufactured. Software is engineered (or developed) – it is not manufactured. Software does not wear out. Software does not wear out.

Software Applications. Software may be applied in any situation for which a set of procedural – steps (algorithm) has been defined. Software may be applied in any situation for which a set of procedural – steps (algorithm) has been defined. Information content and determinacy are important factions in determining the nature of software application. Information content and determinacy are important factions in determining the nature of software application. Content refers to the meaning and form of incoming and outgoing information. Content refers to the meaning and form of incoming and outgoing information. Information determinacy refers to the predictability of the order of timing of information. Information determinacy refers to the predictability of the order of timing of information.

Software Engineering paradigms. Software Engineering is the technological, managerial discipline concerned with systematic production and maintenance of software products that are developed and modified one time. Software Engineering is the technological, managerial discipline concerned with systematic production and maintenance of software products that are developed and modified one time. The primary goals of software engineering are to improve the quality of software products and to increase the productivity and job satisfaction of persons involved. The primary goals of software engineering are to improve the quality of software products and to increase the productivity and job satisfaction of persons involved. Software Engineering being labor-intensive activity, requires both technical and managerial control. Software Engineering being labor-intensive activity, requires both technical and managerial control.

Software Engineering paradigms. In very real sense, the software engineer creates models of physical situation in software. The mapping between model and reality being modeled – has been called intellectual distance between problem and computerized solution. The fundamental principle of software engineering is to design software products that minimize the intellectual distance between problem and solution. In very real sense, the software engineer creates models of physical situation in software. The mapping between model and reality being modeled – has been called intellectual distance between problem and computerized solution. The fundamental principle of software engineering is to design software products that minimize the intellectual distance between problem and solution.

Software Engineering paradigms Software engineering is layered technology – An approach that must rest on organizational commitment to quality. Software engineering is layered technology – An approach that must rest on organizational commitment to quality. The layers are The layers are Tools Tools Methods Methods Process Process A quality focus A quality focus

The bedrock that supports software engineering is a quality focus. The bedrock that supports software engineering is a quality focus. The foundation for Software Engineering is the process layer. The foundation for Software Engineering is the process layer. Software Engineering methods provides the technical know how-to for building software. Software Engineering methods provides the technical know how-to for building software. Software Engineering Tools provide automated or semi automated support for the – process and methods. Software Engineering Tools provide automated or semi automated support for the – process and methods.

Generic Phases 1. Formal technical reviews 2. Software QA 3. Software Configuration Management. 4. Document preparation & production 5. Reusability management 6. Measurement 7. Risk Management.

Software Development Life Cycle Classic life cycle suggests a systematic, sequential approach that begins at system level and progresses through Classic life cycle suggests a systematic, sequential approach that begins at system level and progresses through Analysis Analysis Design Design Verification and Validation Verification and Validation Support. Support.

Software Development Life Cycle Specification Phase Specification Phase Object-Oriented Analysis Phase Object-Oriented Analysis Phase Design Phase Design Phase Implementation Phase Implementation Phase Implementation and Integration Phase Implementation and Integration Phase Maintenance Phase Maintenance Phase

Software requirement Analysis Focused specially on software Focused specially on software Analyst must understand the information domain to understand the nature of programs to be developed. Analyst must understand the information domain to understand the nature of programs to be developed. The requirements for system and software are to be documented and reviewed by the customer. The requirements for system and software are to be documented and reviewed by the customer.

Software Design Software Design is a multi step process focuses on four distinct attributes of a program. Software Design is a multi step process focuses on four distinct attributes of a program. Data Structure Data Structure Software architecture Software architecture Interface representation Interface representation Procedural logic Procedural logic

Code Generation Design is translated into machine readable form. Design is translated into machine readable form. Can be automated Can be automated

Testing Code Testing Code Testing Specification testing Specification testing Uncovers errors Uncovers errors

Support Software may undergo change after delivery due to errors. Software may undergo change after delivery due to errors. Software must be adaptable to new environment Software must be adaptable to new environment Due to functional or performance enhance suggested by customer Due to functional or performance enhance suggested by customer

Project size categories Based on level of management control and types of tools and techniques Based on level of management control and types of tools and techniques

Trivial project One programmer working, sometimes part time for few days, for exclusive use. One programmer working, sometimes part time for few days, for exclusive use. Less than 500 statements & sub routines. Less than 500 statements & sub routines. Eg. PC Software, a little need for analysis documentation Eg. PC Software, a little need for analysis documentation No Extensive test planning essential. No Extensive test planning essential.

Small Projects  months effort of 1 programmer.  lines of code sub routines  Less interaction between programmers  Scientific calculations for engineering on small  Commercial applications  Little interaction between customers and developers.

Medium Size Projects  Programmer’s team.  1- 2 years  10,000 – 50,000 lines  routines  medium project size Eg.: Assembler, Compilers, Small MIS Inventory systems, Process Control Applications. Eg.: Assembler, Compilers, Small MIS Inventory systems, Process Control Applications.

Large Projects  programmer’s team  years duration  50,000 to 1,00,000 lines of code  Package in several system Eg. Large compilers, DAS, RTC s

Very large Projects  programmers  years  1 million source instructions  Consists of several major sub systems  0S/360 – 5000 programmers worked for 5 years

Extremely large projects  Programmers  duration up to 10 years  100 million lines of code  Often distributed processing, Multitasking  Requires high reliability Eg. Telecomm,defense, air traffic control

Problems in Software Engineering  Potential business problems or occurrences that may cause the project  Potential project problems or occurrences that may cause the project  Technical problems or occurrences that may cause the project  Conform to changes in its external environment analysis

Software Productivity factors Individual ability Individual ability Team communication Team communication Product complexity Product complexity Appropriate notations Appropriate notations Systematic approaches Systematic approaches Change control Change control Level of technology Level of technology Required reliability Required reliability

Software Productivity factors Available time Available time Problem understanding Problem understanding Stability of requirements Stability of requirements Facilities and resources Facilities and resources Management skills Management skills Appropriate goals Appropriate goals Rising expectations Rising expectations

Project Structure Project format. Project format. Use of a project format involves assembling a team of programmers who conduct a project from start to finish; project team members do product definition, design the product, implement it, test it, conduct project reviews, and prepare the supporting documents. Use of a project format involves assembling a team of programmers who conduct a project from start to finish; project team members do product definition, design the product, implement it, test it, conduct project reviews, and prepare the supporting documents.

Project Structure Functional format. In the functional approach to organization, a different team of programmers performs each phase of the project, and the work products pass from team to team as they evolve. In the functional approach to organization, a different team of programmers performs each phase of the project, and the work products pass from team to team as they evolve.

Project Structure Matrix format. Matrix format. In matrix organizations, each of the functions described above has its own management team and a group of specialist personnel who are concerned only with that function In matrix organizations, each of the functions described above has its own management team and a group of specialist personnel who are concerned only with that function