0% found this document useful (0 votes)
64 views10 pages

Understanding Software Engineering Basics

Software engineering

Uploaded by

cidojob699
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
64 views10 pages

Understanding Software Engineering Basics

Software engineering

Uploaded by

cidojob699
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

UNIT I

1.1 INTRODUCTION

Software is the engine that drives the business decision making. It serves as the basis for scientific investigation and
engineering problem solving. Software is embedded in all kinds of systems – transportation, medical, telecommunications,
military, industrial processes, entertainment, office products, and elementary education to genetic engineering.

Computer Software is the product that software professionals build and then support over the long term. It consists of
programs that execute within a computer of any size and architecture. Software engineering consists of process, collection of
methods and a list of tools that allow professionals to build high quality computer software. Software engineering is important
because it enables to build complex systems in a timely manner and with high quality by applying the various processes.

There are few questions of concern about the software and the manner in which it is developed. To address these
concerns we adopt Software Engineering Practices.
o Why does it take so long to get software finished?
o Why are development costs so high?
o Why can‟t we find all the errors before we give the software to customers?
o Why do we continue to have difficulty in measuring progress as software being developed?

1.1.1 Software - Definition


Software is:
(1) Instructions (computer programs) that when executed provide desired function and performance
(2) Data structures that enable the programs to adequately manipulate information
(3) Documents that describe the operation and use of the programs

1.1.2 Software Process


A Software Process is the set of activities and associated results that produce a software product. There are four
fundamental process activities that are common to all software products. They are:

1. Software specification where customers and engineers define the software to be produced and the constraints on its
operation.
2. Software development where the software is designed and programmed.
3. Software validation where the software is checked to ensure that it is what the customer requires.
4. Software evolution where the software is modified to adapt it to changing customer and market requirements.

Different types of systems need different development processes. Use of an inappropriate software process may reduce
the quality or the usefulness of the software product to be developed and/or increase the development costs.

1.1.3 Software Engineering Goals


Deliver software:
o On time
o Within budget
o With required quality
o Satisfying true needs of stakeholders

Stakeholders - customers, developers, managers and all those who are interested in a software development and
implementation.

1.1.4 Software Characteristics


Characteristics of software that make it different from other things that human beings build are:

1. Software is developed or engineered; it is not manufactured in the classical sense.


Although some similarities exist between software development and hardware manufacturing, the two activities are
fundamentally different. Both activities require the construction of a “product,” but the approaches are different.

2. Software doesn’t “wear out.”


Hardware begins to wear out over time due to environmental factors. But, software doesn‟t wear out, it does deteriorate.
The failure rate curve for software should take the form of “idealized curve”. Undiscovered defects will cause high
failure rates early in the life of a program. However, these are corrected and the curve flattens.
Fig. 1.1 Idealized and Actual Failure Curves for Software

3. Although the industry is moving towards component-based construction, most software continues to be custom built.
The reusable components have been created so that the engineer can concentrate on the truly innovative elements of a
design, that is, the parts of the design that represent something new. A software component should be designed and
implemented so that it can be reused in many different programs.

1.1.5 Software Applications


Information content and determinacy are important factors that determine the nature of the software application.

Potential Software Applications:


o System Software
 Collection of programs written to service other programs
 Characterized by heavy interaction with computer hardware; heavy usage by multiple users; concurrent
operations
 Example – Compilers, Editors, Operating System Components

o Real-Time Software
 Software that deals with real time events
 These software requires real-time responses (ranging from 1 millisecond to 1 second)

o Business Software
 Management Information System software that accesses one or more large databases that contains
business information.
 Example- Payroll, Inventory, Accounts Receivable and Payable

o Engineering and Scientific Software


 Approach is away from conventional numeric algorithm.
 Example – Astronomy, volcanology, automotive stress analysis, space shuttle, orbital dynamics,
molecular biology, automated manufacturing.

o Embedded Software
 Intelligent software that resides in read-only memory and controls products and systems.
 Example – Fuel control digital functions in automobiles, softwares in electronic items – intelligent AC,
washing machine, TV etc.

o Personal Computer Software


 Most of the available software in the market
 Example – Word processing, Spreadsheets, computer graphics, multimedia, business financial
applications, etc.

o Web-Based Software
 Web pages hosted on a browser, that has data (hypertext, visual and audio) and executable instructions.
 Example – Any software available on the NET.
o Artificial Intelligence Software
 Software that makes use of non numerical algorithms to solve complex problems.
 These cannot be achieved through computations or straight forward analysis.
 Example – Expert Systems, Pattern recognition (image, voice), Game Playing etc.
Software Engineering is a Layered Technology.
 Quality: (Bedrock for Software Engineering)
o Organizations are committed to quality
o This leads to development of more effective approaches to software engineering
 Process: (Basis for Software Project Management)
o Defines a framework (set of tasks) for effective delivery of Software Engineering Technology.
o Technical methods applied, Work Products produced, Milestones established, Quality ensured, Change managed
 Methods: (Provides technical how-to‟s for building software – Set of Basic Principles)
o Tasks include:
 Communication
 Requirements Analysis
 Design Modeling
 Program Construction
 Testing
 Support
 Tools:
o Provide automated or semi automated support for process and methods.
o When tools integrated – information created by one tool can be used by another – Called as computer-aided
software engineering

Fig. Software Engineering Layers

Capability Maturity Model Integration - CMMI


o SEI – Software Engineering Institute measures the process maturity of an organization. This is measured in
terms of specific goals and specific processes.

 Level 0: Incomplete
o All goals not achieved
o Process is not performed
 Level 1: Performed
o Tasks to produce the required work products are being done
 Level 2: Managed
o Get tasks done by resources
o Stakeholders are actively involved
o Work tasks and products are monitored, reviewed and evaluated for conformance to process
 Level 3: Defined
o Management and Engineering Processes are Documented, Standardized and Integrated into Organization wide
Software Process
 Level 4: Quantitatively Managed
o Software Process and Products are Quantitatively understood and controlled – using measures
 Level 5: Optimizing
o Continuous process improvement
o Quantitative feedback from process
o Testing innovative ideas

 CMMI - Measured in terms of specific goals and specific processes

 Specific Goals: Establishes required characteristics for the process to be effective.


 Specific Process: Refine a goal into a set of process-related activities.

Process Framework
 A process is a collection of activities, actions, and tasks that are performed when some work product is to be created.
 Work product – Eg., Architectural design of a software, Code of a module, Test cases for a module.
 Process is not a rigid approach – it is an adaptable approach – software team can choose the appropriate process model
for their software project.
 Intention of choosing a process is to deliver quality software on time in a cost effective manner and that satisfies the
needs of the sponsorers of the project.

Process Framework activities that are applicable for all software projects:
1. Communication
 Communicate and collaborate with the stakeholders
 Before technical work commences
 To understand stakeholders objectives for the project
 To understand requirements and define software features and functions
2. Planning
 Software Project – Complicated journey – map that guides the team for this journey
 Software Project Plan – Defines:
 Tasks to be performed
 Risks forecasted
 Resources required
 Work products to be produced
 Work schedule
3. Modeling
 Sketch of the software project to understand the big picture
 Architectural design of the software project
 Refine it further to understand the project better
4. Construction
 Code generation – manual or automatic
 Testing – to uncover errors in code
5. Deployment
 Software delivered to the client
 Customer evaluates the delivered product
 Provides feedback

 These framework activities are common for all software projects regardless of size and complexity.

Framework activities complimented by a set of umbrella activities – They are:


1. Software Project Tracking and Control
 Software team assesses progress against project plan
 Takes necessary action to maintain the schedule
2. Risk Management
 Assess risks that may affect the project outcome / project quality
3. Software Quality Assurance
 Defines and conducts activities to ensure quality
4. Technical Reviews
 Assesses work products
 To uncover and remove errors
5. Measurement
 Defines and collects process, project and product measures
 Assists in ensuring quality
6. Software Configuration Management
 Manages the effects of change to software
7. Reusability Management
 Defines criteria for work product reuse
8. Work product preparation and production
 Tasks to prepare work products

 Process Flow – Describes how framework activities, actions and tasks that occur within each framework activity are
organized with respect to sequence and time.

 Linear Process Flow – executes each framework activity in sequence.


 Iterative Process Flow – repeats one or more activities
 Evolutionary Process Flow – Executes the activities in a circular manner.
 Parallel Process Flow – Executes one or more activities in parallel with other activities – Eg. Design and Construction in
parallel.

A Software Process Framework


Process Patterns:
 Describes a process-related problem encountered during a software engineering
 Identifies the environment in which the problem has occurred
 Suggests one or more proven solutions to the problem
 Process Pattern provides a template
 Combining patterns, a software team can solve problems and construct a process that meets the project needs
 Patterns can be defined at any level of abstraction
 Process Patterns can be reused

 Process Pattern Template consists of:


o Pattern Name:
 Eg. Technical Review
o Forces:
 Issues that affects the solution
o Type:
 Stage Pattern
 Task Pattern
 Phase Pattern
o Initial Context
o Problem
o Solution
o Resulting Context
o Related Patterns
o Known Uses and Examples
Process Assessment:
 Process needs to be assessed to ensure that the process meets a set of basic process criteria

Fig. Software Process Assessment

PSP – Personal Software Process


 PSP recommends five framework activities:
o Planning
o High Level Design
o High Level Design Review
o Development
o Post-mortem
 PSP stresses on the need of each software engineer to identify errors early and to detect the type of errors.

TSP – Team Software Process


 TSP recommends five framework activities
o Project Launch
o Design
o Implementation
o Integration & System Testing
o Post-mortem
 TSP aims to build self-directed teams, who can plan & track their work, establish their own goals, process and plan.
Personal and Team Process Models
 The best software process is one that is close to the people who will be doing the work
 Software process model – developed at the organizational / corporate level
 It becomes an effective process model only if it can be changed to the needs of the software team.

 Personal Software Process (PSP):


o Every developer uses some process to build computer software
o Process may be ad-hoc, inefficient and not successful
o To change ineffective personal process – individual should move through five phases
o Each phase requires training and careful instrumentation
o PSP – Emphasizes on personal measurement of both the work product and its quality

o PSP Model defines five framework activities:


 1) Planning:
 Isolates requirements
 Develops size estimates
 Develops resource estimates
 Estimates defects
 Metrics recorded on worksheets
 Development tasks identified
 Project schedule create
 2) High-Level Design:
 Design for each component constructed
 3) High-Level Design Review:
 To uncover errors in the design
 Metrics maintained for all tasks and work products
 4) Development:
 Component-level design is refined and reviewed
 Code generated
 Code reviewed
 Code Compiled
 Code Tested
 Metrics maintained for all tasks and work products
 5) Postmortem:
 Using the collected metrics and measures – process effectiveness determined
 Process modified to improve effectiveness

o PSP – Stresses on identifying errors early, to understand types of errors likely to make
o This is done by rigorous assessment of work products
o PSP – Disciplined, metrics-based approach to software engineering – leads to cultural shock for practitioners
o PSP introduced – leads to improvement in productivity and software quality
o PSP not widely adopted in industry – due to human nature and organizational culture
o PSP – Intellectually challenging – demands a level of commitment – training costly and lengthy

 Team Software Process (PSP):


o Goal of TSP – Self-directed project team – organizes itself to produce high quality software

o Objectives for TSP:

 Build self-directed team that:


 Plan and track their work
 Establish goals
 Own processes and plans
 IPT – Integrated Product Team – 3 to 20 engineers

 Educate managers to motivate their teams and sustain peak performance


 Accelerate software process improvement by following CMM Level 5 criteria
 Provide improvement guidance to high-matured organizations
 Facilitate university teaching of industry-grade team skills

o Self-directed teams have consistent understanding of goals and objectives


o Defines roles and responsibilities of each team member
o Tracks quantitative project data
o Continuously assess risks and reacts to it
o Tracks, manages and reports project status
o TSP Model defines five framework activities:
 1) Project Launch
 2) High-Level Design
 3) Implementation
 4) Integration and Test
 5) Postmortem
o TSP makes use of wide variety of scripts, forms and standards that serve to guide team members in their work
o Self-directed team members: - set project objectives, adapt process to meet their needs, control the project
schedule, measure and analyze metrics collected
o TSP provides quantifiable benefits in productivity and quality
o Team‟s commitment and training is required

Process Technology
 Software team adapts a particular process model
 Process Technology Tools – developed to analyze a process, organize work tasks, control and monitor progress, manage
technical quality
 Builds automated model of process framework and umbrella activities
 Model is represented as network
 Network analyzed to determine workflow
 Examines alternative process structures
 Leads to reduced development time and cost
 Allocates, monitors and controls all tasks
 Develops a checklist of work tasks and work products
 Develops quality assurance activities to be conducted
 Coordinates the use of other software engineering tools

Product and Process


 Process is weak – end product will suffer
 But over reliance on process is dangerous
 Process issues leads to product issues

Product Process
Structured Programming Language Structured Analysis Methods
Data Encapsulation Capability Maturity Model
Object Oriented Methods Agile s/w development

 Software community‟s focus constantly shifts between Product and Process


 Product and Process forms a duality
 S/w artifacts cannot be understood fully if only process or product are considered
 Process is a human activity
 Reuse of product leads to human satisfaction  input for another s/w development activity
 People derive satisfaction in following the process as they get from the end product
 Artist enjoys the brush strokes as much as he enjoys the resultant art
 Writer enjoys his writing process as he enjoys the resultant article
 Duality of process and product keeps people creatively engaged as s/w engineering tasks evolve
Agile Process Models:
 What is Agility?
o It is the ability to collaborate.
o Agility is dynamic, aggressive, change and growth oriented.
o Effective response to change.
o Rapid delivery of software.
o Customer is part of the development team.

 What is an Agile Process?


o Difficult to predict which s/w requirements will not change and which will change
o Difficult to predict how customer priorities will change
o Design and construction may be interleaved
o Analysis, design, construction and testing phases are not predictable
o Agile process must be incrementally adaptable
o It requires customer feedback.
o Incremental development strategy should be used for software increments.
o It must be delivered in short time periods.

 What are the Agility Principles?


1. Highest priority is to satisfy customer
2. Welcome changing requirements, even late changes.
3. Deliver working SW frequently
4. Stakeholders and SW team must work together continuously.
5. Build around motivated individuals. Give them support and resources… then trust them to get it done.
6. Most efficient info exchange: face-to-face
7. Working SW is primary measure of progress
8. The process promotes sustainable development.
9. Continuous attention to technical excellence and good design.
10. Simplicity – the art of maximizing the amount of work NOT done.
11. Best results emerge from self-organizing teams.
12. Teams regularly review their team to become more effective.

 Politics of Agile Development:


o There are debates on the benefits and applicability of agile s/w development methods
o Traditional methodologists produce a flawless documents but not a working system that meets the
business needs
o Agile methodologists scales up their toys to an enterprise wide software
o Rational thought disappears – beliefs guides decision making rather than facts
o How to build a s/w that meets customer needs and that has quality in the long term?
o Agile concepts are adaptations of good s/w engineering concepts
o Much can be gained by considering the best of both schools
o Nothing can be gained by ignoring any one approach

 Human Factors:
o Agile team members should have the following key traits.
o 1) Competence:
 Skill and Knowledge
o 2) Common Focus:
 Each member has different tasks and different skills, but focused on one-goal.
o 3) Collaboration:
 Team members must collaborate with one another, with the customer and business managers.
o 4) Decision Making Ability:
 Team is given decision making authority for technical and project issues.
o 5) Fuzzy Problem solving Ability:
 Team must accept continuous change. Problem solving today may not be problem to be solved
tomorrow. Lessons to be learned are benefits to the team.
o 6) Mutual Trust and Respect:
 Should exhibit a „Jelled Team‟
o 7) Self Organization:
 Agile team organizes work, process and work schedule by itself. It improves collaboration and
boosts team morale.

You might also like