Introduction
Two kinds of software product:
Generic: Stand-alone systems produced by a development organization for the open market.
Customized (bespoke): Commissioned and developed for a particular customer. A software contractor designs and implements software for that customer.
SWE is an engineering discipline 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.
Engineering discipline: You have to apply theory, methods and tools effectively and try to discover solutions to problems. You also work within organizational and financial constraints.
All aspects of software production: Not just the technical processes of software development, but also the software project management and development of tools, methods and theories to support software development.
Importance of SWE:
More and more individuals rely on software systems. We need to make reliable and trustworthy systems economically and quickly.
It is usually cheaper to use software engineering methods and techniques in the long run rather than just write programs. Failure to do so leads to higher testing, QA and long-term maintenance costs.
Three reasons software systems fail:
Overbudget
Not meeting schedule
Not meeting expectations
Four fundamental software process activities:
Software specification: Create a vision for the product. Customers and engineers define the software that is to be produced and the constraints on its operations
Software development: Software is designed and programmed
Software validation: Software is checked to ensure that it is what the customer requires
Software evolution: Software is changed to reflect changing customer and market requirements
General issues that affect software:
Heterogeneity: Systems are required to operate as distributed systems across different platforms
Business and social change: Businesses and society are changing incredibly quickly as emerging economies develop and new technologies become available.
Security and trust: Trust is essential for software, we have to make sure malicious users cannot attack the software.
Scale: Software has to be developed across a very wide range of scales, from small embedded systems to Internet-scale cloud-based systems for a global community.
Application types:
Stand-alone applications: Run on a local computer, and include all necessary functionality. Don't 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 PC. These include web applicatoins such as e-commerce applications.
Embedded control systems: Software control systems to control and manage hardware devices. Most common
Batch Processing Systems: Process data in large batches. Eg. Bursar
Entertainment (media) systems: Primarily for personal use and to entertain the user
Modeling and Simulation Systems: Systems developed by scientists and engineers to model physical processes or situations
Data Collection Systems: Collet data from their environment using sensors and send to other systems for processing.
Systems of Systems: Systems composed of a number of other software systems
Last updated