SE: CHAPTER 1 Why Software Engineering ?

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

Configuration management
Test process essentials Riitta Viitamäki,
System Development Life Cycle (SDLC)
Object-Oriented Software Development CS 3331 Fall 2009.
Chapter 2 – Software Processes
CSCU 411 Software Engineering Chapter 2 Introduction to Software Engineering Management.
Chapter 1 4th Edition What is Software Engineering Shari L. Pfleeger
System Design and Analysis
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
Software Engineering General Project Management Software Requirements
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
What is software engineering?
Fundamentals of Information Systems, Second Edition
Chapter 1 The Systems Development Environment 1.1 Modern Systems Analysis and Design Third Edition.
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.
Copyright 2004 Prentice-Hall, Inc. Essentials of Systems Analysis and Design Second Edition Joseph S. Valacich Joey F. George Jeffrey A. Hoffer Chapter.
The analysis steps. Problem Analysis Sub-problem 3 Sub-problem 2 Sub-problem nSub-problem 1.
Software Quality Assurance
Introduction to Software Testing
CSC230 Software Design (Engineering)
Design, Implementation and Maintenance
Handouts Software Testing and Quality Assurance Theory and Practice Chapter 17 Software Quality
Sharif University of Technology Session # 4.  Contents  Systems Analysis and Design Sharif University of Technology MIS (Management Information System),
Copyright 2001 Prentice-Hall, Inc. Essentials of Systems Analysis and Design Joseph S. Valacich Joey F. George Jeffrey A. Hoffer Chapter 1 The Systems.
ECNG3023: Introduction to Software Engineering Kevon Andrews Rm. 329 Ph: x3156 Open Hours:
Handouts Software Testing and Quality Assurance Theory and Practice Chapter 17 Software Quality
Introduction to Systems Analysis and Design Trisha Cummings.
Systems Analysis – Analyzing Requirements.  Analyzing requirement stage identifies user information needs and new systems requirements  IS dev team.
Managing Software Quality
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
Chapter 2 The process Process, Methods, and Tools
Week 5: Business Processes and Process Modeling MIS 2101: Management Information Systems.
What is software? Software is a set of items or objects that form a configuration that includes: –Programs –Documents –Data.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
Chapter 1 What is Software Engineering Shari L. Pfleeger Joanne M. Atlee 4 th Edition.
1 Software testing. 2 Testing Objectives Testing is a process of executing a program with the intent of finding an error. A good test case is in that.
SE: CHAPTER 7 Writing The Program
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
Systems Analysis and Design in a Changing World, Fourth Edition
Construction, Testing, Documentation, and Installation Chapters 15 and 16 Info 361: Systems Analysis and Design.
What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,
Fundamentals of Information Systems, Second Edition 1 Systems Development.
Chapter 1 Quality terminology Error: human mistake Fault: result of mistake, evidenced in some development or maintenance product Failure: departure from.
1 EE29B Feisal Mohammed EE29B: Introduction to Software Engineering Feisal Mohammed Ph: x3156.
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Chapter 6 CASE Tools Software Engineering Chapter 6-- CASE TOOLS
Software Prototyping Rapid software development to validate requirements.
Chapter 2 – Software Processes Lecture 1 Chapter 2 Software Processes1.
CASE (Computer-Aided Software Engineering) Tools Software that is used to support software process activities. Provides software process support by:- –
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.
Foundations of Information Systems in Business. System ® System  A system is an interrelated set of business procedures used within one business unit.
Smart Home Technologies
第 11 組 MIS 報告. Phases of any information system ~ recognition of a business problem or opportunity ~ recognition of a business problem or opportunity.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Alex Jacobson Presents An Introduction To Software Engineering.
Chapter 1 SOFTWARE ENGINEERING What is Software Engineering.
LECTURE 5 Nangwonvuma M/ Byansi D. Components, interfaces and integration Infrastructure, Middleware and Platforms Techniques – Data warehouses, extending.
 System Requirement Specification and System Planning.
MANAGEMENT INFORMATION SYSTEM
TOTAL QUALITY MANAGEMENT
Principles of Information Systems Eighth Edition
Object-Oriented Software Engineering Using UML, Patterns, and Java,
Frequently asked questions about software engineering
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Presentation transcript:

SE: CHAPTER 1 Why Software Engineering ? What We Mean by SE ? SE’s Key Issues What We Mean by “good software” Differences between Computer Science Problems and Engineering Ones ? Peoples Involved in SE Changing of SE since 1970s

1.1 What Is Software Engineering ? Software Is One Way to Solve Problems There are some other ways Solving Problems Need Understanding the Nature of Problems If Possible and Appropriate, Using Software to Implement the Solution Software Is a Good Way to Solve Complex Problems Never Impose anything on Problem that Comes Our Way

Solving Problems The Process of Solving Problems Investigating Problem at Hand by Analyzing it Break the Problem into Pieces We Can Understand Describe the Problem as a Collection of Small Problems and Their Interrelationships Construct the Solution from Components Address the Problem’s Various Aspects through Synthesis Put together of Large Structure from Solutions of Small Problems The Synthesis or Composition from Solutions of Small Problems to The Large Problem May Be as Challenging as Analyzing and Finding Solutions Themselves. See Fig 1. 1 and Fig 1.2 (p.3)

Solving Problems To Help Solving a Problem, We Employ Various Methods, Tools, Procedures and Paradigms A Method or Technique Is a Formal Procedure for Producing some Useful Result Example: Preparing a Sauce May Need and Involve Various Ingredients, Cooking Equipment, Timing,… A Tool Is an Instrument or Automated System for Accomplishing Something in a Better Way. “Better Way” : Tools Make Us More Accurate, More Efficient, or More Productive, Or It Enhance the Quality of the Resulting Product. Examples: Typewriter, Scissors,… Tool Is Not Always Necessary for Making Something Well. A Procedure Is a Combination of Tools and Techniques to Produce a Particular Product. A Paradigm or Style Is a Particular Approach or Philosophy. Example: Chinese or French Cooking, Procedure or OO Programming

Where Does the SE Fit In ? Computers and Programming Languages Are Tools They are used in design and implementing a solution to a problem. Software engineers focus on the computer as a problem-solving tool. Software engineers work with the functions of a computer as part of a general solution, rather than with a the structure or theory of the computer itself. See Fig. 1.3 (p.5)

1.2 How Successful Have We Been ? Writing software is an art as well as a science Computer scientists and software engineering researchers study computer mechanisms and theorize about how to make them more productive or efficient. They also design computer systems and write programs to perform tasks on these systems. We need programs that may be more efficient, more precise, more robust, easier to use, easier to modify, easier to understand, easier to maintain. That is, We need to produce quality programs. Writing Quality programs need both skills and science

How Successful Have We Been ? Software has enabled us perform tasks more quickly and effectively than ever before. Example: Word processing, electronic mail, life-sustaining or life-saving in medicine, weather-forecasting, multimedia education, robotics, and more. However, software does not always function exactly as expected. Example: failure on its maiden flight of Ariane-5 of European Space Agency, On June 4,1996. See p.37 Faults in any program may : be merely annoying, or cost a great deal of time and money, or life-threatening. Programs containing faults are not acceptable when developing a system for delivery to a customer.

How Successful Have We Been ? Terminology for Describing bugs A “bug” can be any mistake or error in coding. A Fault occurs when a human makes a mistake or error, in performing some software activity. Example: a designer may misunderstand a requirement, and create a design that does not match the actual intent of the requirement analyst and the user. This design fault is an encoding of the error; It can lead to other faults, including errors in other coding or user’s manual. A Failure is a departure from the system’s required behavior, usually caused by faults. It can be discovered before or after system delivery, during testing, or during operation or maintenance. Requirements documentation may contain faults.

How Successful Have We Been ? Terminology for Describing bugs A Fault is an inside view of the system : problems seen by developers. A Failure is an outside view : problems seen by users. Not every fault corresponds to a failure Example : fault code never executed. How human error causes a failure (Fig.1.4,p.6)

How Successful Have We Been ? Facts and Backgrounds 1980s: the $4-billion fiasco in USA An automated federal income tax form processing system 1985: Strategic Defense Initiative (SDI) heightened the public’s awareness of difficulty of producing a fault-free software. Now, as U.S. Congress is asked to allocate funds to build a similar system, many computer scientists and software engineers continue to believe: there is no way to write and test the softeare to guarantee adequate reliability. It is estimated that the system would require at least 10~100 million lines of code. Further more, the reliability constraints would be impossible to test. For typical safety-critical systems (any failure poses a threat to life or health), the reliability requirement would as high as at least 10-9 This means that it would run 109 hours (114,000 years) without failure.

How Successful Have We Been ? Facts and Backgrounds Therac-25, a radiation therapy and X-ray machine, when malfunctioned because of its improperly design or programming, killed several patients. Manufactures are striving for zero-defect software, in fact most software products are not fault-free. Market forces encourage developers deliver products quickly, with little time to test thoroughly. Users are wary of installing the first version of code. Modification needed to fix known faults sometime are so difficult to make. Lack of quality can be costly; the longer a fault goes undetected, the more expensive to correct it. correcting an error made during the initial analysis only cost 1/10 of after it is delivered to customer.

1.3 What is Good Software ? Different Perspectives on Quality Transcendental view : quality is something we can recognize but not define. User’s view : quality is the fitness for purpose. We can measure product quality such as defect density or reliability. Manufacturing view : quality is the conformance to software specification. Product view : quality is tied to inherent product characteristics. Value-based view : quality depends on the amount the customer is willing to pay for it.

What Is Good Software ? Consider Quality in at least 3-Ways Context helps to determine the answer to software quality. 3-Ways to consider software quality The quality of product itself. The quality of the process that results in the product. The quality of the product in the context of the business environment in which the product will be used.

What Is Good Software ? The Quality of Product Quality and functionality of a system sometime may intertwined. We try to measure software quality Identify particular aspects of a system that contribute to the overall quality. External characteristics as number of failures and type of failures Minor Failures, major failures, catastrophic failures We expect only minor failures occur. Internal characteristics Numbers and types of faults to reflect the product quality Faults found in requirements, design and code McCall’s model of quality (see Fig 1.5,p.11)

What Is Good Software ? McCall’ product quality model High Level Quality Measures: Correctness, Reliability, Efficiency, Integrity, Usability, Maintainability, Testability, Flexibility, Portability, Reusability, Interoperability Low Level Quality Measures: Trace-ability, Completeness, Consistency, Accuracy, Error tolerance, Execution efficiency, Storage efficiency, Access control, Access audit, Operability, Training, Communicativeness, Simplicity, Conciseness, Expandability, Instrumentation, Self-descriptiveness, Expandability, Generality, Modularity, Software system independence, Machine independence, Communications commonality, Data commonality

What Is Good Software ? The Quality of Process Product development activity may affect quality. Process modeling can help to find ways to improve quality. The concern about process is to Try to find answers to following questions: Where and when to find a particular kind of faults ? How can find faults earlier ? How can build in fault tolerance to minimize the likelihood that a fault will become a failure ? Can we find alternative activities to make the process more effective or efficient at assuring quality ? Focus on process modeling and process improvement in SE. CMM : Capability Maturity Model ISO 9000 SPICE : Software Process Improvement and capability dEtermination

What Is Good Software ? Quality in the business environment Business value : Return On Investment (ROI) Including or considering : original funding, funds earned and plus possible risk U.S. Government and U.S. industry interpret ROI in different ways Government view : in terms of dollars, looking at reducing operating costs, dollars savings and calculating the cost of employing new technologies Industry view : in terms of effort, looking at saving time and using fewer people Generally, ROI including : training, schedule, risk, quality, productivity, process, customer, costs, business (Fig 1.6,p.14) Software technology return on investment is not the same as financial ROI. To the former, effects to the main company business may be concerned.

1.4 Who Does SE? People involved in Software Development The number of people working on software development depends on the project’s size and degree of difficulty. Roles played through out the life of a software project For a large project, one person or a group may be assigned to each roles identified.

Roles played in the development Who Does SE? Roles played in the development Customer : company, organization or person who is paying for the software to be developed. In control of the funds, will negotiate the contract and sign the acceptance papers. Developer : company, organization or person who is building the software for the customer. User : person or people who will sit at the terminal and actually use the system.

Who Does SE? The simple distinction may become complex sometimes the customer is not a user. Sometimes an organization or division will at the same time be the customer, developer and user. Sometimes, customers and users may have involved in the development process in a variety of ways. A developer may choose to use additional developers, called subcontractors. They build a subsystem and deliver it to the developer to be included in the final product. The subsystem may be turnkey system, where the code is an incorporated whole without additional code for integration.

1.5 A Systems Approach Knowing Boundaries of a project System is set of components interrelated, and it must interact with outside components as well. Boundaries : what is included in the project or system and what is not. The boundaries should also be found for each component of a system or component.

The Elements of a System System is described by its parts and part-relationships (components) Activities and Objects Objects or entities are the elements of a system An object has its own structure and activities Objects are related with each other in some way Example : objects arranged in a table or matrix (collection), grouped as records (aggregate/composition) Pay special attention to Similar but different objects Independent functioning objects Objects as parameters of activity

The Elements of a System Activities and Objects Activities are also the elements of a system Activities transform one thing to another by changing object characteristics Moving from one location to another Changing values of objects Combining objects to form new objects Activities need parameters Activities normally are attached to some objects But not necessarily

Relationships and System Boundary Relationships among objects and activities They are clearly and carefully defined. Object definition includes a description of where they are originated or destined. Some items reside in other objects that already exist Others are created during some activities Some objects are used by activities outside the scope of the system being examined. We can think of the system as having a border or boundary A system is a collection of things A set of objects, a set of activities The relationships among objects and activities Definition of the boundary of system

Relationships and System Boundary Interrelated System Once the boundary of a system is described, we can easily find What is within, without and across the system boundary. A Large system may be composed of with other systems, called sub-systems Treatment of separate, smaller systems makes the system understanding and construction much easier Sub-system may be replaced with other similar ones System is constructed in may different ways System may exist inside another system System may be composed of in the form of layers or aggregation System construction can be an incremental series of intermediate system (incremental development approach)

1.6 An Engineering Approach Engineering development is an artistic approach to use tools and techniques The process of Building a House The process of building a software system

Building a House The process of building a house The process Determine and analyzing the requirements Producing and documenting the overall design Producing the detailed specification Identifying and designing the components Building each components Testing each components Integrating the components to form a whole Maintenance Change of minds in the process is inevitable Come from both developer or customer Subject consideration or object constraints We can not prescribe the activities exactly Participants should remain flexible and allow changes

Building a Software System The process of building a software system The progress is in a similar way to the house building Involves users, customers and developers The process Requirements analysis and definition System design Program design Writing or implementing the program Unit testing Integration testing System testing System delivery maintenance In reality, many of the process steps are repeated.

1.7 Members of development team Role of the members Requirement analysts Designer generate system-level description Programmer Tester Customer Trainer Maintainer Librarians Prepare and store documents, manuals, test data, schedule and more. Configuration manager Maintaining correspondence among the requirements, design, code, tests.

1.8 How has SE Changed ? Difference and difficulties in producing quality software Customers are too often unhappy with the software. Change of minds is inevitable in every step The construction of a system is a process of re-engineering of the users’ working environment Detailed understanding, structure and relationships have their own complexity, which both users and developers need time and effort to formulate them correctly. Outside environment changes all the time. As various stages of a project unfold, constraints arise that were not anticipated at the beginning. Most systems do not stand alone They interface or coordinate with other systems in one way or another.

The Nature of Change The change of software’s environment Advanced hardware entails sophisticated software structure and functions Today’s software systems are far more complex. Graphic user interfaces, network, multi-processor, multi-tasks 7 key factors that have altered SE practice (Fig 1.12,p.29) Criticality of time-to-market for commercial product Lower hardware costs and greater development and maintenance costs Requirement of powerful desktop computing Extensive local- and wide-area networking Adoption of object-oriented technology Graphic user interfaces using windows, icons, menus and pointer-devices Unpredictability of the waterfall model of software development

Wasserman’s Discipline of SE These are the fundamental notions in SE Abstraction Abstraction is the description of the key aspects of a problem without getting mired in details. Abstraction involves identifying classes of objects and their relationships We can deal with fewer things and concentrate on the main commonalities or aspects We can form hierarchies of abstraction Abstraction is different from transformation

Wasserman’s Discipline of SE Analysis and design methods and notations Project Engineering needs a particular approach Including techniques and tools Needs a standard notation to help participants communicate and document decisions Analysis and design methods offer us more than a communication medium Allow us to build models and check them for completeness and consistency Help reuse requirements and design components Open question : Different tools and techniques address different aspects of a problem

Wasserman’s Discipline of SE User interface prototyping Prototyping : building a small and simple version of a system that can be used to Help the user and customer to identify the key requirements of a system Demonstrate the feasibility of a design or approach Prototyping is often used to design a good user interface Software architecture The overall architecture of a system is important To the ease of implementation and testing, to the speed and effectiveness of maintaining and changing The quality of the architecture can make or break the system It reflect the principles of good design A system’s architecture describes the system in terms of a set of architecture units

Wasserman’s Discipline of SE Software architecture Wasserman’s 5 ways to partition a system Modular decomposition based on assigning functions Data-oriented decomposition based on external data structure Event-oriented decomposition based on events Outside-in design based on user input to the system Object-oriented design System architecture may be constructed by using architecture styles or design-patterns Software process Different types of software need different development processes (see Fig 1.14, p.33) Good tools help great deal in software development Large, complex systems need more structure, checks and balances

Wasserman’s Discipline of SE Reuse Reusing the successful products helps a great deal in software development Can gain quantifiable benefit both to the development speed and product quality However, several barriers exist Sometime building a small one is faster than searching for an existing reusable one It may take extra time to make a component more general enough to be reused in other context It is difficult to document and assure the quality It can be costly and time-consuming to understand and reuse a component written by others There is often a conflict between generality and specificity

Wasserman’s Discipline of SE Measurement A quantitative approach permit us to compare different projects, products, processes See Fig 1.15, p.35 Tools and integrated environments Standardized, integrated developments would enhance software development But, different developers use different processes, methods and tools Further, venders of tools rarely address the entire development lifecycle, making the use of tools limited within a or several stages.

What this chapter means ? What means for you ? Problem breaking and synthesizing to find a solution to the problem Requirements may change during a project View quality from several different perspectives Use Abstraction and measurement to help identify the essential aspects of the problem and solution Identify System boundary

Exercises On Page 43-44 Problem 2 Problem 3 Problem 4