Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering.

Slides:



Advertisements
Similar presentations
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
Advertisements

Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Difference between project and other assignments  real customer  before programming: negotiations with client to clarify requirements  often.
Introduction to Computer Science CS 21a: Introduction to Computing I Department of Information Systems and Computer Science Ateneo de Manila University.
CS 501: Software Engineering Fall 2000 Lecture 16 System Architecture III Distributed Objects.
1 SYSTEM and MODULE DESIGN Elements and Definitions.
CS 501: Software Engineering
Software Engineering General Project Management Software Requirements
Automated Changes of Problem Representation Eugene Fink LTI Retreat 2007.
Marakas: Decision Support Systems, 2nd Edition © 2003, Prentice-Hall Chapter Chapter 7: Expert Systems and Artificial Intelligence Decision Support.
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.
Software Crisis It was in late 1960’s Many software projects failed.
Course Introduction and Overview of Software Engineering Richard N. Taylor ICS 221 Fall 2002.
CSC230 Software Design (Engineering)
Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering.
Computational Thinking Related Efforts. CS Principles – Big Ideas  Computing is a creative human activity that engenders innovation and promotes exploration.
Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.
1  Staunstrup and Wolf Ed. “Hardware Software codesign: principles and practice”, Kluwer Publication, 1997  Gajski, Vahid, Narayan and Gong, “Specification,
PROGRAMMING LANGUAGES The Study of Programming Languages.
CS 21a: Intro to Computing I Department of Information Systems and Computer Science Ateneo de Manila University.
CSCI 6231: Software Engineering Instructor: Morris Lancaster.
Katanosh Morovat.   This concept is a formal approach for identifying the rules that encapsulate the structure, constraint, and control of the operation.
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
Profile and a quick introduction Software Engineering: ) هندسة البرمجيات (in Arabic: is the branch of computer science Designed to develop a set rules.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
Introduction to Software Engineering (2/2) Moonzoo Kim KAIST (slides from CS550 ‘06 taught by prof. D. Bae)
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
 Programming language Central tools used in software development Having influenced how well we can achieve our software engineering goals.
Objectives of the Lecture
An Introduction to Programming and Object-Oriented Design Using Java By Jaime Niño and Fred Hosch Slides by Darwin Baines and Robert Burton.
PROJECT MILESTONES Group Presentations: ~ 5 mins presentations.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 An 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.
11 C H A P T E R Artificial Intelligence and Expert Systems.
Chapter 2: Software Process Omar Meqdadi SE 2730 Lecture 2 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Chapter 1 The Big Picture.
Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
An Introduction to Software Engineering. Communication Systems.
Software Engineering & Project Management Lecture # 01 Computer Science & Engineering Lucky Sharma Subject Code: CS 603.
CE Operating Systems Lecture 3 Overview of OS functions and structure.
Introduction to Software Engineering. Why SE? Software crisis manifested itself in several ways [1]: ◦ Project running over-time. ◦ Project running over-budget.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Major Disciplines in Computer Science Ken Nguyen Department of Information Technology Clayton State University.
1 CS 501 Spring 2004 CS 501: Software Engineering Lecture 2 Software Processes.
SOFTWARE ENGINEERING. Objectives Have a basic understanding of the origins of Software development, in particular the problems faced in the Software Crisis.
Software Development Life Cycle (SDLC)
Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing.
Chapter 1 Basic Concepts of Operating Systems Introduction Software A program is a sequence of instructions that enables the computer to carry.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
 System Requirement Specification and System Planning.
Methodologies and Algorithms
Programming paradigms
Definition CASE tools are software systems that are intended to provide automated support for routine activities in the software process such as editing.
Introduction to Software Engineering (2/2)
The Systems Engineering Context
Software What Is Software?
Hierarchical Architecture
CS 21a: Intro to Computing I
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Introduction To software engineering
CS385T Software Engineering Dr.Doaa Sami
Presentation transcript:

Ch.11 Software Engineering A Preview

Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering SE consists of many activities in addition to programming SE and other disciplines

Software Engineering: A Preview A computer science field that is dealing w/ –large & complex sw systems –buit by a team or team of engineers –multi-version systems –long life-cycle (changes -> fix detects, enhance, adaptation to new environment etc.) Ch.13

4 Definitions SE is –«the application of engineering to software» –«application of a systematic, disciplined, quantifiable, approach to development, operation, and maintenance of sw» IEEE –«multi-person construction of multi verison sw» Parnas

Ch.15 Meaning Programmer –writes a complete program –a personal activity Software engineer –writes a sw component to be combined w/ components written by other SEs. –components –> reusable, modifiable –a team activity

Ch.16 Need Programming evolved by algorithms, data structures, and OO programming. –not helping build [better, larger] software. –writes a complete program –a personal activity differential equation solving (small program) OS developing (scaled-up)

Ch.17 Strategy Vital engineering strategy –define problem –use and develop tools and techs. Parameters are not clear for SE –no mathematical tools exist –relies on experience & debate

Ch.18 Role of SE in system design SS is a part of a larger systems Software requirements to be balanced against others –eg. Telephone switching system Computers Telephone lines HW (satellite, telephones) a controller SW –eg. Traffic monitoring system –eg. Hospital administration Satisfy requirements of HW, SW, and special devices

Ch.19 Role of SE in system design Complex balancing require SE to participate in developing requirements for the whole system. SE is a part of systems engineering –compromise & trade-offs –SW offers flexibility, HW offers performance (eg. Coin-operated coffee machine)

A shortened history Programming –place sequence of instructions to get the computer do sth useful –interaction btw programmer & computer –problematic when developing large systems Large SW systems are significanty different Ch.110

Ch.111 A shortened history The field of software engineering was born in 1968 in response to chronic failures of large software projects to meet schedule and budget constraints –recognition of "the software crisis" Term became popular after NATO Conference in Garmisch Partenkirchen (Germany), 1968

Ch.112 History – problem defined Problems in constructing large systems –understanding of problem –too much communication time –people leaving the Project –changes are not easy to apply

Ch.113 History – solutions Offered solutions –better managemet techs –different team organization –better programming languages & tools –uniform coding conventions –mathematical approaches Conclusion: apply engineering to software

History SW costs < HW costs (was) SW costs >> HW costs (now) SE deals w/ entire life-cycle –conception -> design -> development -> maintenance -> deployment -> evolution Ch.114

Ch.115 Role of software engineer Software Engineer –must be a good-programmer Programming skill not enough (programming-in-the- small) –familiar w/ design –translate vague requirements –form precise specifications –build models to balance trade-offs –A good Communicator –Schedule work (own and others) programming -in-the-large

Ch.116 The software lifecycle «In theory- theory and practice are the same. In practice, they never are.» Waterfall model -> life-cycle model 1. Requirements analysis & specification –feasibility study (costs & benefits) –by customer, developer, or marketing org. –should be in end-user terms –requires interaction w/ users

Ch.117 The software lifecycle Waterfall model -> life-cycle model 2. System design & specification –architectural (high-level) design –detailed design –what – how dichotomy 3. Coding & module testing –produce actual code for end-user the problem (analysis) to solve (design)

Ch.118 The software lifecycle Waterfall model -> life-cycle model 4. Integration & system testing –integrate components & test whole system –might require testing code 5. Delivery & maintenance –deliver product (SW) to the customer –make sure it works well

Ch.119 The software lifecycle (a preview) waterfall model Concurrent engineering? parallelism

Ch.120 Relationships between SE and other CS disciplines There is a synergistic relationship 1. Programming languages SE -> PL –modularity (Java packages) –Exception-handling (reliable SW) –UI (visual languages) PL -> SE –precise requirement (by machine processible PLs) –Forming a language of commands (UNIX Shell commands) –Formalization leads to automation (exploited for automatic SW generation)

Ch.121 Relationships between SE and other CS disciplines 2. Operating systems OS -> SE –initial large projects –virtual machines, levels of abstraction –separation of policy from mechanism fairness in task scheduling – time-slicing concurrency (what – policy) (how – mechanism) SE -> OS –portable OSs –Protected and unprotected kernels (command line interpreter)

Ch.122 Relationships between SE and other CS disciplines 3. Databases DB -> SE –data independence notion (separation&specification) Use data w/o worrying about representation DB offers concurrent Access to data (useful component) SE -> DB –long transactions CVS (lock code, work on a small piece, forbid access)

Ch.123 Relationships between SE and other CS disciplines 4. Artificial intelligence AI -> SE –explaratory development notion caused uncertainty handling (reverse Software Engineering) –programming assistants –cognitive models UI design SE -> AI –expert systems Separation of «known» facts by «used» rules

Ch.124 Relationships between SE and other CS disciplines 5. Theoretical models TM -> SE –Finite-state machines SW specification & SW design –Petri nets Modeling of SW and HW –Logic Specification languages SE -> TM –Abstract data type notion

Ch.125 Relationships between SE and other disciplines SE cannot be practiced in vacuum. 1.Management science –project estimation, scheduling, human resource planning 2.Systems engineering –certain laws govern the behavior of any complex system –analysis models

Ch.126 Concluding remarks ! SE is an evolving engineering discipline. –deals w/ systematic approaches to building large SW systems by teams of programmers ! We will study essential principles to the engineering activity of building SW.