Upload
swatisinghal
View
2.858
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Citation preview
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