0 evaluări0% au considerat acest document util (0 voturi)
13 vizualizări9 pagini
This document provides an overview of chapter 1 of a textbook on software engineering. It introduces some key concepts in software engineering, including definitions of software and software engineering. It discusses how software engineering involves developing large, complex software systems as a team, as opposed to individual programming. It also compares the roles of a programmer versus a software engineer.
This document provides an overview of chapter 1 of a textbook on software engineering. It introduces some key concepts in software engineering, including definitions of software and software engineering. It discusses how software engineering involves developing large, complex software systems as a team, as opposed to individual programming. It also compares the roles of a programmer versus a software engineer.
This document provides an overview of chapter 1 of a textbook on software engineering. It introduces some key concepts in software engineering, including definitions of software and software engineering. It discusses how software engineering involves developing large, complex software systems as a team, as opposed to individual programming. It also compares the roles of a programmer versus a software engineer.
Engineering Prof. Steven A. Demurjian Computer Science & Engineering Department The University of Connecticut 371 Fairfield Road, Box U-2155 Storrs, CT 06269-2155 steve@engr.uconn.edu http://www.engr.uconn.edu/~steve (860) 486 4818 (860) 486 3719 (office) Ramesh 2 Overview of Chapter 1 Introduction to Software Engineering What is Software? What is Software Engineering? What Does Software Engineering Do? How is Software Engineered (Process)? Software Engineering vs. Computer Science? Designing/Building Systems for Today and Tomorrow Recall CSE133 and CSE134 Ideas: Abstract Data Types (ADTs), Core and Advanced Object-Oriented Concepts, Benefits of OO Introduce Ideas of Component-Based Design & Development Discuss Software Engineering for Distributed Application/System Development Ramesh 3 What is Software? Software is the Definition and Organization of a Set of Tasks and Functionality Encapsulated into a Form that is Executable on a Computer What are Different Types of Software? Commercial-Off-the-Shelf (COTS) Government-Off-the-Shelf (GOTS) Legacy: Written in an Old Programming Language Cobol, PL/1 (Y2k/SNET), Fortran, etc. C and C++! Customized New Software Client vs. Server Software Database Management Systems/Applications Ramesh 4 What is Software Engineering? Engineering: The Application of Science to the Solution of Practical Problems Software Engineering: The Application of CS to Building Practical Software Systems Programming Individual Writes Complete Program One Person, One Computer Well-Defined Problem Programming-in-the-Small Software Engineering Individuals Write Program Components Team Assembles Complete Program Programming-in-the-Large Ramesh 5 What is Software Engineering? The Application Of Engineering To Software Field of CSE Dealing with Software Systems Large and Complex Built By Teams Exist In Many Versions Last Many Years Undergo Changes Definitions: Application of a Systematic, Disciplined, Quantifiable Approach to the Development, Operation, and Maintenance of Software (IEEE 1990) Multi-person Construction of Multi-version Software (Parnas 1978)
Ramesh 6 Why Software Engineering? Program Complexity Transcends Individual or Lone Programmer Software Engineering Targeted for Constructing Large Software Applications Defining Problem Clear and Completely Tools and Techniques to Support Process Team-Oriented Experience Software Engineering must Evolve to be an Engineering Discipline Software Engineering Must Promote and Support Multi- Person Construction of Multi-Version Software Ramesh 7 Software Engineering - Historically Early Days 1950s Programmers Wrote Programs Early 1960s - Very Large Software Projects Constructed by Experts Mid-Late 1960s - Advent of Large Commercial Software Applications Large Systems Involved Teams of Individuals Coining the Term Software Engineering Towards a Software Engineering Discipline Individuals Couldnt see Big Picture Increase in Communication Time Personnel Changes Impact on Productivity SE: Management, Organization, Tools, Theories, Methodologies, Techniques, etc. Ramesh 8 Influences on Software Engineering Cost of Software Continues to Increase, Requiring More Efficient Software Production Software Acquisition vs. Outsourcing Software Reuse vs. Build-from-Scratch Complexity of Large Software Altered the View from Development Perspective Conception Design Development Integration Distribution Documentation Maintenance Evolution Extension Software Engineering/Computer Science Growth 350,000 Information Technology Jobs Open 100,000 New Jobs per Year for 10 Years Ramesh 9 Programmer vs. Software Engineer Individual with Good Skills Programming-in-the-Small Knowledge on Data Structures Algorithms Fluent in Several Programming Languages May Lack Formal Training Minimal Exposure to CS Part of a Team Programming-in-the-Large Design Approaches OO, Modules, etc. Top-Down/Bottm-Up Translates Requirements into Specifications Familiarity in Multiple Application Areas Converses with Users Sees Big Picture Can Model Application Good Communication and Interpersonal Skills