1/53
Vocabulary flashcards covering core concepts, definitions, and ethics from the lecture notes.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
Software
Computer programs and associated documentation; can be developed for a specific customer or for a general market.
Software product
Tangible output of a software development process; may be a generic product or a customized product for a customer.
Generic software products
Stand-alone systems marketed to any customer; ownership of what the software should do is by the developer.
Custom software products
Software commissioned by a specific customer to meet their needs; ownership of the software and changes typically reside with the customer.
Product specification
A detailed document outlining features, functions, and requirements; serves as a blueprint for the development process.
Stand-alone application
Software that runs on a local computer and does not need to be connected to a network.
Interactive transaction-based application
Software that executes on a remote computer and is accessed by users from their own PCs or terminals.
Embedded control system
Control systems that manage hardware devices and their operations.
Batch processing system
Business systems designed to process data in large batches.
Entertainment system
Systems primarily for personal use intended to entertain the user.
Systems for Modelling and Simulation
Systems developed to model physical processes or situations with many interacting objects.
Data collection system
System that collects data from the environment using sensors and transmits it to other systems for processing.
Systems of systems
A system composed of several other software systems.
Maintainability
Software should be written so it can evolve to meet changing customer needs.
Dependability
Includes reliability, security, and safety; software should not cause damage and should resist malicious use.
Efficiency
Software should use system resources effectively, with good response time and memory utilization.
Acceptability
Software must be understandable, usable, and compatible with users and their environment.
Essential attributes of good software
Maintainability, dependability, efficiency, and acceptability.
Software engineering
An engineering discipline concerned with all aspects of software production.
Fundamental activities
The four activities always involved: software specification, software development, software validation, and software evolution.
Software specification
Defining the software to be produced and constraints via collaboration between customers and engineers.
Software development
The design and programming of the software.
Software validation
Checking that the software meets the customer requirements.
Software evolution
Modifying the software to reflect changing customer and market needs.
Process activities
Core development tasks: requirements gathering and analysis, design, coding, testing, and deployment.
Umbrella activities
Support functions: project management, configuration management, quality assurance, documentation, and software standards compliance.
Managed development process
Developing the system using a controlled, understood process; processes vary by project type.
Reuse existing software
Where possible, reuse software components rather than writing new code.
Difference: Software Engineering vs Computer Science
Software engineering focuses on building and delivering useful software; computer science emphasizes theory, algorithms, and fundamentals.
Difference: Software Engineering vs System Engineering
System engineering covers hardware, software, and processes; software engineering focuses on software and software activities within that broader process.
Web impact on software engineering
The web enables distributed service-based systems, web services, and advances in languages, deployment, and software reuse.
Web services
Application functionality that can be accessed over the web.
Cloud computing
Provision of computing resources as services where applications run remotely and users pay per use.
Key challenges facing software engineering
Increasing diversity and complexity, need for quick delivery, and production of trustworthy software.
Costs of software engineering
Roughly 60% development costs and 40% testing costs; for custom software, evolution costs often exceed development costs.
Best software engineering techniques
There is no single best method; techniques depend on the type of software and context; different projects require different approaches.
ACM/IEEE Code of Ethics
A jointly developed code outlining ethical principles and professional responsibilities for software engineers.
Public (ethics principle)
Software engineers shall act in the public interest.
Client and Employer (ethics principle)
Software engineers shall act in the best interests of their client and employer, within the public interest.
Product (ethics principle)
Software engineers shall ensure their products meet the highest professional standards.
Judgment (ethics principle)
Software engineers shall maintain integrity and independence in professional judgment.
Eight Principles (overview)
Public, Client and Employer, Product, Judgment, Management, Profession, Colleagues, Self.
Confidentiality
Respect the confidentiality of employer or client information.
Competence
Do not misrepresent competence or take on work beyond one’s ability.
Intellectual property rights
Respect patents, copyrights, and other IP of employers and clients.
Computer misuse
Do not misuse others' computers or disseminate malware.
Insulin pump case overview
An embedded, safety-critical insulin delivery system controlled by software.
Mentcare overview
A patient information system for mental health care that can operate with or without secure network connectivity.
Wilderness Weather Station overview
Remote weather stations with data collection, processing, and maintenance systems.
iLearn overview
A digital learning environment with services and applications, configurable for different groups.
Service-oriented system
A system where components are treated as replaceable services to enable incremental updates.
Utility services
Provide general, application-independent functionality used by other services.
Application services
Provide specific applications and access to educational content.
Configuration services
Configure and manage how services are shared and arranged for users and groups.