Скачать презентацию Software Engineering A Definition Software Engineering is a Скачать презентацию Software Engineering A Definition Software Engineering is a

3de652c167ac300e352ee43bfb48a9bf.ppt

  • Количество слайдов: 28

Software Engineering: A Definition Software Engineering is a collection of techniques, methodologies and tools Software Engineering: A Definition Software Engineering is a collection of techniques, methodologies and tools that help with the production of A high quality software system developed with a given budget before a given deadline while change occurs Challenge: Dealing with complexity and change Topic (1) Object Oriented Software Engineering 1 20

Computer Science vs. Engineering • Computer Scientist – Assumes techniques and tools have to Computer Science vs. Engineering • Computer Scientist – Assumes techniques and tools have to be developed. – Proves theorems about algorithms, designs languages, defines knowledge representation schemes – Has infinite time… • Engineer – Develops a solution for a problem formulated by a client – Uses computers & languages, techniques and tools • Software Engineer – Works in multiple application domains – Has only 3 months. . . – …while changes occurs in the problem formulation (requirements) and also in the available technology. Topic (1) Object Oriented Software Engineering 2

Software Engineering: A Problem Solving Activity • Analysis: – Understand the nature of the Software Engineering: A Problem Solving Activity • Analysis: – Understand the nature of the problem and break the problem into pieces • Synthesis: – Put the pieces together into a large structure For problem solving we use techniques, methodologies and tools. Topic (1) Object Oriented Software Engineering 3

Techniques, Methodologies and Tools • Techniques: – Formal procedures for producing results using some Techniques, Methodologies and Tools • Techniques: – Formal procedures for producing results using some well-defined notation • Methodologies: – Collection of techniques applied across software development and unified by a philosophical approach • Tools: – Instruments or automated systems to accomplish a technique – CASE = Computer Aided Software Engineering Topic (1) Object Oriented Software Engineering 4

Software products • A Software: computer programs and associated documentation and configuration files • Software products • A Software: computer programs and associated documentation and configuration files • Software products may be: Ø Generic products developed to be sold to a range of different customers (on the open market to any customer). Ø Custom products (Bespoke) developed for a specific customer according to their specification. Topic (1) Object Oriented Software Engineering 5

The software process ² A structured set of activities required to develop a software The software process ² A structured set of activities required to develop a software system. ² Many different software processes but all involve: § Specification – defining what the system should do; § Design and implementation – defining the organization of the system and implementing the system; § Validation – checking that it does what the customer wants; § Evolution – changing the system in response to changing customer needs. ² A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective. Topic (1) Object Oriented Software Engineering 6 6

Software process descriptions ² When we describe and discuss processes, we usually talk about Software process descriptions ² When we describe and discuss processes, we usually talk about the activities in these processes such as specifying a data model, designing a user interface, etc. and the ordering of these activities. ² Process descriptions may also include: § Products, which are the outcomes of a process activity; § Roles, which reflect the responsibilities of the people involved in the process; § Pre- and post-conditions, which are statements that are true before and after a process activity has been enacted or a product produced. Topic (1) Object Oriented Software Engineering 7

Plan-driven and agile processes ² Plan-driven processes are processes where all of the process Plan-driven and agile processes ² Plan-driven processes are processes where all of the process activities are planned in advance and progress is measured against this plan. ² In agile processes, planning is incremental and it is easier to change the process to reflect changing customer requirements. ² In practice, most practical processes include elements of both plan-driven and agile approaches. ² There are no right or wrong software processes. Topic (1) Object Oriented Software Engineering 8

Software process models ² The waterfall model § Plan-driven model. Separate and distinct phases Software process models ² The waterfall model § Plan-driven model. Separate and distinct phases of specification and development. ² Incremental development § Specification, development and validation are interleaved. May be plan-driven or agile. ² Reuse-oriented software engineering § The system is assembled from existing components. May be plan-driven or agile. ² In practice, most large systems are developed using a process that incorporates elements from all of these models. Topic (1) Object Oriented Software Engineering 9

The waterfall model Topic (1) Object Oriented Software Engineering 10 The waterfall model Topic (1) Object Oriented Software Engineering 10

Waterfall model phases ² There are separate identified phases in the waterfall model: § Waterfall model phases ² There are separate identified phases in the waterfall model: § § § Requirements analysis and definition System and software design Implementation and unit testing Integration and system testing Operation and maintenance ² The main drawback of the waterfall model is the difficulty of accommodating change after the process is underway. In principle, a phase has to be complete before moving onto the next phase. Topic (1) Object Oriented Software Engineering 11

Waterfall model problems ² Inflexible partitioning of the project into distinct stages makes it Waterfall model problems ² Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements. § Therefore, this model is only appropriate when the requirements are well-understood and changes will be fairly limited during the design process. § Few business systems have stable requirements. ² The waterfall model is mostly used for large systems engineering projects where a system is developed at several sites. § In those circumstances, the plan-driven nature of the waterfall model helps coordinate the work. Topic (1) Object Oriented Software Engineering 12

Incremental development (Evolutionary) Topic (1) Object Oriented Software Engineering 13 Incremental development (Evolutionary) Topic (1) Object Oriented Software Engineering 13

Incremental development • Exploratory development – Objective is to work with customers and to Incremental development • Exploratory development – Objective is to work with customers and to evolve a final system from an initial outline specification. Should start with well-understood requirements and add new features as proposed by the customer. • Throw-away prototyping – Objective is to understand the system requirements. Should start with poorly understood requirements to clarify what is really needed. Topic (1) Object Oriented Software Engineering 14

Software prototyping ² A prototype is an initial version of a system used to Software prototyping ² A prototype is an initial version of a system used to demonstrate concepts and try out design options. ² A prototype can be used in: § The requirements engineering process to help with requirements elicitation and validation; § In design processes to explore options and develop a UI design; § In the testing process to run back-to-back tests. Topic (1) Object Oriented Software Engineering 15 15

Throw-away prototypes ² Prototypes should be discarded after development as they are not a Throw-away prototypes ² Prototypes should be discarded after development as they are not a good basis for a production system: § It may be impossible to tune the system to meet nonfunctional requirements; § Prototypes are normally undocumented; § The prototype structure is usually degraded through rapid change; § The prototype probably will not meet normal organisational quality standards. Topic (1) Object Oriented Software Engineering 16

Incremental development benefits ² The cost of accommodating changing customer requirements is reduced. § Incremental development benefits ² The cost of accommodating changing customer requirements is reduced. § The amount of analysis and documentation that has to be redone is much less than is required with the waterfall model. ² It is easier to get customer feedback on the development work that has been done. § Customers can comment on demonstrations of the software and see how much has been implemented. ² More rapid delivery and deployment of useful software to the customer is possible. § Customers are able to use and gain value from the software earlier than is possible with a waterfall process. Topic (1) Object Oriented Software Engineering 17 17

Incremental development problems ² The process is not visible. § Managers need regular deliverables Incremental development problems ² The process is not visible. § Managers need regular deliverables to measure progress. If systems are developed quickly, it is not cost-effective to produce documents that reflect every version of the system. ² System structure tends to degrade as new increments are added. § Unless time and money is spent on refactoring to improve the software, regular change tends to corrupt its structure. Incorporating further software changes becomes increasingly difficult and costly. Topic (1) Object Oriented Software Engineering 18 18

Boehm’s spiral model ² Process is represented as a spiral rather than as a Boehm’s spiral model ² Process is represented as a spiral rather than as a sequence of activities with backtracking. ² Each loop in the spiral represents a phase in the process. ² No fixed phases such as specification or design loops in the spiral are chosen depending on what is required. ² Risks are explicitly assessed and resolved throughout the process. Topic (1) Object Oriented Software Engineering 19 19

Boehm’s spiral model of the software process Topic (1) Object Oriented Software Engineering 20 Boehm’s spiral model of the software process Topic (1) Object Oriented Software Engineering 20 20

Spiral model sectors ² Objective setting § Specific objectives for the phase are identified. Spiral model sectors ² Objective setting § Specific objectives for the phase are identified. ² Risk assessment and reduction § Risks are assessed and activities put in place to reduce the key risks. ² Development and validation § A development model for the system is chosen which can be any of the generic models. ² Planning § The project is reviewed and the next phase of the spiral is planned. Topic (1) Object Oriented Software Engineering 21 21

Spiral model usage ² Spiral model has been very influential in helping people think Spiral model usage ² Spiral model has been very influential in helping people think about iteration in software processes and introducing the risk-driven approach to development. ² In practice, however, the model is rarely used as published for practical software development. Topic (1) Object Oriented Software Engineering 22 22

Reuse-oriented software engineering ² Based on systematic reuse where systems are integrated from existing Reuse-oriented software engineering ² Based on systematic reuse where systems are integrated from existing components or COTS (Commercial-off-the-shelf) systems. ² Process stages § § Component analysis; Requirements modification; System design with reuse; Development and integration. ² Reuse is now the standard approach for building many types of business system Topic (1) Object Oriented Software Engineering 23 23

Reuse-oriented software engineering Topic (1) Object Oriented Software Engineering 24 24 Reuse-oriented software engineering Topic (1) Object Oriented Software Engineering 24 24

Types of software component ² Web services that are developed according to service standards Types of software component ² Web services that are developed according to service standards and which are available for remote invocation. ² Collections of objects that are developed as a package to be integrated with a component framework such as. NET or J 2 EE. ² Stand-alone software systems (COTS) that are configured for use in a particular environment. Topic (1) Object Oriented Software Engineering 25 25

Computer-aided software Engineering • Software tools that support the software development process • CASE Computer-aided software Engineering • Software tools that support the software development process • CASE technology has resulted in significant improvements in quality and productivity • But, they should be carefully chosen and staff should be properly trained. Topic (1) Object Oriented Software Engineering 26

CASE classification • CASE systems can be classified according to their – Functionality - CASE classification • CASE systems can be classified according to their – Functionality - what functions do they provide – Process support - what software process activities do they support – The breadth of support which they provide • Classification allows tools to be assessed and compared • Tools unevenly support phases of the software cycle. (e. g. design and implementation are well supported, but not maintenance and specification) Topic (1) Object Oriented Software Engineering 27

Activity-based tool classification Topic (1) Object Oriented Software Engineering 28 Activity-based tool classification Topic (1) Object Oriented Software Engineering 28