CSC 205, Software Engineering I 1 CSC 205 Software Engineering I Spring Quarter, 2000 Clark S. Turner, J.D., Ph.D.

Slides:



Advertisements
Similar presentations
Object-Oriented Software Development CS 3331 Fall 2009.
Advertisements

Chapter 2 – Software Processes
Software Processes Coherent sets of activities for specifying, designing, implementing and testing software systems.
Introduction to Software Engineering Lecture 4 André van der Hoek.
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Analysis Stage (Phase I) The goal: understanding the customer's requirements for a software system. n involves technical staff working with customers n.
CSC 508, Software Engineering I 1 CSC 508 Software Engineering I Fall Quarter, 2004 Clark S. Turner, J.D., Ph.D.
CSC x402, Requirements Engineering 1 CSC 402 Requirements Engineering Fall Quarter, 2002 Clark S. Turner, J.D., Ph.D.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
CSC x402, Requirements Engineering 1 CSC x402 Requirements Engineering Fall Quarter, 2000 Clark S. Turner, J.D., Ph.D.
CSC 509, Software Engineering II 1 CSC 509 Software Engineering II Winter Quarter, 2005 Clark S. Turner.
Course Introduction and Overview of Software Engineering Richard N. Taylor ICS 221 Fall 2002.
9 1 Chapter 9 Database Design Database Systems: Design, Implementation, and Management, Seventh Edition, Rob and Coronel.
CSC 402, Requirements Engineering 1 CSC 402 Requirements Engineering Fall Quarter, 2005 Clark S. Turner.
CSC230 Software Design (Engineering)
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
University of Toronto Department of Computer Science CSC444 Lec04- 1 Lecture 4: Software Lifecycles The Software Process Waterfall model Rapid Prototyping.
The Software Development Life Cycle: An Overview
Managing Software Quality
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
CLEANROOM SOFTWARE ENGINEERING.
ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Topic 3 Partially based on lecture notes written by.
PROJECT MILESTONES Group Presentations: ~ 5 mins presentations.
College of Engineering and Computer Science Computer Science Department CSC 131 Computer Software Engineering Fall 2006 Lecture # 1 (Ch. 1, 2, & 3)
CSE 303 – Software Design and Architecture
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
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.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 1 Software Processes (Chapter 3)
Software Requirements Engineering CSE 305 Lecture-2.
Software Engineering Management Lecture 1 The Software Process.
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
Architectural Design Yonsei University 2 nd Semester, 2014 Sanghyun Park.
1 Software Engineering Ian Sommerville th edition Instructor: Mrs. Eman ElAjrami University Of Palestine.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Chapter 19 Verification and Validation.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Chapter 3: Software Project Management Metrics
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
Software Engineering - Abdul Majeed. What is software? Definition of Software Engineering Software Process Generic view of Software Engineering Software.
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
Chapter 2 – Software Processes Lecture 1 Chapter 2 Software Processes1.
Software Maintenance Speaker: Jerry Gao Ph.D. San Jose State University URL: Sept., 2001.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
Chapter 2 Object-Oriented Paradigm Overview. Getting Acquainted with the Class Project Read the requirements specification carefully Make note of any.
CSE 303 – Software Design and Architecture
Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue.
Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?
Winter 2011SEG Chapter 11 Chapter 1 (Part 1) Review from previous courses Subject 1: The Software Development Process.
Software Development Life Cycle (SDLC)
Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing.
Advanced Software Engineering Lecture 4: Process & Project Metrics.
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
Software Engineering (CSI 321) Software Process: A Generic View 1.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Lectures 2 & 3: Software Process Models Neelam Gupta.
Object-Oriented and Classical Software Engineering Eighth Edition, WCB/McGraw-Hill Stephen R. Schach 1.
Ch. 31 Software Engineering Principles CSC 3910 Software Engineering Time: 1:30 to 2:20Meeting Days: MWFLocation: Oxendine 1256 Textbook: Fundamentals.
© Chinese University, CSE Dept. Software Engineering / Topic 3: Software Engineering Principles Your Name: _____________________ Computer Science.
Advanced Software Engineering Dr. Cheng
Software Engineering Management
Lecture 3 Prescriptive Process Models
The Development Process of Web Applications
Chapter 18 Maintaining Information Systems
The Systems Engineering Context
Software Engineering (CSI 321)
Presentation transcript:

CSC 205, Software Engineering I 1 CSC 205 Software Engineering I Spring Quarter, 2000 Clark S. Turner, J.D., Ph.D.

CSC 205, Software Engineering I 2 Why are we here? Software Engineering is... – the study of software process, software development principles, methods and tools ¤ requirements and design notations ¤ implementation strategies ¤ testing methods ¤ maintenance techniques ¤ Management strategies – the production of quality software, delivered on-time, within budget, and satisfying users’ needs halfway between an art form and a discipline?

CSC 205, Software Engineering I 3 Administration Instructor – Clark S. Turner Required Books – Wiegers, Software Requirements – Brooks: Mythical Man-Month, 20 th anniversary edition Other References – Weinberg, Requirements – Jackson, Software Requirements and Specifications Office: – phone – Hours: ¤ Monday 9-10 am ¤ Tuesday 9-10 am ¤ Wednesday and 2-4 Prerequisites – CSC 103 or equivalent ¤ will be checked and enforced Future course website –

CSC 205, Software Engineering I 4 Very Preliminary Syllabus... no guarantees that the course will follow this plan... Introduction to Software Engineering – scope and principles – software methods and tools – lifecycle models – overview of requirements issues Team issues – mythical man-month Requirements Engineering – concepts and techniques ¤ informal specs – methods and tools ¤ data-flow diagrams ¤ entity-relationship diagrams ¤ finite-state machines ¤ Petri-nets ¤ formal specification Testing, Verification and Validation – strategies at the requirements stage – test plans

CSC 205, Software Engineering I 5 Assessment Final grade based on – Midterm (10%) – Final (10%) – Project contribution (50%) – Class and lab contribution (30%) Late work policy – Start with an “A” cap on the course grade ¤ late delivery of an activity report drops cap by 1/3 grade (A to A- etc) ¤ non-delivery of an activity report drops cap by an entire grade ¤ grade cap drops are cumulative Academic (dis)honesty – Our main concern: don’t ever use anyone else’s work without clearly indicating the source!

CSC 205, Software Engineering I 6 The problem and the response... Software is typically – late – over budget – faulty – hence... the “software crisis” Software Engineering – software production should use established engineering principles – history: coined in 1967 and endorsed by a NATO conference in 1968

CSC 205, Software Engineering I 7 What type of software? Small single-developer projects can typically get by without Software Engineering – typically no deadlines, small budget (freeware), not safety-critical Software Engineering is required for – large projects (100,000 lines of code and up) – multiple subsystems – teams of developers (often geographically dispersed) – safety-critical systems (software that can kill people...)

CSC 205, Software Engineering I 8 Software Engineering is young Traditional engineering disciplines have been around for hundreds, if not thousands, of years Software Engineering still needs – standard specification and design techniques – formal analysis tools – established processes Currently experimenting in – techniques, notations, metrics, processes, architecture, etc. – Some success has been reported – A foundation is being formed...

CSC 205, Software Engineering I 9 What is Engineering? Engineering is – sequence of well-defined, precisely-stated, sound steps, which follow method or apply technique based on some combination of ¤ theoretical results derived from a formal model ¤ empirical adjustments for un-modeled phenomenon ¤ rules of thumb based on experience This definition is independent of purpose... – i.e. engineering can be applied to many disciplines Side question: Are we employees or professionals? – are we independent in our employ? – do we have obligations to society?

CSC 205, Software Engineering I 10 Software Engineers require... a broad range of skills – Mathematics – Computer Science – Economics – Management – Psychology applied to all phases of software production!

CSC 205, Software Engineering I 11 Software economics... Software Production = development + maintenance …but maintenance accounts for approximately 67% of the overall costs during the lifecycle of a software product Thus … faster development is not always a good thing – may result in software that is difficult to maintain – resulting in higher long-term costs

CSC 205, Software Engineering I 12 Lifecycle Costs ( Schach: page 10 )

CSC 205, Software Engineering I 13 Maintenance Aspects All products undergo some form of maintenance to account for change... Three major types of maintenance – Perfective (60.5%) ¤ Changes to improve the software product – Adaptive (18 %) ¤ Responding to changes in a product’s environment – Corrective (17.5 %) ¤ Fixing bugs... Real world is constantly changing Maintenance is a necessity

CSC 205, Software Engineering I 14 Requirements and Design Aspects User needs and perceptions are difficult to assess - functionality isn’t enough Requirements specification is a contract with the customer Requirements must provide a definitive basis for testing Design decomposition is critical to mastering complexity Requirements addresses “what?” Design addresses “how?”

CSC 205, Software Engineering I 15 Verification and validation must permeate the software lifecycle Verification and Validation Aspects The longer a fault exists in software – the more costly it is to detect and correct – the less likely it is to be fixed correctly ¤ e.g. fixing it “breaks” something else! % of all faults detected in large-scale software products are introduced in its specification and design Thus...faults must be found early using improved specification techniques and “perpetual testing” – requires specification and design V&V – validate first description and verify each phase with respect to previous – evaluate testability and develop test plans at each phase

CSC 205, Software Engineering I 16 Relative cost of fixing a fault

CSC 205, Software Engineering I 17 Team Programming Aspects Reduced hardware costs afford hardware that can run large and complex software systems – products too complex for an individual to develop Most software is produced by a team of software engineers, not an individual – Team programming leads to interface problem between components and communications problems between members – Team programming requires good team organization to avoid excessive communication Team programming introduces communication overhead

CSC 205, Software Engineering I 18 Software Engineering Principles Deal with both process and product Applicable throughout the lifecycle Need abstract descriptions of desirable properties Same principles as other engineering disciplines

CSC 205, Software Engineering I 19 Rigor and Formality Rigor is a necessary complement to creativity – enhances understandability, improves reliability, facilitates assessment, controls cost Formality is the highest degree of rigor Engineering = sequence of well-defined, precisely-stated, sound steps, which follow method or apply technique based on some combination of – theoretical results derived from formal model – empirical adjustments for un-modeled phenomenon – rules of thumb based on experience

CSC 205, Software Engineering I 20 Separation of Concerns Enables mastering of inherent complexity Allows concentration on individual aspects – product features: functions, reliability, efficiency, environment, user interface, etc. – process features: development environment, team organization, scheduling, methods, – economics and management Concerns may be separated by – time (process sequence) – qualities (e.g., correctness vs. performance) – views to be analyzed separately (data vs. control) – components Leads to separation of responsibility

CSC 205, Software Engineering I 21 aspects of modules in isolation overall characteristics of integrated system bottom-up top-down Modularity and Decomposition Complex system divided into modules Modular decomposition allows separation of concerns in two phases Modularity manages complexity, fosters reusability, and enhances understandability – composibility vs. decomposibility – high cohesion and low coupling

CSC 205, Software Engineering I 22 Abstraction Identify important aspects and ignore details Abstraction depends on the purpose or view Models are abstractions of reality Abstraction permeates software development – from requirements to code – from natural language descriptions to mathematical models – from products to process One specification but many realizations

CSC 205, Software Engineering I 23 Anticipation of Change Constant change is inevitable in large-scale software systems – software repair & error elimination – evolution of the application Identify likely changes and plan for change – software requirements usually not entirely understood – users and environments change – also affects management of software process Maintenance is process of error correction and modification to reflect changing requirements – regression testing with maintenance – configuration management of versions

CSC 205, Software Engineering I 24 Generality Focus on discovering more general problem than the one at hand – fosters potential reuse – facilitates identification of OTS solution Trade-offs between initial costs vs. reuse savings General-purpose, OTS products are general trend in application domains – standard solutions to common problems

CSC 205, Software Engineering I 25 Incrementality Step-wise process with successively closer approximations to desired goal Identify and “deliver” early subsets to gain early feedback – fosters controlled evolution Incremental concentration on required qualities Intermediate deliverables may be prototypes Requires careful configuration management and documentation

CSC 205, Software Engineering I 26 Formal development methods lead to higher reliability Formal analysis techniques are critical Formal development methods lead to higher reliability Formal analysis techniques are critical Reliability As software application pervades critical systems, reliability is paramount Cost of failure exceeds cost of development Reliability measures how well a system provides expected service over time – all service is not equal – software reliability based entirely on development – software does not degrade

CSC 205, Software Engineering I 27 Discussion: Relationships between Principles formality and modularity formality and separation of concerns separation of concerns and modularity modularity and abstraction modularity and anticipation of change anticipation of change and generality abstraction and generality modularity and incrementality anticipation of change and incrementality generality and incrementality

CSC 205, Software Engineering I 28 Sample Software Qualities Correctness Reliability Robustness Performance Usability Testability and more… – what are the relationships between these qualities? – What about safety? Is this a property of software or systems? ¤ Is it subsumed under “reliability”???

CSC 205, Software Engineering I 29 Uniqueness of Software What are we dealing with? – The stuff doesn’t “wear out” (but does exhibit a bathtub curve …) – The stuff has no “tolerance” - it is binary – The stuff weighs nothing, and you can’t really “see” it. – It is very plastic, we can always “change” it in place ¤ try that with your automobile! Why don’t other engineering principles apply? – For example, statistical reliability methods? ¤ No mean value theorem applies ¤ No accurate user profile or operational distribution – So, when we test, what do we find out about software? ¤ Can’t tell for sure if our software is good or not.