Ch1-Software Engineering

Pataasin ang iyong marka sa homework at exams ngayon gamit ang Quizwiz!

Acceptability

Software must be acceptable to the type of users for which it is designed. This means that it must be understandable, usable, and compatible with other systems that they use.

Four fundamental activities are common to all software processes.

1. Software specification, where customers and engineers define the software that is to be produced and the constraints on its operation. 2. Software development, where the software is designed and programmed. 3. Software validation, where the software is checked to ensure that it is what the customer requires. 4. Software evolution, where the software is modified to reflect changing customer and market requirements.

Product characteristic

Acceptability, Dependability and security, Efficiency Maintainability

Two kinds of Software products

Generic products: These are stand-alone systems that are produced by a development organization and sold on the open market to any customer who is able to buy them. Customized (or bespoke) software: These are systems that are commissioned by and developed for a particular customer. A software contractor designs and implements the software especially for that customer. Examples of this type of software include control systems for electronic devices, systems written to support a particular business process, and air traffic control systems.

Four related issues that affect many different types of software:

Heterogeneity- Increasingly, systems are required to operate as distributed systems across networks that include different types of computer and mobile devices. Business and social change - Businesses and society are changing incredibly quickly as emerging economies develop and new technologies become available. They need to be able to change their existing software and to rapidly develop new software. Security and trust- As software is intertwined with all aspects of our lives, it is essential that we can trust that software. This is especially true for remote software systems accessed through a web page or web service interface. Scale- Software has to be developed across a very wide range of scales, from very small embedded systems in portable or wearable devices through to Internet-scale, cloud-based systems that serve a global community.

Dependability and security

Software dependability includes a range of characteristics including reliability, security, and safety. Dependable software should not cause physical or economic damage in the event of system failure. Software has to be secure so that malicious users cannot access or damage the system.

Maintainability

Software should be written in such a way that it can evolve to meet the changing needs of customers. This is a critical attribute because software change is an inevitable requirement of a changing business environment.

Efficiency

Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency therefore includes responsiveness, processing time, resource utilization, etc.

Types of applications

Stand-alone applications- these are application systems that run on a personal computer or apps that run on a mobile device. They include all necessary functionality and may not need to be connected to a network. Examples of such applications are office applications on a PC, CAD programs, photo manipulation software, travel apps, productivity apps, and so on. Interactive transaction-based applications - These are applications that execute on a remote computer and that are accessed by users from their own computers, phones, or tablets. Obviously, these include web applications such as e-commerce applications where you interact with a remote system to buy goods and services.

software process

The systematic approach that is used in software engineering is sometimes called a software process.

Language (UML)

activity model that illustrates how the software transforms an input

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. Examples of embedded systems include the software in a mobile (cell) phone, software that controls antilock braking in a car, and software in a microwave oven to control the cooking process.

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.

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.

What differences has the Internet made to software engineering?

• Not only has the Internet led to the development of massive, highly distributed, service-based systems, it has also supported the creation of an "app" industry for mobile devices which has changed the economics of software.

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.

What is software engineering?

• Software engineering is an engineering discipline that is concerned with all aspects of software production from initial conception to operation and maintenance.

What are the fundamental software engineering activities?

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

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.

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. There are no methods and techniques that are good for everything.


Kaugnay na mga set ng pag-aaral

ADN2 Exam3 Fluid, Electrolyte, and Acid base Balance

View Set

Chapter 6: Interest Rate Questions

View Set

AP Government- Constitution Test

View Set

CLEP:Family, Home, and Society Throughout the Life Span

View Set