Software Engineering

Ace your homework & exams now with Quizwiz!

Software Platform

The environment in which the software will execute. Includes the operating system, database, middleware, and other application systems.

Data Collection and Analysis Systems

These are systems that collect data from their environment and send that data to other systems for processing. The software may have to interact with sensors and often is installed in a hostile environment such as inside an engine or in a remote location.

Systems of Systems

These are systems, used in enterprises and other large organizations, that are composed of a number of other software systems.

Costs of Software Engineering

60% development costs, 40% testing costs (For custom software, evolution costs often exceed development costs)

Software Design

A description of the structure of the software to be implemented, the data models and structures used by the system, the interfaces between system components and, sometimes, the algorithms used. Design inputs (Platform information, software requirements, and data descriptions) -> Design activities (Architectural design, interface design, database design, and component selection and design) -> Design outputs (System architecture, Database design, Interface specification, and Component descriptions)

Rational Unified Process (RUP)

A flexible model that can be instantiated in different ways to create processes that resemble any of the general process models (Waterfall, Incremental, and Integration/Configuration). Brings together elements of all the general process models and supports prototyping and incremental delivery of software.

Computing Cloud

A huge number of linked computer systems that is shared by many users. Users do not buy the software but pay according to how much their software is used or are given free access in return for watching advertisements. Examples include web-cased mail, storage, and video.

Software Development Life Cycle (SDLC or Software Process Model)

A simplified representation of a software process. Each process model represents a process from a particular perspective and this only provides partial information about the process.

Stages of Testing

A three-stage testing process in which system components are individually tested, then the integrated system is tested. For custom software, customer testing involves testing the system with real customer data also known as "beta testing". The three stages are: 1. Component testing -- each part is tested independently 2. System testing -- each part is testing as they interact with other parts 3. Customer testing -- tested with real customer data, rather than stimulated test data ...then repeat

Software Systems

Abstract and intangible. Can become extremely complex, difficult to understand, and expensive to change. More than one program.

4 Product Characterisitcs

Acceptability, Dependability/Security, Efficiency, and Maintainability

Prototype

An early 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. Four stages include: 1. Prototype plan 2. Outline definition 3. Executable prototype 4. Evaluation report

Software Engineering

An engineering discipline that is concerned with all aspects of software production from initial conception to operation and maintenance (includes all associated documentation, libraries, support websites, and configuration data that are needed to make programs useful). Concerned with the practicalities of developing and delivering software. Concerned with practical problems of producing software. A systematic approach to the production of software that takes into account practical cost, schedule, and dependability issues, as well as the needs of software customers and producers. The specific methods, tools, and techniques used depend on the organization developing the software, the type of software, and the people involved in the development process. There are no universal software engineering methods that are suitable for all systems and all companies.

Software

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

System Engineering

Concerned with all aspects of computer-based systems development including hardware, software, and process engineering. Concerned with the evolution of complex systems where software plays a major role. Concerned with hardware development, policy and process design, and system development, as well as software engineering. System Engineers are involved in specifying the system, defining overall architecture, and then integrating the different parts to create the finished system.

System Documentation

Describes the structure of the system.

Engineering Discipline

Engineers make things work. They apply theories, methods, and tools where these are appropriate. However, they use them selectively and always try to discover solutions to problems even when there are no applicable theories and methods.

Defect Testing

Establishes the existence of defects.

Business and Social Change

Existing software needs to be updated and new software needs to be developed as emerging economies develop and new technologies become available. The time required for software to deliver value to is customer has to be reduced.

User Documentation

Explains how to use the system.

Scale

Software has to be developed from very small embedded systems in portable or wearable devices though to Internet/cloud-based systems that serve a global community.

Debugging

Finding/Locating and fixing/correcting program defects.

Computer Science

Focus on theory and fundamentals. Concerned with the theories and methods that underlie computers and software system. Computer Science Theory is most applicable to relatively small programs. Elegant Computer Science Theories are relevant to large, complex problems that require a software solution.

Process Maturity Approach

Focused on improving process and project management and introducing good software engineering practice into an organization. Levels include: 1. Initial - Goals associated with the process area are satisifed, and the scope of work is explicitly set out and communicated to the team members 2. Managed - Goals associated with the process area are met, and organizational policies are in place that define when each process should be used. 3. Defined - Focuses on organizational standardization and deployment of processes. 4. Quantitatively Managed - There is an organizational responsibility to use statistical and other quantitative methods to control sub-processes. 5. Optimizing - The organization must use the process and product measurements to drive process improvement. ONLY large software companies now use this approach to software process improvement.

Agile Approach

Focused on iterative development and the reduction of overheads in the software process. Includes rapid delivery of functionality and responsiveness to changing customer requirements.

2 Factors of Software Failures

Increasing system complexity and failure to use software engineering methods

Heterogeneity

Increasingly, systems are required to operate as distributed systems across networks that include different types of computer and mobile devices.

Security and Trust

Malicious users must not be able to attack software so that information security is maintained.

Process Improvement Cycle

Measure -> Analyze -> Change -> repeat 1. Measurement - Measure one or more attributes of the software process or product. 2. Analysis - The current process is assessed and process weaknesses and bottlenecks are identified. 3. Change - Proposed to address some of the identified process weaknesses.

Agile Process

Planning is incremental and continual as the software is developed. It is therefore easier to change the process to reflect the changing customer or product requirements.

Plan-Driven Process

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

V-Model of Development

Shows the software validation activities that correspond to each stage of the waterfall process model/plan-driven software process.

Software Process

Software Specification, Development, Validation, and Evolution. A set of related activities that leads to the production of a software system. There is no universally applicable software process. The process used in different companies depends on the type of software being developed, the requirements of the software customer, and the skills of the people writing the software. Important to describe who is involved (Roles), what is produced (Products or Deliverables ), and conditions that influence the sequence of activities (Pre- and Pstconditions)

Reasons People Write Programs

Spreadsheets to simplify jobs, process experimental data, interests and enjoyment.

Generic Products

Stand-Alone systems that are produced be a development organization and sold on the open market to any customer who is able to buy them. The organization that develops the software controls the software specification. Examples include: apps for mobile devices, software for PCs such as databases, word processors, drawing packages, and project management tools.

Customized (or Bespoke) Software

Systems that are commissioned by and developed for a particular customer. The specification is developed and controlled by the organization that is buying the software. Examples include: control systems for electronic devices, systems written to support a particular business process and air traffic control systems.'

Sensor-Based Data Collection System

The primary focus of this system is to collect data from a set of sensors and to process that data in some way. Issues include reliability, even in hostile environmental conditions, and maintainability. Examples include a wilderness weather station.

Information System

The primary purpose of this system is to manage and provide access to a database of information. Issues typically include security, usability, privacy, and maintaining data integrity. Examples include a medical record system.

Stand-alone Applications

These are application systems that run on personal computer or apps that run on a mobile device. Includes all necessary functionality and may not need to be connected to a network.

Interactive Transaction-Based Applications

These are applications that execute on a remote computer ans that are accessed by users from their own computers, phones, or tablets. These include web applications where you interact with a remote system to buy goods and services. Often incorporates a large data store that is accessed and updated in each transaction.

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. Very expensive to change, therefore needs extensive verification and validation so that the chances of having to recall to fix software problems are minimized. Examples include periodic billing systems, such as phone billing systems and salary payment systems.

Embedded Control Systems

These are software control systems that control and manage hardware devices. Examples include the software in a mobile phone, software that controls antilock braking in a car, and software in a microwave oven to control the cooking process.

Entertainment Systems

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

Systems for Modeling and Simulation

These are systems that are developed by scientists and engineers to model physical processes or situations, which include many separate, interacting objects. These are often computationally intensive and require high-performance parallel systems for execution.

Incremental Development

This approach interleaves the activities of specification, development, and validation with rapid feedback across activities. The system is developed as a series of versions (increments), with each version adding functionality to the previous version. The most common approach for the development of application systems and software products. Can be plan-driven, agile, or a mixture of these approaches. Cheaper and easier to make changes in the software as it is being developed. Each version of the system incorporates some of the functionality that is needed by the customer. Early stages include the most important/urgent required functionality. Early delivery and deployment of useful software to the customer is possible, even if all of the functionality has not been included. Problems include: Managers need regular deliverables to measure progress because the process is not visible. System structure tends to degrade as new increments are added. Examples include software products.

Integration and Configuration

This approach relies on the availability of reusable components or systems. The system development process focuses on configuring these components for use in a new settings and integrating them into a system. Use for parts of the system that are difficult to specify in advance. Three types of software components are frequently reused: Stand-alone application systems, Collections of objects, and web services. The stages in this process include: 1. Requirements specification 2. Software discovery and evaluation 3. Requirements refinement 4. Application system configuration 5. Component adaptation and integration Reduces the amount of software to be developed which reduces costs and risks. Usually leads to faster delivery of the software. However, requirements compromises are inevitable, and may lead to a system that does not meet the real needs of users. Some control over the system evolution is lost as new version of the reusable components are not under the control of the organization using them. Examples include business systems.

The Waterfall Model (Software Life Cycle)

This approach takes the fundamental process activities of specification, development, validation, and evolution, and represents them as separate process phases such as requirements specification, software design, implementation, and testing. 1. Requirements analysis and definition/System specification 2. System and software design 3. Implementation and unit testing 4. Integration and system testing/Delivery to customer 5. Operation and maintenance/Fix bugs Plan-driven process -- Lots of analysis and documentation is required before implementation begins. Examples include safety-crucial software, embedded systems, large software systems that are part of broader engineering systems developed by several partner companies.

Embedded System

This is a system where the software controls some hardware device and is embedded in that device. Issues typically include physical size, responsiveness, and power management. Examples include the software system to control an insulin pump for people with diabetes.

Support Environment

This is an integrated collection of software tools that are used to support some kind of activity. Examples include programming environments, such as Eclipse, that is used to support students' learning in schools.

Process Paradigm

Very general process models. High-level, abstract descriptions of software processes that can be used to explain different approaches to software development. Basically, process frameworks that may be extended and adapted to create more specific software engineering processes.

Why Software Engineering is Important

We need to be able to produce reliable and trustworthy advanced software systems economically and quickly. Failure to use software engineering method leads to higher costs for testing, quality assurance, and long-term maintenance.

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 is a method of change anticipation as it allows users to experiment with the system before delivery and so refine their requirements.

Software Specification

Where customers and engineers define the software that is to be produced and the constraints on its operation. The functionality of the software and constraints on its operation must be defined. Also known as Requirements Engineering -- the process of understanding and defining what services are required from the system and identifying the constraints on the system's operation and development Particularly critical stage of the software process, as mistakes made at the stage lead to later problems in te system design and implementation. End-users and customers require a high-level statement of the requirements, whereas system developers need a mote detailed system specification. Three main activities include: 1. Requirements elicitation and analysis 2. Requirements specification 3. Requirements validation

Software Validation

Where the software is checked to ensure that it is what the customer requires. Intended to show that a system both confirms to its specification and meets the expectations of the system customer. The software must be validated to ensure that it does what the customer wants. Known as Verification and Validation (V & V). May include checking processes, such as inspections and reviews, at each stage of the software process from user requirements definition to program development.

Software Development

Where the software is designed and programmed. The software to meet the specification must be produced. 4 activities that may be a part of this process for information systems: 1. Architectural design 2. Database design 3. Interface design 4. Component selection and design *Timing design may also be another activity included

Software Evolution

Where the software is modified to reflect changing customer and market requirements. The software must evolve to meet changing customer needs.

Incremental Delivery

Where the system increments are delivered to the customer for comment and experimentation. This supports both change avoidance and change tolerance. Advantages include: customers can use early increments as prototypes and gain experience, relatively easy to incorporate changes into the system, highest priority services are delivered first. Problems include: Problematic when the new system is intended to replace an existing system, hard to identify common facilities that are needed by all increments, no complete system specification until the final increment is specified which requires a new form of contract.

Program Testing

Where the system is execute using stimulated test data


Related study sets

Renaissance and Reformation Test Review

View Set

ATI_Nursing Care of Children Quiz 1

View Set

Chapter 2 Working with Java data types

View Set

Phylum: Cnidaria Classes: Hydrozoa, Scyphozoa, Anthozoa

View Set