SlideShare a Scribd company logo
SOFTWARE
ENGINEERING
UNIT 1: Need for Software Engineering
Need for Software Engineering
 Software is more
than just a program
code. A program is an
executable code,
which serves some
computational
purpose.
 Software is considered
to be a collection of
executable
programming code,
associated libraries and
documentations.
Software, when made
for a specific
requirement is called
software product.
Need for Software Engineering
 Engineering on the other hand, is all about developing products,
using well-defined, scientific principles and methods.
 IEEE defines “The application of a systematic, disciplined,
quantifiable approach to the development, operation and
maintenance of software.”
 A small program can be written without using software engineering
principles.
 But if one wants to develop a large software product, then software
engineering principles are absolutely necessary to achieve a good
quality software cost effectively.
Need for Software Engineering
 CHARACTERESTICS OF GOOD SOFTWARE
 A software product can be judged by what it offers and
how well it can be used
 Operational
 Transitional
 Maintenance
Need for Software Engineering
 Operational
This tells us how well software works in operations. It can be measured on:
 Budget
 Usability
 Efficiency
 Correctness
 Functionality
 Dependability
 Security
 Safety
Need for Software Engineering
 Transitional
 This aspect is important when the software is moved from one platform to
another:
 Portability
 Interoperability
 Reusability
 Adaptability
Need for Software Engineering
 Maintenance
 This aspect briefs about how well a software has the capabilities to
maintain itself in the ever-changing environment:
 Modularity
 Maintainability
 Flexibility
 Scalability
Size factors
 The major goal of software engineering is to provide tools
and techniques to increase the productivity of the available
software engineers.
 Total effort Devoted to software
 Distribution of Effort
 Project size categories
Size factors
 Project size is a major factor that determines the level of
management control and the types of tools and techniques
required on a software project.
 Trivial Project
 Small Project
 Medium Size Projects
 Larger Size Projects
 Very Large Projects
 Extremely large Projects
Size factors
 Trivial Project:
 No.of programmers : 1
 Duration :for a few days, few weeks
 Product Size :500 source line
 Packaged in :10 to 20 subroutines
 These Programs are often personal software
Size factors
 Small Project:
 No.of programmers : 1-5
 Duration : 1 to 6 months
 Product Size : 1000 to 2000 source lines
 Packaged in 25 to 50 subroutines
 Small Programs usually have no interactions with other programs.
 Example, Scientific applications written by engineers to solve
numerical problems.
Size factors
 Medium Size Projects:
 No. of Programmers : 2 to 7
 Duration : 1 to 2 years
 Product Size : 10,000 to 15,000 source lines
 Packaged in 250 to 1000 routines.
 Examples
 Medium size projects includes assemblers, Compilers, Small
management information system, inventory system and Process control
applications.
Size factors
 Larger Size Projects:
 o No.of Programmers : 5 to 20
 o Duration : 2 to 3years
 o Product Size :50,000 to 1 lakhs source lines.
 o Packaged in several sub systems.
 o Large programs has significant interactions with other programs and
sub
 systems.
 o Examples, Compilers, Small time sharing systems, database
packages, graphic packages and real time control systems.
Size factors
 Very Large Projects:
 o No.of Programmers : 100 to 1000
 o Duration : 4 to 5 years
 o Product Size : 1 million source lines
 o It consists of several major subsystem each of which forms a large
system.
 o The subsystem have complex,interactions with one another and with
other
 separate we developed system.
Size factors
 Extremely large Projects:
 o No.of Programmers : 2000 to 5000
 o Duration : 5 to 10 years
 o Product Size : 1 million to 10 million source lines
 o It consist of several very large subsystem.
 o It involves real time processing, tele communications, multi tasking
and
 distributed processing.
Quality and Productivity Factors
 Development and maintenance of software
product are complex task.
 There is a fundamental difference between writing
a small programs for PC and developing or
modifying a software product.
 Software Quality and programmer productivity
can be improved by improving the process used
to develop and maintain software products.
Quality and Productivity Factors
 Individual Ability
 Team communication
 Product complexity
 System Level Programs
 Appropriate Notations
 Systematic Approaches
 Level of Technology
 Level of Reliability
 Problem Understanding
 Available Time
 Required Skill
 Facilities and
Resources
 Adequacy of Training
 Management Skills
 Appropriate Goals
 Raising Expectations
Individual ability
 Production and maintenance of software products are labor intensive activities.
 Productivity and Quality are direct functions of individual ability and effort.
 •There are two aspects of ability
• General competition of the individual
• Familiarity of the individual with the particular application area.
 Lack of familiarity with the application area can lead to low productivity and poor quality.
 On very large and extremely large projects no of programmers is so large.
 The individual differences in programmer productivity will tend to average out.
 Modules developed by weaker programmers may show poor quality and may lag in
delivery time.
 Small and medium size projects (5-fewer programmers) are extremely sensitive to the
ability of the individual programmer.
Team communication
 Programming has regarded as an individual and private activity.
 •
Programmers are rarely preceed as public documents and they rarely discuss the exact
details of the work in a systematic manner.
 •
So as a result ,the programmers may misunderstand the role of their modules in an
evolving system.
 •
This mistakes that may not be detected until some time later.
 Many of the recent innovations in software Engineering such as design, reviews and code
reading exercise have the goals of making software more visible and improving
communications among programmers.
 •Increasing product size results in decreasing programmer productivity due to the
increased complexity of interactions among program components.
 •Due to this increased communication is required among programmers, managers and
customers.
Team communication
 From Brooks observation:
 No of communication path among programmers = n(n-1)/2
 where, n=no of programmers.

 Increasing the number of team members from 3 to 4 to 5 increases the no of
communication path from 3 to 6 to 10.

 Brooks law:
 “Adding more programmers to a late project may make it later”
Product complexity
 There are 3 levels of product complexity.
 1. Application Programs
 2. Utility Programs.
 3. System level Programs
 Application Program: It includes scientific and data processing routines written in a high
level language such as COBOL,FORTRAN,C,C++.
 Utility Program: It includes compilers,Assemblers,linkage Editors and loaders. They may
be written in high level language or Assembly language.
 System Level Programs: It includes data communication packages real time process
control system, OS routines in any kanguages.(i.e)high level or assembly.
Product complexity
 Application programs have the highest productivity and the system programs the
lowest productivity.
 •
Utility programs can be produced at a rate of 5-10 times of system programs.
 •
Application programs at a rate of 25-100 times of system programs.
 •
A product that is twice as large or twice as complex as a known product, by
whatever measure other than effort may require 10 times or even 100 times the
amount of effort required for the known product.
Appropriate Notations
 •
In software engineer the representation schemes have fundamental
importance, programming languages provides compact notations for the
implementation phase of software development.
 •
But there are no widely accepted notations for stating functional requirements
,design specifications, test plans are performance criteria.
 •
There are no universally accepted notation in software Engineering.
 •
Appropriate notations provide vehicles of communication among project
personnel.
 •
It introduces the possibility of using automated software tools to manipulate the
notations and verify proper usage.
Systematic Approaches
 •In every field there are certain accepted procedures and techniques
 •A Single approach to software development and maintenance will not be adequate
to cover all situations.
 • In the evaluation of software engineering it is not clear which of the various
approaches to software development should be used in which situation.
 •The flexibility of software is a great strength and also a great source of difficulty in
software engineering.
 • Requirements can also change due to poor understanding of the problem are
external economic and political factors beyond the control of the customers or
developers.
 •Notations and procedures provide the ability to trace and access the impact of
proposed changes are necessary to make visible the true cost of apparently small
changes to source code.
 •Use of appropriate notations and techniques makes control change possible without
degrading the quality of work products.
 •Planning for software project must include plans for change control.
Level of Technology
 It include factors such as programming language, Machine Environment,
The Programming Practices and Software tools
 Modern Programming languages provide improved facilities for data
definition and data usage.
 Improve Constructs for specifying control flow, better modularization
facilities, user defined exception Handling and facilities for concurrent
programming.
 The machine environment includes a set of hardware and software facilities
for developing, using and maintaining a software product.
 Modern programming practices include use of systematic Analysis and
design techniques, notations ,structure coding, systematic techniques for
designing and documenting and testing.
Level of Reliability
 Every software product must possess basic level of reliability.
 Extreme reliability is gained only with great care in analysis, design,
design implementation, system testing and maintenance of software
product.
 Both human and machine resources are required to obtained
increased reliability.
 Problem Understanding:
 Failures to understand the true nature of the problem to be solved is
a common and difficult issue.
Available Time
 Often the customer does not truly understand nature of the problem.
 Often the software engineering does not understand the application area and has trouble
communicating with the customer because of differences in educational backgrounds view the
points and technology.
 Careful planning, customer interviews, task observations and prototyping, preliminary version of
the user’s manual and precise product specification can increase both customer and developer
understanding of the problem to be solved.
 Software projects are sensitive not only to total effort but also to elapsed time and the no. of
people involved
 Utilizing 6 programmers for 1 month will be less effective than using 1 programmer for 6 months.
 This is because the learning curve for 6 programmers on an 1 month schedule will occupy a large
percentage of the elapsed time and because the effort required for co-ordination and
communication among 6 programmers.
 Programmer Productivity is also sensitive to the calendar time available for project completion.
 Determining optimum staff in levels and proper elapsed times for various activities in software
product development is an important and difficult aspects of cost and resource estimation.
Required Skill
 Software Engineering requires a vast range of skills.
 o Good Communications
 o Knowledge of application area
 o Requirement definition and design
 o Problem solving skills
 o Implementation of software (i.e) Good programming knowledge, no
syntax error
 o Debugging and test plans
 o Inter personnel communication skill.
Facilities and Resources
 •
Work related factors such as •
Good machine access and quiet place to
work are more important.
 •
Software project managers must be effective in dealing with the resources
availability.
Adequacy of Training
 •
Factors that motivate the programmers to maintain high product quality,
high programmer productivity and high job satisfaction.
 Express oneself clearly in English
 •
Develop and Validate software requirements and design specifications.
 •
Work within application area
 •
Perform software maintenance
 •
Perform economic analysis.
 •
Work with project management techniques
 •
Work in groups
Management Skills
 •
Many of the problems in software project management are
unique.
 Managers experienced in management of computer hardware
projects find software project management to be difficult.
 This is due to the differences in design methods, notations
and development tools.
 Many Organizations offer project management training to
software engineers to prepare them for project management
task.
Appropriate Goals
 Primary Goal of software engineering is to development of
software products for their intended use.
 Every software product must provide optimal level of
 1. Generality
 2. Reliability
 3. Efficiency
Raising Expectations
 There are two interrelated aspects of raising expectations
 1.How much functionality, reliability and performance can be
provided by a given amount of development effort.
 2.Issues of fundamental limitations of software technology.
Managerial Issues
 Success of Software project involves
 Technical Activities
 Managerial Activities
 •Managers Control
 1.Resources
 2.Environment
 •Important managers responsibility
 Software product delivered on time
 Software working according to customer’s wish
 Software within cost estimates
Managerial Issues
 Other managerial
responsibility:
o Business Plans
o Recruiting customers
o Developing Marketing
Strategies
o Recruiting and training
employees
 Important Problems:
 •
Planning in poor selection for project
managers are poor (i.e) Procedures
and Techniques
 •
Description of project is poor
estimation of resources for software
project is poor
 •
Success criteria is inappropriate
decisions rules are poor(for selecting
the proper organizational structure,
correct management techniques )
 •
Procedures ,methods and
techniques are not readily available.
Managerial Issues: Methods for solving these
problems
 Educate and Train
 Top management
 Project
 Software developers
 •
Analyze the data from previous software project to find effectivemethods
 •Define objectives, quality
 •Establish success priority criteria
 •Develop accurate cost and schedule that are accepted by management and
customer
 •Selection of project managers
 •Specific work assignments to software developers
Planning a Software Project
 •Goals can be formulated using concise statement ,constraints.
 •Goal apply to both development process and work product.
 •It can be either qualitative or quantitative.
 •Every development process should provide product on time within cost
estimates .
 •Opportunities for project personnel to learn new skill.
 Requirements includes:
 •Functional requirements
 Performance
 •Requirements for hardware, software and firmware.
Planning a Software Project
 Definition - problem
 1. Develop a definitive statement of the problem to be solved, Include a
description of the present situation, problem constraints and a statement of the
goals to be achieved. The problem statement should be phrase in the customer's
terminology.
 2. Justify a computerized solution strategy for the problem.
 3. Identify the functions to be provided by, and the constraints on, the hardware
subsystem, the software subsystem and the people subsystem.
 4. Determine system level goals and requirements for the development process
and the work products.
 5. Establish high-level acceptance criteria for the system.
Planning a Software Project
 Solution Strategy
 6. Outline several solution strategies, without regard for constraints.
 7. Conduct a feasibility study for each strategy.
 8. Recommend a solution strategy, indicating why other strategies were rejected.
 9. Develop a list of priorities for product characteristics.
Planning a Software Project
 Planning the development process
 10. Define a life-cycle model and an organizational structure for the project.
 11. Plan the configuration management quality assurance and validation
activities.
 12. Determine phase-dependent tools, techniques and notations to be used.
 13. Establish a preliminary cost estimates for system development.
 14. Establish preliminary development schedule.
 15. Establish preliminary staffing estimates.
 16. Develop preliminary estimates of the computing resources required to
operate and maintain the system.
 17. Prepare a glossary of terms.
 18. Identify sources of information, and refer to them throughout the project plan.
Factors to Consider in Project Planning
 1. Estimation techniques to be used; accuracy required.
 2. Life-cycle model, control functions and reviews
 3. Organizational structure
 4. Level of formality in specification, test plans etc.
 5. Level of verification and validation
 6. Level of configuration management required.
 7. Level of quality assurance required
 8. Follow-on maintenance responsibilities
 9. Tools to be developed and used
 10. Personnel recruitment and training
Some factors to consider in setting
project goals
 1. New capabilities to be provided
 2. Old capabilities to be preserved/enhanced
 3. Level of user sophistication
 4. -Efficiency requirements
 5. Reliability requirements
 6. Likely modifications
 7. Early subsets and implementation priorities
 8. Portability requirements
 9. Securely concerns
Planning the development process
 The software life cycle includes all activities that are required to define,
develop, test. deliver, operate and maintain a software product.
 Different life-cycle models emphasize different aspects of the life cycle. No
single life-cycle model is appropriate for all software products.
 As the model provides a basis for categorizing and controlling the various
activities required to develop and maintain a software product it is important
to define a life-cycle model lor each software project.
 If all the members who are involved in a particular software project accept a
life-cycle model for it then it improves the project communication, enhances
project manageability, resource allocation cost control and product quality
Waterfall Chart
Planning the development process
 Analysis consists of two sub phases
 1. Planning
 2. Requirements definition
 The products of planning are
 1. System Definition & 2. Project plan
Planning the development process
 Format of a system definition
 Section 1 Problem definition
 Section 2 System justification
 Section 3 Goals for the system and the project
 Section 4 Constraints on the system and the project
 Section 5 Functions to be provided (hardware/software/people)
 Section 6 User characteristics
 Section 7 Development / operating / maintenance environments
 Section 8 Solution strategy
 Section 9 Priorities for system features
 Section 10 System Acceptance criteria
 Section 11 Sources of information
 Section 12 Glossary of term
Planning the development Process -
Format for project plan
 Life-cycle model
 Terminology / milestone / work products
 Organizational structure
 Management structure/team
Structure/Work breakdown
 structure/statements of work.
 Preliminary staffing and requirements
staffing and resource schedule.
 Preliminary development schedule PERT
network / Gantt charts
 Preliminary cost estimate .
 Project monitoring and control mechanisms.
 Tools and techniques to be used
 Programming languages
 Testing requirements
 Tools and techniques to be used
 Programming languages
 Supporting documents required
 Manner of demonstration and delivery
 Training schedule and materials
 Installation Plan
 Maintenance considerations
 Method and time of delivery
 Method and time of payment
 Sources of information
Planning the development process
 Requirements definition is concerned with identifying the basic functions of
the software components in a hardware/software people system.
 The product of requirements definition is a specification that describes
 Processing environment
 The required software functions
 Performance constraints on the software (size, speed machine configuration)
 Exception handling Implementation priorities.
Planning the development process
 Software design phase follows the analysis phase. Design phase
consists of
 1. Architectural design
 2. Detailed design
 Architectural design involves the identification of the software
components, by decoupling and decompiling the software components.
 Detailed design is concerned with the details of how to package the
processing modules and how to implement the processing algorithms,
data structures and interconnections among modules and data
structures.
 Detailed design involves adaptation of existing code, modification of
standard algorithms, invention of new algorithms, design of data
representations and packaging of the software product.
Planning the development process
 Implementation phase follows the design phase. This phase consists of the following
sub phases.
 1. Code 2. Debug 3. Unit test
 Coding involves the translation of design specifications into source code Modern
programming languages provide many features to enhance the quality of the source
code.
 Errors discovered during the implementation phase may include errors in the data
interfaces between routines, logical errors in the algorithms, error in data structure
layout and failure to account for various processing cases.
 The source code may contain errors that reflect the failure to capture the customer's
requirements, design errors that reflect failure to translate requirements into design
specifications and implementation errors that reflect failure to correctly translate
design specifications into source code.
 Unit test involves the testing of each and every processing module whether it works
correctly for the given test data.
 After writing the source code (i.e. after the implementation phase), the software
Planning the development process
 Testing involves the following two activities.
 1. Integration testing 2. Acceptance testing
 In order for the whole software system to function
correctly, the modules are to be integrated. Careful
planning is needed to improve the availability of the
modules for the integration when needed.
 Acceptance testing involves planning and execution of
various types of tests in order to demonstrate that the
implemented software system satisfies the
requirements state in the requirements document.
Planning the development process
 The software system is released for the production work after
being accepted by the customer and it enters the maintenance
phase of the following activities.
 1. Enhancement 2. Adaptation 3. Fix
 Enhancement involves the improvement of the capabilities of
the software system. Adaptation is making the software system
suitable for new processing environments. Fixing involves the
correcting of the software bugs.
Planning an Organization Structure
 The tasks that are performed during the lifetime of a software
product include planning, product development, services,
publications, quality assurance, support and maintenance.
 The Planning task identifies external customers and internal
product needs, conducts feasibility studies and monitors
progress from beginning to end of the product life cycle.
 Project Structure
 Programming team structure
 Management by objectives
Planning an Organization Structure
 Project Structure
 Project format
 Use of project format involves assembling a team of programmers who
conduct a project from start to finish.
 Project team members do the product definition, designing, implementation,
testing, conduct the project reviews and prepare the supporting documents.
 After completing thee phases some of the team members will stay with the
product during installation and maintenance while others will be moved on
to a new project.
 They too have the responsibility for the maintenance of the delivered
product.
Planning an Organization Structure
 Project Structure
 Functional format
 In functional format a different team of programmers performs
each phase of the project.
 The team members performing one particular phase generate
the work products for that phase. It is then passed on to the
next team who in turn generate the work products for. the
phase.
Planning an Organization Structure
 The various teams along with the function performed by them and the work products
generated by them
 1. Planning and Analysis team System Definition and Project Plan
 2. Product Definition team Performs software requirements analysis
and
prepares Software Requirements Specification
 3. Design team Designs the product to confirm with the
System Definition and
Requirement Specification
 4. Implementation team Implements, debugs and unit tests the
product
 5. System testing team Does the integration testing and acceptance
Planning an Organization Structure
 Programming team structure
 Every programmer team must have an internal structure.
 The best structure for a particular project depends on the nature of the project and
the product and on the characteristics of the individual team members.
 1. Democratic teams
 2. Chief programmer teams
 3. Hierarchical team
Planning an Organization Structure
 Democratic teams
 All the team members participate in all decisions. The idealized democratic
team structure is also called as an "egoless team".
Planning an Organization Structure
 In an egoless team, goals are set and decision are made by group consigns.
 Groups leadership is moved from one member to the other based on the activity and the capability of the
team members.
 Advantages of the democratic team includes :
 1. Opportunity for each team member to contribute to decisions
 2. Team members can learn from one another
 3. Involvement in the project is increased as the team members are participating in each and every activity of
the team.
 4. As the problem is discussed in an open, nonthreatening work environment, the job satisfaction is higher in
the democratic team.
 Disadvantages.
 1. Decision-making in the critical situations are difficult as it requires the agreement of all the team members.
 2. Co-ordination among the team members is essential
Planning an Organization Structure
 Chief Programmer Teams
 Chief programmer teams are highly structured.
 A team of programmers work under the chief programmer. The chief programmer designs the
product, implements critical parts of the products and makes all major technical decisions.
 Work is allocated to the programmers by the chief programmer. The programmers write code,
debug, document and unit test it.
Planning an Organization Structure
 Chief programmer teams are effective in two situations
 first, in data processing applications where the chief programmer has
responsibility for sensitive financial software packages and the packages
can be written by relatively unskilled programmers
 second, in situations where one senior programmer and several junior
programmers are assigned to a project.
 In the latter case, the chief, the chief programmer team structure is used to
train the junior programmer and to evolve the team structure into a
hierarchical or democratic team when the junior programmers have
obtained enough experience to assume responsibility for various project
activities.
Planning an Organization Structure
 Hierarchical team structure
 The hierarchical team structure occupies a middle position between the
extremes of democratic items and chief programmer teams.
Planning an Organization Structure
 Each major subsystem in the hierarchy can be assigned to a team
 The team leaders will report to the project leader.
 For effective communication and supervision of work activities, the number
of immediate subordinates at each level must be limited to five to seven
people.
 A large project may have several levels in the hierarchy.
 Disadvantage:
 The competent and experienced programmers may be promoted to
management positions. Even though higher salary and prestige are
associated with higher positions, the promotion may have doubly negative
effect of losing a good programmer and creating a poor manager. The
competent programmers need not have a good communication skill and
Planning an Organization Structure
 Management by objectives
 Depending upon the nature of the software project, project format and team
structure are identified.
 After identifying the project format and team structure, the project leader
has an important responsibility of controlling the various activities of the
team members.
 It is necessary for a project leader to establish methods for directing and
controlling the activities of individuals assigned to the project.
 At the beginning of the project, project members develop their
understanding of the project and their role in the project.
Planning an Organization Structure
 Using MBO, the project members set their own goals and objectives with
the help of their supervisor, participate in settling of their supervisor's goal
and they are evaluated.
 Management by objectives can be applied at all levels of an organization,
and can include product oriented objective uch as completion of design or
testing and self-improvement objectives such as skills to acquire and
preparations for advancement.
 Disadvantages
 1. Employees are required to state excessive number of objectives (20 or
30)
 2. The reporting period is too long (6 months or more)
 Objectives of software projects should be specific, few in number and

More Related Content

PPTX
Phased life cycle model
PPTX
Software Engineering Practices and Issues.pptx
PPTX
Planning the development process
PPTX
Software Engineering
PDF
Programming team structure
PPT
5 architecture
PPT
Software Engineering (Process Models)
PPTX
Evolving role of Software
Phased life cycle model
Software Engineering Practices and Issues.pptx
Planning the development process
Software Engineering
Programming team structure
5 architecture
Software Engineering (Process Models)
Evolving role of Software

What's hot (20)

PPT
Lecture 12 requirements modeling - (system analysis)
PPTX
Software Cost Estimation Techniques
PPT
Design concepts and principles
PPTX
Software Engineering
PPTX
Chapter 2 software process models
PPTX
Software Project Management ppt
PPT
Software design
PPT
System Models in Software Engineering SE7
PPTX
Software maintenance Unit5
PDF
Design patterns tutorials
PPTX
Real time and distributed design
PPTX
Software Engineering concept
PPTX
Language and Processors for Requirements Specification
PPTX
unit testing and debugging
PPTX
Design notation
PPT
Software Engineering (Introduction to Software Engineering)
PPTX
Chapter 1 2 - some size factors
PPT
Chapter 08
PPTX
Delphi cost estimation model
PPT
Unit 3 3 architectural design
Lecture 12 requirements modeling - (system analysis)
Software Cost Estimation Techniques
Design concepts and principles
Software Engineering
Chapter 2 software process models
Software Project Management ppt
Software design
System Models in Software Engineering SE7
Software maintenance Unit5
Design patterns tutorials
Real time and distributed design
Software Engineering concept
Language and Processors for Requirements Specification
unit testing and debugging
Design notation
Software Engineering (Introduction to Software Engineering)
Chapter 1 2 - some size factors
Chapter 08
Delphi cost estimation model
Unit 3 3 architectural design
Ad

Similar to SE Unit 1 (20)

PDF
Software Engineering Basics.pdf
PPTX
Project Scheduling and Tracking in Software Engineering.pptx
PPTX
Quality and Productivity Factors in Software Engineering
PDF
Kelis king - introduction to s.e.
PDF
software engineering
PPT
want to contact me login to www.stqa.org
PPTX
Quality and productivity factors
DOCX
Software engg unit 1
PPTX
Unit 1 Software Engineering and Development Models .pptx
PPTX
Lecture 1.pptx
PPTX
Chapter 1 1 - intro ppt
PDF
Software Engineering and Introduction, Activities and ProcessModels
PPTX
The Introduction to Software Engineering
PPTX
Software-Engineering-Unit-1ffdddbyp.pptx
PDF
The Product and Process(1).pdf
PPTX
Week1.pptx
PPTX
SE UNIT-1.pptx
PPTX
Software Engineering _ Introduction
PDF
Project Management (2).pdf
PPT
Software Testing and Quality Management Subject
Software Engineering Basics.pdf
Project Scheduling and Tracking in Software Engineering.pptx
Quality and Productivity Factors in Software Engineering
Kelis king - introduction to s.e.
software engineering
want to contact me login to www.stqa.org
Quality and productivity factors
Software engg unit 1
Unit 1 Software Engineering and Development Models .pptx
Lecture 1.pptx
Chapter 1 1 - intro ppt
Software Engineering and Introduction, Activities and ProcessModels
The Introduction to Software Engineering
Software-Engineering-Unit-1ffdddbyp.pptx
The Product and Process(1).pdf
Week1.pptx
SE UNIT-1.pptx
Software Engineering _ Introduction
Project Management (2).pdf
Software Testing and Quality Management Subject
Ad

Recently uploaded (20)

PDF
Module 4: Burden of Disease Tutorial Slides S2 2025
PDF
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
PPTX
Renaissance Architecture: A Journey from Faith to Humanism
PPTX
Pharmacology of Heart Failure /Pharmacotherapy of CHF
PPTX
Week 4 Term 3 Study Techniques revisited.pptx
PPTX
Pharma ospi slides which help in ospi learning
PDF
RMMM.pdf make it easy to upload and study
PDF
O5-L3 Freight Transport Ops (International) V1.pdf
PDF
01-Introduction-to-Information-Management.pdf
PPTX
Cell Types and Its function , kingdom of life
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
PDF
Mark Klimek Lecture Notes_240423 revision books _173037.pdf
PDF
Business Ethics Teaching Materials for college
PDF
2.FourierTransform-ShortQuestionswithAnswers.pdf
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PDF
Supply Chain Operations Speaking Notes -ICLT Program
PDF
Microbial disease of the cardiovascular and lymphatic systems
PPTX
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
PDF
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
PDF
Anesthesia in Laparoscopic Surgery in India
Module 4: Burden of Disease Tutorial Slides S2 2025
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
Renaissance Architecture: A Journey from Faith to Humanism
Pharmacology of Heart Failure /Pharmacotherapy of CHF
Week 4 Term 3 Study Techniques revisited.pptx
Pharma ospi slides which help in ospi learning
RMMM.pdf make it easy to upload and study
O5-L3 Freight Transport Ops (International) V1.pdf
01-Introduction-to-Information-Management.pdf
Cell Types and Its function , kingdom of life
STATICS OF THE RIGID BODIES Hibbelers.pdf
Mark Klimek Lecture Notes_240423 revision books _173037.pdf
Business Ethics Teaching Materials for college
2.FourierTransform-ShortQuestionswithAnswers.pdf
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
Supply Chain Operations Speaking Notes -ICLT Program
Microbial disease of the cardiovascular and lymphatic systems
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
Anesthesia in Laparoscopic Surgery in India

SE Unit 1

  • 1. SOFTWARE ENGINEERING UNIT 1: Need for Software Engineering
  • 2. Need for Software Engineering  Software is more than just a program code. A program is an executable code, which serves some computational purpose.  Software is considered to be a collection of executable programming code, associated libraries and documentations. Software, when made for a specific requirement is called software product.
  • 3. Need for Software Engineering  Engineering on the other hand, is all about developing products, using well-defined, scientific principles and methods.  IEEE defines “The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software.”  A small program can be written without using software engineering principles.  But if one wants to develop a large software product, then software engineering principles are absolutely necessary to achieve a good quality software cost effectively.
  • 4. Need for Software Engineering  CHARACTERESTICS OF GOOD SOFTWARE  A software product can be judged by what it offers and how well it can be used  Operational  Transitional  Maintenance
  • 5. Need for Software Engineering  Operational This tells us how well software works in operations. It can be measured on:  Budget  Usability  Efficiency  Correctness  Functionality  Dependability  Security  Safety
  • 6. Need for Software Engineering  Transitional  This aspect is important when the software is moved from one platform to another:  Portability  Interoperability  Reusability  Adaptability
  • 7. Need for Software Engineering  Maintenance  This aspect briefs about how well a software has the capabilities to maintain itself in the ever-changing environment:  Modularity  Maintainability  Flexibility  Scalability
  • 8. Size factors  The major goal of software engineering is to provide tools and techniques to increase the productivity of the available software engineers.  Total effort Devoted to software  Distribution of Effort  Project size categories
  • 9. Size factors  Project size is a major factor that determines the level of management control and the types of tools and techniques required on a software project.  Trivial Project  Small Project  Medium Size Projects  Larger Size Projects  Very Large Projects  Extremely large Projects
  • 10. Size factors  Trivial Project:  No.of programmers : 1  Duration :for a few days, few weeks  Product Size :500 source line  Packaged in :10 to 20 subroutines  These Programs are often personal software
  • 11. Size factors  Small Project:  No.of programmers : 1-5  Duration : 1 to 6 months  Product Size : 1000 to 2000 source lines  Packaged in 25 to 50 subroutines  Small Programs usually have no interactions with other programs.  Example, Scientific applications written by engineers to solve numerical problems.
  • 12. Size factors  Medium Size Projects:  No. of Programmers : 2 to 7  Duration : 1 to 2 years  Product Size : 10,000 to 15,000 source lines  Packaged in 250 to 1000 routines.  Examples  Medium size projects includes assemblers, Compilers, Small management information system, inventory system and Process control applications.
  • 13. Size factors  Larger Size Projects:  o No.of Programmers : 5 to 20  o Duration : 2 to 3years  o Product Size :50,000 to 1 lakhs source lines.  o Packaged in several sub systems.  o Large programs has significant interactions with other programs and sub  systems.  o Examples, Compilers, Small time sharing systems, database packages, graphic packages and real time control systems.
  • 14. Size factors  Very Large Projects:  o No.of Programmers : 100 to 1000  o Duration : 4 to 5 years  o Product Size : 1 million source lines  o It consists of several major subsystem each of which forms a large system.  o The subsystem have complex,interactions with one another and with other  separate we developed system.
  • 15. Size factors  Extremely large Projects:  o No.of Programmers : 2000 to 5000  o Duration : 5 to 10 years  o Product Size : 1 million to 10 million source lines  o It consist of several very large subsystem.  o It involves real time processing, tele communications, multi tasking and  distributed processing.
  • 16. Quality and Productivity Factors  Development and maintenance of software product are complex task.  There is a fundamental difference between writing a small programs for PC and developing or modifying a software product.  Software Quality and programmer productivity can be improved by improving the process used to develop and maintain software products.
  • 17. Quality and Productivity Factors  Individual Ability  Team communication  Product complexity  System Level Programs  Appropriate Notations  Systematic Approaches  Level of Technology  Level of Reliability  Problem Understanding  Available Time  Required Skill  Facilities and Resources  Adequacy of Training  Management Skills  Appropriate Goals  Raising Expectations
  • 18. Individual ability  Production and maintenance of software products are labor intensive activities.  Productivity and Quality are direct functions of individual ability and effort.  •There are two aspects of ability • General competition of the individual • Familiarity of the individual with the particular application area.  Lack of familiarity with the application area can lead to low productivity and poor quality.  On very large and extremely large projects no of programmers is so large.  The individual differences in programmer productivity will tend to average out.  Modules developed by weaker programmers may show poor quality and may lag in delivery time.  Small and medium size projects (5-fewer programmers) are extremely sensitive to the ability of the individual programmer.
  • 19. Team communication  Programming has regarded as an individual and private activity.  • Programmers are rarely preceed as public documents and they rarely discuss the exact details of the work in a systematic manner.  • So as a result ,the programmers may misunderstand the role of their modules in an evolving system.  • This mistakes that may not be detected until some time later.  Many of the recent innovations in software Engineering such as design, reviews and code reading exercise have the goals of making software more visible and improving communications among programmers.  •Increasing product size results in decreasing programmer productivity due to the increased complexity of interactions among program components.  •Due to this increased communication is required among programmers, managers and customers.
  • 20. Team communication  From Brooks observation:  No of communication path among programmers = n(n-1)/2  where, n=no of programmers.   Increasing the number of team members from 3 to 4 to 5 increases the no of communication path from 3 to 6 to 10.   Brooks law:  “Adding more programmers to a late project may make it later”
  • 21. Product complexity  There are 3 levels of product complexity.  1. Application Programs  2. Utility Programs.  3. System level Programs  Application Program: It includes scientific and data processing routines written in a high level language such as COBOL,FORTRAN,C,C++.  Utility Program: It includes compilers,Assemblers,linkage Editors and loaders. They may be written in high level language or Assembly language.  System Level Programs: It includes data communication packages real time process control system, OS routines in any kanguages.(i.e)high level or assembly.
  • 22. Product complexity  Application programs have the highest productivity and the system programs the lowest productivity.  • Utility programs can be produced at a rate of 5-10 times of system programs.  • Application programs at a rate of 25-100 times of system programs.  • A product that is twice as large or twice as complex as a known product, by whatever measure other than effort may require 10 times or even 100 times the amount of effort required for the known product.
  • 23. Appropriate Notations  • In software engineer the representation schemes have fundamental importance, programming languages provides compact notations for the implementation phase of software development.  • But there are no widely accepted notations for stating functional requirements ,design specifications, test plans are performance criteria.  • There are no universally accepted notation in software Engineering.  • Appropriate notations provide vehicles of communication among project personnel.  • It introduces the possibility of using automated software tools to manipulate the notations and verify proper usage.
  • 24. Systematic Approaches  •In every field there are certain accepted procedures and techniques  •A Single approach to software development and maintenance will not be adequate to cover all situations.  • In the evaluation of software engineering it is not clear which of the various approaches to software development should be used in which situation.  •The flexibility of software is a great strength and also a great source of difficulty in software engineering.  • Requirements can also change due to poor understanding of the problem are external economic and political factors beyond the control of the customers or developers.  •Notations and procedures provide the ability to trace and access the impact of proposed changes are necessary to make visible the true cost of apparently small changes to source code.  •Use of appropriate notations and techniques makes control change possible without degrading the quality of work products.  •Planning for software project must include plans for change control.
  • 25. Level of Technology  It include factors such as programming language, Machine Environment, The Programming Practices and Software tools  Modern Programming languages provide improved facilities for data definition and data usage.  Improve Constructs for specifying control flow, better modularization facilities, user defined exception Handling and facilities for concurrent programming.  The machine environment includes a set of hardware and software facilities for developing, using and maintaining a software product.  Modern programming practices include use of systematic Analysis and design techniques, notations ,structure coding, systematic techniques for designing and documenting and testing.
  • 26. Level of Reliability  Every software product must possess basic level of reliability.  Extreme reliability is gained only with great care in analysis, design, design implementation, system testing and maintenance of software product.  Both human and machine resources are required to obtained increased reliability.  Problem Understanding:  Failures to understand the true nature of the problem to be solved is a common and difficult issue.
  • 27. Available Time  Often the customer does not truly understand nature of the problem.  Often the software engineering does not understand the application area and has trouble communicating with the customer because of differences in educational backgrounds view the points and technology.  Careful planning, customer interviews, task observations and prototyping, preliminary version of the user’s manual and precise product specification can increase both customer and developer understanding of the problem to be solved.  Software projects are sensitive not only to total effort but also to elapsed time and the no. of people involved  Utilizing 6 programmers for 1 month will be less effective than using 1 programmer for 6 months.  This is because the learning curve for 6 programmers on an 1 month schedule will occupy a large percentage of the elapsed time and because the effort required for co-ordination and communication among 6 programmers.  Programmer Productivity is also sensitive to the calendar time available for project completion.  Determining optimum staff in levels and proper elapsed times for various activities in software product development is an important and difficult aspects of cost and resource estimation.
  • 28. Required Skill  Software Engineering requires a vast range of skills.  o Good Communications  o Knowledge of application area  o Requirement definition and design  o Problem solving skills  o Implementation of software (i.e) Good programming knowledge, no syntax error  o Debugging and test plans  o Inter personnel communication skill.
  • 29. Facilities and Resources  • Work related factors such as • Good machine access and quiet place to work are more important.  • Software project managers must be effective in dealing with the resources availability.
  • 30. Adequacy of Training  • Factors that motivate the programmers to maintain high product quality, high programmer productivity and high job satisfaction.  Express oneself clearly in English  • Develop and Validate software requirements and design specifications.  • Work within application area  • Perform software maintenance  • Perform economic analysis.  • Work with project management techniques  • Work in groups
  • 31. Management Skills  • Many of the problems in software project management are unique.  Managers experienced in management of computer hardware projects find software project management to be difficult.  This is due to the differences in design methods, notations and development tools.  Many Organizations offer project management training to software engineers to prepare them for project management task.
  • 32. Appropriate Goals  Primary Goal of software engineering is to development of software products for their intended use.  Every software product must provide optimal level of  1. Generality  2. Reliability  3. Efficiency
  • 33. Raising Expectations  There are two interrelated aspects of raising expectations  1.How much functionality, reliability and performance can be provided by a given amount of development effort.  2.Issues of fundamental limitations of software technology.
  • 34. Managerial Issues  Success of Software project involves  Technical Activities  Managerial Activities  •Managers Control  1.Resources  2.Environment  •Important managers responsibility  Software product delivered on time  Software working according to customer’s wish  Software within cost estimates
  • 35. Managerial Issues  Other managerial responsibility: o Business Plans o Recruiting customers o Developing Marketing Strategies o Recruiting and training employees  Important Problems:  • Planning in poor selection for project managers are poor (i.e) Procedures and Techniques  • Description of project is poor estimation of resources for software project is poor  • Success criteria is inappropriate decisions rules are poor(for selecting the proper organizational structure, correct management techniques )  • Procedures ,methods and techniques are not readily available.
  • 36. Managerial Issues: Methods for solving these problems  Educate and Train  Top management  Project  Software developers  • Analyze the data from previous software project to find effectivemethods  •Define objectives, quality  •Establish success priority criteria  •Develop accurate cost and schedule that are accepted by management and customer  •Selection of project managers  •Specific work assignments to software developers
  • 37. Planning a Software Project  •Goals can be formulated using concise statement ,constraints.  •Goal apply to both development process and work product.  •It can be either qualitative or quantitative.  •Every development process should provide product on time within cost estimates .  •Opportunities for project personnel to learn new skill.  Requirements includes:  •Functional requirements  Performance  •Requirements for hardware, software and firmware.
  • 38. Planning a Software Project  Definition - problem  1. Develop a definitive statement of the problem to be solved, Include a description of the present situation, problem constraints and a statement of the goals to be achieved. The problem statement should be phrase in the customer's terminology.  2. Justify a computerized solution strategy for the problem.  3. Identify the functions to be provided by, and the constraints on, the hardware subsystem, the software subsystem and the people subsystem.  4. Determine system level goals and requirements for the development process and the work products.  5. Establish high-level acceptance criteria for the system.
  • 39. Planning a Software Project  Solution Strategy  6. Outline several solution strategies, without regard for constraints.  7. Conduct a feasibility study for each strategy.  8. Recommend a solution strategy, indicating why other strategies were rejected.  9. Develop a list of priorities for product characteristics.
  • 40. Planning a Software Project  Planning the development process  10. Define a life-cycle model and an organizational structure for the project.  11. Plan the configuration management quality assurance and validation activities.  12. Determine phase-dependent tools, techniques and notations to be used.  13. Establish a preliminary cost estimates for system development.  14. Establish preliminary development schedule.  15. Establish preliminary staffing estimates.  16. Develop preliminary estimates of the computing resources required to operate and maintain the system.  17. Prepare a glossary of terms.  18. Identify sources of information, and refer to them throughout the project plan.
  • 41. Factors to Consider in Project Planning  1. Estimation techniques to be used; accuracy required.  2. Life-cycle model, control functions and reviews  3. Organizational structure  4. Level of formality in specification, test plans etc.  5. Level of verification and validation  6. Level of configuration management required.  7. Level of quality assurance required  8. Follow-on maintenance responsibilities  9. Tools to be developed and used  10. Personnel recruitment and training
  • 42. Some factors to consider in setting project goals  1. New capabilities to be provided  2. Old capabilities to be preserved/enhanced  3. Level of user sophistication  4. -Efficiency requirements  5. Reliability requirements  6. Likely modifications  7. Early subsets and implementation priorities  8. Portability requirements  9. Securely concerns
  • 43. Planning the development process  The software life cycle includes all activities that are required to define, develop, test. deliver, operate and maintain a software product.  Different life-cycle models emphasize different aspects of the life cycle. No single life-cycle model is appropriate for all software products.  As the model provides a basis for categorizing and controlling the various activities required to develop and maintain a software product it is important to define a life-cycle model lor each software project.  If all the members who are involved in a particular software project accept a life-cycle model for it then it improves the project communication, enhances project manageability, resource allocation cost control and product quality
  • 45. Planning the development process  Analysis consists of two sub phases  1. Planning  2. Requirements definition  The products of planning are  1. System Definition & 2. Project plan
  • 46. Planning the development process  Format of a system definition  Section 1 Problem definition  Section 2 System justification  Section 3 Goals for the system and the project  Section 4 Constraints on the system and the project  Section 5 Functions to be provided (hardware/software/people)  Section 6 User characteristics  Section 7 Development / operating / maintenance environments  Section 8 Solution strategy  Section 9 Priorities for system features  Section 10 System Acceptance criteria  Section 11 Sources of information  Section 12 Glossary of term
  • 47. Planning the development Process - Format for project plan  Life-cycle model  Terminology / milestone / work products  Organizational structure  Management structure/team Structure/Work breakdown  structure/statements of work.  Preliminary staffing and requirements staffing and resource schedule.  Preliminary development schedule PERT network / Gantt charts  Preliminary cost estimate .  Project monitoring and control mechanisms.  Tools and techniques to be used  Programming languages  Testing requirements  Tools and techniques to be used  Programming languages  Supporting documents required  Manner of demonstration and delivery  Training schedule and materials  Installation Plan  Maintenance considerations  Method and time of delivery  Method and time of payment  Sources of information
  • 48. Planning the development process  Requirements definition is concerned with identifying the basic functions of the software components in a hardware/software people system.  The product of requirements definition is a specification that describes  Processing environment  The required software functions  Performance constraints on the software (size, speed machine configuration)  Exception handling Implementation priorities.
  • 49. Planning the development process  Software design phase follows the analysis phase. Design phase consists of  1. Architectural design  2. Detailed design  Architectural design involves the identification of the software components, by decoupling and decompiling the software components.  Detailed design is concerned with the details of how to package the processing modules and how to implement the processing algorithms, data structures and interconnections among modules and data structures.  Detailed design involves adaptation of existing code, modification of standard algorithms, invention of new algorithms, design of data representations and packaging of the software product.
  • 50. Planning the development process  Implementation phase follows the design phase. This phase consists of the following sub phases.  1. Code 2. Debug 3. Unit test  Coding involves the translation of design specifications into source code Modern programming languages provide many features to enhance the quality of the source code.  Errors discovered during the implementation phase may include errors in the data interfaces between routines, logical errors in the algorithms, error in data structure layout and failure to account for various processing cases.  The source code may contain errors that reflect the failure to capture the customer's requirements, design errors that reflect failure to translate requirements into design specifications and implementation errors that reflect failure to correctly translate design specifications into source code.  Unit test involves the testing of each and every processing module whether it works correctly for the given test data.  After writing the source code (i.e. after the implementation phase), the software
  • 51. Planning the development process  Testing involves the following two activities.  1. Integration testing 2. Acceptance testing  In order for the whole software system to function correctly, the modules are to be integrated. Careful planning is needed to improve the availability of the modules for the integration when needed.  Acceptance testing involves planning and execution of various types of tests in order to demonstrate that the implemented software system satisfies the requirements state in the requirements document.
  • 52. Planning the development process  The software system is released for the production work after being accepted by the customer and it enters the maintenance phase of the following activities.  1. Enhancement 2. Adaptation 3. Fix  Enhancement involves the improvement of the capabilities of the software system. Adaptation is making the software system suitable for new processing environments. Fixing involves the correcting of the software bugs.
  • 53. Planning an Organization Structure  The tasks that are performed during the lifetime of a software product include planning, product development, services, publications, quality assurance, support and maintenance.  The Planning task identifies external customers and internal product needs, conducts feasibility studies and monitors progress from beginning to end of the product life cycle.  Project Structure  Programming team structure  Management by objectives
  • 54. Planning an Organization Structure  Project Structure  Project format  Use of project format involves assembling a team of programmers who conduct a project from start to finish.  Project team members do the product definition, designing, implementation, testing, conduct the project reviews and prepare the supporting documents.  After completing thee phases some of the team members will stay with the product during installation and maintenance while others will be moved on to a new project.  They too have the responsibility for the maintenance of the delivered product.
  • 55. Planning an Organization Structure  Project Structure  Functional format  In functional format a different team of programmers performs each phase of the project.  The team members performing one particular phase generate the work products for that phase. It is then passed on to the next team who in turn generate the work products for. the phase.
  • 56. Planning an Organization Structure  The various teams along with the function performed by them and the work products generated by them  1. Planning and Analysis team System Definition and Project Plan  2. Product Definition team Performs software requirements analysis and prepares Software Requirements Specification  3. Design team Designs the product to confirm with the System Definition and Requirement Specification  4. Implementation team Implements, debugs and unit tests the product  5. System testing team Does the integration testing and acceptance
  • 57. Planning an Organization Structure  Programming team structure  Every programmer team must have an internal structure.  The best structure for a particular project depends on the nature of the project and the product and on the characteristics of the individual team members.  1. Democratic teams  2. Chief programmer teams  3. Hierarchical team
  • 58. Planning an Organization Structure  Democratic teams  All the team members participate in all decisions. The idealized democratic team structure is also called as an "egoless team".
  • 59. Planning an Organization Structure  In an egoless team, goals are set and decision are made by group consigns.  Groups leadership is moved from one member to the other based on the activity and the capability of the team members.  Advantages of the democratic team includes :  1. Opportunity for each team member to contribute to decisions  2. Team members can learn from one another  3. Involvement in the project is increased as the team members are participating in each and every activity of the team.  4. As the problem is discussed in an open, nonthreatening work environment, the job satisfaction is higher in the democratic team.  Disadvantages.  1. Decision-making in the critical situations are difficult as it requires the agreement of all the team members.  2. Co-ordination among the team members is essential
  • 60. Planning an Organization Structure  Chief Programmer Teams  Chief programmer teams are highly structured.  A team of programmers work under the chief programmer. The chief programmer designs the product, implements critical parts of the products and makes all major technical decisions.  Work is allocated to the programmers by the chief programmer. The programmers write code, debug, document and unit test it.
  • 61. Planning an Organization Structure  Chief programmer teams are effective in two situations  first, in data processing applications where the chief programmer has responsibility for sensitive financial software packages and the packages can be written by relatively unskilled programmers  second, in situations where one senior programmer and several junior programmers are assigned to a project.  In the latter case, the chief, the chief programmer team structure is used to train the junior programmer and to evolve the team structure into a hierarchical or democratic team when the junior programmers have obtained enough experience to assume responsibility for various project activities.
  • 62. Planning an Organization Structure  Hierarchical team structure  The hierarchical team structure occupies a middle position between the extremes of democratic items and chief programmer teams.
  • 63. Planning an Organization Structure  Each major subsystem in the hierarchy can be assigned to a team  The team leaders will report to the project leader.  For effective communication and supervision of work activities, the number of immediate subordinates at each level must be limited to five to seven people.  A large project may have several levels in the hierarchy.  Disadvantage:  The competent and experienced programmers may be promoted to management positions. Even though higher salary and prestige are associated with higher positions, the promotion may have doubly negative effect of losing a good programmer and creating a poor manager. The competent programmers need not have a good communication skill and
  • 64. Planning an Organization Structure  Management by objectives  Depending upon the nature of the software project, project format and team structure are identified.  After identifying the project format and team structure, the project leader has an important responsibility of controlling the various activities of the team members.  It is necessary for a project leader to establish methods for directing and controlling the activities of individuals assigned to the project.  At the beginning of the project, project members develop their understanding of the project and their role in the project.
  • 65. Planning an Organization Structure  Using MBO, the project members set their own goals and objectives with the help of their supervisor, participate in settling of their supervisor's goal and they are evaluated.  Management by objectives can be applied at all levels of an organization, and can include product oriented objective uch as completion of design or testing and self-improvement objectives such as skills to acquire and preparations for advancement.  Disadvantages  1. Employees are required to state excessive number of objectives (20 or 30)  2. The reporting period is too long (6 months or more)  Objectives of software projects should be specific, few in number and