The document discusses various aspects of software processes and life cycles. It describes three types of reusable software components: web services, object collections, and stand-alone systems. It also outlines common phases in a software life cycle like requirements analysis, design, implementation, testing, deployment, and maintenance. Incremental delivery approaches are discussed where early increments are delivered to customers.
2. In the majority of software projects, there is some software reuse.
This often happens informally when people working on the
project know of designs or code that are similar to what is
required. They look for these, modify them as needed, and
incorporate them into their system.
Reuse-oriented software engineering has the obvious advantage of
reducing the amount of software to be developed and so reducing
cost and risks.
Reuse-oriented software engineering
3. There are three types of software component
that may be used in a reuse-oriented process
1. Web services that are developed according to service standards and
which are available for remote invocation.
2. Collections of objects that are developed as a package to be integrated
with a component framework such as .NET or J2EE.
3. Stand-alone software systems that are configured for use in a
particular environment.
4. Process activities
Real software processes are interleaved sequences of technical,
collaborative, and managerial activities with the overall goal of
specifying, designing, implementing, and testing a software system.
Software developers use a variety of different software tools in their work.
Tools are particularly useful for supporting the editing of different types of
document and for managing the immense volume of detailed information
that is generated in a large software project.
5. It is A series of steps that organizes the development of
a software product
Phases of a Software Life Cycle
• Standard Phases
– Requirements Analysis & Specification
– Design
– Implementation and Integration
– Operation and Maintenance
– Change in Requirements
– Testing throughout!
Software Life Cycle
6. Detailed Software life cycle
1. Feasibility Study
2. Requirement Gathering
3. Requirement analysis
4. Design
5. Implementation
6. Testing
7. Deployment
8. Maintenance
Software Life Cycle
7. Input Output
Project idea Report:
Yes, No,
Yes but
What are the tools and techniques used for
conducting feasibility study?
Feasibility
Study
Feasibility Study
8. Requirements Analysis and Specification
Software specification or requirements engineering is the process of
1. understanding and defining what services are required from the system and
2. identifying the constraints on the system’s operation and development.
9. Requirements Analysis and Specification
Problem Definition —> Requirements Specification
– determine exactly what client wants and identify constraints
– develop a contract with client
– Specify the product’s task explicitly
Difficulties
– client asks for wrong product
– client is computer/software illiterate
– specifications may be ambiguous, inconsistent, incomplete
Validation
– extensive reviews to check that requirements satisfy client needs
– look for ambiguity, consistency, incompleteness
– check for feasibility, testability
– develop system/acceptance test plan
10. Input Output
Project Title Requirement list
Some Requirement gathering techniques:
Interview, document analysis, prototype,…
Tools: Check list, Use case diagram,….
Requirement
Gathering
Requirements Analysis and
Specification
12. Software design
A software design is a description of the structure of the software
to be implemented, the data models and structures used by the
system, the interfaces between system components and, sometimes,
the algorithms used.
13. Software design
Requirements Specification —> Design
– develop architectural design (system structure)
decompose software into modules with module interfaces
– develop detailed design (module specifications)
select algorithms and data structures
– maintain record of design decisions
Difficulties
– miscommunication between module designers
– design may be inconsistent, incomplete, ambiguous
Verification
– extensive design reviews (inspections) to determine that design conforms to
requirements
15. Note :-
The activities in the design process vary, depending on the type of system being
developed.
For example, real-time systems require timing design but may not include a
database so there is no database design involved.
Design process are four activities :
Software design
16. Implementation and Integration
The implementation stage of software development is the process of
converting a system specification into an executable system.
It always involves processes of software design and programming but, if an
incremental approach to development is used, may also involve refinement
of the software specification.
17. Implementation and Integration
Design —> Implementation
– implement modules and verify they meet their specifications
– combine modules according to architectural design
Difficulties
– module interaction errors
– order of integration has a critical influence on product quality
19. Software validation
Software validation or, more generally, verification and validation
(V&V) is intended to show that a system both conforms to its
specification and that it meets the expectations of the system
customer.
20. Software validation
Verification and Testing
– code reviews to determine that implementation conforms to
requirements and design
– develop unit/module test plan: focus on individual module functionality
– develop integration test plan: focus on module interfaces
– develop system test plan: focus on requirements and determine
whether product as a whole
functions correctly
24. Software evolution
The flexibility of software systems is one of the main reasons why
more and more software is being incorporated in large, complex
systems.
Once a decision has been made to manufacture hardware, it is very
expensive to make changes to the hardware design.
However, changes can be made to software at any time during or after
the system development. Even extensive changes are still much
cheaper than corresponding changes to system hardware.
Note:-
the process of software development and the process of software
evolution (software maintenance). (Differences)
26. Incremental delivery
Incremental delivery is an approach to software development where
some of the developed increments are delivered to the customer and
deployed for use in an operational environment.
In an incremental delivery process, customers identify,
in outline, the services to be provided by the system. They identify
which of the services are most important and which are least
important to them.
28. Incremental delivery has a number of
advantages
1. Customers can use the early increments as prototypes and gain
experience that informs their requirements for later system increments.
2. Customers do not have to wait until the entire system is delivered before
they can gain value from it.
3. The process maintains the benefits of incremental development in that it
should be relatively easy to incorporate changes into the system.
4. As the highest-priority services are delivered first and increments then
integrated, the most important system services receive the most testing.
29. There are problems with incremental
delivery:
1. Most systems require a set of basic facilities that are used by
different parts of the system.
2. Iterative development can also be difficult when a replacement
system is being developed.
3. The essence of iterative processes is that the specification is
developed in conjunction with the software.