Chapter 1: Introduction to Software Engineering
Software
Definition
- Software: A set of computer programs designed and developed to perform specific tasks desired by the user or by the computer itself.
Causes
- Not specified in notes
Goals / Objectives
- Explain what software is and its broad classification.
Importance
- Foundational concept for all later topics in software engineering.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Software enables automation, control and support of computing tasks.
Examples
- High-level classification shown in notes:
- System Software
- Application Software
Key Takeaways
- Software is programs that perform tasks for users or systems.
- Main categories are system software and application software.
Benefits of Software
Definition
- The positive outcomes software provides for individuals and organizations.
Causes
- Emergence of programmable computers and data-driven decision needs.
Goals / Objectives
- Show why software is valuable across many domains.
Importance
- Demonstrates the practical value of developing and maintaining software.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Benefits listed in notes:
- Automation and Efficiency: Automates repetitive tasks and increases productivity.
- Accuracy and Reliability: Reduces human error and executes tasks consistently.
- Scalability and Flexibility: Can scale and adapt to changing demands.
- Improved Decision Making: Enables data collection, analysis and visualization for better decisions.
- Innovation and Competitive Advantage: Drives new products and operational improvements.
- Improved Customer Experience: Enables better engagement and support (e.g., CRM).
- Cost Savings: Reduces manual labor, paperwork and physical storage; supports remote work.
- Accessibility and Convenience: Provides anytime, anywhere access via cloud and mobile.
- Continuous Improvement and Updates: Supports regular updates, bug fixes and feature enhancements.
Impact / Effect
- Increased productivity, better decisions, reduced costs, and continuous service improvement.
Examples
- Not specified in notes (benefit list is general)
Key Takeaways
- Software brings efficiency, accuracy and scalability.
- It enables innovation and better customer experiences while reducing some costs.
Functions of Software
Definition
- High-level roles software performs in a system.
Causes
- Not specified in notes
Goals / Objectives
- Clarify what software does within computing environments.
Importance
- Helps students understand software’s practical roles.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Software acts as intermediary, manages resources, and provides tools.
Examples
- Functions listed in figure form in notes:
- Intermediary
- Manage resources
- Provide tool
Key Takeaways
- Software mediates user-system interactions, manages resources, and supplies tools.
Characteristics of Software
Definition
- Typical properties that distinguish software from other engineered products.
Causes
- Not specified in notes
Goals / Objectives
- Present typical software attributes students should know.
Importance
- Shows why software must be treated differently (e.g., maintenance, continuous development).
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Software does not wear out but continues to be custom-built and engineered, requiring ongoing maintenance and evolution.
Examples
- Characteristics shown in figure in notes:
- Developed or Engineered
- Doesn’t “wear out”
- Continues to be custom built
Key Takeaways
- Software is engineered, durable in the sense it doesn’t degrade physically, and often continuously customized.
Types of Software (High-level)
Definition
- Two major software categories: System software and Application software.
Causes
- Different roles and target users of software lead to this classification.
Goals / Objectives
- Clarify the primary divisions of software for study.
Importance
- Guides students to understand differing development concerns for each type.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Different development practices and toolsets apply depending on type.
Examples
- System control programs, support programs, development programs listed under system software; examples of application software include web/mobile apps, messaging apps, etc.
Key Takeaways
- Know the two main kinds: system-level (OS, utilities) and application-level (user-facing apps).
System Software
Definition
- System Software: Collection of programs designed to operate, control and extend the processing capabilities of the computer itself.
Causes
- Built to manage hardware and provide services to application programs.
Goals / Objectives
- Provide core services like file editing, storage management, resource accounting and I/O management.
Importance
- Essential for the operation and performance of computer systems.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- System software enables other software to run and simplifies hardware use.
Examples
- Typical system software examples from notes:
- Operating System
- Translators (e.g., compilers, interpreters)
- Compilers
- Loaders
- Utility Programs
Key Takeaways
- System software controls hardware and supports application execution.
- Examples include OS, translators and utilities.
Types of System Software
Definition
- Sub-categories of system software based on function.
Causes
- Different management and development needs require specialized system programs.
Goals / Objectives
- Distinguish roles: control, support, and development.
Importance
- Helps classify tools and responsibilities when building system-level code.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Clear separation improves maintainability and role clarity.
Examples (from notes)
- System Control Programs
- Control program execution, manage storage and processing resources, provide management and monitoring (example: OS).
- System Support Programs
- Provide routine services to other programs and users (example: Utility Programs).
- System Development Programs
- Assist creation of programs (example: language translators like interpreters, compilers, assemblers).
Key Takeaways
- System software divides into control, support, and development tools.
- Each type serves a distinct purpose for system operation or program creation.
Application Software
Definition
- Application Software: Software designed to carry out specific tasks for end-users (not for operating the computer itself).
Causes
- Built to meet user or business needs beyond system operation.
Goals / Objectives
- Solve user problems, provide services and functionality to end users.
Importance
- Drives user productivity, entertainment, communication and business processes.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Application software is the primary product often sold or commissioned.
Examples
- Messaging apps (Messenger, WhatsApp, Telegram), Gmail, Twitter, Instagram, Facebook, App Store examples shown in notes.
Key Takeaways
- Application software is user-facing and task-specific.
- Many common consumer and business applications fall here.
Types of Application Software (Product Types)
Definition
- Two product models for application software: Generic and Customized (Bespoke).
Causes
- Market demand vs. specific client needs create these two product types.
Goals / Objectives
- Distinguish products intended for broad sale vs. tailored deliverables.
Importance
- Determines development approach, pricing, and lifecycle responsibilities.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes (differences implied by examples and definitions)
Impact / Effect
- Affects scope, specification detail and maintenance expectations.
Examples
- Generic products: stand-alone systems marketed to any customer (e.g., graphics programs, project management tools, CAD software, appointment systems for dentists).
- Customized (Bespoke) products: commissioned for a specific customer (e.g., embedded control systems, air traffic control software, traffic monitoring systems).
Key Takeaways
- Generic products are sold to many customers; bespoke products are built to order.
- Choice affects requirements process and long-term support.
Three Types of Generic Software (form factor)
Definition
- Classification of generic products by delivery/run platform.
Causes
- Different user environments require different app forms.
Goals / Objectives
- Explain common deployment targets for generic software.
Importance
- Helps decide UI, distribution and platform-specific development concerns.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Platform choice affects technology stack, distribution and user interaction.
Examples (from notes)
- Desktop App — runs on personal computers and laptops.
- Web App — accessed over a network such as the Internet or an intranet.
- Mobile App — designed to run on smartphones, tablets and other mobile devices.
Key Takeaways
- Generic applications commonly target desktop, web, or mobile platforms.
- Platform choice shapes development and user experience.
Desktop Applications
Definition
- Applications that run on personal computers and laptops.
Causes
- User need for local, feature-rich software.
Goals / Objectives
- Provide full-featured capabilities for productivity, media, and specialized tasks.
Importance
- Many powerful tools (e.g., productivity suites) are desktop-based.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Desktop apps often offer richer functionality and offline access.
Examples (from notes)
- Word processors, web browsers, games, media players, gadgets.
Key Takeaways
- Desktop apps are feature-rich and suited for powerful hardware and complex tasks.
Web Applications
Definition
- Applications accessed over a network such as the Internet or an intranet.
Causes
- Need for cross-device accessibility and centralized hosting.
Goals / Objectives
- Provide services via browsers or web clients without local installation.
Importance
- Widely used for collaborative and cloud-based services.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Easier deployment and access; dependence on network connectivity.
Examples (from notes)
- Online email services, Google Docs, Facebook.
Key Takeaways
- Web apps run over networks and are platform-independent from the client side.
Mobile Applications
Definition
- Software applications designed to run on smartphones, tablets and other mobile devices.
Causes
- Rise of mobile hardware and need for portable access.
Goals / Objectives
- Deliver services optimized for mobile form-factor and sensors.
Importance
- Mobile apps expand reach and provide on-the-go experiences.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Mobile apps enable new UX patterns and location-aware features.
Examples (from notes)
- Snapchat, Messenger, Instagram.
Key Takeaways
- Mobile apps are optimized for small screens and mobile behaviours.
- Many consumer services prioritize mobile versions.
Customised (Bespoke) Software
Definition
- Customized software: Tailored solution built specifically for a business to meet its requirements and goals.
Causes
- Unique business processes or specialized needs that off-the-shelf products cannot meet.
Goals / Objectives
- Design, create, deploy and maintain a tailored software solution per organizational needs.
Importance
- Critical when general products cannot address domain-specific constraints.
Procedures
- Development procedure includes designing, creating, deploying and maintaining the custom solution (as listed in notes).
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Provides organization-specific capability but often requires more resources and longer timelines.
Examples (from notes)
- Banking services (customer asset management, currency value tracking, fraud detection)
- Taxi and private hire apps (maps, available drivers, ratings, payments)
- Delivery apps (route to restaurants/delivery addresses, order tracking)
Key Takeaways
- Customized software fits unique business requirements; examples include banking and transport systems.
Attributes of Good Software
Definition
- Qualities that make software valuable, maintainable and usable.
Causes
- User expectations and long-term maintenance needs.
Goals / Objectives
- Define quality criteria engineers should aim for.
Importance
- Guides engineering priorities and evaluation of software products.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- High-quality attributes improve user satisfaction and reduce maintenance cost.
Examples (attributes listed across figures in notes)
- Availability
- Functional
- Reliable
- Efficient
- Secure
- Buildable
- Flexible
- Maintainable
- Reusable
- Usable
- Manageable
Key Takeaways
- Good software must be reliable, efficient, secure, maintainable and usable.
- These attributes guide design and evaluation decisions.
Software Engineering
Definition
- Software Engineering: An engineering discipline concerned with all aspects of software production from early system specification through maintenance.
Causes
- The increasing dependence of economies and systems on software.
Goals / Objectives
- Apply theories, methods and tools for professional, cost-effective software development.
Importance
- Ensures systems are built reliably, on budget and maintainably; reduces project failures and high maintenance costs.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Good software engineering reduces costs, improves reliability and supports complex system development.
Examples
- Not specified in notes (conceptual)
Key Takeaways
- Software engineering is the disciplined, methodical approach to building and maintaining software.
- It addresses theory, methods and tools for professional development.
Software Costs
Definition
- The financial aspects associated with developing and maintaining software.
Causes
- Complexity, maintenance needs and long system lifespans.
Goals / Objectives
- Emphasize cost-effective practices in software engineering.
Importance
- Software costs often dominate system costs and maintenance can exceed development costs.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- For long-lived systems, maintenance costs may be several times development costs; emphasizes the need for cost-effective engineering.
Examples
- On a PC, software costs can exceed hardware costs.
Key Takeaways
- Maintenance is often more costly than initial development.
- Software engineering aims to make development cost-effective.
What is Software Engineering? (Detailed)
Definition
- Restatement: Software engineering is an engineering discipline concerned with all aspects of software production from specification through maintenance.
Causes
- Not specified in notes
Goals / Objectives
- Apply appropriate theories, tools and methods within company constraints.
Importance
- Provides systematic approaches to reduce project failures and manage complexity.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Produces more reliable, maintainable and cost-effective systems.
Examples
- Not specified in notes
Key Takeaways
- Software engineers combine technical methods and process knowledge to deliver systems that meet requirements and constraints.
Software Engineering as Layered Technology
Definition
- Layered technology: Software engineering consists of layers that support the discipline.
Causes
- Need to separate concerns (tools, methods, process) for practical engineering.
Goals / Objectives
- Organize knowledge into usable layers: Tools & Methods, Technical how-to’s, Key Process Areas (KPAs), Process and Quality Focus.
Importance
- Each layer supports professional practice and quality outcomes.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Layering clarifies responsibilities and the flow from tools to process to quality.
Examples (layers from notes)
- Tools and Methods
- Technical how-to’s
- Key Process Areas (KPAs)
- Process
- A Quality Focus
Key Takeaways
- Software engineering is multi-layered: tools and methods sit on top of processes and quality goals.
Importance of Software Engineering
Definition
- Reasons why software engineering matters to projects and society.
Causes
- Increasing software dependence and costly project failures.
Goals / Objectives
- Emphasize cost-effective development and avoidance of common project problems.
Importance
- Prevents unreliable products, schedule overruns, budget breaches, poor performance and hard-to-maintain systems.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Proper engineering reduces project problems and their negative impacts on users and organizations.
Examples
- Diagrammed problems in notes: unreliable product, behind schedule, user needs unmet, over budget, poor performance, difficult to maintain.
Key Takeaways
- Software engineering’s goal is cost-effective development that prevents common project failures.
Key Challenges of Software Engineering
Definition
- Major problem areas that software engineering must address.
Causes
- Increasing system complexity, heterogeneity and legacy systems.
Goals / Objectives
- Identify challenge areas to focus engineering practices on.
Importance
- Awareness of challenges helps teams plan mitigations and choose appropriate processes.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Challenges affect delivery, maintenance and evolution of systems.
Examples (challenges listed in notes)
- Delivery Challenge
- Legacy Challenge
- Heterogeneity / diversity Challenge
Key Takeaways
- Key challenges include delivering on time, managing legacy systems, and handling diverse technologies and environments.
What is Systems Engineering?
Definition
- Systems Engineering: An interdisciplinary field focusing on design and management of complex engineering projects.
Causes
- Complexity and scale of modern engineering systems requiring coordination across teams and domains.
Goals / Objectives
- Handle logistics, coordinate teams, and manage automatic control challenges in large projects.
Importance
- Ensures complex projects integrate hardware, software, people and networks effectively.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Systems engineering aligns multiple disciplines to produce coherent, functioning systems.
Examples (from notes figure)
- Systems include: Database, Hardware, Software, Network, People
Key Takeaways
- Systems engineering coordinates multiple components and teams to manage complex projects.
Professional & Ethical Responsibility
Definition
- The moral and professional duties software engineers must uphold.
Causes
- Engineers’ work affects users, organizations and society; thus ethical behavior is required beyond technical skill.
Goals / Objectives
- Ensure engineers act honestly, responsibly and in the public interest.
Importance
- Vital for professional respect and ensuring software benefits users and society.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Ethical behavior protects clients, users and the profession; poor ethics can cause harm and loss of trust.
Examples
- General statements: engineers must be honest, act responsibly, and follow moral principles beyond mere law compliance.
Key Takeaways
- Ethical responsibility is central to being a professional software engineer.
- Engineers must balance technical work with moral considerations.
Issues of Professional Responsibility (Detailed)
Definition
- Specific areas where software engineers have professional duties.
Causes
- Practical situations where ethical choices arise (contracts, competence limits, IP, misuse).
Goals / Objectives
- Clarify responsibilities around confidentiality, competence, IP rights and computer misuse.
Importance
- Prevents legal/ethical breaches and maintains trust.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Proper adherence protects employers, clients and the public.
Examples and content preserved exactly from notes
Confidentiality
-
“Engineers should normally respect the confidentiality of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed.”
Competence
-
“Engineers should not misrepresent their level of competence. They should not knowingly accept work which is outwith their competence.”
Intellectual Property Rights
- Engineers should be aware of local laws on patents, copyright, etc., and ensure employer/client intellectual property is protected.
Computer Misuse
- Engineers should not use their technical skills to misuse other people’s computers; misuse ranges from trivial (game playing on an employer’s machine) to extremely serious (virus dissemination).
Key Takeaways
- Maintain confidentiality, be honest about competence, protect IP, and avoid computer misuse.
ACM/IEEE Code of Ethics
Definition
- A professional code of ethical practice produced by major computing societies.
Causes
- Need for standardized professional conduct for software engineers.
Goals / Objectives
- Provide principles guiding behavior of practitioners, educators, managers and students.
Importance
- Encourages high-quality, beneficial and effective software development and professional responsibility.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Membership implies agreement to ethical principles; the Code supports public trust and professional standards.
Examples / Notes from document
- Professional societies cooperated to produce the code; organizations post it publicly and members sign up when they join.
- The Code contains eight principles related to professional behavior and decisions.
Key Takeaways
- ACM/IEEE Code defines ethical principles to guide software engineers toward producing quality, beneficial software.
Professional Responsibilities (Summary figure content)
Definition
- Specific professional responsibilities engineers must carry.
Causes
- Derived from the ethical code and practice realities.
Goals / Objectives
- Ensure engineers act responsibly toward clients, employers, colleagues and the public.
Importance
- Central to trustworthy professional practice.
Procedures
- Not applicable to this topic
Advantages & Disadvantages
- Not specified in notes
Impact / Effect
- Upholding these responsibilities supports public safety and professional integrity.
Examples (items preserved from notes)
- Confidentiality
- Competence
- Intellectual property rights
- Computer misuse
Key Takeaways
- These four topics summarize the core professional duties highlighted in the chapter.