Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 1 Introduction to Software Engineering. Why Engineer Software? n Air traffic control case study –$2.3 Billion spent without any usable deliverable.

Similar presentations


Presentation on theme: "Chapter 1 Introduction to Software Engineering. Why Engineer Software? n Air traffic control case study –$2.3 Billion spent without any usable deliverable."— Presentation transcript:

1 Chapter 1 Introduction to Software Engineering

2 Why Engineer Software? n Air traffic control case study –$2.3 Billion spent without any usable deliverable n Enormous social cost of NOT engineering software n Too many large-scale software development failures for too many decades n Software development initiatives fail for many different reasons, most of which are addressed by good software engineering practices

3 Sources of Complexity in Software Development n Technical staff lacks expertise in the complex application domain n Difficulty in interpersonal communications n Ambiguity of natural language, used to express user needs n Difficulty of mentally grasping and coordinating the details of a large-scale development project

4 How Software Development Projects Fail n No functioning software results n The resulting software does not adequately address the need of the users n Software contains incorrect computations n The software is too difficult to use correctly n The system response time is too slow to be used without frustration

5 Why Inter-personal Communication is Difficult n Technical staff and end users have different background knowledge n Technical staff often do not possess the vocabulary used in the application domain n End users frequently do not understand how to effectively express their needs in terms that are clear to systems developers. n Ambiguity of natural language

6 Maintaining Software Systems n Maintenance is an inevitable aspect of software development n It allows software to evolve with an organization n Too often too many resources are directed to maintenance and away from new development n Software requires excessive maintenance efforts if it is poorly structured n It is better to invest in well-structured software up front than to invest excessively in maintenance later

7 Elements of a Software Development Paradigm n Conceptualization –What elements are instrumental in how the developers think about the software system? n Representation –Must convey what the software project is all about –Most effectively done with a software modeling notation n Implementation –Addresses how the source code is structured

8 A Brief History of Software Engineering Techniques n Structured Programming –No gotos n Functional Decomposition –Top-down organization of subprograms n Structured Analysis –Recognition that analyzing the problem statement has critical influence on the success of the overall project –Formal modeling of subprogram interaction with dataflow diagrams

9 More History of SE Techniques n Data-centered analysis –Uses techniques developed in structured analysis –Data modeling occurs using entity relationship diagrams before functional modeling n Object-oriented analysis –No longer segregates the modeling of functions and data –Objects aggregate data with functions that operate on the data

10 Sample Dataflow Diagram Check for overdue books Check-out books Read Patron record Change book status Read book record Write book record Patron ID True/false Patron ID Patron record or null Book ID, out Book ID Book record

11 Sample Entity Relationship Diagram Checks out Library Patron Address BookPublisher Requests 1:M Has-a

12 Principles of the Object- Oriented Paradigm n Abstraction n Modularity n Modeling n Inheritance n Encapsulation(covered in chapter2) n Polymorphism(covered in Chapter2) Shared by other paradigms

13 Abstraction n Expressing the software requirements in abstract terms, suppressing details so that a comprehensive portrayal can be made n The abstract representation must then be connected to more detailed expressions, so that no information is lost in modeling the system n This allows us to reason about the breadth of functionality of the developing system

14 Modularity n Breaking a complex software system into smaller modules allows one to reduce its overall complexity n Modules should aggregate some coherent aspect of the system n Modules should present a simple interface n Classes, functions, and abstract data types are examples of modules.

15 Abstract Data Type Example STACKSTACK POP() PUSH(item) ISEMPTY() Interface Accesses Implementation Option: Array 12 24 98 33 13 Implementation Option: Linked list 13 98 24

16 Modeling n Modeling is the process of use a graphic notation to express properties of the software system n Models express how the system is built out of modules and how these modules interact n One objective of modeling is to express characteristics of the software system in an unambiguous manner

17 Inheritance n A property distinguishing classes from abstract data types n Allows characteristics from one class to be passed on its subclasses n Subclasses may override inherited characteristics

18 Cost of not Engineering Software n Need to restructure code n High maintenance costs n Software is unacceptable to end users n Unreliable code n Need to rewrite code n Difficulty integrating system modules n Difficult project management n Budget and time overruns

19 Why Software Engineering is not Universal n Understanding software development as programming only without recognition of importance of analysis and design n Short-sighted technical management n Pressure of deadlines n Poor project estimation, thus unreasonable deadlines

20 Working in Teams n Be conscientious about due dates n If you are less motivated by the class project, negotiate an equitable grade and take a lesser role n Meet regularly with your team n Always create an agenda for every team meeting n Rotate responsibility for chairing team meetings


Download ppt "Chapter 1 Introduction to Software Engineering. Why Engineer Software? n Air traffic control case study –$2.3 Billion spent without any usable deliverable."

Similar presentations


Ads by Google