Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo

1

Lecture Three
Software processes con..
Assistant Lecturer Huda A. Alameen
hudaa.alameen@uokufa.edu.iq

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

11

Input Output
Requirement
analysis
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

14

Input Output
Design Phase

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

18

Input Output
implementatio
n

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

21

Input Output
Testing

22

Input Output
Deployment

23

Input Output
Maintenance

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)

25

Software evolution

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.

27

Incremental delivery

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.

30

Se lec 3

More Related Content

Se lec 3

  • 1. Lecture Three Software processes con.. Assistant Lecturer Huda A. Alameen hudaa.alameen@uokufa.edu.iq
  • 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.