Lecture 1 v2
Lecture 1 v2
Definition:
Instructions (computer programs) that provide features, function, and
performance.
Data structures enabling programs to manipulate information.
Descriptive information on the operation and use of programs.
Key Characteristics:
Software is developed or engineered, not manufactured.
Software does not ”wear out.”
Software as a Product:
Delivers computing potential by transforming, managing, acquiring,
modifying, displaying, and transmitting information.
Examples: Applications on mobile phones, software running
mainframes.
Software as a Vehicle:
Enables delivery of products by controlling hardware (e.g., operating
systems), facilitating communication (e.g., networks), and
creating/managing other programs.
Examples: Software tools, environments, and networks.
Key Insight: Software transforms personal data, manages business
information, and acts as a gateway to global networks like the
Internet.
Maintainability:
Ability to modify and adapt software to meet evolving user needs.
Easier debugging, enhancement, and adaptation to changing
environments.
Dependability and Security:
Reliability in performing required functions without failure.
Security against unauthorized access or data breaches.
Ensures safety in critical systems (e.g., medical devices).
Efficiency:
Optimized use of system resources like memory, CPU, and bandwidth.
Ensures fast response times and low latency.
Acceptability:
User-friendly interfaces and intuitive operation.
Compatibility with existing systems and workflows.
Provides high user satisfaction.
System Software:
Supports other software, including operating systems, drivers, and
utilities.
Characteristics: high interaction with hardware, multiple users, complex
data structures.
Application Software:
Stand-alone programs for specific business needs.
Examples: payroll systems, inventory management, real-time process
control.
Engineering/Scientific Software:
Numerical algorithms, simulations, and CAD tools.
Examples: stress analysis, molecular biology simulations.
Embedded Software:
Embedded within hardware products.
Examples: automobile control systems, microwave ovens.
Product-Line Software:
Built for specific industries or tasks.
Examples: word processors, spreadsheets.
Web Applications (WebApps):
Network-centric software that spans business to social media
applications.
Characteristics: interactive, aesthetic, and data-driven.
Work Tasks:
Specific actions performed during the activity (e.g., creating design
documents, coding modules).
Work Products:
Deliverables or artifacts produced (e.g., requirements, test plans, code).
Milestones Deliverables:
Significant checkpoints (milestones) and tangible outputs
(deliverables).
Quality Assurance (QA) Checkpoints:
Ensure the work meets standards before proceeding.
Repeatability:
Process steps can be consistently followed to produce similar results.
Reduces variability in project outcomes.
Predictability:
Project outcomes (e.g., timelines, costs) can be accurately forecasted.
Enables better planning and resource allocation.
Adaptability:
Can be tailored to different projects, teams, or technologies.
Supports a variety of development methodologies (e.g., Agile,
Waterfall).
Transparency:
Progress, quality, and performance are easy to monitor.
Facilitates effective communication among stakeholders.
Definition:
A software process pattern provides a proven solution to recurring
problems or challenges in software development.
They are reusable and structured approaches to managing and
organizing the software process.
Purpose:
Improve efficiency, consistency, and quality in software projects.
Address common challenges across different stages of the software
development lifecycle.
1. Phase Patterns:
Focus on a single phase of the software lifecycle.
Example: Requirements Elicitation Pattern.
2. Stage Patterns:
Address challenges across multiple phases.
Example: Spiral Development Pattern.
3. Task Patterns:
Guide specific tasks within a phase or stage.
Example: Code Inspection Pattern.
Essence of Practice:
Understand the problem.
Plan a solution.
Carry out the plan (coding).
Examine the results (testing and quality assurance).
General Principles:
Provide value to end users.
Keep it simple.
Maintain the vision.
Be open to the future.