Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction to Software Engineering

Similar presentations


Presentation on theme: "Introduction to Software Engineering"— Presentation transcript:

1 Introduction to Software Engineering
9/22/2018 Introduction to Software Engineering Yaodong Bi, Ph.D. Department of Computer Sciences University of Scranton September 22, 2018

2 What is Software Engineering
9/22/2018 What is Software Engineering The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. The study of approaches as in (1). by IEEE Computer Society 9/22/2018

3 Knowledge Areas Software requirements Software design
9/22/2018 Knowledge Areas Software requirements Software design Software construction Software testing Software maintenance Software configuration management Software engineering management Software engineering process Software engineering tools and methods Software quality

4 Related Disciplines Computer Science Computer engineering Management
9/22/2018 Related Disciplines Computer Science Computer engineering Management Mathematics Project Management Quality Management Software Ergonomics Systems Engineering

5 Well-Engineered Software
9/22/2018 Well-Engineered Software Maintainable Changes can be made without undue costs Reliable Behave consistently in a user-accepted manner Efficient Not make wasteful use of system resources Friendly user interface Easy to learn and use

6 Software Process A framework for the tasks that are required to build high-quality software A process defines who is doing what, when and how to reach a certain goal 9/22/2018

7 Generic Activities Construction
Communication - Communication with stakeholders and encompasses requirement gathering and other activities Planning - Establishment of a plan: technical tasks, risks, artifacts, work schedule Modeling Analysis – better understanding of requirements Design – that achieves the requirements Construction Code generation Testing Deployment - Delivery of software for customer evaluation

8 Generic Activities Construction
Communication - Communication with stakeholders and encompasses requirement gathering and other activities Planning - Establishment of a plan: technical tasks, risks, artifacts, work schedule Modeling Analysis – better understanding of requirements Design – that achieves the requirements Construction Code generation Testing Deployment - Delivery of software for customer evaluation

9 Waterfall Model Requirements Design Code Test Integrate & Package
9/22/2018 Waterfall Model Requirements Design Code Test Integrate & Package

10 Waterfall model Oldest known process model
A systematic, sequential approach to software development The output from each step is the input of the next step Complete requirements must be specified in the first step The final product is not delivered to the customer until all the first four steps are completed. Drawbacks: Real projects normally do not follow the sequential order It is very hard for the customer to specify the requirements A working system will not be seen by the customer for a long time Requirement error may not be found until the system is delivered – which is very very costly to fix.

11 Incremental Model time Requirements Requirements Requirements Design
9/22/2018 Incremental Model time Requirements 1 Requirements 2 Requirements N Design Design Design Code Code Code Test Test Test Deliver 1st increment Deliver 2nd increment Deliver Nth increment

12 Incremental model The waterfall model applied in an iterative fashion
Each linear sequence produces an increment to the system Normally a core product is delivered, then additional features are incrementally added Useful when staffing is lacking Help in managing risks Difficulties: Decomposing a system into independent, implementable components is not easy Overlapping the different increments due to sequential dependencies of information.

13 Rapid Prototyping Model
9/22/2018 Rapid Prototyping Model

14 Rapid Prototyping Model
Assist the software developers and the customer to better understand the requirements “I know that is what I asked, but it isn’t what I wanted.” A quick, dirty prototype is used by the developer and customer to understand and refine the requirements Rarely employed for complete development cycle Drawbacks: The customer may perceive the prototype as a working system Assumptions and the architecture of the prototype may influence the architecture of the real system

15 9/22/2018 Spiral Model

16 Spiral Model Risk-driven approach – before starting each phase, an attempt is made to control or resolve the risks  Prototyping and modeling are integral part of the process A cyclic approach for incrementally growing a system’s degree of definition and implementation In each cycle all stakeholders review all products and objectives so that all are committed to the project Useful for large-scale and requirements fuzzy systems

17 The Rational Unified Model
9/22/2018 The Rational Unified Model

18 The Rational Unified Model
Four phases of the process Inception – establish a business case for the system Elaboration – Develop an understanding of the problem domain, establish an architectural framework, , develop the project plan, and identify key project risks Construction – Involves system design, programming and testing Transition – move the system to the users and make it work in the real environment

19 The Rational Unified Model
Six Core Engineering Workflows Business modeling – business use cases Requirements – use cases Analysis and design – design model – architectural model, component models, object models, and sequence models Implementation – the system is coded Testing – unit testing along with implementation, system testing after the system is completed Deployment – a release is created and installed in the real environment

20 RUP: Six Best Practices
Develop software iteratively Producing an executable release for the users keeps continuous user involvement and feedback and the developer stay focused Manage requirements Employ use cases and scenarios to capture requirements and to drive the design, implementation and testing Use component-based architectures Provides a systematic approach to defining an architecture using new and existing components

21 RUP: Six Best Practices
Visually model software Use UML to visually capture the structure and behavior of architectures and components Verify software quality Quality assessment is part of the process in all activities with all participants. Control changes to software Describes how to control, track and monitor changes.

22 Agile Software Development
Agile Manifesto: “We are uncovering better ways of developing software by doing it and helping other do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.”

23 Agile Methods Extreme Programming (XP) Scrum Crystal
Beck, extreme programming explained, 2000 Scrum Cohn, Succeeding with Agile: Software Dev. Using Scrum, 2009 Crystal Cockburn, Agile Software Development, 2001 Adaptive Software Development Highsmith, Adaptive Software Development: A Collaborative Approach to Managing Complex Systems, 2000


Download ppt "Introduction to Software Engineering"

Similar presentations


Ads by Google