Adaptive Software Engineering - Introduction to Software
Introduction to Software Engineering
Aim and Objectives
Aim: To familiarize students with the basic concept and nature of software.
Instructional Objectives:
Demonstrate characteristics of software.
Describe failure curves for hardware and software.
List out the failures for hardware and software.
Describe the importance of software engineering.
Learning Outcomes:
Define software.
Describe the importance of Software Engineering and Software Application Domains.
Summarize Software and New Challenges.
Agenda
Introduction
Characteristics of Software
Failure curves for hardware
Failure curves for Software
Software Application Domains
Importance of Software Engineering
Software - New Challenges
Unique Nature of WebApps
Introduction to Software
Software is defined as:
Instructions (computer programs) that, when executed, provide desired features, function, and performance.
Data structures that enable the programs to adequately manipulate information.
Documentation that describes the operation and use of the programs.
Characteristics of Software
Software is developed or engineered, not manufactured in the classical sense.
Software doesn't "wear out."
It remains as fresh as the day it was installed, regardless of how many times it's used.
Most software continues to be custom-built, though there's a move toward component-based construction.
Failure Curves for Hardware
The relationship, often called the "bathtub curve," indicates the typical failure rate of individual components within a large batch.
Early failure rates are attributed to:
Poor or unrefined initial design. Correcting this results in much lower failure rates for successive batches of the product.
Manufacturing defects, such as defects in the product brought about by poor assembly/materials during production.
Both types of failure can be corrected, which leads to the failure rate dropping to a steady-state level for some period of time.
As time passes, however, the failure rates rise again as hardware components suffer from the cumulative effects of dust, vibration, abuse, temperature extremes, and many other environmental maladies.
The hardware begins to wear out.
Failure Curves for Software
Wear vs. Deterioration (Worse)
Undiscovered defects in the first engineered version of the software cause high failure rates early in the life of a program.
However, these are corrected (hopefully without introducing other errors), and the curve flattens.
Software doesn't wear out but deteriorates with maintenance.
Software Failure
Defect: Bugs introduced by programmers in the code due to programmatic mistakes.
Failure: When these defects are executed during testing, it results in software failure.
Difference between hardware and software failure curves:
Hardware failure is random and increases at the last stage.
Software failure is systematic and does not have an increasing failure rate.
Nature of Software
Software as a Product:
Transforms information, produces, manages, acquires, modifies, displays, or transmits information.
Delivers computing potential of hardware and networks.
Software as a vehicle for delivering a product:
Controls other programs (operating system).
Effects communications (networking software).
Helps build other software (software tools & environments).
Software Application Domains
System software: Operating systems (mac OS, GNU/Linux, Android, Microsoft Windows), computational science software, game engines, search engines, industrial automation, and software as a service applications.
Application software: Microsoft Word, spreadsheets, VLC media player, Firefox or Google Chrome, accounting applications, photo editor, mobile apps (video games, WhatsApp, etc.).
Engineering/scientific software: MATLAB, AUTOCAD, PSPICE, ORCAD, etc.
Embedded software: Motion detection systems in security cameras, traffic control systems in traffic lights.
Product-line software
WebApps (Web applications)
AI software
Importance of Software Engineering
Reduces complexity: Big software is complex, and software engineering decreases the complexity.
Minimizes software cost: Planning reduces unnecessary elements, lowering production costs.
Decreases time: Reduces the time needed to get the ultimate running code.
Handling big projects: Provides an approach to handle large projects effectively.
Reliable software: Ensures the delivered software works for its given time.
Effectiveness: Software is more effective when made according to standards.
Productivity: Programmers improve code to maintain standards.
Legacy of Software: Why Must It Change?
Software must be adapted to meet the needs of new computing environments or technology.
Software must be enhanced to implement new business requirements.
Software must be extended to make it interoperable with other more modern systems or databases.
Software must be re-architected to make it viable within a network environment.
Software - New Challenges
Open-world computing: Pervasive, distributed computing.
Pervasive computing is associated with embedding microprocessors in day-to-day objects.
Ubiquitous computing: Wireless networks; existing everywhere.
Net sourcing: The Web as a computing engine, requiring target marketing.
Open source: "Free" source code open to the computing community.
Other challenges include:
Data mining
Grid/Cloud computing
Cognitive machines
Software for nanotechnologies
Web Apps
Modern Web Apps are more than hypertext files with pictures.
They use tools like XML and Java for interactive computing.
Web Apps may be standalone or integrated with corporate databases and business applications.
Semantic web technologies (Web 3.0) have evolved into sophisticated applications using semantic databases with web linking, flexible data representation, and APIs.
The aesthetic nature of the content remains important.
Unique Nature of Web Apps
Network intensiveness: Web Apps reside on a network and serve diverse clients.
Concurrency: Many users may access the Web App at one time.
Unpredictable load: User numbers may vary greatly.
Performance: Users may leave if they wait too long.
Availability: Users often demand "24x7x365" access.
Data-driven: They use hypermedia to present various content.
Content-sensitive: Quality and aesthetics of content are important.
Continuous evolution: Unlike conventional software, Web applications evolve continuously.
Immediacy: Web Apps have a quick time to market.
Security: It is difficult to limit end-user access.
Aesthetics: Look and feel are crucial.