Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Software Engineering-Unit-1

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 52

SOFTWARE

ENGINEERING
MINOR DEGREE
The Evolving Role of Software
 software takes on a dual role. One is a product and
other one is vehicle for delivering a product
 Product- delivers the computing potential embodied by computer hardware
- network of computers that are accessible by local hardware.
software is an information transformer—producing, managing, acquiring,
modifying, displaying, or transmitting information
 Vehicle - used to deliver the product,
-software acts as the basis for the control of the computer (operating systems),
-the communication of information (networks)
- the creation and control of other programs (software tools and environments).
-Software delivers the most important product of our time—information
 Software transforms personal data
- Manages business information to enhance competitiveness
- provides the means for acquiring information in
all of its forms
- provides a gateway to worldwide information networks (e.g., Internet)
 The software role has undergone significant change over a time span due to –
-Dramatic improvements in hardware performance
-profound changes in computing architectures
-vast increases in memory and storage capacity
-wide variety of exotic input and output options have all precipitated
more sophisticated and complex computer-based
systems.
 The lone programmer are being asked when modern computer-based systems are built:
1)Why does it take so long to get software finished?
2)Why are development costs so high?
3)Why can't we find all the errors before we give the software to customers?
4)Why do we continue to have difficulty in measuring progress as software is being
developed
 Software
 Instructions or programs that when executed provide desired function and performance
 Data structures that enable the programs to adequately manipulate information
 Documents that describe the operation and use of the program
 Software Characteristics:
 Software is a logical rather than a physical system element.
 Software is developed or engineered, it is not manufactured in the classical sense.
 Manufacturing phase of a product introduces quality problems.
 Software costs are concentrated in engineering, hence cannot be managed as if they are
manufacturing projects.
 Software doesn’t “wear out”. It deteriorates (decline).
 Hardware: Wear out hardware components can be replaced.
 Software: Software maintenance requires changing the design and or code.
 Although the industry is moving toward component-based construction, most software
continues to be custom built. (built or made to a particular customer's order)
 Availability of Software
 Paid software - Pay and use
 Closed Source – Microsoft office, .NET, Android
 Shareware - Trail on use then paid –
Mat lab, Mcfee Antivirus, Adobe Photoshop

 Free software – unpaid software


 Freeware – free but not modified –
Google chrome, Adobe reader
 Open Source (OSS)- Free user involve in development –Libre office
 Need of Software
 In the process of Automation
 Deal with large amount of data
 Programming
 Designing
 Testing
 Work with the hardware components
 Compiling the program
 Train the machines
 Monitoring and controlling without user intervention
 To improve the reusability
 Changing nature of software
 System software -collection of programs written to service other
 operating systems – Linux, windows
 Device Drivers – BIOS ,ROM, USB drivers
 Firm ware - Computer peripherals, Embedded systems
 Utilities - WINRAR, WINZIP, Anti virus software
 Application software -solve a specific business need
 Word processor
 Database
 Multimedia and Graphics
 Web browsers or Applications
 Changing nature of software
 Engineering and Scientific Software - characterized by number “crunching" algorithms
-Astronomy to Volcanology
- Automotive stress analysis to Space shuttle orbital dynamics
- Molecular biology to automated manufacturing
 Embedded Software -resides in read-only memory and is used to control products
- Keypad control for a microwave oven
- Digital functions in an automobile such as fuel control
 Product-line software - provide a specific capability for use by many different customers
-limited and esoteric marketplace (eg.
Inventory control products)
-address mass consumer markets
(eg. Word processing, spreadsheets, computer graphics, multimedia, entertainment,
database management personal and financial applications.)
 Changing nature of software
 Web Applications - Web pages retrieved by a browser
- software that incorporates executable instructions (e.g., CGI, HTML, Perl,
or Java), and data (e.g., hypertext and a variety of visual and audio
formats)
 Artificial Intelligence Software
- Expert systems or knowledge based systems
- Pattern recognition (image and voice)
- Artificial neural networks
- Theorem proving, and Game playing
 Changing nature of software
 Open World Computing
- Based on wireless and Distributed Computing –Linux, Eclipse, Mozilla.
 Net Sourcing
- computing engine as well as a content provider – Lotus notes
 Open Source Software –Libre Office
 Ubiquitous Computing – self driving cars, Apple watch, Smart bulbs, Smart locks
 software legacy
 software must be adapted to meet the needs of new computing environments or
technology.
 software must be enhanced to implement new business requirements.
 software must be extended to make it interoperable with other more modern systems or
databases.
 software must be re-architected to make it viable within a network environment.
Software Myths(Manager’s)
Myth - Company have documented set of standards and procedures to build software
Reality - Are the standards up-to-date?

- Are the standards being followed?


- Are the practitioners aware of the standards?
- Does the followed standards help in improving quality and performance.
Myth - Company have state-of-art software development tools
Reality - Are the tools being used effectively?

- Is the staff trained to use the tools effectively?


Myth - Add more programmers and catch up if we are behind schedule

(Mongolian horde)
 Reality – No, adding new programmers need to be trained which effect on product
Myth - Outsource a software project to a 3rd party
Reality – Manage and control the projects less possible with outsourcing.
Software Myths(customer(client)’s)
Myth - Developing a system with a general statement of objectives.
Details can be filled in later.
 Reality – Majority of software projects fail due to lack of up-front detailed details.

Myth - Requirement Changes can be easily accommodated as software is flexible


Reality – Every change impacts the delivery date.
Software Myths(Practitioner’s)
Myth - After writing the program our work is done.
Reality - Sooner programmer begin coding the longer it takes to complete

Myth - After program running, no way of assessing its quality


Reality - 60-80% of effort expended on a project is after it is delivered to the customer

Myth - Successful product is a working program which is to be delivered.


 Reality – Software development cycle help assess the quality of the system being
implemented
Myth - Documentation creates voluminous and slows us down.
Reality – Documentation helps to accomplish the objective and

guidance for maintenance towards quality.


 Generic view of Software Engineering
 A Layered Technology of Software Engineering
 Software Engineering - The application of a systematic, disciplined, quantifiable approach to
the development, operation and maintenance of software; i.e., the application of engineering
to software.
 Quality:
 Continuous process improvement principles of software
 provides integrity- data can be accessed by only an authorized person
 focuses on maintainability and usability
 Process:
 foundation or base layer of software engineering
 framework that must be established for the effective delivery of software engineering
technology
 software process covers all the activities, actions, and tasks required to be carried out
for software development
 A Layered Technology of Software Engineering
 Method:
 During the process of software development the answers to all “how-to-do”
questions are given by method.
 It has the information of all the tasks which includes communication,
requirement analysis, design modeling, program construction, testing, and
support.
 Tools:
 Software engineering tools provide a self-operating system for processes and
methods.
 Tools are integrated which means information created by one tool can be used by
another.
 Process framework
 Process Framework
 Process
 Communication: Communication is necessary to know the actual demand of the client.
 Planning: Drawing a map for reduced the complication of development.
 Modeling: Model is created according to the client for better understanding.
 Construction: Includes the coding and testing of the problem.
 Deployment:- Delivery of software to the client for evaluation and feedback.
 Umbrella Activities
 Software project tracking and control: allows the software team to asses the progress
against the project plan and take necessary action to maintain schedule.
 Risk Management: assesses risks that may effect the outcome of the project or the
quality of the product.
 Software quality assurance: defines and conducts the activities required to ensure
software quality.
 Formal technical reviews: is an effort to uncover and remove errors before they are
propagated to the next action or activity.
 Measurement: defines and collects process, project and products measures that assist
the team in delivering software that meets customer’s needs.
 Software configuration management: manages the effects of change throughout the
software process.
 Reusability management: defines and establishes to achieve reusable components.
 Work product preparation production: encompasses the activities required to create
work products such as models, documents, logs, forms and lists.
 CMMI (Capability Maturity Model Integration):
 CMM is a reference model of matured practices in a specific discipline and difficult to integrate
these disciplines as per the requirements.
 It is a successor of CMM and is a more evolved model that incorporates best components of
individual disciplines of CMM like Software CMM, Systems Engineering CMM, People CMM,
etc.
 Objectives of CMMI:
 Fulfilling customer needs and expectations.
 Value creation for investors/stockholders.
 Market growth is increased.
 Improved quality of products and services.
 Enhanced reputation in Industry.
 There are two representations for CMMI –Staged and Continuous
 CMMI
 Staged Representation :
 Uses a pre-defined set of process areas to define improvement path.
 Provides a sequence of improvements, where each part in the sequence serves as a
foundation for the next.
 An improved path is defined by maturity level.
 Maturity level describes the maturity of processes in organization.
 Staged CMMI representation allows comparison between different organizations for
multiple maturity levels
 Five Maturity Models of Staged Representation
 Maturity level 1 : Initial
 Maturity level 2 : Managed
 Maturity level 3 : Defined
 Maturity level 4 : Quantitatively managed
 CMMI:
 Continuous Representation :
 Allows selection of specific process areas.
 Uses capability levels that measures improvement of an individual process area.
 Continuous CMMI representation allows comparison between different
organizations on a process-area-by-process-area basis.
 Allows organizations to select processes which require more improvement.
 Order of improvement of various processes can be selected which allows
the organizations to meet their objectives and eliminate risks.
 Six Maturity Models of Continuous Representation
 Capability level 0 : Incomplete
 Capability level 1 : Performed
 Capability level 2 : Managed
 Capability level 3 : Defined
 Capability level 4 : Quantitatively Managed
 Process pattern -Software engineering work, identifies the process related encountered problem and in
which environment it is found, then it will suggest proven solutions to problem, they all are described
by process pattern.
 Used to describe a problem and solution associated with framework activity in some situations
 Process Pattern Template:
 Pattern Name – Meaningful name must be given to a pattern within context of software process
(e.g. Technical Reviews).
 Forces – The issues that make problem visible and may affect its solution also environment in
which pattern is encountered.
 Process pattern Types
 Stage pattern – Problems associated with a framework activity for process. Establishing
Communication might be an example of a staged pattern.
 Task-pattern – Problems associated with a software engineering action or work task and relevant to
successful software engineering practice (e.g., Requirements Gathering is a task pattern) are defined
by task-pattern.
 Phase pattern – Even when the overall flow of activities is iterative in nature, it defines sequence of
framework activities that occurs within process. Spiral Model or Prototyping might be an example
Pattern Example:
Pattern Name: Prototyping Model Design
Intent: Requirements are not clear. So aim is to make a model iteratively to solidify(Harden) the exact requirements.
Type: Phase Pattern
Initial Context: Before going to the prototyping these basic conditions should be made
1. Stakeholder has some idea about their requirements i.e. what they exactly want
2. Communication medium should be established between stakeholder and software development team to ensure
proper understanding about the requirements and future product
3. Initial understanding about other factors of project like scope of project, duration of project, budget of project etc.
Problem: Identifying and solidifying the hazy(indefinite) non-existent requirements.
Solution: A description of the prototyping should be presented.
Resulting Context: A prototype model which can give a clear idea about the actual product and that needs to be
agreed by stakeholder.
Related Patterns: Requirement extraction, Iterative design, customer communication, Iterative development,
Customer assessment etc.
Known Uses & Examples: When stakeholder requirements are unclear and uncertain, prototyping is recommended.
 Process Assessment - process itself should be assessed to ensure that it meets a set of
basic process criteria that are essential for a successful software engineering
 Different Approaches to software process assessment
 Standard CMMI Assessment Method for Process Improvement (SCAMPI): Basis for
Assessment
It provides a five-step process assessment model i.e.
1. Initiating 2. Diagnosing 3. Establishing 4. Acting 5. Learning.
 CMM-Based Appraisal for Internal Process Improvement (CBA IPI) - provides a diagnostic
technique for assessing the relative maturity of a software organization. It also uses SEI CMMI as the
basis for assessment
 SPICE (ISO/IEC 15504)-Software Process Improvement and Capability Determination
 Developed jointly by International Organization for Standardization (ISO) and the International
Electro technical Commission (IEC).
 ISO 9001:2000 for software -ISO 9001:2000 has adopted a “plan-do-check-act” cycle.
Plan establishes the process objectives, activities and tasks necessary to achieve high quality software.
Do implements the software process.
Check monitors and measures the process to ensure all requirements established for quality management
Act initiates software process improvement activities that continually work to improve the process
 Personal and Team Process Models -Both require hard work, training and coordination, but both are
achievable
 Personal Software Process (PSP):
1. Personal software process (PSP) emphasizes personal measurement of both the work product that is produced
and the resultant quality of the work product.
2. PSP makes the practitioner responsible for project planning and controlling the quality of all software work
products that are developed.
3. PSP process model defines five framework activities:
Planning ,High-Level Design ,High-Level design review, Development, Post-mortem
Planning: This activity isolates requirements.
High-Level Design: External Specifications for each component are developed and a component design is
created.
High-Level Design review: Formal verification methods are applied to uncover errors in the design.
Development: The component level design is refined and reviewed. Code is generated, reviewed, complied and
tested.
Post-mortem: using measures and metrics the effectiveness of the process is determined.
PSP has not been widely adopted throughout the industry because PSP is intellectually challenging and demands
a level of commitment by practitioners and manager that is not always possible to obtain.
 Team Software Process (TSP):
The goal of TSP is to build “a self-directed” project team the organizes itself to produce high-quality software.
The following are the objectives for TSP:
Build self-directed teams that plan and track their work,
establish goals and own their processes and plans.
Show managers how to coach and motivate their teams and how to help them.
Accelerate software process improvement
Provide improvement guidance to organizations.
Facilitate University teaching.
TSP defines the following framework activities:
Launch, High-Level Design, Implementation, Integration and Test, Post-mortem.
These activities enable the tem to plan, design and construct software in a disciplined manner. The post-mortem sets
the stage for process improvements.
TSP makes use of a wide variety of scripts, forms and standards that serve to guide team members in their work.
Scripts define specific process activities i.e., project launch, design, implementation, integration & testing and post-
mortem and other more detailed work functions like development planning, requirements development, software
configuration management and unit test.
 Product and Process
 Product -is the final outcome of the software development process. A product is built on the
customer's requirements/requests.
 Process- is a set of steps that are to be followed to create a product. A process is a template
that can be used to create multiple products in a similar fashion.
Sr. No. Key Product Process

The product is the final result of a The process is a sequence or set of steps
1 Concept
development cycle. that should be followed to create a product.
The process focuses on each step to be
Product development focus is on final
2 Focus followed during software product
outcome.
development.

A product life cycle tends to be in the short


Life A process life cycle is generally long term.
3 term.

The main goal of product development is to


The main goal of a process is to make a
4 Goal finish the work and get the product
good quality products.
delivered successfully.
 Prescriptive Process Models
 Process models are called to be “prescriptive” because they prescribe
1. a set of process elements – framework activities, software engineering actions, tasks,
work products, quality assurance and change control mechanisms for each project.
2. a workflow – that is the manner in which the process elements are interrelated to one
another.

 Software Process Models:


 Sequential/Linear Process Models
 Incremental Process Models
 Evolutionary Process Models
 Sequential/Linear Process Model
 Sequential/Linear Process Model
 Requirement Gathering and analysis − All possible requirements of the system to be
developed are captured and documented in a requirement specification document (SRS).
 System Design − The requirement specifications from first phase are studied and the system
design is prepared. Helps in specifying hardware and system requirements and helps in
defining the overall system architecture.
 Implementation − code development in small units and prepare for unit testing.
 Integration and Testing − All the units developed in the implementation phase are integrated
into a system after testing of each unit. Post integration the entire system is tested for any
faults and failures.
 Deployment of system − Once the functional (White box)and non-functional(Black box)
testing is done; the product is deployed in the customer environment or released into the
market.
 Maintenance − There are some issues which come up in the client environment. To fix those
issues, patches are released and better versions are released. Maintenance is done to deliver
these changes in the customer environment.
 Sequential/Linear Process Model
 Advantages
 Simple and easy to understand and use
 Easy to manage due to the rigidity of the model. Each phase has specific deliverables
and a review process.
 Phases are processed and completed one at a time.
 Works well for smaller projects where requirements are very well understood.
 Clearly defined stages.
 Well understood milestones.
 Easy to arrange tasks.
 Process and results are well documented
 Sequential/Linear Process Model
 Disadvantages
 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.
 Poor model for long and ongoing projects.
 Not suitable for the projects where requirements are at a moderate to high risk of
changing. So, risk and uncertainty is high with this process model.
 It is difficult to measure progress within stages.
 Cannot accommodate changing requirements.
 Adjusting scope during the life cycle can end a project.
 Incremental Process Model
 Incremental Process Model -requirements divided into multiple standalone modules of
the software development cycle
 Phases in Model:
 Requirement analysis: product analysis expertise identifies the requirements. System
functional requirements are understood by the requirement analysis team.
 Design & Development: the design of the system functionality and the development
method are finished with success.
 Testing: testing phase checks the performance of each existing function as well as
additional functionality.
 Implementation: It involves the final coding that design in the designing and
development phase and tests the functionality in the testing phase. After completion of
this phase, the number of the product working is enhanced and upgraded up to the
final system product
 Incremental Process Model
 Use of Incremental Model
 When the requirements are superior.
 A project has a lengthy development schedule.
 When Software team are not very well skilled or trained.
 When the customer demands a quick release of the product.
 develop prioritized requirements first.
 Advantages:
 Errors are easy to be recognized.
 Easier to test and debug
 More flexible.
 Simple to manage risk because it handled during its iteration.
 The Client gets important functionality early.
 Disadvantages:
 Need for good planning
 Total Cost is high.
 Well defined module interfaces are needed.
 Rapid Application Development (RAD) Model
 Emphasizes extremely short development cycle-60 to 90 days
 Incremental Software Development Process
 Uses Component Based Software Development
 High-speed adaptation of Linear Sequential Model
 Used primarily for Information Systems Applications
 Students Academic Information
 Library Information
 Suitable for applications that can be modularized
 Rapid Application Development (RAD) Model
 Business Modelling:
 Model the information flow among the business functions
 Add a new Title to the Database
 Issue a book to a member of the library,
 Generate a report of all overdue books. Send notifications to members who borrowed those books
 Data Modelling:
 Define a set of tables, data structures, and data objects that support the data and business functions
 Identify the attributes of each data object
 Establish relationships between the data objects
 e.g., Books table, Authors Table, Member Information Table
 Process Modelling:
 Create process descriptions for operating on the data to fulfil business functions
 e.g., add, modify, delete, retrieve data from the tables
 Rapid Application Development (RAD) Model
 Application Generation:
 Employs automated tools to generate the code
 The tools generate template code where the programmer fills in the details
 e.g., user interfaces, objects that operate on the data
 Testing:
 Overall testing time is smaller as fully tested components are used.
 Test new components, user interfaces and business functions.
 Drawbacks:
 Requires large manpower for larger projects to create sufficient number of RAD teams
 Requires high commitment to develop software in a shorter time span
 Not suitable when application relies on new technology and requires high degree of interoperability
with existing software.
 Evolutionary Process Models
 Prototyping model
 The spiral model
 Concurrent development model
 Prototyping model
 Prototype is defined as first or preliminary form using which other forms are copied or derived.
 Prototype model is a set of general objectives for software.
 It does not identify the requirements like detailed input, output.
 It is software working model of limited functionality.
 In this model, working programs are quickly produced.
 Evolutionary Process Models - Prototyping model
 The different phases of Prototyping model are:

1. Communication- developer and customer meet and discuss the overall objectives of the software.

2. Quick design - Quick design is implemented when requirements are known.


-It includes only the important aspects like input and output format of the software.
-It focuses on those aspects which are visible to the user rather than the detailed plan.
-It helps to construct a prototype.
3. Modelling quick design -clear idea about the development of software because the software is now built.
-It allows the developer to better understand the exact requirements.
4. Construction of prototype -prototype is evaluated by the customer itself.

5. Deployment, delivery, feedback


- If the user is not satisfied with current prototype then it refines according to the requirements of the user.
- The process of refining the prototype is repeated until all the requirements of users are met.
- When the users are satisfied with the developed prototype then the system is developed on the basis of final
prototype.
 Evolutionary Process Models - Prototyping model
 Advantages of Prototyping Model
 Prototype model need not know the detailed input, output, processes, adaptability of
operating system and full machine interaction.
 In the development process of this model users are actively involved.
 The development process is the best platform to understand the system by the user.
 Errors are detected much earlier.
 Gives quick user feedback for better solutions.
 It identifies the missing functionality easily. It also identifies the confusing or difficult
functions.
 Disadvantages of Prototyping Model:
 The client involvement is more and it is not always considered by the developer.
 It is a slow process because it takes more time for development.
 Many changes can disturb the rhythm of the development team.
 It is a thrown away prototype when the users are confused with it.
 Evolutionary Process Models - Spiral model
 It is a combination of prototype and sequential model(waterfall model).
 In one iteration all activities are done, for large projects the output is small.
 Spiral model is a risk driven process model
 A series of evolutionary releases are delivered
 one is cyclic approach for incrementally growing a system’s degree of definition and implementation
while decreasing its degree of risk. The other is a set of anchor point milestones.
 Evolutionary Process Models - Spiral model
 Advantages of Spiral Model
 It reduces high amount of risk.
 It is good for large and critical projects.
 It gives strong approval and documentation control.
 In spiral model, the software is produced early in the life cycle process.
 Disadvantages of Spiral Model
 It can be costly to develop a software model.
 It is not used for small projects
 Evolutionary Process Models – Concurrent model
 The communication activity has completed in the first iteration and exits in the awaiting
changes state.
 The modelling activity completed its initial communication and then go to the
underdevelopment state.
 If the customer specifies the change in the requirement, then the modelling activity moves
from the under development state into the awaiting change state.
 The concurrent process model activities moving from one state to another state.
 Concurrent modelling is applicable to all types of software development and provides an
accurate picture of the current state of a project.
 Each activity, action or task on the network exists simultaneously with other activities,
actions or tasks
 Evolutionary Process Models – Concurrent model
 Advantages
 This model is applicable to all types of software development processes.
 It is easy for understanding and use.
 It gives immediate feedback from testing.
 It provides an accurate picture of the current state of a project.
 Disadvantages
 It needs better communication between the team members. This may not be achieved all the time.
 It requires to remember the status of the different activities.
 The Unified Process
 An attempt to draw on the best features and characteristics of conventional software process models
 Recognizes the importance of customer communication and streamlined methods for describing the customer’s view of
a system through use-cases
 A use-case is a text narrative or template that describes a system function or feature from the user’s (or actor’s) point of
view
 Result of the need to meet a growing demand for bigger and more complex systems
Phase Name Description

Inception Encompasses both customer communication and planning activities. development of use-cases,
Phase a rough architecture is proposed and a plan for iterative, incremental nature of the project is developed.

Elaboration preliminary use-cases developed in previous phase are refined and expanded. In addition the architecture and plans are
refined to ensure that the scope, risks, and delivery times remain reasonable.
Phase
Construction As these components are being developed, unit tests are designed and executed for each.
Phase The different components are also integrated and tested.

Transition software is given to users for testing with the intent of uncovering defects and deficiencies. software team assesses the
feedback. user manuals, trouble-shooting guides, and installation procedures are produced.
Phase
Production During this phase, the on-going use of the software is monitored, support is provided and defect reports and requests for
changes are submitted and evaluated.
Phase
 The Unified Process

You might also like