TE6504 SOFTWARE MANGEMENT...This PPT will cover the bellow topics 1. what is software 2. What is...

Post on 23-Aug-2020

2 views 0 download

Transcript of TE6504 SOFTWARE MANGEMENT...This PPT will cover the bellow topics 1. what is software 2. What is...

SOFTWARE ENGINNERING

SEBGHATULLAH “ASLAMZAI”

(Master of Computer Science UKM)

Sebghat_aslamzai@yahoo.com

This PPT will cover the bellow topics

1. what is software 2. What is software engineering 3. What is the difference between software

engineering and computer science 4. What is software process 5. What is software process model 6. What are the software engineering method 7. What are the attribute of good software 8. What are the challenging facing, software

engineering

What is software

Many people equate the term software with computer programs, I prefer a broader definition where software is not just the computer program but also all the associated documentation and configuration data that is need to operate correctly.

Software - A set of instructions, stored digitally within the computer's memory, which tells the computer system what to do.

Software engineering

• Software engineering is an engineering discipline that is concerned with all the aspects of software production from the early stage of system specification to maintaining the system after it has gone into use. In the definition there are two key points:

• Engineering discipline:

Engineers make things work. They apply theories methods and tools where these are appropriate, but they use them selectively and always try to discover solution to the problems even when there are no applicable theories and methods.

• All aspects of software production:

Software engineering is not just concerned with the technical processes of software development but also with activates such as software project management and with the development of tools, methods and theories to support software production.

• In general, software engineering adopt a systematic and organized approach to their work, as this is often the most effective way to produce high- quality software. How ever engineering is all about selecting the most appropriate method for software development.

The difference between software engineering and

computer science

difference between software engineering and computer science

• Computer science is concerned with the theories and methods that underlie computers and software system, whereas software engineering is concerned with the practical problems of producing software. Some knowledge of computer science is essential for software engineering in the same way that some knowledge of physic's is essential for electrical engineers.

System engineering

• System engineering is concerned with all aspects of the development and evolution of complex systems where software plays a major role. System engineering is concerned with hardware development, policy and process design and system deployment as well as software engineering.

System engineers are involved in specifying the system, defining its overall architecture and then integrating the different parts to create the finished system.

System engineering is an older disciplinal than software engineering.

Software Process

• A software process is a set of related activities that leads to the production of a software product. These activities may involve the development of software from scratch in a standard programming language like Java or C.

What is Software Process?

However, business applications are not necessarily developed in this way. New business software is now often developed by extending and modifying existing systems or by configuring and integrating off-the-shelf software or system components.

Most software is developed by:

– Extending and modifying existing systems.

– Configuration and integrating “off-the-shelf” software or components.

Software Process

The objective of any software processes is high quality (i.e.

on time, less cost, error-free product, less rework etc.)

There are many different software processes but all must include four activities that are fundamental to software engineering:

Software Process

1- Specification

2- Design

3- Validation

4- Evolution

What is Software Process? – Specification

• Define the functionality & constraints of the software.

– Design & Implementation (Development) • Propose the structure/architecture and develop the software

based on the specification.

– Validation • Developed software is checked to ensure it does what customer

wants.

– Evolution • Running software must evolve eventually to meet the changing

customer needs.

What is Software Process? • Supporting activities

– Software project management • Assess progress against the project plan; take actions to maintain schedule.

– Formal technical reviews • Assess intermediate products to uncover and remove errors.

– Software quality assurance • Define and conduct activities to ensure software quality.

– Software configuration management • Manage the effect of changes throughout the process.

– Work product preparation and production • Create work products such as models, documents etc.

– Reusability management • Defines criteria and strategy to reuse components.

– Measurement • Define and collect process, product and project measures for improvement.

– Risk management • Assess risks that may affect the outcomes of the project or quality of the

product.

What is Software Process?

• Plan-driven processes are processes where all of the process activities are planned in advance and progress is measured against this plan.

• In agile processes, planning is incremental and it is easier to change the process to reflect changing customer requirements.

• In practice, most practical processes include elements of both plan-driven and agile approaches.

• There are no right or wrong software processes.

What is a Software Process Model?

• A software process model is an abstract representation of a process or a software process model is a simplified representation of a software process

• It presents a description of a process from some particular perspectives (i.e. engineering-oriented; user-oriented; reusability etc.).

• There are 3 generic process models: – Waterfall (the oldest)

– Incremental

– Reuse-oriented

What is a Software Process Model?

• The waterfall model – Plan-driven model. Separate and distinct phases of specification and

development.

• Incremental development – Specification, development and validation are interleaved. May be

plan-driven or agile.

• Reuse-oriented software engineering – The system is assembled from existing components. May be plan-

driven or agile.

• In practice, most large systems are developed using a process that incorporates elements from all of these models.

What is a Software Process Model?

• There are many variants of these generic models.

– E.g. Formal development (waterfall-like) produces a formal specification that is refined through several stages (incremental), which later can be executed directly as code.

– In practice, they are combined and used together especially for large projects.

Waterfall Model

The Waterfall Model was first Process Model to be introduced. It is also referred to as a linear-sequential. It is very simple to understand and use. In a waterfall model, each phase must be completed fully before the next phase can begin.

Waterfall Model

This type of model is basically used for the project which is small and there are no undefined requirements. At the end of each phase, a review takes place to determine if the project is on the right path and whether or not to continue or discard the project. In this model the testing starts only after the development is complete. In waterfall model phases do not overlap

The Waterfall Model

Advantages of waterfall model

This model is simple and easy to understand and use. It is easy to manage due to the rigidity of the model – each phase has specific deliverables and a review process.

In this model phases are processed and completed one at a time. Phases do not overlap. Waterfall model works well for smaller projects where requirements are very well understood.

Disadvantages of waterfall model

Once an application is in the testing stage, it is very difficult to go back and change something that was not well-thought out in the concept stage. No working software is produced until late during the life cycle. High amounts of risk and uncertainty. Not a good model for complex and object-oriented projects. Not suitable for the projects where requirements are at a moderate to high risk of changing.

When to use the waterfall model

This model is used only when the requirements are very well known, clear and fixed.

Product definition is stable.

Technology is understood.

There are no ambiguous requirements

Very less customer enter action is involved during the development of the product. Once the product is ready then only it can be demoed to the end users. Once the product is developed and if any failure occurs then the cost of fixing such issues are very high, because we need to update everywhere from document till the logic.

Home work

• Indentify a software development model at lest in 2 pages, the first page will be cover page which shows the title of the home work and it is author.

If any question please …….