Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSC450 Software Engineering

Similar presentations


Presentation on theme: "CSC450 Software Engineering"— Presentation transcript:

1 CSC450 Software Engineering
Devon M. Simmonds University of North Carolina, Wilmington Introduction to Software Engineering

2 Learning Objectives To define software engineering and explain its motivation and importance To answer important questions about software engineering Is software engineering, engineering or science? What is the difference between software engineering and computer science? What is the process used to build software? What is a software process? What is a software process model? What are the costs of software engineering? What are software engineering methods? What is CASE (Computer-Aided Software Engineering) What are the attributes of good software? Why is software engineering so difficult? What are the key challenges facing software engineering? How can software engineers better manage complexity?

3 What is software? Computer programs and associated documentation
documents data ...

4 Software’s Dual Role Software is a product
What is Software? Software is a product Delivers computing potential Produces, manages, acquires, modifies, displays, or transmits information Software is a vehicle for delivering a product Supports or directly provides system functionality Controls other programs (e.g., an operating system) Effects communications (e.g., networking software) Helps build other software (e.g., software tools)

5 Software Characteristics
What is Software? Software Characteristics software is engineered software doesn’t wear out software is complex

6 Wear vs. Deterioration What is Software?
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005

7 What is Software engineering?
The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. Bauer/Pressman

8 FAQs about software engineering
Is software engineering, engineering or science? What is the difference between software engineering and computer science? What is the process used to build software? What is a software process? What is a software process model? Are there principle to guide the software process? What are the costs of software engineering? What are software engineering methods? What is CASE (Computer-Aided Software Engineering) What are the attributes of good software? Why is software engineering so difficult? What are the key challenges facing software engineering?

9 IS SE Engineering or Science?
Question #1 Scientific view: Study of rules or principles for building software. The phenomena that affect the production of software. E.g. Adding manpower to a late project makes it later (Fred Brooks). Engineering view: Study of how to design/build useful things. Concerned with building quality software efficiently and economically.

10 FAQs about software engineering
Is software engineering, engineering or science? What is the difference between software engineering and computer science? What is the process used to build software? What is a software process? What is a software process model? Are there principle to guide the software process? What are the costs of software engineering? What are software engineering methods? What is CASE (Computer-Aided Software Engineering) What are the attributes of good software? Why is software engineering so difficult? What are the key challenges facing software engineering?

11 Question #2 What is the difference between software engineering and computer science? Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software Computer science theories are currently insufficient to act as a complete underpinning for software engineering

12 Exercise: Software engineering myths

13 FAQs about software engineering
Is software engineering, engineering or science? What is the difference between software engineering and computer science? What is the process used to build software? What is a software process? What is a software process model? Are there principle to guide the software process? What are the costs of software engineering? What are software engineering methods? What is CASE (Computer-Aided Software Engineering) What are the attributes of good software? Why is software engineering so difficult? What are the key challenges facing software engineering?

14 What is the process used to build software?
Question #3 A software process is a set of activities whose goal is to develop or evolve software. The totality of the processes and activities undertaken when building software is called the software lifecycle. Generic activities in all software processes are: Analysis & Specification - what the system should do and its development constraints Design & Development - production of the software system Validation - checking that the software is what the customer wants Evolution - changing the software in response to changing demands

15 The Software Lifecycle
Question #3 The Software Lifecycle Systems Engineering Requirements Analysis Software Design Implementation Testing Deployment Evolution The process/activities of developing and evolving software Each software process addresses one or more lifecycle phases, e.g., testing.

16 The Software Lifecycle
Question #3 The Software Lifecycle Software Design Requirements Analysis Implementation Systems Engineering Testing Deployment Evolution Systems Engineering Identify needs/problems Allocation of roles Hardware Procedures Software Feasibility studies

17 The Software Lifecycle
Question #3 The Software Lifecycle Software Design Requirements Analysis Implementation Systems Engineering Identify needs, problems and allocate roles Testing Deployment Evolution Requirements Analysis Define goals, objectives, features of target software

18 The Software Lifecycle
Question #3 “Up to 70% of all faults detected in large-scale software projects are introduced in requirements and design. Detecting the causes of those faults early may reduce their resulting costs by a factor of 100 or more.” The Software Lifecycle Software Design Requirements Analysis Implementation Systems Engineering Define software features Identify needs, problems and allocate roles Testing Deployment Software design Creating a blueprint for building the software Architectural design Subsystem design Detailed design Procedural Design User Interface Design Database Design Data Structures Design Test case design Evolution

19 The Software Lifecycle
Question #3 The Software Lifecycle Software Design Requirements Analysis Implementation Create blueprint Systems Engineering Define software features Identify needs, problems and allocate roles Testing Deployment Evolution Implementation Creating the finished product – the program Coding Writing code for the classes and operations Generate object code Create Test cases Create user manuals

20 The Software Lifecycle
Question #3 The Software Lifecycle Software Design Create code Requirements Analysis Implementation Create blueprint Systems Engineering Define software features Identify needs, problems and allocate roles Testing Deployment Evolution Testing Determining if the software has errors/fulfils its requirements Test planning Unit testing Subsystem testing Integration testing Regression testing Test case design

21 The Software Lifecycle
Question #3 The Software Lifecycle Software Design Create code Requirements Analysis Implementation Create blueprint Systems Engineering Define software features Identify needs, problems and allocate roles Testing Deployment Uncovering errors Deployment Making the software available for use Deployment/installation planning Develop documentation Hardware configuration Installation Software distribution Training Evolution

22 The Software Lifecycle
Continue here ... Question #3 The Software Lifecycle Software Design Create code Requirements Analysis Implementation Create blueprint Systems Engineering Define software features Identify needs, problems and allocate roles Testing Deployment Uncover errors Evolution Managing the software Configuration management Controlling change as software evolves Technical support Software lifecycle activities Evolution Make software available for use

23 Configuration Management (CM) [Tichy 1988]
CM is a discipline whose goal is to control changes to large software through the functions of Component identification Change tracking Version selection and baselining Software manufacture Managing simultaneous updates (team work) Question #3

24 CM in Action Question #3 1.0 4.0 1.1 1.2 2.0 1.3 2.1 1.4 2.2 3.0 1.5 3.1

25 The Software Lifecycle
Question #3 The Software Lifecycle Software Design Requirements Analysis Implementation Systems Engineering Testing Deployment Evolution General activities Project management metrication Software estimation & scheduling Training Verification & validation (V & V)

26 Software Lifecycle vs. Software Process
Question #3 The software lifecycle defines the activities in the development and evolution of software. Specific software processes may be defined to address one or more of these activities according to defined rules or constraints.

27 What is a software process model?
Question #3 A simplified representation of a software process, presented from a specific perspective Examples of process perspectives are Workflow perspective - sequence of activities Data-flow perspective - information flow Role/action perspective - who does what Generic process models Waterfall Evolutionary development Formal transformation Integration from reusable components

28 Waterfall Process Model
Question #3 Systems Engineering Requirements Analysis Software Design Implementation and Testing Operation and Evolution

29 Are there principles to guide the software process?
Question #3 You often hear people say that software development knowledge has a 3-year half-life: half of what you need to know today will be obsolete within 3 years. In the domain of technology-related knowledge, that’s probably about right. But there is another kind of software development knowledge—a kind that I think of as "software engineering principles"—that does not have a three-year half-life. These software engineering principles are likely to serve a professional programmer throughout his or her career. Steve McConnell Continue here …

30 Are there principles to guide the software process?
Question #3 Principles that guide process Principle #1. Be agile. Whether the process model you choose is prescriptive or agile, the basic tenets of agile development should govern your approach. Principle #2. Focus on quality at every step. The exit condition for every process activity, action, and task should focus on the quality of the work product that has been produced. Principle #3. Be ready to adapt. Process is not a religious experience and dogma has no place in it. When necessary, adapt your approach to constraints imposed by the problem, the people, and the project itself. Principle #4. Build an effective team. Software engineering process and practice are important, but the bottom line is people. Build a self-organizing team that has mutual trust and respect.

31 Are there principles to guide the software process?
Question #3 Principles that guide process Principle #5. Establish mechanisms for communication and coordination. Projects fail because important information falls into the cracks and/or stakeholders fail to coordinate their efforts to create a successful end product. Principle #6. Manage change. The approach may be either formal or informal, but mechanisms must be established to manage the way changes are requested, assessed, approved and implemented. Principle #7. Assess risk. Lots of things can go wrong as software is being developed. It’s essential that you establish contingency plans. Principle #8. Create work products that provide value for others. Create only those work products that provide value for other process activities, actions or tasks.

32 FAQs about software engineering
Is software engineering, engineering or science? What is the difference between software engineering and computer science? What is the process used to build software? What is a software process? What is a software process model? Are there principle to guide the software process? What are the costs of software engineering? What are software engineering methods? What is CASE (Computer-Aided Software Engineering) What are the attributes of good software? Why is software engineering so difficult? What are the key challenges facing software engineering?

33 What are the costs of software engineering?
Question #4 What are the costs of software engineering? Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs Costs vary depending on the type of system being developed and the requirements of system attributes such as performance and system reliability Distribution of costs depends on the development model that is used

34 Economic and Management Aspects of SE
Question #4 Software production = development + maintenance (evolution) Maintenance costs > 60% of all development costs 20% corrective – to fix defects 30% adaptive – to accommodate changes to external environment 50% perfective – extend and/or refactor Quicker development is not always preferable higher up-front costs may defray downstream costs poorly designed/implemented software is a critical cost factor

35 Relative Costs of Fixing Software Faults
Question #4 200 30 10 4 3 2 1 Requirements Specification Planning Design Implementation Integration Maintenance

36 FAQs about software engineering
Is software engineering, engineering or science? What is the difference between software engineering and computer science? What is the process used to build software? What is a software process? What is a software process model? What are the costs of software engineering? What are the attributes of good software? Why is software engineering so difficult? What are the key challenges facing software engineering?

37 What are the attributes of good software?
Question #7 What are the attributes of good software? The software should deliver the required functionality and performance to the user Maintainability Software must evolve to meet changing needs Dependability Software must be trustworthy Efficiency Software should not make wasteful use of system resources Usability Software must be usable by the users for which it was designed Etc.

38 FAQs about software engineering
Is software engineering, engineering or science? What is the difference between software engineering and computer science? What is the process used to build software? What is a software process? What is a software process model? What are the costs of software engineering? What are software engineering methods? What is CASE (Computer-Aided Software Engineering) What are the attributes of good software? Why is software engineering so difficult? What are the key challenges facing software engineering?

39 Fall 2015: What makes SE difficult?
Communication – difficulty explaining things (tacit knowledge) - Andrew Time management is critical - Prescott Inability to account for all factors early enough -Steve.

40 Class of 2014 Fall Requires time to do it right – Jon
Consequenses of error can be ultra-significant – Brett Software is very complex – Andrew There are many layers to the process - Abby. Creating software is expensive - Thomas

41 Why is SE difficult Spring 2014
Success depends on experience of developers Client has unrealistic expectations Client does not know what they want Developer does not know what client wants Testing is very difficult

42 What makes Software Development Difficult?
Question #8 What makes Software Development Difficult? Reading / personal experience Class of Fall 2013 It is hard to gather info from clients What a client says is not always what a client wants. Team issues Proper testing Communication challenges between all parties

43 What makes Software Development Difficult?
Question #8 What makes Software Development Difficult? Reading / personal experience Class of Fall 2012 Time constraints Requirements change Complexity Managing consistency Working in teams

44 What makes Software Development Difficult?
Question #8 What makes Software Development Difficult? Reading / personal experience Class of Spring’11 Communication challenges in teams. Customer/stakeholder communication problems. Challenges of understanding legacy software Change control/configuration management New software has special challenges

45 What makes Software Development Difficult?
Question #8 What makes Software Development Difficult? Reading / personal experience Class of Spring’09 Difficult to debug Lack of good design Challenges of group dynamics E.g. communication Estimation Time, etc. Lack of resources

46 What makes Software Development Difficult?
Question #8 What makes Software Development Difficult? Reading / personal experience Class of Spring ‘08 Users – error checking Do not know what they want A software system is more than software! Choosing an appropriate language. Legal issues. Absence of a clear requirements. Lack of domain expertise. Security/integrity. Software evolution. Portability issues. Lack of consistent standards.

47 What makes Software Development Difficult?
Question #8 What makes Software Development Difficult? Novelty of application If there is no prior experience gained from developing similar systems then the development task is more difficult Need for effective communication The need to work in teams requires that a number of communication channels be maintained (to at least ensure that everyone in the team has the same vision of the system to be developed) Documentation can help facilitate the sharing of ideas and requirements Sequential nature of development Some requirements definition needs to take place before design proceed, and some design must take place before a program is started Constraints on behavior add to complexity of solution Security, fault tolerance (e.g., introducing redundancy), performance constraints can add to the complexity of development.

48 What makes Software Development Difficult?
Question #8 Change is more difficult than it appears One also needs to make sure that an error was not introduced in a change Problem is not always well-defined Customers may not have a good understanding of the problem. The software engineer may be required to help the customer develop a well-defined problem statement. Desired qualities may be at odds with each other For example, security requirements may be at odds with performance requirements. As much managerial / psychological / sociological as technological Complexity – the #1 super problem!

49 What is complexity? Question #8 The quality of being intricate and difficult to understand

50 Managing Complexity Question #8 Is there a limit?

51 Forms of complexity Algorithmic Structural Behavioral
Question #8 Algorithmic Structural Behavioral Computational (time, space) Data structure Graphical?

52 Essential vs. Accidental Complexity
Question #8 Fred Brooks: The Mythical Man-Month Essential complexity: inherent in the problem and cannot be eliminated by technological or methodological means E.g., making airplanes fly Accidental complexity: unnecessary complexity introduced by a technology or method E.g., building construction without using power tools …or, translating designs (models) into programs without the help of computers Choose appropriate methods, techniques, tools.

53 FAQs about software engineering
Is software engineering, engineering or science? What is the difference between software engineering and computer science? What is the process used to build software? What is a software process? What is a software process model? What are the costs of software engineering? What are software engineering methods? What is CASE (Computer-Aided Software Engineering) What are the attributes of good software? Why is software engineering so difficult? What are the key challenges facing software engineering?

54 What are the key challenges facing software engineering?
Question #9 Legacy systems Old, valuable systems must be maintained and updated Heterogeneity Systems are distributed and include a mix of hardware and software Delivery There is increasing pressure for faster delivery of software

55 FAQs about software engineering
Is software engineering, engineering or science? What is the difference between software engineering and computer science? What is the process used to build software? What is a software process? What is a software process model? What are the costs of software engineering? What are software engineering methods? What is CASE (Computer-Aided Software Engineering) What are the attributes of good software? Why is software engineering so difficult? What are the key challenges facing software engineering? How can software engineers better manage complexity?

56 Managing Complexity? Make engineering is a Model-Driven Discipline!
Question #10 Make engineering is a Model-Driven Discipline! Be rigorous in applying SE principles and techniques.

57 Attributes of a Good Software Engineer
Is a good engineer! Can program in the large as well as in-the-small. Has a solid understanding of computing and software. Is comfortable with working with models at different levels of abstraction. Can communicate and work effectively with other team members. Question #10

58 Review & Summary In this class we:
Defined software engineering and explained its motivation and importance Answered important questions about software engineering Is software engineering, engineering or science? What is the difference between software engineering and computer science? What is the process used to build software? What is a software process? What is a software process model? What are the costs of software engineering? What are software engineering methods? What is CASE (Computer-Aided Software Engineering) What are the attributes of good software? Why is software engineering so difficult? What are the key challenges facing software engineering? How can software engineers better manage complexity?

59 The End Qu es ti ons? ______________________ Devon M. Simmonds
Computer Science Department University of North Carolina Wilmington _____________________________________________________________


Download ppt "CSC450 Software Engineering"

Similar presentations


Ads by Google