all
The economies of _______ developed nations are dependent on software. (some, most, or all)
theories methods tools
Software engineering is concerned with ______, _______, and _____ for professional software development.
GNP or gross national product
Expenditure on software represents a significant fraction of ______ in all developed countries
computer system
Software costs often dominate ______________ costs.
software
The costs of ________ on a PC are often greater than the hardware cost.
maintain
Software costs more to _______ than it does to develop
cost-effective
Software engineering is concerned with ________ software development
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.
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 these in their everyday work. Consequently, their software is often more expensive and less reliable than it should be.
Software
Computer programs and associated documentation. Software products may be developed for a particular customer or may be developed for a general market.
attributes of good software
_________ should deliver the required functionality and performance to the user and should be maintainable, dependable and usable.
software engineering
an engineering discipline that is concerned with all aspects of software production.
fundamental software engineering activities
Software specification, software development, software validation and software evolution.
Computer science
it focuses on theory and fundamentals
software engineering
it is concerned with the practicalities of developing and delivering useful software
system engineering
it is concerned with all aspects of computer-based systems development including hardware, software and process engineering
60% 40%
Roughly ___% of software costs are development costs, __% are testing costs.
evolution
For custom software, ________ costs often exceed development costs
web
The ____ 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.
Generic Products
Stand-alone systems that are marketed and sold to any customer who wishes to buy them
Generic Products
PC software such as graphics programs, project management tools; CAD software; software for specific markets such as appointments systems for dentists. What kind of products are these?
Customized products
Software that is commissioned by a specific customer to meet their own needs
Customized products
embedded control systems, air traffic control software, traffic monitoring systems. What kind of products are these?
Generic Product
Product 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.
Customized products
Product 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.
Maintainability
Essential attributes of good software Software should be written in such a way so 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.
Dependability and security
Essential attributes of good software 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. Malicious users should not be able to access or damage the system.
Efficiency
Essential attributes of good software Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency therefore includes responsiveness, processing time, memory utilisation, etc.
Acceptability
Essential attributes of good software 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.
Engineering discipline
Using appropriate theories and methods to solve problems bearing in mind organizational and financial constraints.
Software specification
where customers and engineers define the software that is to be produced and the constraints on its operation
Software development
where the software is designed and programmed
Software validation
where the software is checked to ensure that it is what the customer requires
Software evolution
where the software is modified to reflect changing customer and market requirements
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
Business 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.
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.
universal
There are many different types of software system and there is no _______ set of software techniques that is applicable to all of these
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
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
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.
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
Entertainment systems
These are systems that are primarily for personal use and which 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
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
Systems of systems
These are systems that are composed of a number of other software systems
managed understood
§Systems should be developed using a ______ and _____ development process. Of course, different processes are used for different types of software.
Cloud computing
_______ is an approach to the provision of computer services where applications run remotely on the ‘cloud’.
use
Users do not buy software but pay according to _____
Web-based
______ systems are complex distributed systems but the fundamental principles of software engineering discussed previously are as applicable to them as they are to any other types of system
Software reuse
Web software engineering
It is the dominant approach for constructing web-based systems. When building these systems, you think about how you can assemble them from pre-existing software components and systems.
Incremental and agile development
Web software engineering
Web-based systems should be developed and delivered incrementally. It is now generally recognized that it is impractical to specify all the requirements for such systems in advance
Service-oriented systems
Web software engineering
where the software components are stand-alone web services
Rich Interfaces
Web software engineering
Interface development technologies such as AJAX and HTML5 have emerged that support the creation of this within a web browser.
morally correct
Software engineering ethics
Ethical behaviour is more than simply upholding the law but involves following a set of principles that are _________.
confidentiality
Software engineering ethics
§Engineers should normally respect the ______ of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed.
competence
Software engineering ethics
Engineers should not misrepresent their level of _______. They should not knowingly accept work which is out with their blank.
intellectual property rights
Software engineering ethics
Engineers should be aware of local laws governing the use of _______, such as patents, copyright, etc. They should be careful to ensure that the rights of employers and clients are protected.
Computer misuse
Software engineering ethics
§Software engineers should not use their technical skills to misuse other people’s computers. _______ ranges from relatively trivial (game playing on an employer’s machine, say) to extremely serious (dissemination of viruses).
ACM/IEEE Code of Ethics
The professional societies in the US have cooperated to produce a code of ethical practice. What is the name of the code?
public
Eight Principles of the Code of Ethics:
Software engineers shall act consistently with the ____ interest.
client and employer
Eight Principles of the Code of Ethics:
Software engineers shall act in a manner that is in the best interests of their _______ consistent with the public interest.
products
Eight Principles of the Code of Ethics:
Software engineers shall ensure that their ______ and related modifications meet the highest professional standards possible
judgment
Eight Principles of the Code of Ethics:
Software engineers shall maintain integrity and independence in their professional _______.
management
Eight Principles of the Code of Ethics:
Software engineering managers and leaders shall subscribe to and promote an ethical approach to the _______ of software development and maintenance.
profession
Eight Principles of the Code of Ethics:
Software engineers shall advance the integrity and reputation of the ________ consistent with the public interest
colleagues
Eight Principles of the Code of Ethics:
Software engineers shall be fair to and supportive of their _______
self
Eight Principles of the Code of Ethics:
Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession
software process
A structured set of activities required to develop a \n software system
abstract
A software process model is an ______ representation of a process. It presents a description of a process from some particular perspective.
Products
Process descriptions
which are the outcomes of a process activity
roles
Process descriptions
which reflect the responsibilities of the people involved in the process
pre- and post-conditions
Process descriptions
which are statements that are true before and after a process activity has been enacted or a product produced.
plan-driven processes
are processes where all of the process activities are planned in advance and progress is measured against this plan
agile processes
are processes where planning is incremental and it is easier to change the process to reflect changing customer requirements
Waterfall model
Software process models
Plan-driven model. Separate and distinct phases of specification and development
Incremental development
Software process models
Specification, development and validation are interleaved. May be plan-driven or agile
Integration and Configuration
Software process models
The system is assembled from existing configurable components. May be plan-driven or agile
Waterfall model
Which model has this drawback: difficulty of accommodating change after the process is underway. In principle, a phase has to be complete before moving onto the next phase.
Waterfall model
Which model has this drawback: Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements
Waterfall model
this model is only appropriate when the requirements are well-understood and changes will be fairly limited during the design process
Waterfall model
this model is mostly used for large systems engineering projects where a system is developed at several sites.
Incremental development
Which model has this benefit: The cost of accommodating changing customer requirements is reduced
Incremental development
Which model has this benefit: 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
Incremental development
Which model has this benefit: 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.
Incremental development
Which model has this drawback: 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
Incremental development
Which model has this drawback: 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.
Integration and Configuration
This model is based on software reuse where systems are integrated from existing components or application systems (sometimes called COTS -Commercial-off-the-shelf) systems).
Stand-alone application systems
Types of reusable software
(sometimes called COTS) that are systems that are configured for use in a particular environment.
.NET or J2EE
Types of reusable software
Collections of objects that are developed as a package to be integrated with a component framework such as __or ___
web services
Types of reusable software
______ that are developed according to service standards and which are available for remote invocation