Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Slides:



Advertisements
Similar presentations
Software Life Cycle and Models
Advertisements

Prescriptive Process models
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
Ch 3: Unified Process CSCI 4320: Software Engineering.
Software Engineering CSE470: Process 15 Software Engineering Phases Definition: What? Development: How? Maintenance: Managing change Umbrella Activities:
HCI in the software process Chapter 6
What is Software Design?. Systems Development Life- Cycle Planning Analysis Design Implementation Design.
CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
SEP1 - 1 Introduction to Software Engineering Processes SWENET SEP1 Module Developed with support from the National Science Foundation.
CS3773 Software Engineering Lecture 01 Introduction.
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Software Engineering Introduction and Overview RA402 jcmtCSE1320 Intermediate Programming Essence and Accident Inherent Difficulties –Complexity –Conformity.
Alternate Software Development Methodologies
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Software Processes: Traditional CSCI102 - Systems ITCS905 - Systems MCS Systems.
Illinois Institute of Technology
COMP 350: Object Oriented Analysis and Design Lecture 2
SDLC. Information Systems Development Terms SDLC - the development method used by most organizations today for large, complex systems Systems Analysts.
Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools.
CHAPTER 19 Building Software.
Software Life Cycle Model
University of Toronto Department of Computer Science CSC444 Lec04- 1 Lecture 4: Software Lifecycles The Software Process Waterfall model Rapid Prototyping.
Software Development Process
Chapter 2: Approaches to System Development
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
1 CMPT 275 Software Engineering Software life cycle.
CompSci 230 Software Design and Construction
Chapter 2 The process Process, Methods, and Tools
Dillon: CSE470: SE, Process1 Software Engineering Phases l Definition: What? l Development: How? l Maintenance: Managing change l Umbrella Activities:
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.
PROJECT MILESTONES Group Presentations: ~ 5 mins presentations.
Understand Application Lifecycle Management
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Chapter 3: Software Maintenance Process Omar Meqdadi SE 3860 Lecture 3 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Software Engineering Introduction and Overview Takes customer-defined goals and constraints and derives a representation of function, performance, interfaces,
HCI in Software Process Material from Authors of Human Computer Interaction Alan Dix, et al.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
Slide 2.1 CHAPTER 2 THE SOFTWARE PROCESS. Slide 2.2 Overview l Client, Developer, and User l Requirements Phase l Specification Phase l Design Phase l.
Review of Software Process Models Review Class 1 Software Process Models CEN 4021 Class 2 – 01/12.
1 The Scope of Software Engineering Xiaojun Qi. 2 Software Engineering Software engineering is a discipline whose aim is the production of fault-free.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
© Bennett, McRobb and Farmer Avoiding the Problems Based on Chapter 3 of Bennett, McRobb and Farmer: Object Oriented Systems Analysis and Design.
Systems Analysis and Design in a Changing World, Fourth Edition
1.1/46 Scope Of Software Engineering 1.2/46 Prologue… ‘Have you any idea what happened to our computers! Pay $0.00 bill, …, Pay the $0.00 bill within.
Chapter 4 프로세스 모델 Process Models
Software Engineering - Abdul Majeed. What is software? Definition of Software Engineering Software Process Generic view of Software Engineering Software.
Dr. DEVENDRA TAYAL– THE SCOPE OF SOFTWARE ENGINEERING.
1 - 1 Systems Analysis and Design, Key Ideas Many failed systems were abandoned because analysts tried to build wonderful systems without understanding.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
CS3320-Chap21 Office Hours TR 1:00-2:15 PM W 2:30-3:30 PM By appointment.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Object-Oriented and Classical Software Engineering Eighth Edition, WCB/McGraw-Hill Stephen R. Schach 1.
Copyright 2015, Robert W. Hasker. Classic Model Gathering Requirements Specification Scenarios Sequences Design Architecture Class, state models Implementation.
Software Design and Development Development Methodoligies Computing Science.
 System Requirement Specification and System Planning.
Advanced Software Engineering Dr. Cheng
Chapter 18 Maintaining Information Systems
HCI in the software process
Introduction to Software Engineering
COMP 350: Object Oriented Analysis and Design Lecture 2
Lecture 2 Revision of Models of a Software Process
HCI in the software process
Software Engineering Fundamentals
CHAPTER 10 METHODOLOGIES FOR CUSTOM SOFTWARE DEVELOPMENT
HCI in the software process
Human Computer Interaction Lecture 14 HCI in Software Process
SDLC (Software Development Life Cycle)
Presented by KARRI GOVINDA RAO ,
Presentation transcript:

Software Engineering Jon Walker

What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development? What is Software Engineering?  A Process, a set of methods, and an array of tools - Pressman  Applying a disciplined practice to the construction of software? Modeling Problem-solving Knowledge acquisition - domain specific knowledge Rationale-driven NATO study group in 1967  Compared to traditional engineering disciplines  e.g. bridge building (structural engineering)

The Software Crisis How is building software different from building a bridge?  Complexity  Fault tolerance  Maintenance How is software different from other things people build?  Software is developed or engineered not manufactured  Software doesn't wear out  Most software is still custom built The "Software Crisis"  Software delivered late  Software delivered over budget  Software has critical defects X-Ray - control bug War games - simulation Patriot missile - timing problem  The bottom line - Machines are getting more complex, software is getting more complex

Software economics Programming/Software Engineering as Chemistry/Chemical engineering  Software engineering includes the economics of software What is an example of an economic trade off you might have to make for a software project? What information is important in making an economic decision about a software project?  Time  Effort  Cost of equipment  Cost of goods (third party) Can all of these be exactly measured?

Software Life-Cycle Software life-cycle  The series of steps that software goes through from concept to retirement  A "model" for these steps What do you mean "model"? Waterfall model  Used by most organizations through the 1980's  7 broad phases  What are they? Requirements phase Specification (analysis) phase Design phase Implementation phase Integration phase Maintenance phase Retirement phase  Why is it called waterfall? Outputs from one phase flow into the following phase

Software Maintenance Which phase takes the most effort?  Maintenance phase More people working on software maintenance than on new software - Pressman 2/3 of effort in Maintenance phase Types of maintenance  Corrective maintenance  Perfective maintenance  Adaptive maintenance What is an example of each of these types of maintenance?

Specification and Design Software is developed by humans for humans  What is the problem with this? We make mistakes  How do programming languages contribute to this problem? Imperfect translation of human desires into computer actions In which phase in the software lifecycle are mistakes the most costly?  Each phase is more costly than the next  Heuristic for cost - 10x Divide lifecycle into four phases: requirements, design, implementation, maintenance A problem in each phase is 10X as costly to fix as in a previous phase Where are most of the defects in software found?  60%-70% of defects found in specification and design phases

Team Programming Software developed is extremely complex  Moore's law – What is it? Performance-price factor of computing decreased by an order of magnitude every five years  Do you believe software is becoming more complex? Product complexity is such that it would take a single person years to complete Product releases are 6 months or shorter Teams are needed  What are the problems with teams? Organization Communication

Object Oriented Paradigm What is object oriented software engineering? How does object oriented design/programming help?  Implementation hiding (helps maintenance)  Design by contract (helps maintenance)  Closer to real problem (helps specification) Is the Object Oriented paradigm a silver bullet?

Agile Software Engineering What is Agile software engineering?  Things change so you might as well design your processes to embrace change  Individuals and interactions ● over processes and tools  Working software ● over comprehensive documentation  Customer collaboration ● over contract negotiation  Responding to change ● over following a plan How does Agile software engineering help?  Move specification closer to the customer Is Agile the silver bullet?

The Software Process The phases of the software process are?  Requirements  Specification  Design  Implementation  Integration  Maintenance  Retirement Why is the software process divided into phases?  They are the natural evolution of a software product

Requirements Requirements and specifications (next phase) tell what the product is to do Client/Developer  Client Person/group/organization who has contracted to have the software constructed Usually the end user, but not always  When is software built for someone who is not the end user?  Developer Person/group/organization that has contracted to develop the software

Requirements (cont) Three types of development  Internal software development  Contract software development  Shrink-wrap software development  What is different between each type of software? What is the principle role of the software developers during requirements?  Not what the client wants  Determining what the client needs Why does the client not know what they need?  Software is complex  The client does not understand what his/her own needs are  The client cannot communicate what his/her own needs are

Requirement Analysis Rapid Prototyping  Create a working model of the software Only the functionality that the user must interact with Error checking, design are not done  Good for refining Human Computer Interface (HCI) other human factors  Different types of prototyping Evolutionary Throw-away Partially reusable What are the advantages/disadvantages of each? JAD (Joint Application Development)  Similar to rapid prototyping using team composed of members from both client/developer organizations What are the problems with Rapid Prototyping?

Testing Requirements SQA (Software quality assurance) or QA (quality assurance) group  Involved during the requirements phase  Verify that what the customer needs is what is communicated by the requirements  Develop test plans that will verify those requirements Verification Testing - done by QA Acceptance Testing - done by client

Specification Explicitly describe the needs (specifications) of the client Usually described in a specification document Often accompanied by a user interface specification  Story boarding  Rapid prototyping Specification acts as a contract Specification problems  Ambiguous specifications  Incomplete specifications  Contradictory specifications  What is an example of each? Specification Testing  Done by SQA group  Traceability must be attained

Design Phase Design phase determines how the product will do what was specified in previous two phases Design often broken down into two phases  Architectural (high-level) design Break the project down into components  Detailed design Break the components down into modules Design Phase Testing  Traceability between design elements and specification  Design reviews are one way to accomplish this

Implementation What most people think of as software development Actual coding Testing  Code review  Unit tests  Other code checking

Integration Components/Modules are combined  There are various approaches to combining modules Incremental Top to bottom Bottom to top Big bang Which appeals most to you? Integration testing  "Smoke" testing Performed by development  Product testing Performed by QA  Acceptance testing Performed by the client

Maintenance Phase Maintenance often considered the most challenging aspect of software development More money/time spent on maintenance than on any other phase Maintenance needs to be considered in other phases  Give examples of how you can consider maintenance in other phases Good documentation Flexible design Maintenance Testing  Feature testing (bug fix testing)  Regression testing

Retirement When software is no longer usuable or maintainable it is retired  This is very rare  There is software that you use every day that is 30 years old ATMs Credit cards

Summary This is an overview of software engineering We will talk about many of these issues in more depth throughout the semester