Advanced Software Engineering Lecture 1 Introduction to Software
- Slides: 49
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 2
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 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 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 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 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 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 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 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 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 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. 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 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 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 …… 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 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 … 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 19
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 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 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 Sys installation Sys integration 23
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 25
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 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 "clear and comprehensive requirements“, thus able to achieve satisfactory results 28
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 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. 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 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 testing System testing Waterfall Model with Prototyping Delivery Maintenance 33
V-Model 34
Phased Development Model 35
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
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
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) 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 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 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 or incomplete) Transformed Specification (implementation – oriented ) TEST Delivered System 44
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 validations p 46
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 testing p Delivery testing (α、β、λversions) p 48
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
- Software engineering lecture notes
- Cs 527
- 01:640:244 lecture notes - lecture 15: plat, idah, farad
- Advanced inorganic chemistry lecture notes
- Computer based system engineering
- Forward engineering in software engineering
- Financial engineering notes
- Foundation engineering lecture notes
- Engineering ethics lecture notes
- Types of software changes
- Software engineering 1 course outline
- Machine design topics
- Advanced industrial engineering
- Advanced engineering electromagnetics
- Advanced engineering mathematics
- Advanced engineering mathematics
- Advanced engineering mathematics
- Differentiation complex numbers
- Advanced engineering mathematics dennis g zill 4th edition
- Introduction to biochemistry lecture notes
- Introduction to psychology lecture
- Introduction to algorithms lecture notes
- Software maintenance in software engineering ppt
- Who invented software engineering
- Metrics computer science
- Software engineering crisis
- What is software measurement
- Real time software design in software engineering
- Design principles in software engineering
- Advanced higher english
- 4 ps of project management
- Lecture presentation software
- Advanced software development
- Differentiate between macro and subroutine
- Advanced software testing concepts
- Cse 598 advanced software analysis and design
- Dicapine
- Engineering elegant systems: theory of systems engineering
- Forward and reverse engineering
- Engineering isometric drawing
- Introduction to civil engineering
- Engineering methods
- Microwave oven promotion
- Web engineering lectures ppt
- Introduction to engineering economy
- Introduction to engineering economics
- Introduction to reliability engineering
- Introduction to engineering in society
- Classification of surveying
- Introduction to traffic engineering