introduction,software process models, project management

Post on 07-Dec-2014

2.866 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

What is software?Computer programs and associated

documentation

Software products may be developed for a particular customer or may be developed for a general market

Software products may beGeneric - developed to be sold to a range of

different customersCustom - developed for a single customer

according to their specification

Software vs. ProgramsSoftware ProgramsSoftware is collection of

programs & documentation.

Software is used by the customers or users

Software is built by a team of engineers or developers.

Software needs to be tested well.

Set of instructions to do a particular task.

Programs are used by developers

Only one or two developers are needed.

Programs do not need extensive or detailed testing.

Software EngineeringSoftware engineering is the application of

engineering techniques to the process of software development so as to build a software that is cheaper ,better and faster. (COST, QUALITY & SCHEDULE)

It is used to solve such problems where it is impossible to visualize all the problems in the beginning.

Features / Attributes of Software

Features / Attributes of Software• Functionality- The capability to provide functions

which meet stated and implied needs when the software is used

• Reliability- The capability to maintain a specified level of performance

• Usability.-The capability to be understood, learned, and used

• Efficiency- The capability to provide appropriate performance relative to the amount of resources used

Features / Attributes of SoftwareMaintainability- The capability to be

modified for purposes of making corrections, improvements, or adaptation

Portability- The capability to be adapted for different specified environments without applying actions or means other than those provided for this purpose in the product

Characteristics of a software1. Software is developed or engineered, it is not

manufactured.

2. Software doesn't "wear out.“

3. Software is “malleable” ( Modifiable or Flexible )

4. Software is built from scratch or custom built.

5. A software component should be designed and implemented so that it can be reused in many different programs

Components of a SoftwareSoftware is not only the code it consist :-

Code part or the Developed Program.The Installation or Setup partThe Documentation part.

Architectural/ Design Documents Technical Documents. End – User Documents.

Difference between software engineering and system engineering

Software engineering is part of System engineering

System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering

Software Applications1. System software2. Real-time software3. Business software4. Engineering and scientific software5. Embedded software6. Personal computer software7. Web-based software8. Artificial intelligence software

Software engineering is a layered technology.

Software engineering is a layered technology.Any engineering approach (including software

engineering) must rest on an organizational commitment to quality.

Process defines a framework for a set of key process areas (KPAs) that must be established for effective delivery of software engineering technology.

Software engineering methods provide the technical how-to's for building software.

Software engineering tools provide automated or semi-automated support for the process and the methods.

CASE Tools

What is CASE (Computer-Aided Software Engineering)

Software systems which are intended to provide automated support for software process activities. CASE systems are often used for method support

Upper-CASETools to support the early process activities

of requirements and designLower-CASE

Tools to support later activities such as programming, debugging and testing

Process, Project and product A process is a sequence of steps performed

for a given purpose

A software project is one instance of this problem, and the development process is what is used to achieve this purpose.

Product is the final out come of the project.

What is a software process?A set of activities whose goal is the

development or evolution of software. It consists of various phases.

Basic phases in all software processes are:•Requirement Analysis•Software Design •Coding•Testing•Installation & Maintenance

Software Processes

Software Development Process ModelsTo solve actual problems in an industry setting,

a software engineer or a team of engineers must incorporate a development strategy that encompasses the process, methods, and tools layers .This strategy is often referred to as a process model or a software engineering paradigm. A process model for software engineering is chosen based on the nature of the project and application, the methods and tools to be used, and the controls and deliverables that are required.

Types of Process ModelsWaterfall or Classic Life Cycle or Linear

Sequential ModelPrototyping ModelIncremental or Iterative modelSpiral Model

Waterfall ModelProblem

Definition

Requirement Analysis

Design

Coding

Testing

Installation

Maintenance &

Support

AdvantagesAs well as the above, some prefer the waterfall

model for its simple & conceptually straightforward approach

The large and complex task of building the software is broken into smaller tasks

Separating gives a better handle to the engineers and managers in dealing with the complexity of the problem.

When the activities of a phase are completed, there should be some product that is produced by that phase usually in the form of documents

AdvantagesBug found in the early stages is cheaper in

terms of money, effort and time, to fix than the same bug found later on in the process.

Time spent early on making sure that requirements and design are absolutely correct will save you much time and effort later.

A further argument for the waterfall model is that it places emphasis on documentation

LimitationsRequirements have to be finalized before the

design starts. It is mostly difficult for the user to tell all their requirement in the beginning but requirement keep on changing so real project can’t follow the sequential model always.

The working software will be available very late in the project time span. So the costumers need to have patience .Also if a major mistake is not found till that time it can cost a lot of problems.

LimitationsIt encourages the user to ask for even those

features which may not be used later on.It’s a document driven process.

Documents generated by Waterfall modelRequirements document ( SRS )Project planDesign documents (architecture, system,

detailed )Test plan and test reports ( Test Cases)Final codeSoftware manuals (e.g., user manual,

installation manual etc.)

Prototype Model

Prototype ModelA small working model is builtBy using this prototype, the client can get an actual feel

of the system, which can enable the client to better understand the requirements of the desired system.

Development of the prototype obviously undergoes design, coding, and testing, but each of these phases is not done very formally or thoroughly

Instead of freezing the requirements a throwaway prototype is built to help understand the requirements

After the requirements are made clear , this model is discarded.

Prototype ModelIt will reduce the cost of the actual software

development.Changes will be less in actual software as

requirements will get clear.The quality of final software is likely to be far

superior, as the experience while developing the prototype will enable us to create a better design, write better code, and do better testing.

Evolutionary Process ModelsIn these model, product keeps on changing

or evolving. These are of two types-Incremental or IterativeSpiral

The Incremental / Iterative model

The Incremental / Iterative modelThe incremental model combines elements of

the linear sequential model with the iterative philosophy of prototyping.

The software is built in parts called increments.

The first increment is often a core product i.e. basic requirements are addressed.

The user uses it and gives a feedback on basis of which plan for the next increment is prepared.

The Incremental / Iterative modelIt is used when the main focus is on

delivering an operational product with each increment ,when staffing is not available for a complete implementation.

Spiral Model

It is a combination of iterative & prototyping model .

In spiral model software is developed in a series of incremental releases.

In early iterations the release may be a paper model or a prototype .

In later iterations, the release may be more complete versions of the software.

Spiral Model

Spiral Model - Tasks Customer communication—tasks required to establish effective

communication between developer and customer. Planning—tasks required to define resources, timelines, and other

project related information. Risk analysis—tasks required to assess both technical and

management risks. Engineering—tasks required to build one or more representations

of the application. Construction and release—tasks required to construct, test,

install, and provide user support (e.g., documentation and training ). Customer evaluation—tasks required to obtain customer

feedback based on evaluation of the software representations created during the engineering stage and implemented during the installation stage.

Advantages/ Disadvantages of Spiral ModelAdvantages of spiral model

Realistic model-It is a realistic model for development of large scale software system.

Customer & developer under stand the requirement & risks more clearly.

Risk reduction- Prototyping is done at any stage in the product development

Risks-risks are analyzed at every stage It maintains systematic approach of waterfall model and

applies it in an iterative manner. This represents the real world closer.

Advantages/ Disadvantages of Spiral ModelDisadvantages of spiral model

It is not a complete solution for every situation.Expertise is required for risk analysis Difficult to convince customers about the evolutionary

nature. If a risk is not analyzed or found in early cycles, it may

become a major problem later on. It is not as widely used as water fall and prototyping

models.

FOURTH GENERATION TECHNIQUESThe term fourth generation techniques (4GT)

includes a number of software tools that enables the software engineer to build a high quality software with ease.

4GT paradigm includes some or all of the following tools Languages for database query (SQL) Report generation Code generation Spreadsheets Automated generation of web pages in HTML

etc

FOURTH GENERATION TECHNIQUES4GT begins with a requirements gathering stepThe customer may be unsure of what is required or

may be ambiguous and may be unable to specify information in a manner that a 4GT tool can consume.

For small applications, it may be possible to move directly from the requirements gathering step to implementation using a nonprocedural fourth generation language (4GL).

For larger efforts, it is necessary to develop a design strategy for the system, even if a 4GL is to be used

Using of 4GL tool enables automatic code generation.

Merits of 4GTTime required to produce software is greatly

reduced for small and intermediate applications

The amount of design and analysis for small applications is also reduced.

Testing the software is also easier using these tools.Productivity is highly improved for people

who build the software

Demerits of 4GTSome 4GT tools are not very easy to use as

compared to traditional programming languages.

Some time code generated by such tools is not efficient

Maintenance of large software systems made using 4GT is not easy.

Cost can be high.

Project ManagementProcess Model decides the phases and tasks to be done, it

does not specify things like how long each phase should last, or how many resources should be assigned to a phase, or how a phase should be monitored.

To meet the cost, quality, and schedule objectives, resources have to be properly allocated to each activity for the project.

Project management involves the planning, monitoring, and control of the people, process, and events that occur in the life cycle of software development.

Importance: Software development is a complex task and many people are involved in it for a long period of time.

Four P’s of project management1. People2. Product 3. Process 4. Project

People

PeoplePlayersSenior managers who define the business issues that

often have significant influence on the project. Project (technical) managers who must plan, motivate,

organize, and control the practitioners who do software work.

Practitioners who deliver the technical skills that are necessary to engineer a product or application.

Customers who specify the requirements for the software to be engineered

End-users who interact with the software once it is released for production use.

Qualities of Effective Team Leader or Project ManagerMotivationOrganizationIdeas or innovationProblem solvingTeam building

ProductHere we define the scope and objectives of

the system. Before project planning objective and scope should be finalized.

Scope can be define by answering the following questions

How the software will fit into current system? What will be the input and output of the system? What process function will perform to transferred

input and output? Scope should be clear and understandable

Alternative solutions should be considered and the best approach should be selected.

Problem Decomposition The functionality that must be delivered The process that will be used to deliver it.

ProcessThe Linear Sequential ModelThe Prototyping ModelThe Incremental ModelThe Spiral ModelThe Fourth Generation Techniques Model

ProjectIn order to manage a successful software

project, we must understand what can go wrong.1. Software people don’t understand their customer’s needs.2. The product scope is poorly defined.3. Changes are managed poorly.4. The chosen technology changes.5. Business needs change [or are ill-defined].6. Deadlines are unrealistic.7. Users are resistant.8. Sponsorship is lost [or was never properly obtained].9. The project team lacks people with appropriate skills.10. Managers [and practitioners] avoid best practices and lessons learned.

Project1. Start on the right foot :- setting realistic

objects and expectations for everyone who will be involved in the project and building the right team

2. Maintain momentum3. Track the progress4. Make smart decisions5. Conduct a post mortem analysis

top related