453 Quiz #1

Réussis tes devoirs et examens dès maintenant avec Quizwiz!

Infrastructure as a service (IaaS)

Amazon Elastic Compute Cloud

Software design

Design a software structure that realizes the specification

Attributes of Good Software

Maintainability, Dependability, Efficiency, Acceptability

Software Process

The systematic approach used in software engineering is called a software process

The Principles of Agile Methods

(SLIDE 4)

Simple design

Enough design is carried out to meet the current requirements and no more.

Prototyping Problems

A general problem with prototyping is that the prototype may not necessarily be used in the same way as the final system:

The Rational Unified Process

A modern generic process derived from the work on the UML and associated process. A dynamic perspective that shows phases over time A static perspective that shows process activities A practice perspective that suggests good practice

prototype

A prototype is an initial version of a software system that is used to: Demonstrate concepts Try out design options, and Find out more about the problem and its possible solutions

On-site customer

A representative of the end-user of the system (the customer) should be available full time for the use of the XP team. In an extreme programming process, the customer is a member of the development team and is responsible for bringing system requirements to the team for implementation.

Development team

A self-organizing group of software developers, which should be no more than 7 people. They are responsible for developing the software and other essential project documents.

software process model

A software process model is a simplified representation of a software process.

Extreme Programming

A very influential agile method, developed in the late 1990s, that introduced a range of agile development techniques. Extreme Programming (XP) takes an 'extreme' approach to iterative/incremental development. New versions may be built several times per day Increments are delivered to customers every 2 weeks All tests must be run for every build and the build is only accepted if tests run successfully

Refactoring

All developers are expected to refactor the code continuously as soon as possible code improvements are found. This keeps the code simple and maintainable.

Test Automation

An automated test framework (e.g. JUnit) is a system that makes it easy to write executable tests and submit a set of tests for execution.

Test-first development

An automated unit test framework is used to write tests for a new piece of functioality before that functionality itself is implemented.

Product owner

An individual (or possibly a small group) whose job is to identify product features or requirements, prioritize these for development and continuously review the product backlog to ensure that the project continues to meet critical business needs. The Product Owner can be a customer but might also be a product manager in a software company or other stakeholder representative.

Change avoidance

Anticipate possible changes before significant rework is required Example: (rapid) prototyping (prototype development) A prototype may be developed to show some key features of the system

Interactive transaction-based applications

Applications that execute on a remote computer and are accessed by users from their own PCs or terminals. These include web applications such as e-commerce applications.

Continuous integration

As soon as the work on a task is complete, it is integrated into the whole system. After any such integration, all the unit tests in the system must pass.

Reducing the Costs of Rework

Change anticipation, Change tolerance, Change avoidance, Change Tolerance

Cloud computing

Cloud computing is an approach to the provision of computer services where applications run remotely on the 'cloud'.

Extreme Programming: Advantages

Communication , Simplicity, Feedback, Respect, Courage

What is software?

Computer programs and associated documentation. Software products may be developed for a particular customer or may be developed for a general market.

What is the difference between software engineering and computer science?

Computer science focuses on theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software.

What are the key challenges facing software engineering?

Coping with increasing diversity, demands for reduced delivery times and developing trustworthy software.

Pair programming

Developers work in pairs, checking each other's work and providing the support to always do a good job.

Early 1980s

Development of the Ada programming language (structured programming + information hiding). Proposals for software engineering environments. CASE tools introduced to support design methods. Development of algorithmic approaches to software costing and estimation. Publication of the 1st edition of our textbook as the first student textbook on software engineering. (1982)

Early 1970s

Development of the notions of structured programming. Publication of Parnas's paper on information hiding. Development of Pascal programming language. Development of Smalltalk languages which introduced notions of object-oriented development.

Late 1970s

Early use of software design methods such as Yourdon and Constantine's structured design

The Rise of Agile Methods

Focus on the code rather than the design Are based on an iterative approach to software development Are intended to deliver working software quickly and evolve this quickly to meet changing requirements.

Software products may be:

Generic products: software developed for a general market Customized products: software developed for a particular customer

What are the attributes of good software?

Good software should deliver the required functionality and performance to the user and should be maintainable, dependable, efficient and usable.

Platform as a service (PaaS)

Google App Engine, Rest APIs

Software as a service (SaaS)

Google Apps, Salesforce.com, Users do not buy software/hardware. They pay according to use.

Benefits of Software Reuse

Increased dependability, Reduced process risk, Effective use of specialists, Standards compliance, Accelerated development, Lower development cost

Problems with Reuse

Increased maintenance costs, Lack of tool support, Not-invented-here syndrome, Creating, maintaining, and using a component library, Finding, understanding, and adapting reusable components

Late 1980s

Increased use of object-oriented programming through languages such as C++ and Objective-C. Introduction of object-oriented design methods. Extensive use of CASE tools.

XP Practices

Incremental planning, Small releases, Simple design, Test-first development, Refactoring

Agile Manifesto

Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan

Waterfall Model Problems

Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements

Three types of cloud computing

Infrastructure as a service (IaaS), Platform as a service (PaaS), Software as a service (SaaS)

Late 1990s

Java is developed and released in the mid-1990s. Increasing attention paid to notions of software architecture. Client-server architectures are increasingly used. Notion of component-based software engineering is proposed. The UML is proposed, integrating several separately developed notations for representing object-oriented systems.

Sustainable pace

Large amounts of overtime are not considered acceptable as the net effect is often to reduce code quality and medium term productivity

Incremental Delivery Problems

Most systems require a set of basic facilities that are used by different parts of the system Iterative development can also be difficult when a replacement system is being developed. The essence of iterative processes is that the specification is developed in conjunction with the software.

Early 1990s

Object-oriented development becomes a mainstream development technique. Commercial tools to support requirements engineering become available.

XP Practices Part 2

Pair programming, Collective ownership, Continuous integration, Sustainable pace, On-site customer

The waterfall model

Plan-driven model Separate and distinct phases of specification and development 1) Requirements Definition 2) System and Software Design 3) Implementation and Unit Testing 4) Integration and System Testing 5) Operation and Maintenance

There are two main categories of software processes

Plan-driven processes, Agile processes

Process change

Process changes are proposed to address some of the identified process weaknesses.

Plan-driven processes

Processes where all of the process activities are planned in advance and progress is measured against this plan

Agile processes

Processes where planning is incremental and it is easier to change the process to reflect changing customer requirements

Agile processes

Processes where planning is incremental and it is easier to change the process to reflect changing customer requirements

Process descriptions may also include

Products, Roles, Pre-and-Post conditions

XP Testing Difficulties

Programmers prefer programming to testing and sometimes they take short cuts when writing tests. Some tests can be very difficult to write incrementally. It difficult to judge the completeness of a set of tests.

Incremental Delivery

Rather than deliver the system as a single delivery, the development and delivery is broken down into increments with each increment delivering part of the required functionality.

Common Examples of Refactoring

Re-organization of a class hierarchy to remove duplicate code The replacement of inline code with calls to methods that have been included in a program library

It was proposed that the adoption of an engineering approach to software development would

Reduce the costs of software development, Lead to more reliable software.

Incremental planning

Requirements are recorded on story cards and the stories to be included in a release are determined by the time available and their relative priority. The developers break these stories into development 'Tasks'. See Figures 3.5 and 3.6. (Next 2 slides)

What are the costs of software engineering?

Roughly 60% of software costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs.

Scrum

Scrum is an agile method that focuses on managing iterative development process rather than specific agile practices.

Software engineering is concerned with cost-effective software development.

Software costs more to maintain than it does to develop.

What is software engineering?

Software engineering is an engineering discipline that is concerned with all aspects of software production.

Software reuse

Software reuse is the dominant approach for constructing web-based systems.

What are the fundamental software engineering activities?

Software specification, software development, software validation and software evolution.

Incremental development

Specification, development and validation are interleaved May be plan-driven or agile

Application Types

Stand-alone applications, Interactive transaction-based applications, Embedded control systems, Batch processing systems, Entertainment systems, Systems for modelling and simulation, Data collection systems, Systems of systems

Change tolerance

Structure the software process in such a way that changes can be accommodated at relatively low cost Example: incremental delivery Proposed changes may be implemented in increments

What is the difference between software engineering and system engineering?

System engineering is concerned with all aspects of computer- based systems development including hardware, software and process engineering. Software engineering is part of this more general process.

Testing and debugging are integral parts of software implementation

Testing and debugging are considered as two different processes. Testing is the performed by tester with the intent of finding a bug in an application. ... Debugging is a process of line by line execution(White Box Testing) of the code/ script with the intent of finding errors/ fixing the defects

Incremental Development Benefits

The cost of accommodating changing customer requirements is reduced. It is easier to get customer feedback on the development work that has been done. More rapid delivery and deployment of useful software to the customer is possible.

Process analysis

The current process is assessed, and process weaknesses and bottlenecks are identified.

Small releases

The minimal useful set of functionality that provides business value is developed first. Releases of the system are frequent and incrementally add functionality to the first release.

Collective ownership

The pairs of developers work on all areas of the system, so that no islands of expertise develop and all the developers take responsibility for all of the code. Anyone can change anything.

The agile approach, which focuses on iterative development and the reduction of overheads in the software process.

The primary characteristics of agile methods are rapid delivery of functionality and responsiveness to changing customer requirements.

Change tolerance

The process and software are designed so that changes can be easily made to the system.

Incremental Development Problems

The process is not visible. System structure tends to degrade as new increments are added.

process maturity

The process maturity approach, which focuses on improving process and project management and introducing good software engineering practice.

software crisis

The software crisis was the name given to the difficulties encountered in developing large, complex systems in the 1960s.

Potentially shippable product increment

The software increment that is delivered from a sprint. The idea is that this should be 'potentially shippable' which means that it is in a finished state and no further work, such as testing, is needed to incorporate it into the final product. In practice, this is not always achievable.

Change anticipation

The software process includes activities that can anticipate or predict possible changes before significant rework is required.

Reuse-oriented software engineering

The system is assembled from existing components May be plan-driven or agile

Three commonly used software process models:

The waterfall model, Incremental development, Reuse-oriented software engineering

What differences has the web made to software engineering?

The web has led to the availability of software services and the possibility of developing highly distributed service-based systems. Web-based systems development has led to important advances in programming languages and software reuse.

Stand-alone applications

These are application systems that run on a local computer, such as a PC. They include all necessary functionality and do not need to be connected to a network.

Batch processing systems

These are business systems that are designed to process data in large batches. They process large numbers of individual inputs to create corresponding outputs.

Embedded control systems

These are software control systems that control and manage hardware devices. Numerically, there are probably more embedded systems than any other type of system.

Systems of systems

These are systems that are composed of a number of other software systems

Systems for modelling and simulation

These are systems that are developed by scientists and engineers to model physical processes or situations, which include many, separate, interacting objects.

Entertainment systems

These are systems that are primarily for personal use and which are intended to entertain the user.

Data collection systems

These are systems that collect data from their environment using a set of sensors and send that data to other systems for processing.

Product backlog

This is a list of 'to do' items which the Scrum team must tackle. They may be feature definitions for the software, software requirements, user stories or descriptions of supplementary tasks that are needed, such as architecture definition or user documentation.

Software implementation

Translate this structure into an executable program

Early 2000s

Use of integrated development environments becomes more common. Use of the UML becomes widespread. Increasing use of scripting languages such as Python

What are the best software engineering techniques and methods?

While all software projects have to be professionally managed and developed, different techniques are appropriate for different types of system. For example, games should always be developed using a series of prototypes whereas safety critical control systems require a complete and analyzable specification to be developed. You can't, therefore, say that one method is better than another.

Process measurement

You measure one or more attributes of the software process or product.

software engineering was suggested at

conferences organized by NATO in 1968 and 1969 to discuss the software crisis.

The systematic approach used in software engineering is called a

software process

Software specification

where customers and engineers define the software that is to be produced and the constraints on its operation.

Software validation

where the software is checked to ensure that it is what the customer requires

Software development

where the software is designed and programmed

Software evolution

where the software is modified to reflect changing customer and market requirements


Ensembles d'études connexes

Cell Cycle and Cell Reproduction

View Set