Podcast
Questions and Answers
Which of the following is NOT a core component of software?
Which of the following is NOT a core component of software?
- Hardware interfaces (correct)
- Documentation
- Data structures
- Instructions (computer programs)
Unlike hardware, software is said to:
Unlike hardware, software is said to:
- Have a consistently high failure rate
- Be manufactured rather than engineered
- Wear out over time due to environmental factors
- Not 'wear out' in the traditional sense (correct)
In the context of software, deterioration is best described as:
In the context of software, deterioration is best described as:
- The increasing failure rate due to environmental factors
- The effect of dust, vibration and abuse on hardware
- The physical degradation of storage media
- The increased failure rate due to changes made during its life (correct)
Which of the following is an example of system software with 'determinate' inputs?
Which of the following is an example of system software with 'determinate' inputs?
Which software application resides within a product or system and is used to implement and control features for the end user?
Which software application resides within a product or system and is used to implement and control features for the end user?
Which of the given 'new category' software types involves source code being available to the computing community?
Which of the given 'new category' software types involves source code being available to the computing community?
What is the primary characteristic of legacy software that makes it a focus of continuous attention?
What is the primary characteristic of legacy software that makes it a focus of continuous attention?
According to the IEEE definition, software engineering involves a systematic, disciplined, and quantifiable approach to which aspects of software?
According to the IEEE definition, software engineering involves a systematic, disciplined, and quantifiable approach to which aspects of software?
In the context of software engineering as a layered technology, which layer serves as the foundation?
In the context of software engineering as a layered technology, which layer serves as the foundation?
What role does the 'process' play in software engineering's layered technology?
What role does the 'process' play in software engineering's layered technology?
What do 'methods' provide in the context of software engineering?
What do 'methods' provide in the context of software engineering?
What is the primary purpose of 'tools' in software engineering?
What is the primary purpose of 'tools' in software engineering?
An 'activity' in a software process is characterized by striving to:
An 'activity' in a software process is characterized by striving to:
What distinguishes a 'task' from an 'activity' or 'action' in a software process?
What distinguishes a 'task' from an 'activity' or 'action' in a software process?
Framework activities in a software process are applicable:
Framework activities in a software process are applicable:
What is the primary intent during the 'communication' activity in a general framework activity?
What is the primary intent during the 'communication' activity in a general framework activity?
The 'planning' activity in the software process is characterized by:
The 'planning' activity in the software process is characterized by:
What is the main purpose of 'modeling' during software development?
What is the main purpose of 'modeling' during software development?
What comprises the 'construction' activity in the context of software engineering?
What comprises the 'construction' activity in the context of software engineering?
During the 'deployment' phase of the software process, what action takes place?
During the 'deployment' phase of the software process, what action takes place?
Across multiple project iterations, what happens to the software?
Across multiple project iterations, what happens to the software?
Which of the following activities would be classified as an 'umbrella activity'?
Which of the following activities would be classified as an 'umbrella activity'?
What factor suggests one software engineering process should be different from another?
What factor suggests one software engineering process should be different from another?
Which of these principles from Hooker's General Principles emphasizes designing software that can be used in future projects?
Which of these principles from Hooker's General Principles emphasizes designing software that can be used in future projects?
What is often the initiating factor for a software project?
What is often the initiating factor for a software project?
What are the key components that define software?
What are the key components that define software?
What is a primary challenge associated with maintaining legacy software?
What is a primary challenge associated with maintaining legacy software?
Which of the following best describes the evolution of software over the past 50 years?
Which of the following best describes the evolution of software over the past 50 years?
The failure rate of correctly designed hardware displays what kind of characteristics?
The failure rate of correctly designed hardware displays what kind of characteristics?
The failure rate of software displays what kind of characteristic?
The failure rate of software displays what kind of characteristic?
Which of the following is an example of software application?
Which of the following is an example of software application?
Which of the following is an example of a WebApp?
Which of the following is an example of a WebApp?
What is the focus of concern for legacy software?
What is the focus of concern for legacy software?
Which of the following approaches for software engineering can be burdensome?
Which of the following approaches for software engineering can be burdensome?
Which of the following software engineering attributes need to be balanced?
Which of the following software engineering attributes need to be balanced?
Which of the following establishes the basis for management control activities?
Which of the following establishes the basis for management control activities?
Which of the following includes communication activities?
Which of the following includes communication activities?
What is one way that computer-aided software engineering tools are integrated?
What is one way that computer-aided software engineering tools are integrated?
Which of the following focuses on a small, but well-defined objective?
Which of the following focuses on a small, but well-defined objective?
Which of the following relies on a skeleton architecture?
Which of the following relies on a skeleton architecture?
Which of the following follows Polya's suggestion?
Which of the following follows Polya's suggestion?
Flashcards
What is Software?
What is Software?
Software is composed of instructions (computer programs), data structures, and documentation.
How is Software unique?
How is Software unique?
Software is developed/engineered, not manufactured. It doesn't 'wear out' in the traditional sense. It's mostly custom-built.
Instructions (in Software)
Instructions (in Software)
Describes computer programs that, when executed, provide desired features, function, and performance.
Data structures (in Software)
Data structures (in Software)
Signup and view all the flashcards
Documentation (in Software)
Documentation (in Software)
Signup and view all the flashcards
Hardware Failure Pattern
Hardware Failure Pattern
Signup and view all the flashcards
Software 'Wear'
Software 'Wear'
Signup and view all the flashcards
System Software
System Software
Signup and view all the flashcards
Determinate System Software
Determinate System Software
Signup and view all the flashcards
Indeterminate System Software
Indeterminate System Software
Signup and view all the flashcards
Application Software
Application Software
Signup and view all the flashcards
Engineering/Scientific Software
Engineering/Scientific Software
Signup and view all the flashcards
Embedded Software
Embedded Software
Signup and view all the flashcards
Product-line Software
Product-line Software
Signup and view all the flashcards
WebApps
WebApps
Signup and view all the flashcards
AI Software
AI Software
Signup and view all the flashcards
Legacy Software
Legacy Software
Signup and view all the flashcards
Open world Computing
Open world Computing
Signup and view all the flashcards
Ubiquitous Computing
Ubiquitous Computing
Signup and view all the flashcards
Netsourcing & Cloud Computing
Netsourcing & Cloud Computing
Signup and view all the flashcards
Open source
Open source
Signup and view all the flashcards
IEEE Definition of Software Engineering
IEEE Definition of Software Engineering
Signup and view all the flashcards
Layered Technology
Layered Technology
Signup and view all the flashcards
Process Layer
Process Layer
Signup and view all the flashcards
Methods
Methods
Signup and view all the flashcards
Tools
Tools
Signup and view all the flashcards
Software Process
Software Process
Signup and view all the flashcards
Activity
Activity
Signup and view all the flashcards
Action
Action
Signup and view all the flashcards
Task
Task
Signup and view all the flashcards
Process Framework
Process Framework
Signup and view all the flashcards
Framework Activities
Framework Activities
Signup and view all the flashcards
Umbrella Activities
Umbrella Activities
Signup and view all the flashcards
Process Adaptation
Process Adaptation
Signup and view all the flashcards
Polya's Suggestion: Step 1
Polya's Suggestion: Step 1
Signup and view all the flashcards
Polya's Suggestion: Step 2
Polya's Suggestion: Step 2
Signup and view all the flashcards
Polya's Suggestion: Step 3
Polya's Suggestion: Step 3
Signup and view all the flashcards
Polya's Suggestion: Step 4
Polya's Suggestion: Step 4
Signup and view all the flashcards
Software impact
Software impact
Signup and view all the flashcards
Software engineering
Software engineering
Signup and view all the flashcards
Study Notes
What is Software
- Software consists of programs, data, and descriptive information.
- Instructions or computer programs provide desired features, function, and performance when executed are software
- Data structures enable programs to adequately manipulate information
- Documentation is a component of software and describes the operation/use of the programs.
- Software is engineered/developed, not manufactured in the classic sense.
- Software does not "wear out".
- Most software continues to be custom-built, despite the industry's move toward component-based construction.
Hardware
- Hardware has relatively high failure rates early in its life.
- Hardware defects are corrected
- Hardware's failure rate drops to a steady-state level for some time.
- As time passes, the hardware failure rate rises again as components suffer from cumulative effects/abuse which cause it to wear out.
Software: The Changing Nature
- Software is not susceptible to environmental maladies that cause hardware to wear out.
- Theoretically, the failure rate curve for software should take the form of an idealized curve.
- Undiscovered defects cause high failure rates early in a program's life; these defects are corrected, and the curve flattens.
- Software deteriorates as it undergoes change during its life
Software Applications
- System software services other programs, including determinate items like compilers, editors, and file management utilities.
- Indeterminate system software includes operating systems and network software because of unpredictable inputs.
- Application software includes stand-alone programs that solve a specific business need.
- Engineering/scientific software includes a broad array of number-crunching programs used in astronomy, volcanology, automotive stress analysis, orbital dynamics, computer-aided design, molecular biology, genetic analysis, and meteorology
- Embedded software resides within a product/system and is used to implement/control features and functions for the end user and for the system itself.
- Product-line software provides a specific capability for use by many different customers, like inventory control products.
- WebApps (Web applications) are browser-based apps, including software that resides devices.
- AI software uses nonnumerical algorithms to solve complex problems that are not amenable to computation or straightforward analysis, like Robotics, expert systems, pattern recognition, artificial neural networks, theorem proving, and game playing
New Software Categories
- Open-world computing is pervasive, distributed computing.
- Ubiquitous computing involves wireless networks.
- Netsourcing & Cloud Computing relates to the Web as a computing engine.
- Open source "free" code is open to the computing community.
- New Software Categories also now includes data mining, grid computing, cognitive machines and software for nanotechnologies.
Legacy Software
- Legacy software consists of very old programs, which support core business functions, and are indispensable to the business.
- Legacy software characteristics include longevity and business criticality.
- Legacy software has been the focus of continuous attention and concern since the 1960s.
Software Engineering: Definition of Discipline
- The IEEE defines software engineering as the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.
- A "systematic, disciplined and quantifiable” approach applied by one software team may be burdensome to another.
- Discipline is needed with adaptability and agility in software engineering.
Software Engineering: A Layered Technology
- Software engineering is composed of tools, methods, and a process model which results in a "quality" focus.
Software Engineering Process
- The software engineering process layer is the foundation of software engineering.
- Process is the glue that holds the technology layers together and enables rational and timely development of computer software.
- Process defines a framework for effective delivery of software engineering technology and forms the basis for management control of software projects.
- The process layer establishes the context in which technical methods are applied, work products are produced, milestones are established, quality is ensured, and change is properly managed.
Software Engineering Methods
- Methods provide the technical how-to's for building software.
- Methods encompass an array of tasks that include communication, requirements analysis, design modeling, program construction, testing, and support.
- Methods rely on basic principles that govern each area of the technology and include modeling activities/descriptive techniques.
Software Engineering Tools
- Tools provide automated or semi-automated support for the process and the methods.
- Computer-aided software engineering tools can be integrated so that information created by one tool can be used by another.
Software Process
- A process is a collection of activities, actions, and tasks that are performed when some work product is to be created.
- An activity strives to achieve a broad objective, such as communication and is applied regardless of the application domain, size of the project, or complexity of the effort.
- An action encompasses a set of tasks that produce a major work product, such as architectural design.
- A task focuses on a well-defined objective that produces a tangible outcome.
Process Framework
- The process framework establishes the foundation for a complete software engineering process by identifying a small number of framework activities that are applicable to projects, regardless of their size or complexity.
- The process framework encompasses a set of umbrella activities that are applicable across the entire software process.
Framework Activities: General Setting
- Framework activities include communication, planning, modeling, construction, and deployment.
- Modeling includes the analysis of requirements and design
- Construction includes code generation and testing
Communication
- Before any technical work can commence, communication and collaboration with the customer (and other stakeholders) is critical.
- The intent is to understand stakeholders' objectives and to gather requirements that help define software features and functions.
Planning
- Any complicated journey can be simplified if a map exists.
- A software project is a complicated journey, and the planning activity creates a "map" that helps guide the team as it makes the journey.
- This map, which is also called a software project plan, defines the software engineering work by describing the technical tasks to be conducted, the risks that are likely, the resources that will be required, the work products to be produced, and a work schedule.
Modeling
- Whether you're a landscaper, a bridge builder, an aeronautical engineer, a carpenter, or an architect, you work with models every day.
- You create a "sketch" of the thing so that you'll understand the big picture
- What it will look like architecturally, how the constituent parts fit together, and many other characteristics.
- If required, you refine the sketch into greater and greater detail in an effort to better understand the problem and how you're going to solve it.
- A software engineer does the same thing by creating models to better understand software requirements and the design that will achieve those requirements.
Construction
- Construction is code generation (either manual or automated) and the testing that is required to uncover errors in the code.
Deployment
- The software (as a complete entity or as a partially completed increment) is delivered to the customer who evaluates the delivered product and provides feedback based on the evaluation.
Process Framework: Iteration
- Communication, planning, modeling, construction, and deployment are applied repeatedly through a number of project iterations.
- Each project iteration produces a software increment that provides stakeholders with a subset of overall software features/functionality.
- For each increment, the software becomes more and more complete
Umbrella Activities
- Software project tracking and control.
- Risk management.
- Software quality assurance.
- Technical reviews.
- Measurement.
- Software configuration management.
- Reusability management.
- Work product preparation and production.
Process Adaptation
- Software engineering process should be agile and adaptable (to the problem, to the project, to the team, and to the organizational culture).
- A process adopted for one project might be significantly different than a process adopted for another project.
- Differences include the overall flow of activities, actions, and tasks and the interdependencies among them.
- The difference resides in the degree to which actions and tasks are defined within each framework, also the degree to which work products are identified and required
- Differences depends upon the manner in which quality assurance and project tracking/control activities are applied, and the overall degree of detail and rigor with which the process is described.
- Difference depends on the degree to which the customer and stakeholders are involved with the project
- Difference depends on level of autonomy given to the software team, and the degree to which team organization and roles are prescribed
Software Engineering Practice
- There are generic framework activities—communication, planning, modeling, construction, and deployment—and umbrella activities establish a skeleton architecture for software engineering work.
The Essence of Practice
- Polya suggests the following:
- Understand the problem through communication and analysis.
- Plan a solution through modeling and software design.
- Carry out the plan through code generation.
- Examine the result for accuracy through testing and quality assurance.
Hooker's General Principles
- Include; 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, and Think!.
How It All Starts
- Every software project is precipitated by some business need
- The need to correct a defect in an existing application
- The need to adapt a 'legacy system' to a changing business environment
- The need to extend the functions and features of an existing application
- The need to create a new product, service, or system
Chapter 1: Summary
- Software is the key element in the evolution of computer-based systems/products and one of the most important technologies.
- Over the past 50 years, software has evolved from a specialized problem-solving/information analysis tool to an industry in itself.
- There remains trouble developing high-quality software on time and within budget
- Software (programs, data, descriptive information) addresses a wide array of technology and application areas.
- Legacy software continues to present special challenges to those who must maintain it, as the nature of software is changing
- Web-based systems/applications have evolved and mobile applications present new challenges as apps migrate to several platforms.
- Cloud computing transforms how software is delivered and the environment in which it exists.
- Software engineering encompasses processes, methods, and tools that enable complex computer-based systems to be built in a timely manner with quality.
- The software process incorporates five framework activities: communication, planning, modeling, construction, and deployment applicable to all software projects.
- Software engineering practice is a problem-solving activity that follows core principles.
- A wide array of software myths leads managers and practitioners astray as the collective knowledge of software/technologies needed to build it grows.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
This content describes what software and hardware consists of. It also highlights the key differences between software and hardware. It emphasizes that software is engineered and doesn't wear out.