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

Lecture 2

The document outlines key concepts in software requirements engineering, emphasizing George Polya's model which includes understanding the problem, planning the solution, carrying out the plan, and examining results. It discusses the importance of software costs, deterioration, and the comprehensive nature of software engineering, which encompasses all aspects from specification to maintenance. Additionally, it highlights the formal attributes of good software, fundamental activities in software processes, and the need for adaptable process models tailored to specific project requirements.

Uploaded by

m72647264
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views

Lecture 2

The document outlines key concepts in software requirements engineering, emphasizing George Polya's model which includes understanding the problem, planning the solution, carrying out the plan, and examining results. It discusses the importance of software costs, deterioration, and the comprehensive nature of software engineering, which encompasses all aspects from specification to maintenance. Additionally, it highlights the formal attributes of good software, fundamental activities in software processes, and the need for adaptable process models tailored to specific project requirements.

Uploaded by

m72647264
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 19

Software

Requirements
Engineering
Recap!

What did we cover yesterday?


George Polya’s Model
•Understand the problem
•Plan the solution
•Carry out the plan
•Examine the results
Understand the Problem
•Who has a stake in the solution to the problem?

•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 sub problems be defined? If so, are solutions readily apparent for the sub
problems?
•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 solutions confirm 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 Results
•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?
Software Costs
•The costs of software on a PC are often greater than the hardware cost

•Software costs more to maintain than it does to develop. For systems with a
long life, maintenance costs may be several times more than the development
costs

•Software engineering is concerned with cost-effective software development.


Software Deteriorates

Software doesn't "wear out” but it deteriorates due to changes!


increased failure
rate due to side effects
Failure
rate

change
actual curve

idealized curve

Time
Software Engineering
Software engineering is an engineering discipline that is concerned with all
aspects of software production from the early stages of system specification
through to maintaining the system after it has gone into use.

In this definition, there are Two key phrases:


1: Engineering discipline
Engineers make things work. They apply theories, methods, and tools where
these are appropriate. However, they use them selectively and always try to
discover solutions to problems even when there are no applicable theories and
methods. Engineers also recognize that they must work to organizational and
financial constraints so they look for solutions within these constraints.
2: All aspects of software
production
Software engineering is not just concerned with the technical processes of
software development. It also includes activities such as software project
management and the development of tools, methods, and theories to support
software production.
Formal Good Attributes
•Maintainability
• Software should be written in such a way so that it can evolve to meet the changing
needs of customers
• software change is an inevitable requirement of a changing business environment

•Dependability and security


• Software dependability includes a range of characteristics including reliability,
security, and safety. Dependable software should not cause physical or economic
damage even in the event of system failure
•Efficiency
• Software should not make wasteful use of system resources such as memory and
processor cycles. Efficiency therefore includes responsiveness, processing time,
memory utilization, etc.

•Acceptability
• Software must be acceptable to the type of users for which it is designed. This means
that it must be understandable, usable, and compatible with other systems that they
use
Four Fundamental Activities
•These four fundamental activities are common to all software processes.

1. Software specification
• Customers and engineers define the software that is to be produced and the
constraints on its operation

2. Software development
• Where the software is designed and programmed
3. Software validation
• Where the software is checked to ensure that it is what the customer requires

4. Software evolution
• Where the software is modified to reflect changing customer and market
requirements
Adapting a Process Model
The process should be agile and adaptable to problems. Process adopted for one
project might be significantly different than a process adopted for another
project.

Among the differences are:


•the overall flow of activities, actions, and tasks and the interdependencies among them
•the degree to which actions and tasks are defined within each framework activity
•the degree to which work products are identified and required
•the manner which quality assurance activities are applied
•the manner in which project tracking and control activities are applied
•the overall degree of detail and rigor with which the process is described
•the degree to which the customer and other stakeholders are involved with the project
•the level of autonomy given to the software team
•the degree to which team organization and roles are prescribed

You might also like