Software Engineering Ch:1-5

Lakukan tugas rumah & ujian kamu dengan baik sekarang menggunakan Quizwiz!

(Ch.1) 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.

(Ch.2) Design Activities

Architectural Design Database Design Interface Design Component Selection and Design

(Ch.2) Incremental Delivery 1

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

(Ch.2) Customer testing

Testing with customer data to check that the system meets the customers needs

(Ch.2) Incremental Development Benefits 1

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

(Ch.2) Incremental Delivery Problems 2

The essence of iterative processes is that the specification is developed in conjunction with the software -However, this conflicts with the procurement model of many organizations, where the complete system specification is part of the system development contract

(Ch.1) Entertainment systems

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

(Ch.1) 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.

(Ch.1) Software engineering

an engineering discipline that is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has gone into use

(Ch.2) Coping with change requirements - System Prototyping

where a version of the system or part of the system is developed quickly to check the customer's requirements and the feasibility of design decisions. This approach supports change anticipation.

(Ch.2) Incremental Delivery Advantages 1

Customer value can be delivered with each increment so system functionality is available earlier

(Ch.1) Application Types

- Stand-Alone Applications - Interactive Transaction-based Applications - Embedded Control Systems - Batch Processing Systems - Entertainment Systems - Systems for Modeling and Simulation - Data Collection Systems - Systems of Systems

(Ch.2) Copping with change - Change is inevitable

-Business changes lead to new and changed system requirements -New technologies open up new possibilities for improving implementations -Changing platforms require application changes

(Ch.1) Ethical dilemmas

-Disagreement in principle with the policies of senior management -Your employer acts in an unethical way and releases a safety-critical system without finishing the testing of the system -Participation in the development of military weapons systems or nuclear systems

(Ch.1) Essential Attributes of Good Software

-Maintainability -Dependability and security -Efficiency -Acceptability

(Ch.2) Prototype Development

-May be based on rapid prototyping languages or tools -May involve leaving out functionality -Prototype should focus on areas of the product that are not well-understood -Error checking and recovery may not be included in the prototype -Focus on functional rather than non-functional requirements such as reliability and security

(Ch.2) Advantages and Disadvantages of software re-use

-Reduced costs and risks as less software is developed from scratch -Faster delivery and deployment of system -But requirements compromises re inevitable so system may not meet real needs of users. -Loss of control over evolution of reused system elements

(Ch.2) Key Process Stages

-Requirements specification -Software Discovery and evaluation -Requirements refinement -Application System Configuration -Component Adaptation and Integration

(Ch.1) What are the fundamental software engineering activates?

-Software Specification -Software Development -Software Validation -Software Evolution

(Ch.1) Customized products

-Software that is commissioned by a specific customer to meet their own needs -Examples - embedded control systems, air traffic control software, traffic monitoring systems

(Ch.2) Types of reusable software

-Stand-alone application systems(sometimes called COTS) -Collections of object that are developed as a package o be integrated with a component framework such as .NET or J2EE -Web services that are developed according to service standards and which are available for remote invocation

(Ch.1) Generic products

-Stand-alone systems that are marketed and sold to any customer who wishes to buy them -Examples - PC software such as graphics programs, project management tools; CAD software; software for specific markets such as appointments systems for dentists

(Ch.1) Issues of professional responsibility

-confidentiality -competence -intellectual property rights -computer misuse

(Ch.2) Benefits of prototyping

1. Improved system usability 2. A closer match to users' real needs 3. Improved design quality 4. Improved maintainability 5. Reduced development effort

(Ch.2) Software process

A structured set of activities required to develop a software system. -Specification -Development -Validation -Evolution

(Ch.1) Increasing system complexity

As new software engineering techniques help us to build larger, more complex systems, the demands change. Systems have to be built and delivered more quickly; larger, even more complex systems are required; systems have to have new capabilities that were previously thought to be impossible.

(Ch.2) Software Evolution

As requirements change through changing business circumstances, the software that supports the business must also evolve and change

(Ch.2) Testing Stages

Component Testing System Testing Customer Testing

(Ch.1) 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.

(Ch.1) 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

(Ch.1) What are the key challenges facing software engineering

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

(Ch.2) Software Design

Design a software structure that realizes the specification

(Ch.2) Incremental Delivery Advantages 2

Early increments act as a prototype to help elicit requirements for later increments

(Ch.1) Software Products

Generic products Customized products

(Ch.1) Product specification

Generic products Customized products

(Ch.1) What are the attributes of good software?

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

(Ch.3) Rapid Software Development

Rapid development and delivery Plan-Driven development

(Ch.1) Issues that affect software

Heterogeneity Business and social change Security and trust Scale

(Ch.2) Component Testing

Individual components are tested independently Components may be functions or objects or coherent groupings of these entities

(Ch.2) Waterfall model problems 1

Inflexible partitioning of the project into distinct stage 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.

(Ch.2) Incremental Development Benefits 2

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

(Ch.2) System Testing

Testing of the system as whole testing of emergent properties is particularly important

(Ch.1) Failure to use software engineering methods

It is fairly easy to write computer programs without using software engineering methods and techniques. Many companies have drifted into software development as their products and services have evolved. They do not use software engineering methods in their everyday work. Consequently, their software is often more expensive and less reliable than it should be.

(Ch.2) Incremental Delivery Advantages 3

Lower risk of overall project failure

(Ch.2) Incremental Development Benefits 3

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

(Ch.2) Incremental Delivery Problems 1

Most systems require a set of basic facilities that are used by different parts of the system -As requirements are not defined in detail until an increment is to be implemented, it can be hard to identify common facilities that are needed by all increments

(Ch.2) Incremental Delivery 3

Once the development of an increment is started, the requirements are frozen though requirements for later increments can continue to evolve

(Ch.2) The waterfall Model

Plan-driven model separate and distinct phases of specification and development

(Ch.2) 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 non-functional requirements -Prototypes are normally undocumented -The prototype structure is usually degraded through rapid change -The prototype probably will not meet normal organizational quality standards

(Ch.1) What are the costs of software engineering

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

(Ch.1) What is software engineering

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

(Ch.1) Web Software Engineering

Software reuse - Software Reuse is the dominant approach for constructing web-based systems Incremental and agile development -Web-based systems should be developed and delivered incrementally. Service-oriented systems -Software may be implemented using service-oriented software engineering, where the software components are stand-alone web services Rich Interfaces -Interface development technologies such as AJAX and HTML5 have emerged that support the creation of rich interfaces within a web browser

(Ch.2) Incremental Development

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

(Ch.2) Incremental Delivery 2

User requirements are prioritized and the highest priority requirements are included in early increments

(Ch.1) 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

(Ch.2) Incremental Development Problems 2

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

(Ch.1) Software engineering fundamentals

Systems should be developed using a managed and understood development process. Of course, different processes are used for different types of software. Dependability and performance are important for all types of system Understanding and managing the software specification and requirements (what the software should do) are important Where appropriate, you should reuse software that has already been developed rather than write new software

(Ch.2) Incremental Development Problems 1

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

(Ch.2) Software specification

The process of establishing what services are required and the constraints on the system's operation and development.

(Ch.2) System Implementation

The software is implemented either by developing a program or programs or by configuring an application system -Design and implementation -Programing -Debugging

(Ch.1) Customized products - Specification

The specification of what the software should do is owned by the customer for the software and they make decisions on software changes that are required

(Ch.1) Generic products - Specification

The specification of what the software should do is owned by the software developer and decisions on software change are made by the developer or software product owner.

(Ch.2) Integration and configuration

The system is assembled from existing configurable components. may be plan-driven or agile

(Ch.2) Waterfall model problems 2

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.

(Ch.1) 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.

(Ch.1) Software engineering diversity

There are many different types of software system and there is no universal set of software techniques that is applicable to all of these The software engineering methods and tools used depend on the type of application being developed, the requirements of the customer and the background of the development team

(Ch.1) 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.

(Ch.1) batch processing system

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

(Ch.1) 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.

(Ch.1) 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.

(Ch.2) Implementation

Translates this structure into an executable program

(Ch.2) Software Validation

Verification and validation (V & V) is intended to show that a system conforms to its specification and meets the requirements of the system customer Involves checking and review processes and system testing System testing involves executing the system with test cases that are derived from the specification of the real data to be processed by the system Testing is the most commonly used V & V activity

(Ch.2) Software Process Models

Waterfall Incremental Development Integration and Configuration In practice, most large systems are developed using a process that incorporates elements from all of these models.

(Ch.2) Coping with change requirements - Incremental Delivery

Where system increments are delivered to the customer for comment and experimentation this supports both change avoidance and change tolerance

(Ch.1) 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 systems for example games should always be developed using a series of prototypes whereas safety critical control systems require a completes and analyzable specification to be developed you cant therefore say that one method is better then another

(Ch.2) Software Process Model

an abstract representation of a process. It presents a description of a process from some particular perspective

(Ch.2) Prototype

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

(Ch.2) Design and implementation

are interleaved activities for most types of software system

(Ch.2) Programing

is an individual activity with no standard process

(Ch.2) Debugging

is the activity of finding program faults and correcting these faults

(Ch.1) Software costs

often dominate computer system costs. The costs of software on a PC are often greater than the hardware cost Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs

(Ch.2) Agile Process

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

(Ch.2) Plan-Driven processes

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

(Ch.2) Copping with change - Change leads to rework

so the costs of change include both rework (e.g., re-analyzing requirements) as well as the costs of implementing new functionality

(Ch.1) Software process activities

specification, development, validation, evolution

(Ch.2) Reducing the costs of rework - Change Tolerance

where the process is designed so that changes can be accommodated at relatively low cost -This normally involves some form of incremental development. Proposed changes may be implemented in increments that have not yet been developed. If this is impossible, then only a single increment (a small part of the system) may have to be altered to incorporate the change.

(Ch.2) Reducing the costs of rework - Change anticipation

where the software process includes activities that can anticipate possible changes before significant rework is required -For example, a prototype system may be developed to show some key features of the system to customers

(Ch.2) Interface Design

where you define the interfaces between system components

(Ch.2) Database Design

where you design the system data structures and how these are to be represented in a database

(Ch.2) Architectural Design

where you identify the overall structure of the system, the principal components (subsystems or modules), their relationships and how they are distributed

(Ch.2) Component Selection and Design

where you search for reusable components. If unavailable, you design how it will operate.

(Ch.2) Incremental Delivery Advantages 4

²The highest priority system services tend to receive the most testing


Set pelajaran terkait

Sports Finance Quiz 1 (T/F & Multiple Choice)

View Set

Med Serge: cardiovascular, hematologic, and lymphatic system

View Set