0% found this document useful (0 votes)
0 views

Lecture 2 (1) - Copy

The document outlines key characteristics of software, including its intangibility, non-perishability, and complexity, while also discussing software myths that mislead management and customers. It emphasizes the importance of software engineering principles such as functionality, reliability, efficiency, usability, maintainability, and portability. Additionally, it presents modern software development design principles aimed at improving software quality and adaptability through structured approaches and effective communication.

Uploaded by

kmosesisaac
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
0 views

Lecture 2 (1) - Copy

The document outlines key characteristics of software, including its intangibility, non-perishability, and complexity, while also discussing software myths that mislead management and customers. It emphasizes the importance of software engineering principles such as functionality, reliability, efficiency, usability, maintainability, and portability. Additionally, it presents modern software development design principles aimed at improving software quality and adaptability through structured approaches and effective communication.

Uploaded by

kmosesisaac
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 31

Software characteristics and myths

o Software is defined as a collection of procedures,


computer programs, rules, and data.
o Software engineering is the process of designing,
developing, testing, and maintaining software.
o The characteristics of the software include:
Software characteristics

 It is intangible, meaning it cannot be seen or touched.

 It is non-perishable, meaning it does not degrade over time.

 It is easy to replicate, meaning it can be copied and distributed easily.

 It can be complex, meaning it can have many interrelated parts and features.

 It can be difficult to understand and modify, especially for large and complex systems.

 It can be affected by changing requirements, meaning it may need to be updated or


modified as the needs of users change.
 It can be affected by bugs and other issues, meaning it may need to be tested and
debugged to ensure it works as intended.
Software Characteristics are classified into six major components;
Components of Software Characteristics
1. Functionality
 It refers to the degree of performance of the software against its intended
purpose.
 Functionality refers to the set of features and capabilities that a software
program or system provides to its users.
 It is one of the most important characteristics of software, as it determines
the usefulness of the software for the intended purpose
Examples of functionality in software include:

Data storage and retrieval


Data processing and manipulation
User interface and navigation
Communication and networking
Security and access control
Reporting and visualization : (Data visualization and reporting are ways to represent data )
Automation and scripting
2. Reliability

A set of attributes that bears on the capability of software to maintain


its level of performance under the given condition for a stated period
of time.

Reliability is a characteristic of software that refers to its ability to


perform its intended functions correctly and consistently over time.

Reliability is an important aspect of software quality, as it helps


ensure that the software will work correctly and not fail unexpectedly.
Factors that can affect the reliability of software include:
 Bugs and errors in the code

 Lack of testing and validation

 Inadequate error handling and recovery

 Incompatibilities with other software or hardware

 To improve the reliability of software, various techniques, and methodologies


can be used, such as testing and validation, formal verification, and fault
tolerance.
3. Efficiency
Efficiency is a characteristic of software that refers to its ability to use
resources such as memory, processing power, and network bandwidth in an
optimal way.
High efficiency means that a software program can perform its intended
functions quickly and with minimal use of resources, while low efficiency
means that a software program may be slow or consume excessive
resources.
Factors that can affect the efficiency of the software
include:
Poorly designed algorithms and data structures
Inefficient use of memory and processing power
High network latency or bandwidth usage
Unnecessary processing or computation
4. Usability
It refers to the extent to which the software can be used with ease.

Deals with the amount of effort or time required to learn how to use the software.

Required functions are:


 Learnability

 Understandability

 Operability
5. Maintainability
It refers to the ease with which modifications can be made in a software system to extend
its functionality, improve its performance, or correct errors.

Required functions are:


Testability
Changeability
Stability
6. Portability
A set of attributes that gives the software the ability to be transferred from one
environment to another, without minimum changes.

Required functions are:

Adaptability
Instability

Replaceability
6. Portability
A set of attributes that gives the software the ability to be transferred from one
environment to another, without minimum changes.

Required functions are:

Adaptability
Instability

Replaceability
What are Software Myths? Most, experienced experts have seen myths as
Software myths are opinions formed without misleading attitudes which create major
adequate evidence about Software and its creation problems for management and technical
that people hold to be true but are in fact untrue. people.
Professionals in Software Engineering have now
identified software myths that have persisted Types of software-related Myths
throughout the years. I. Management Myths

This reasoning that is logically invalid is common II. Customer Myths

knowledge to managers and software developers III. Practitioner’s Myths

and it might be challenging to change old


behaviors.
Management Myths

Managers are often under pressure for software development under a tight budget, improved quality,
and a packed schedule, often believing in some software myths. Following are some management
myths.

Myth 1

Manuals containing simple procedures, principles, and standards are enough for developers to
acquire all the information they need for software development.

Reality

Standards discussed in modules are often outdated, inadaptable, and incomplete. Not all the
standards in the manual are known to developers as not all means tend to decrease delivery time
and maintain high quality.

Most of the time, developers are unaware of these standards.


Myth 2
Falling behind on schedule could be taken care of by adding more programmers.
Reality
Adding more human resources to already late projects worsens the problem.
Developers working on the project have to educate the newcomers, further delaying the project.
Also, newcomers are far less productive than developers already working on them.
As a result, time spent on educating newcomers could not meet the immediate reduction in
work.

Myth 3
If a project is outsourced to a third party, we could just relax and wait for them to build it.
Reality

If an organization is not able to manage and control software projects internally, then the
organization will suffer invariably when they outsourced the project.
Customer Myths

Customer Myths are generally due to false expectations by customers, and these myths end
up leaving customers with dissatisfaction with the software developers.

Myth 1
 A general statement of intent is enough to start software development and details of
objectives can be done over time.

Reality:
 Detailed description of the database function, ethical performance, communication,

structural issues, etc are important.


 Clear requirements usually given out repeatedly are developed through effective and

continuous communication between the customer and the developer.


Myth 2

Softwares are flexible, and developers can accommodate any change


later. Developers can quickly take care of these changes in requirements.

Reality

The longer the time for which software has proceeded for development, it
becomes more and more difficult to accommodate any changes.

Any change causes an increase in additional costs because incorporating


changes at later stages needs redesigning and extra resources.
Practitioner’s Myths

Developers often work under management pressure to complete software within a timeframe,
with fewer resources often believing in these software myths. Following are some practitioners’
myths.
Myth 1
Once the software is developed or the code is delivered to the customer, the developer's work
ends.
Reality
A significant amount of developers' work, i.e., 50-60 % of all the efforts expended on software,
will be spent after the developer provides the software.
Major requirements get found missing, and new bugs may get discovered.
Myth 2
Software testing could only be possible when the software program starts running.
Reality
Quality of software could be measured at any phase of development by applying
some QA mechanism.

Myth 3
Unnecessary documentation slows down the process of software development.
Reality
Software engineering is about creating a quality product at every level and not
about adding unnecessary work.
Proper documentation of software helps developers to guide the user and
enhance the quality, which reduces the amount of rework.
Software Development Design Principles

What is a software design principle?


Software Development Design Principles are the things a software
developer must keep in mind while developing any software.
In Other Words, they are fundamental guidelines that serve as a
foundation for creating effective and efficient software solutions.
These foundational guidelines and concepts guide the process of
creating well-structured, efficient, and maintainable software systems.
There are some modern principles for
the development of software.
By following these modern principles
we can develop an effective software
that meets all the needs of the
customer.
To develop a proper software one
1. Architecture first approach:
 At the heart of successful software lies a strong architectural foundation.

 The architecture-first approach emphasizes the significance of devising


a robust architecture early in the development cycle.
Advantage
 By addressing architectural details in the initial stages, developers can
mitigate confusion, enhance decision-making, and optimize the overall
productivity of the project.
1. Architecture first approach:
 At the heart of successful software lies a strong architectural foundation.

 Begin the project with an architecture-first approach. Allocate time to


define and design the software’s architecture.
 Advantage

 By addressing architectural details in the initial stages, developers can


mitigate confusion, enhance decision-making, and optimize the overall
productivity of the project.
2. Iterative life cycle process

 Consider using an iterative life cycle process. Break down the project into smaller

iterations, focusing on requirement gathering, design, implementation, and testing.

 Continuously revisit and refine these stages to accommodate changes and improve

the software.

Advantage

 This method allows for the identification and elimination of risks in the early stages.
3. Component-based approach
 Encourage a component-based approach.

 Develop a library of reusable components and encourage


developers to reuse existing code to encourage development,
ensure consistency, and reduce errors.
 Advantage

This approach not only accelerates development but also ensures


consistency, reduces errors, and promotes maintainability.
4. Change management system
 Change is an inevitable part of software development.

 Implement a change management system that tracks and assesses


changes to the project and create a systematic process for reviewing,
evaluating, and implementing changes while maintaining stability and
quality.

Advantage
 Ensures that the software remains adaptable to dynamic requirements
and minimizes disruptions caused by changes.
5. Round trip engineering
 Integrate round trip engineering by using tools that facilitate automatic
updates between code and design artifacts.
 This ensures consistency and accuracy between code artifacts and design
models throughout the development process.

Advantage
 Automatic updates of artifacts enhance collaboration, reduce errors, and
contribute to the overall efficiency of the development process.
6. Model-based evolution

Develop the project considering use cases, architecture, and design details with each
iteration to adapt to changing requirements and ensure alignment with user needs.

In model-based evolution, software development relies on graphical and textual


representations to adapt to changing requirements.

Models provide a conceptual framework for understanding the software’s architecture


and behavior.

This approach empowers developers to evolve the software’s design and functionality
based on real-time feedback, ensuring that the end product aligns with user needs.
7. Objective Quality Control:

The objective of quality control is to improve the quality of our software.

It involves Quality management plan, Quality metrics, Quality checklist,


Quality baseline, and Quality Improvement measures.

8. Evolving levels of details

Deals with breaking down the development process into manageable


stages.

Teams can adapt to changes and enhance the software’s flexibility and
responsiveness to user needs.
9. Establish a configurable process

Software development is not one-size-fits-all. The establishment of a configurable process enables


customization based on project requirements.

This principle ensures that methodologies, tools, and practices can be tailored to align with specific project
goals and constraints, resulting in a more efficient and effective development process.

10. Demonstration-based approach


 Effective communication with stakeholders is essential in software development. The demonstration-based
approach involves showcasing working software to stakeholders.
 Demonstrations offer a clear representation of the problem domain, approaches used, and proposed
solutions.
 This approach fosters engagement, encourages feedback, and enhances productivity and quality.

You might also like