Advanced Software Engineering Lecture 1 Introduction to Software

  • Slides: 49
Download presentation
Advanced Software Engineering Lecture 1: Introduction to Software Engineering Prof. Harold Liu

Advanced Software Engineering Lecture 1: Introduction to Software Engineering Prof. Harold Liu

Content Basic concept of software engineering p Computer-based system engineering p Software process p

Content Basic concept of software engineering p Computer-based system engineering p Software process p 2

1. What is Software? p p p Software=program+data+document n Customized software n Generic software,

1. What is Software? p p p Software=program+data+document n Customized software n Generic software, Shrink-wrapped software n Embedded software n Safety-critical software n COTS (Commercial Off-the-Shelf) “I will create a software to update the database”. (some software, a piece of software, a software system) Categorized by its functionalities, scale/size, operational method, required reliability, etc. 3

2. What is Software Engineering? p Fall, 1968, NATO Technical Committee convened nearly 50

2. What is Software Engineering? p Fall, 1968, NATO Technical Committee convened nearly 50 first-class programmers, computer scientists and industry giants, discuss how to cope with "software crisis". Fritz Bauer at the meeting for the first time put forward the "Software Engineering" concept. p The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. ” --- Fritz Bauer, 1968 4

p IEEE Definition: Software engineering is (1) the systematic, standardized, measurable method is applied

p IEEE Definition: Software engineering is (1) the systematic, standardized, measurable method is applied to software development, operation and maintenance of the process, the upcoming engineering applied to software development process thinking (2) research into (1) p Software engineering goals: low-cost, high-quality, on-time delivery 5

Essential Characteristics of Software Engineering p p p p Concerned about the construction of

Essential Characteristics of Software Engineering p p p p Concerned about the construction of large programs How to control the complexity Constantly changing software requirements Aim at improving the efficiency of software development Teamwork is key to its successful implementation Software must effectively support its users Cultural background difference for software product creation. 6

5. What is Software Process? p Software process is the development of software products

5. What is Software Process? p Software process is the development of software products for a group of activities and their results. p All software process contains four basic activities: Software description, software development, software validation and software evolution. p Different software processes organized in different ways in these four activities, which may affect the results of the progress of events. p Different bodies may be used to produce the same type of process products. 7

Benefits p A software process defines that in order to achieve the goals, what

Benefits p A software process defines that in order to achieve the goals, what people need, in what way, at what time, what kind of work done (Goal, Who, When, How, What) p For Customer, User, Developer, Manager, a widely applicable software process allows all stakeholders to better understand their role and others’ role, as what to do at what time. p Promote the integration process to obtain the "best software process. “ p Make the company's internal training standardized. p Due to the repeatability of the software process, useful for the development schedule arrangements and cost estimates. 8

6. What is Software Process Model? p Software process model is built from a

6. What is Software Process Model? p Software process model is built from a particular perspective on the nature of the software process description. p Software process model includes a variety of activities that are constituting the software process, software products, as well as all stakeholders. 9

 From a different perspective of the software process described, one get a different

From a different perspective of the software process described, one get a different type of process models: p Workflow model: Describes the sequence of a series of activities, inputs, outputs and inter-dependencie. Here we refer “Activities”as human activity. p Data stream or activity model: the software process described as a set of activities, each of which completes certain data conversion. The referred level of activity in this model is below the workflow model. p Role/action model: Describes the different roles involved in the software process and its responsible activities. 10

Paradigm, Methodology Waterfall Model p Waterfall Model with Maintenance Circle p Waterfall Model with

Paradigm, Methodology Waterfall Model p Waterfall Model with Maintenance Circle p Waterfall Model with Prototyping p Spiral Model p V Model p Phased Development Model p Incremental and Iterative Model p Rational Unified Process p 11

7. Costs and distributions Software costs depend on the adopted software process and the

7. Costs and distributions Software costs depend on the adopted software process and the type of software being developed. p General distribution of costs: Description: Design: Development: Integ. and Test (15 : 20 : 40)% p High-demand software systems: integration/testing can occupy upt to 50% : 50% p software evolution p maintenance p Web-based e-commerce system p 12

8. Methodologies for Software Eng. p Structured Method, by De. Marco, 1978, Yourdon E.

8. Methodologies for Software Eng. p Structured Method, by De. Marco, 1978, Yourdon E. and Constantine L. et. al. p Jackson System Development, 1983 p Object-Oriented Method, by Booch, 1994; Rumbaugh et al, 1991 Design Patterns 13

Tendency for Change when Using OO Paradigm (Jacobson et al. 1995) Characteristic of SW

Tendency for Change when Using OO Paradigm (Jacobson et al. 1995) Characteristic of SW product/project Probability for change Objects derived from the application Low Long-lived information structures Low Passive object’s attribute Sequences of behavior Medium Interface with the outside world High Functionality High 14

Tool: UML (Unified Modeling Language) • In 1994, OO principle has been throughout the

Tool: UML (Unified Modeling Language) • In 1994, OO principle has been throughout the entire software life cycle, it already has an impact on 50+ OOA&D methods. • UML is a kind of modeling language for visualization, decription, structuring and documentation, mainly for the analysis and design phase of system modeling. 15

UML 2. 0 1994 Booch Method Rumbaugh OMT Coad/Yourdon Fire Smith Method Jacobson OOSE

UML 2. 0 1994 Booch Method Rumbaugh OMT Coad/Yourdon Fire Smith Method Jacobson OOSE …… 1995. 10 Unified Method 0. 8 1996. 6 UML 0. 9 12 companies incl Rational form up UML organization, and then UML 1. 0. In 1997. 1, submitted to OMG In 2002, UML 2. 0 is published 1997. 11. 4, OMG adopted UML 1. 1 16

9. What is CASE? Computer-Aided Software Engineering (CASE) p A bunch of tools to

9. What is CASE? Computer-Aided Software Engineering (CASE) p A bunch of tools to support the software enegnieering process p Lower-end tools: to generate codes p High-end tools to draw enterprise model and application requirements specifications p 17

10. Problems of Software Engineering p p p Legacy systems Changing requirements Delivery …

10. Problems of Software Engineering p p p Legacy systems Changing requirements Delivery … System complexity and details (Mars probe failure) Technological uncertainty (and in turn the understanding of developers) Communication barriers Requirement uncertainty Constant changes lead to the software degradation Artificial and the market risk Costs, reliability, productivity, reusability problems 18

Content Basic Concept of Software Engineering p Computer-based System Engineering p Software Process p

Content Basic Concept of Software Engineering p Computer-based System Engineering p Software Process p 19

1. System Overall Characteristics Functional p Non-functional: reliability, security, privacy, safety issues p What

1. System Overall Characteristics Functional p Non-functional: reliability, security, privacy, safety issues p What relates the system reliability: p n n n HW SW Operational 20

2. System and Its Surviving Environment p p Environment is always there Environment will

2. System and Its Surviving Environment p p Environment is always there Environment will affect the system's functionality and performance. In the environment there exisit a series of interactions with other systems. Thus, the environment can be treated as a stand-alone system. Systems engineer must understand the system environment n n In many cases, the system is to change the environment. A system can be affected by environmental changes, and such effects may be difficult to estimate. 21

3. System Modeling p p System modeling describes the components of the system and

3. System Modeling p p System modeling describes the components of the system and their relationships (system architecture) System architecture is generally described in block diagram. Subsystems Functional components can be divided into six categories: n n n Sensors: Gather information from the environment. Actuators: incur the environmental changes Computing components: given an input, perform calculations and produce output. Communications Scheduling: coordination of operations between components. Interface 22

4. Process for Sys Engineering Req Def Sun-set Sys Design Sys evolvement Component dev

4. Process for Sys Engineering Req Def Sun-set Sys Design Sys evolvement Component dev Sys installation Sys integration 23

p Subsystem development: n Parallel n Frequent modifications beyond the scope of a subsystem

p Subsystem development: n Parallel n Frequent modifications beyond the scope of a subsystem may happen (HW? SW? ) n System integration by incremental process p Hard to estimate the exact timing for a subsystem p Accurate error-positioning (which subsystem causes the failure? ) to reduce the disagreement of different subcontractors 24

Content Basic Concept of Software Engineering p Computer-based System Engineering p Software Process p

Content Basic Concept of Software Engineering p Computer-based System Engineering p Software Process p 25

1. Software Process Model An abstract representation of the software process p In practice,

1. Software Process Model An abstract representation of the software process p In practice, multiple models are used. p Four kinds of models p n n Life-cycle model (waterfall) Evolutionary development model Formal methods Reuse-oriented development model (OO) 26

Prob Def Waterfall Req Analy • • High-level Design • Low-level design Waterfall Classic

Prob Def Waterfall Req Analy • • High-level Design • Low-level design Waterfall Classic Life Cycle Model Linear Sequential Model p Dependencies between any two subsequent stages coding p Defer development after designs testing p maintenance To ensure quality 27

Pros p Development process is essentially in a linear sequence, manageable p Based on

Pros p Development process is essentially in a linear sequence, manageable p Based on "clear and comprehensive requirements“, thus able to achieve satisfactory results 28

60~100 x 1. 5~6 x 1 x Definition Development • • • Cost of

60~100 x 1. 5~6 x 1 x Definition Development • • • Cost of changes The Impact of Changes After release 29

Proj Plan Req Analy Waterfall Model with Maintenance Circle High-level Design Low-level Design coding

Proj Plan Req Analy Waterfall Model with Maintenance Circle High-level Design Low-level Design coding Coding Testing design Req Analysis Maintenance Circle Operations Justification Plan 30

Evolution Development Model Based on the initial requirement, first develop a prototype for clients.

Evolution Development Model Based on the initial requirement, first develop a prototype for clients. Then, based on the feedback, continuously improve the system until satisfactory. p Requirements can be constantly changed. p Two ways of doing it: p n n Working with clients together until delivery Prototype is to understand the clients’ needs. 31

p p Problems of evolution dev process: n Where is “process”? n No clear

p p Problems of evolution dev process: n Where is “process”? n No clear system architecture In practice, we use the combined model: n Waterfall Model with Prototyping n V Model n Phased Development Model n Incremental and Iterative Model n Spiral Model 32

Validate Req Analysis Verify High-level Design Low-level design Coding and unit testing Prototyping Integration

Validate Req Analysis Verify High-level Design Low-level design Coding and unit testing Prototyping Integration testing System testing Waterfall Model with Prototyping Delivery Maintenance 33

V-Model 34

V-Model 34

Phased Development Model 35

Phased Development Model 35

The Incremental and Iterative Model format edit create format create Incremental Development Paste clumsy

The Incremental and Iterative Model format edit create format create Incremental Development Paste clumsy styles create Paste easy More styles create Iterative Development Easy quick More styles create 36

Examples in Agile 37

Examples in Agile 37

Benefits of Incremental Development p Can deliver the product with main functionalities within short

Benefits of Incremental Development p Can deliver the product with main functionalities within short period of time p Gradually increase the provided functionalities, so that users have ample time to learn and adapt to the new project 38

Spiral Model 39

Spiral Model 39

Benefits of Spiral Model p Software re-use p Software quality is important for dev

Benefits of Spiral Model p Software re-use p Software quality is important for dev p Reduce unnecessary/surplus testing p No difference between software maintenance and development 40

Rational Unified Process (RUP) p By IBM Rational p Highlights n Use-case driven (functionality)

Rational Unified Process (RUP) p By IBM Rational p Highlights n Use-case driven (functionality) n architecture-centric (design) n Iterative and incremental developments (implementation) n Using UML and other tools 41

Rational Unified Process p p Iterative and incremental development Phases Use-case driven Process Workflows

Rational Unified Process p p Iterative and incremental development Phases Use-case driven Process Workflows Inception Elaboration Preliminary Iteration(s) Iter. #1 In an iteration, you walk through all workflows Construction Transition Business Modeling Requirements Analysis & Design Implementation Test Deployment Supporting Workflows Configuration & Change Mgmt Project Management Environment Iter. #2 Iter. #n+1 #n+2 Iterations Iter. #m+1 42

Formal Methods Similar to the waterfall model, but n Requirement descriptions are highly reply

Formal Methods Similar to the waterfall model, but n Requirement descriptions are highly reply on mathematics (e. g. , notations, equations. . . ) n A series of transformations lead to executable programs p Cleanroom Process by IBM p 43

Operational Specification Model Execute and Revise Operational Specification (problem- oriented) System Requirements (sometimes informal

Operational Specification Model Execute and Revise Operational Specification (problem- oriented) System Requirements (sometimes informal or incomplete) Transformed Specification (implementation – oriented ) TEST Delivered System 44

Transformational Model Compare with requirements; Formal Development Record Sequence of transformations Plus rationale for

Transformational Model Compare with requirements; Formal Development Record Sequence of transformations Plus rationale for them Update as needed Transform n Formal Specification problem-oriented System Requirements (sometimes informal or incomplete) Transform 2 Transform 1 TEST Delivered System 45

2. Software Descriptions Feasibility study report p Requirement analysis p Requirement descriptions p Requirement

2. Software Descriptions Feasibility study report p Requirement analysis p Requirement descriptions p Requirement validations p 46

3. Software Designs Architectural design p Subsystem abstract description p Interface design p Component

3. Software Designs Architectural design p Subsystem abstract description p Interface design p Component design p Data structure design p Algorithm design p 47

4. Software Validation Unit testing p Functional module testing p Subsystem testing p System

4. Software Validation Unit testing p Functional module testing p Subsystem testing p System testing p Delivery testing (α、β、λversions) p 48

5. Software Evolution p p p Definition: Software evolution is the term used in

5. Software Evolution p p p Definition: Software evolution is the term used in software engineering (specifically software maintenance) to refer to the process of developing software initially, then repeatedly updating it for various reasons. The nature of software flexibility determines that software evolution is a must n Avoid expensive HW modifications Can be regarded as an integrated process between dev and maintenance 49