1/108
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
Software
(1) instructions (computer programs) that when executed provide desired features, function, and performance;
(2) data structures that enable the programs to adequately manipulate information and
(3) documentation that describes the operation and use of the programs.
instructions
when executed provide desired features, function, and performance
data structures
enable the programs to adequately manipulate information
documentation
describes the operation and use of the programs.
developed or engineered
Software is _____, it is not manufactured in the classical sense.
wear out
Software doesn't "_____."
component-based construction,
custom-built
Although the industry is moving toward _____, most software continues to be _____.
Wear
often called the “bathtub curve”
bathtub curve
looks like a bathtub as we normally see in our bathrooms.
hardware
Wear is applicable only for ____.
wear or wear out state
It refers that, at infant state of the life of hardware the failure rate is so high having many defects.
By time, after customization & repairing the defects , it becomes idealized or gets into the steady state or idealized state and again continues.
But after that, with respect to time, the failure rate rises gradually.
As more time passes, at one time the hardware becomes totally unusable.
extreme usage,
excessive temperature,
dust,
vibration,
high voltage
Wear: These may be happened by (5):
software
_____ never wear outs. It has deterioration.
deterioration
At its infant state, software has high failure rate same as hardware.
By time, after customization & repairing the defects, it becomes idealized or gets into the steady state or idealized state.
The Idealized Curve shows the Idealized State.
And the Actual Curve shows the increased failure rate gradually due to the defeats during software customization and modification (Change).
This (change) causes Software _____.
unfulfilled user demands,
slow,
bugs
Software defects may be happened by the (3):
Idealized Curve
shows the Idealized State.
Actual Curve
shows the increased failure rate gradually due to the defeats during software customization and modification (Change).
system software,
application software,
engineering/scientific software,
embedded software,
product-line software,
WebApps (Web applications),
AI software
Software Applications (6)
Open world computing,
Ubiquitous computing,
Netsourcing,
Open source,
Data mining,
Grid computing,
Cognitive machines,
Software for nanotechnologies
Software—New Categories (8)
Open world computing
pervasive, distributed computing
Ubiquitous computing
wireless networks
Netsourcing
the Web as a computing engine
Open source
”free” source code open to the computing community
pervasive
in the context of computing and technology, refers to something that is widespread and integrated into every aspect of our daily lives.
It means that computing is no longer confined to specific devices like desktops or laptops but is embedded throughout our environment, often in ways that are invisible or seamlessly integrated.
Open world computing
a computing paradigm where systems and applications operate in a dynamic and open environment, rather than in a closed, controlled one.
In such a scenario, the systems must be capable of handling incomplete, evolving, or unpredictable information.
This concept is often associated with artificial intelligence, robotics, and distributed systems, where the environment cannot be fully defined or controlled in advance.
Ubiquitous computing
A concept of Software Engineering and Computer Science where computing is made to appear anywhere and anytime.
It can occur using any device, in any location and in any format
Pervasive computing / Existing Anywhere
Netsourcing
is the practice of renting or "paying as you use" access to centrally managed business applications, made available to multiple users from a shared data center over the Internet or other networks via browser-enabled devices.
allows customers to receive business applications as a service (SaaS).
Open source software (OSS)
is software that is distributed with its source code, making it available for use, modification, and distribution with its original rights.
Data mining
is the process of sorting through large data sets to identify patterns and relationships that can help solve business problems through data analysis.
techniques and tools help enterprises to predict future trends and make more informed business decisions.
Grid computing
is a computing infrastructure that combines computer resources spread over different geographical locations to achieve a common goal.
All unused resources on multiple computers are pooled together and made available for a single task.
Cognitive machines
are systems or devices that mimic human cognitive processes, such as learning, reasoning, problem-solving, perception, and decision-making.
These machines leverage technologies like artificial intelligence (AI), machine learning, natural language processing, and robotics to perform tasks that typically require human intelligence.
Nanotechnology
refers to specialized tools and programs designed to model, simulate, and analyze nanoscale materials, processes, and systems.
These software tools are essential for researchers and engineers working in the field of _____, as they allow for the exploration and manipulation of materials at the atomic and molecular levels
Legacy Software
older programs which are developed decades ago that are still in use by performing modifications in order to meet the business requirements
The rapid increase of such systems may cause the risk to the larger organizations as they may require outdated hardware and operating system.
remain supportive to core business functions and are important to business
is characterized by longevity and business criticality.
adapted
Legacy Software: Why must it change?
software must be _____ to meet the needs of new computing environments or technology.
enhanced
Legacy Software: Why must it change?
software must be _____ to implement new business requirements.
extended to make it interoperable
Legacy Software: Why must it change?
software must be _____ with other more modern systems or databases.
re-architected
Legacy Software: Why must it change?
software must be _____ to make it viable within a network environment.
web application (web app)
is an application program that is stored on a remote server and delivered over the internet through a browser interface
Web services
are web apps by definition and many, although not all, websites contain web apps.
Network intensiveness,
Concurrency,
Unpredictable load,
Performance,
Availability,
Data driven,
Content sensitive,
Continuous evolution,
Immediacy,
Security,
Aesthetics
Characteristics of WebApps (11)
Network intensiveness
A WebApp resides on a network and must serve the needs of a diverse community of clients.
Concurrency
A large number of users may access the WebApp at one time.
Unpredictable load
The number of users of the WebApp may vary by orders of magnitude from day to day.
Performance
If a WebApp user must wait too long (for access, for server-side processing, for client-side formatting and display), he or she may decide to go elsewhere.
Availability
Although expectation of 100 percent availability is unreasonable, users of popular WebApps often demand access on a “24/7/365” basis.
Data driven
The primary function of many WebApps is to use hypermedia to present text, graphics, audio, and video content to the end-user.
Content sensitive
The quality and aesthetic nature of content remains an important determinant of the quality of a WebApp.
Continuous evolution
Unlike conventional application software that evolves over a series of planned, chronologically-spaced releases, Web applications evolve continuously.
Immediacy
Although immediacy—the compelling need to get software to market quickly—is a characteristic of many application domains, WebApps often exhibit a time to market that can be a matter of a few days or weeks.
Security
Because WebApps are available via network access, it is difficult, if not impossible, to limit the population of end-users who may access the application.
Aesthetics
An undeniable part of the appeal of a WebApp is its look and feel.
concerted effort
Software Engineering: Some realities
a _____ should be made to understand the problem before a software solution is developed
design
Software Engineering: Some realities
____ becomes a pivotal activity because it serves as the bridge between ideas and their execution.
high quality
Software Engineering: Some realities
software should exhibit _____
maintainable
Software Engineering: Some realities
software should be _____
Software engineering
seminal definition:
is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines.
Software engineering
IEEE definition:
The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.
Institute of Electrical and Electronics Engineers (IEEE)
is a technical professional society dedicated to advancing tech and innovation.
serves scientists, engineers, and professionals involved in all areas of science and technology.
computer-aided software engineering
a system for the support of software development
layered technology
Software engineering is a fully _____, to develop software we need to go from one layer to another.
All the layers are connected and each layer demands the fulfillment of the previous layer.
a quality focus
defines continuous process improvement principles
It provides integrity that means providing security to the software so that data can be accessed by only an authorized person, no outsider can access the data.
It also focuses on maintainability and usability.
process
It is a foundation or base layer of Software Engineering.
It is the glue that holds the technology layers.
It is key that binds all the layers together which enables the development of software before the deadline or on time
It defines framework activities.
defines a framework that must be established for the effective delivery of software engineering technology
covers all the activities, actions, and tasks required to be carried out for software development.
Communication,
Planning,
Modeling,
Construction,
Deployment
Process activities (4)
Communication
It is the first and foremost thing for the development of software.
is necessary to know the actual demand of the client.
Planning
It basically means drawing a map for reduced the complication of development.
Modeling
In this process, a model is created according to the client for better understanding.
Construction
It includes the coding and testing of the problem.
Deployment
It includes the delivery of software to the client for evaluation and feedback.
methods
During the process of software development the answers to all “how-to-do” questions are given by method.
It has the information of all the tasks which includes communication, requirement analysis, design modeling, program construction, testing, and support.
tools
allows automation of activities which helps to perform systematic activities
provide a self-operating system for processes and methods.
are integrated which means information created by one tool can be used by another.
the software & applications used to develop, test, and maintain the layers.
These include Integrated Development Environments (IDEs) like Visual Studio or Eclipse, version control systems like Git, and testing tools like JUnit
Framework activities,
Umbrella Activities
Process framework (2)
Communication,
Planning,
Modeling,
Construction,
Deployment,
Framework Activities (5)
Analysis of requirements,
Design
Modeling (2)
Code generation,
Testing
Construction (2)
Umbrella activities
are a series of steps or procedures followed by a software development team to maintain the progress, quality, changes, and risks of complete development tasks.
These steps of _____ will evolve through the phases of the generic view of software development.
Software project management,
Formal technical reviews,
Software quality assurance,
Software configuration management,
Work product preparation and production,
Reusability management,
Measurement,
Risk management
Umbrella Activities (7)
Software project tracking and control
This activity allows the software team to check the progress of software development.
Before the actual development starts, make a software development plan and develop on this basis, but after a certain period of time, it is necessary to analyze the development progress to find out what measures need to be taken.
It must be accepted at an appropriate time after the completion of development, testing, etc.
The test results may need to reschedule the development time.
Risk management
is a series of steps to help software development teams understand and manage uncertainty.
It is a very good idea to identify it, assess the likelihood of it happening, assess its impact, and develop an “if the problem does happen” contingency plan.
Software quality assurance
this defines and conducts the activities required to ensure software quality.
The quality of the software, such as user experience, performance, workload flexibility, etc., must be tested and verified after reaching the specified milestones, which reduces the tasks at the end of the development process, which must be performed by a dedicated team so that the development can continue.
Technical reviews
It assesses software engineering work products in an effort to uncover and remove errors before they are propagated to the next activity.
Software engineering is done in clusters or modules, after completing each module, it is good practice to review the completed module to find out and remove errors so their propagation to the next module can be prevented.
Measurement
This includes all measurements of all aspects of the software project.
Define and compile process, project, and product metrics to help the team deliver software that meets the needs of stakeholders;
it can be used in conjunction with all other frameworks and general operations.
Software configuration management
It manages the impact of changes throughout the software development process.
is a set of activities designed to manage changes by identifying work products that can be changed, establishing relationships between them, and defining mechanisms for managing different versions of them.
Reusability management
Define the standards for the reuse of work products (including software components), and develop mechanisms to implement reusable components.
This includes the approval of any part of a backing-up software project or any type of support provided for updates or updates in the future. Update the software according to user/current time requirements.
Work product preparation and production
It encompasses the activities required to create work products such as models, documents, logs, forms, and lists.
George Polya
is known as the father of modern problem solving,
George Polya
He suggests:
Understand the problem (communication and analysis).
Plan a solution (modeling and software design).
Carry out the plan (code generation)
Examine the result for accuracy (testing and quality assurance).
communication and analysis
Understand the problem
modeling and software design
Plan a solution
code generation
Carry out the plan
testing and quality assurance
Examine the result for accuracy
Understand the Problem
Who has a stake in the solution to the problem? That is, who are the stakeholders?
What are the unknowns? What data, functions, and features are required to properly solve the problem?
Can the problem be compartmentalized? Is it possible to represent smaller problems that may be easier to understand?
Can the problem be represented graphically? Can an analysis model be created?
Plan the Solution
Have you seen similar problems before? Are there patterns that are recognizable in a potential solution? Is there existing software that implements the data, functions, and features that are required?
Has a similar problem been solved? If so, are elements of the solution reusable?
Can subproblems be defined? If so, are solutions readily apparent for the subproblems?
Can you represent a solution in a manner that leads to effective implementation? Can a design model be created?
Carry Out the Plan
Does the solution conform to the plan? Is source code traceable to the design model?
Is each component part of the solution provably correct? Has the design and code been reviewed, or better, have correctness proofs been applied to algorithm?
Examine the Result
Is it possible to test each component part of the solution? Has a reasonable testing strategy been implemented?
Does the solution produce results that conform to the data, functions, and features that are required? Has the software been validated against all stakeholder requirements?
The Reason It All Exists,
KISS (Keep It Simple, Stupid!),
Maintain the Vision,
What You Produce, Others Will Consume,
Be Open to the Future,
Plan Ahead for Reuse,
Think
Hooker’s General Principles (7)
The Reason It All Exists
A software system exists for one reason: to provide value to its users.
All decisions should be made with this in mind.
Before specifying a system requirement, before noting a piece of system functionality, before determining the hardware platforms or development processes, ask yourself questions such as: "Does this add real VALUE to the system?" If the answer is "no", don't do it.
All other principles support this one.
KISS (Keep It Simple, Stupid!)
Software design is not a haphazard process.
There are many factors to consider in any design effort.
All design should be as simple as possible, but no simpler.
This facilitates having a more easily understood, and easily maintained system.
This is not to say that features, even internal features, should be discarded in the name of simplicity.
Indeed, the more elegant designs are usually the more simple ones.
Simple also does not mean "quick and dirty." In fact, it often takes a lot of thought and work over multiple iterations to simplify.
The payoff is software that is more maintainable and less error-prone.
Maintain the Vision
A clear vision is essential to the success of a software project.
Without one, a project almost unfailingly ends up being "of two [or more] minds" about itself.
Compromising the architectural vision of a software system weakens and will eventually break even the most well designed systems.
Having an empowered Architect who can hold the vision and enforce compliance helps ensure a very successful software project.
Conceptual integrity
Without _____, a system threatens to become a patchwork of incompatible designs, held together by the wrong kind of screws.
_____ is the most important consideration in system design.