Fse 1-6
Fse 1-6
➢In accordance with their commitment to the health, safety and welfare
of the public, software engineers shall adhere to the following Eight
Principles:
Cont’d…
1. PUBLIC – Software engineers shall act consistently with the public
interest.
2. CLIENT AND EMPLOYER – Software engineers shall act in a
manner that is in the best interests of their client and employer
consistent with the public interest.
3. PRODUCT – Software engineers shall ensure that their products and
related modifications meet the highest professional standards
possible.
4. JUDGMENT – Software engineers shall maintain integrity and
independence in their professional judgment.
5. MANAGEMENT – Software engineering managers and leaders
shall subscribe to and promote an ethical approach to the
management of software development and maintenance.
6. PROFESSION – Software engineers shall advance the integrity and
reputation of the profession consistent with the public interest.
Cont’d…
7. COLLEAGUES – Software engineers shall be fair to and supportive
of their colleagues.
8. SELF – Software engineers shall participate in lifelong learning
regarding the practice of their profession and shall promote an ethical
approach to the practice of the profession.
Thank You!
?
DMIoT, School of Computing
Software Engineering Academic Program
➢ In addition, the people who have requested the software have a role to
play in the process of defining, building, and testing it.
Cont’d…
➢ Why is it important?
• Because it provides stability, control, and organization to an activity
that can, if left uncontrolled, become quite chaotic.
• At a detailed level, the process that you adopt depends on the software
that you’re building.
• From the point of view of a software engineer, the work products are
the programs, documents, and data that are produced as a consequence
of the activities and tasks defined by the process.
Cont’d…
➢ How do you ensure that you have done it right?
• There are a number of software process assessment mechanisms that
enable organizations to determine the “maturity” of their software
process.
• However, the quality, timeliness, and long-term viability of the
product you build are the best indicators of the efficacy of the process
that you use.
Cont’d…
❑ Software process: organizing a structured set of activities
to develop software systems.
• These processes help in performing different software
engineering activities in an organized manner.
Characteristics of processes
• Produces intermediate and final products.
• Each process activity has entry and exit criteria
• Activities are organized in sequence, so timing is clear.
• Each process has guiding principles including goals of each
activity.
• Uses resources, subject to set of constraints (such as
schedule, no. of people working )
• May be composed of sub-processes with hierarchy or links
Cont’d…
❑There are many different software processes but all must
include four activities.
I. Software specification: the functionality of the software
and constraints on its operation must be defined.
II. Software design and implementation: the software to
meet the specification must be produced.
III.Software validation: the software must be validated to
ensure that it does what the customer wants.
IV.Software evolution: the software must evolve to meet
changing customer needs.
Sequential Software Process models
• Sequential models such as Waterfall or V-Model rely on
intensive periods of collecting and refining requirements for
a product before design and development activity can take
place.
• Products developed using these models are intended to be
complete when released to customers.
• Central to the approach is an assumption that by adhering to
the requirements captured at the beginning, the product will
fulfil the wishes of those customers.
Cont’d…
➢ Technical Feasibility
➢ Operational Feasibility
➢ Schedule Feasibility
➢ Political Feasibility
Cont’d…
III. Project Analysis: a detailed study of the various operations
performed by a system and their relationships within and outside the
system.
• Examine and document the relevant aspects of the existing system,
its shortcomings and problems.
• Analyze the findings and record the results.
• Define and document the proposed system.
• Test the proposed design against the known facts.
• Produce a detailed report to support the proposals.
• Estimate the resources required to design and implement the
system.
Cont’d…
• The objective is to provide solutions to stated problems, usually in
the form of specifications to meet the users requirements and to make
recommendations for a new computer-based system.
•Analysis is iterative and progressive process.
IV. System Design: it is the most creative and challenging phase.
▪ Determining data required to produce the output
▪ Determining processing methods and using software
▪ Determining methods of data capture
▪ Defining detailed critical procedures
▪ Calculating timings of processing
Cont’d…
V. Coding: the goal of the coding phase is to translate the
design of the system into code in a given programming
language.
• affects both testing and maintenance
VI.Testing: testing is the major quality-control measure used
during software development.
• Its basic function is to detect errors in the software
VII.Implementation: it is mainly concerned with user
training, site selection, and preparation and file conversion.
Cont’d…
VIII.Maintenance: it is an important part of the SDLC.
▪ But it has some problems:
• Availability of a few maintenance tools.
• User may not accept the cost of maintenance.
• Standards and guidelines of project may be poorly
defined.
• A good test plan is lacking.
Classifications of SDLC Model
▪ There are a number of different models for software development
lifecycles which describe the interrelationships between software
development phases.
✓ Waterfall model
✓ prototype model
✓ incremental model
✓ V-shaped model
✓ Spiral model
Waterfall model
❑ Organize the activities in linear fashion.
• Each phase is end up with expected output in the forms of document.
• Waterfall model is the simplest model.
• All the phases of SDLC will function one after another in linear
manner.
• That is, when the first phase is finished then only the second phase
will start and so on.
Classical Waterfall Model
Cont’d…
▪ Classical waterfall model is idealistic:
• Assumes that no defect is introduced during any
development activity.
• In practice developers commit errors:
• Defects do get introduced in almost every phase of
the life cycle.
Iterative Waterfall Model
Cont’d…
▪ Defects usually get detected much later in the life cycle:
• For example, a design defect might go unnoticed till the coding or
testing phase.
▪ Once a defect is detected:
• The phase in which it occurred and parts of the work already
completed subsequent phases needs to be reworked.
▪ Therefore need feedback paths in the classical waterfall model.
Cont’d…
Waterfall model Strengths
• Easy to understand, easy to use
• Provides a reference to inexperienced staff
• Provides requirements stability
• Facilitates strong management control (plan, staff, track)
Waterfall Deficiencies
• All requirements must be known upfront
• Does not accommodate any change.
• There is no risk analysis.
• Can give a false impression of progress.
• Little opportunity for customer to pre-view the system.
Cont’d…
When to use the Waterfall Model
• Requirements are very well known and stable
• Technology is understood
• Experienced Development team
• When it is possible to produce a stable design
E.g. a new version of an existing product
• E.g. porting an existing product to a new platform.
Prototype process model
• It is model implementation of the project with limited
functionalities.
• The prototype model suggests that before development of
the actual software, a working prototype of the system
should be built first.
What is a Prototype?
• It is a quickly developed, easily modifiable and extendible
working model of the required application.
Cont’d…
Reasons for prototyping
• learning by doing: useful where requirements are only partially known
• improved communication
• reduces maintenance costs i.e. changes after the application goes live
Cont’d…
Cont’d…
Prototyping: advantages
• The resulting software is more usable
• User needs are better accommodated
• The design is of higher quality
• The resulting software is easier to maintain
• Overall, the development incurs less effort
Prototyping Weaknesses
• Sometimes expensive
• Overall maintainability may be overlooked
• Process may continue forever (scope creep)
Cont’d…
What is the main goal of prototyping model?
• To avoid early freezing of the requirements.
V Model Weaknesses
• Does not support overlapping of phases
Agile Development
Introduction
What is it?
• Agile software engineering combines a philosophy and a set of
development guidelines.
Why is it important?
➢Agile software engineering represents a reasonable alternative to
conventional software engineering for certain classes of software and
certain types of software projects.
• Scrum
• Crystal Assignment
• Feature Drive Development (FDD)
(10%)
• Lean Software Development (LSD)
Requirements Engineering
Introduction
What are Software Requirements?
▪ Requirement is a condition or capability possessed by the software or
system component in order to solve a real world problem.
• The problems can be to automate a part of a system, to correct
shortcomings of an existing system, to control a device, and so on.
❑IEEE defines requirement as :
• (1) A condition or capability needed by a user to solve a problem or
achieve an objective.
• (2) A condition or capability that must be met or possessed by a
system or system component to satisfy a contract, standard,
specification, or other formally imposed documents.
• (3) A documented representation of a condition or capability as in
(1) or (2).’
Cont’d…
• Requirements describe how a system should act, appear or
perform.
• For this, when users request for software, they provide an
approximation of what the new system should be capable of
doing.
• Requirements differ from one user to another and from one
business process to another.
❑The software requirements are description of features and
functionalities of the target system.
• Requirements convey the expectations of users from the
software product.
User and System Requirements
• Typically, requirements are presented into two levels of
detail; user and system requirements, where user need a high-
level statement of the requirements, while system developers
need a more detailed system specification.
• So, user and system requirements just refer to different levels
of detail.
• Having different levels of detail is useful because it
communicates information about the system being developed
for different types of readers.
User Requirements
• It describes the services that the system should provide and
the constraints under which it must operate.
• We don’t expect to see any level of detail, or what exactly the
system will do, It’s more of generic requirements.
• It’s usually written in a natural language and supplied by
diagrams.
System Requirements
• The system requirements mean a more detailed description of
the system services and the operational constraints such as
how the system will be used and development constraints
such as the programming languages.
• This level of detail is needed by those who are involved in
the system development, like engineers, system architects,
testers, etc.
Functional & Non-Functional Requirements
• The software requirements are classified into functional
requirements and non-functional requirements.
Functional Requirements
• It covers the main functions that should be provided by the
system.
• When expressed as user requirements, they are usually
described in an abstract way.
• However, more specific functional system requirements
describe the system functions, its inputs, processing; how it’s
going to react to a particular input, and what’s the expected
output.
Cont’d…
Non-Functional Requirements
• These are the constraints on the functions provided by the
system.
• The constraints, like how many processes the system can
handle (performance), what are the (security) issues the
system needs to take care of.
• The rate of failure (reliability), what are the languages and
tools that will be used (development), what are rules you
need to follow to ensure the system operates within the law
of the organization (legislative).
Cont’d…
❑Non-functional requirements are often critical than
individual functional requirements.
• Users can usually find ways to work around a system
function that doesn’t really meet their needs.
• However, failing to meet a non-functional requirement can
mean that the whole system is unusable.
➢For example, if an aircraft doesn’t mean meet its reliability
requirements, it won’t be safe for operation, or if an
embedded control system fails to meet its performance
requirements, the control functions won’t operate correctly.
What is Requirements Engineering (RE) ?
How the customer How the project How the System How the programmer How the business
explained it leader understood it Analyst designed it wrote it Consultant described it
How the project was What operations How the customer How it was supported What the customer
documented installed was billed really need
Cont’d…
❑Requirements engineering is a process of gathering and
defining what services should be provided by the system.
▪ It focuses on assessing if the system is useful to the business
(feasibility study), discovering requirements (elicitation and
analysis), converting these requirements into some standard
format (specification), and checking that the requirements
define the system that the customer wants (validation).
❑Thus, requirement engineering is the disciplined application
of proven principles, methods, tools, and notation to describe
a proposed system's intended behavior and its associated
constraints.
Cont’d…
• In practice, requirements engineering isn’t sequential
process, it’s an iterative process in which activities are
interleaved.
• For example, you iterate first on the user requirements;
elicitation, specification, and validation, and repeat the same
steps for the system requirements.
❑Early in the process, most effort will be spent on
understanding high-level business and user requirements.
• Later in the process, more efforts will be spent on elicitation
and understanding detailed system requirements.
Requirements Engineering Process
Types of Feasibility:
I. Technical Feasibility -it evaluates the current technologies, which are
needed to accomplish customer requirements within the time and budget.
II. Operational Feasibility - it assesses the range in which the required
software performs a series of levels to solve business problems and
customer requirements.
III. Economic Feasibility - it decides whether the necessary software can
generate financial profits for an organization.
Cont’d…
2. Requirement Elicitation and Analysis
• The activity of generating the requirements of a system from
users, customers, and other stakeholders.
• This is also known as the gathering of requirements.
• Here, requirements are identified with the help of customers
and existing systems processes, if available.
• Analysis of requirements starts with requirement elicitation.
• The requirements are analyzed to identify inconsistencies,
defects, omission, etc.
• We describe requirements in terms of relationships and also
resolve conflicts if any.
Cont’d…
Problems of Elicitation and Analysis
• Getting all, and only, the right people involved is difficult.
• Stakeholders often don't know what they want.
• Stakeholders express requirements in their own terms.
• Stakeholders may have conflicting requirements.
• Requirement may change during the analysis process.
• Organizational and political factors may influence system
requirements.
Cont’d…
❑The requirements elicitation and analysis has 4 main
process.
• We typically start by gathering the requirements, this could
be done through a general discussion or interviews with
your stakeholders, also it may involve some graphical
notation.
• Then you organize the related requirements into sub-
components and prioritize them, and finally, you refine
them by removing any ambiguous requirements that may
arise from some conflicts.
Cont’d…
Registration
Bus SMS
Package
SMS Mela Send SMS
Check
Balance
Level-0 Diagram of SMS mela API
Level-1 Diagram (Buy/add SMS)
Data Dictionary
• Data dictionary is the centralized collection of information about data.
• It stores meaning and origin of data, its relationship with other data,
data format for usage, etc.
• The data is referenced via data dictionary while designing and
implementing software.
• Data dictionary removes any chances of ambiguity.
Cont’d...
• Data Flow
• Data Structure
• Data Elements
• Data Stores
• Data Processing
53
Cont’d...
Example
• Address = House No + (Street / Area) + City + State
• Course ID = Course Number + Course Name + Course Level +
Course Grades
55
ERD
• Known as Entity Relationship Diagram
• Entity
• Relationship
• Attributes
ERD Example
60
Thank you !
?
DMIoT, School of Computing
Software Engineering Academic Program
3
Cont’d...
▪ Software project management is an essential part of software
engineering.
▪ Projects need to be managed because professional software
engineering is always subject to organizational budget and schedule
constraints.
▪ The success criteria for project management obviously vary from
project to project but, for most projects, important goals are:
✓Deliver the software to the customer at the agreed time.
✓Keep overall costs within budget.
✓Deliver software that meets the customer’s expectations.
✓Maintain a happy and well-functioning development team.
4
Cont’d...
Life Cycle and Project Management
▪ When a life cycle model is followed project management is
easier.
• For example: The project manager can at any time fairly
accurately tell,
✓ at which stage (e.g., design, code, test, etc.) of the
project is.
✓ How much time would it take to complete
5
Cont’d...
Project Management Without a Life Cycle Model
▪ It becomes very difficult to track the progress of the
project:
• The project manager would have to depend on the
guesses of the team members.
▪ This usually leads to a problem:
• known as the 99% complete syndrome.
6
Software Project
▪ It is the complete process of software development from requirement
gathering to testing and maintenance, carried out according to the
execution methodologies, in a specified period of time to achieve
intended software product.
▪ A set of activities undertaken within a defined time period in order to
meet a specific set of goals/objectives within a budget.
❑ Projects are different from standard business operational activities as
they:
✓Are unique in nature: they do not involve repetitive processes.
• Every project undertaken is different from the last, whereas
operational activities often involve undertaking repetitive (identical)
processes
✓ Have a defined timescale: projects have a clearly specified start and
end date within which the deliverables must be produced to meet a
specified customer requirement
7
Cont’d...
✓Have an approved budget: projects are allocated a level of financial
expenditure within which the deliverables must be produced to meet a
specified customer requirement
✓Have limited resources: at the start of a project, an agreed amount of
labor, equipment and materials is allocated to the project
✓Involve an element of risk: projects entail a level of uncertainty and
therefore carry business risk.
✓Achieve beneficial change: the purpose of a project, typically, is to
improve an organization through the implementation of business
change.
8
Cont’d...
❖A project generally exhibits most of the following conditions:
✓ It is finite
✓ Usually complex
✓ Non-repetitive
✓ Requires resources
9
Cont’d...
❖The image below shows triple constraints for software projects.
❖It is an essential part of software organization to deliver quality
product, keeping the cost within client’s budget constrain and
deliver the project as per scheduled.
10
Project Stakeholders
❑Project stakeholders are individuals and organizations that are
actively involved in the project.
▪ Key Stakeholders include:
✓ Project manager: the individual responsible for managing the
project.
✓ Customer: the individual or organization that will use the
project's product or service.
✓ Project team members: the group that is performing the work of
the project.
✓ Sponsor: the individual or group that provides the financial
resources for the project.
11
Project Planning
▪ Carried out before development starts.
▪ The project plan guides execution
▪ Key outputs include:
✓ A work breakdown structure (WBS)
✓ A project schedule, in the form of a Gantt chart with all
dependencies and resources entered
✓ A list of prioritized risks
12
Cont’d...
❑Important activities:
✓ Estimation: Effort, cost, resource, and project duration
✓ Scheduling
✓ Staffing
✓ Risk management: identification, analysis, and abatement
procedures
✓ Miscellaneous plans: quality assurance plan, configuration
management plan, etc.
13
Types of plan
▪ Software development plan: the central plan, which describes how
the system will be developed.
✓ Specifies the order of work to be carried out, resources,
responsibilities, and so on.
▪ Quality assurance plan: specifies the quality procedures & standards
to be used.
▪ Validation plan: defines how a client will validate the system that has
been developed.
▪ Configuration management plan: defines how the system will be
configured and installed.
▪ Maintenance plan: defines how the system will be maintained.
▪ Staff development plan: describes how the skills of the participants
will be developed.
14
Cont’d…
Development plan should contain:
1. Introduction: brief introduction to project
2. Project organization: intro to organizations, people, and their roles
3. Risk Analysis: what are the key risks to the project?
4. Hardware and software resources: what Hardware and Software
resources will be required for the project and when
5. Work breakdown: the project divided into activities, milestones,
deliverables, dependencies between tasks etc.
6. Project schedule: actual time required - allocation of dates
7. Reporting and progress measurement: mechanisms to monitor
progress.
15
Organization of SPMP Document
▪ Introduction:
• (Objectives,Major Functions,Performance Issues,Management and
Technical Constraints)
▪ Project Estimates
• (Historical Data,Estimation Techniques,Effort, Cost, and Project
Duration Estimates)
▪ Project Resources Plan
• (People,Hardware and Software,Special Resources)
▪ Schedules
• (Work Breakdown Structure,Task Network, Gantt Chart
Representation,PERT Chart Representation)
16
Cont’d...
▪ Risk Management Plan
• (Risk Analysis,Risk Identification,Risk Estimation,Abatement
Procedures)
▪ Project Tracking and Control Plan
▪ Miscellaneous Plans
• (Quality Assurance)
17
In What Ways Management of Software Projects Differ
from Management of Engineering Systems?
▪ Intangible:
✓ Software is invisible till it is ready and runs
▪ Large Change Impact:
✓ A small change request can have terrible impact
✓ Change is the rule rather than exception
▪ Intellectual work
18
Why Software Project Management is Hard?
▪ Management of intellectual and complex work
▪ It is hard to manage anything that you cannot see
▪ Changing customer requirements
▪ Manpower turnover
19
Common Mistakes why Projects FAIL
▪ Project managers begin without knowing what the project is.
▪ Project managers do not have a plan.
▪ Project managers do not break the project down to manageable
pieces.
20
What is management?
❑Management involves the following activities:
✓Planning: deciding what is to be done, Estimate and schedule
resources
✓Organizing: making arrangements, Who does what
✓Staffing: selecting the right people for the job, Recruiting and
motivating personnel
✓Directing: giving instructions, Ensure team acts as a whole
✓Monitoring: checking on progress, revising plans
✓Controlling: taking action to remedy hold-ups
✓Innovating: coming up with solutions when problems emerge
✓Representing: liaising with clients, users, developers and other
stakeholders
21
Responsibility of project managers
❖Project proposal writing,
❖ Scheduling,
❖Project staffing,
❖Risk management,
❖Managerial
22 report writing and presentations, etc.
Setting objectives
▪ Answering the question ‘What do we have to do to have a
success?
❑Objectives should be SMART
✓S -specific, that is, concrete and well-defined
✓M -measurable, that is, satisfaction of the objective can be
objectively judged
✓A -achievable, that is, it is within the power of the individual or
group concerned to meet the target
✓R -relevant, the objective must be relevant to the true purpose of the
project
✓T -time constrained: there is defined point in time by which the
objective should be achieved
23
SOFTWARE SCOPE
▪ Software Scope is defined in collaboration with the User
Management by asking the following Questions on the
following areas:-
✓ Software Context,
✓ Information Objectives
24
Project Estimation
▪ For an effective management, accurate estimation of
various measures is a must.
▪ With the correct estimation, managers can manage and
control the project more efficiently and effectively.
▪ Project estimation may involve the following:
• Software size estimation
• Effort estimation
• Time estimation
• Cost estimation
25
Software size estimation
▪ Software size may be estimated either in terms of KLOC
(Kilo Line of Code) or by calculating number of function
points in the software.
Effort estimation
▪ The manager estimates efforts in terms of personnel
requirement and man-hour required to produce the
software.
▪ For effort estimation software size should be known.
26
Time estimation
▪ Once size and efforts are estimated, the time required to
produce the software can be estimated.
▪ Software tasks are divided into smaller tasks, activities or
events by Work Breakdown Structure (WBS).
▪ The tasks are scheduled on day-to-day basis or in calendar
months.
27
Cost estimation
▪ This might be considered as the most difficult of all because it
depends on more elements than any of the previous ones.
▪ For estimating project cost, it is required to consider:
• Size of the software
• Software quality
• Hardware
• Additional software or tools, licenses etc.
• Skilled personnel with task-specific skills
• Travel involved
• Communication
• Training and support 28
Estimation techniques
• Expert judgement
• Estimation by analogy
• Parkinson's Law
• Pricing to win
• Algorithmic cost modelling
• Top-down and bottom up
29
1. Expert judgement
• One or more experts in both software development and the
application domain use their experience to predict software
costs.
• Process iterates until some consensus is reached.
▪ Advantages:
• Relatively cheap estimation method.
• Can be accurate if experts have direct experience of
similar systems
▪ Disadvantages:
• Very inaccurate if there are no experts!
30
2. Estimation by analogy
▪ The cost of a project is computed by comparing the project
to a similar project in the same application domain.
• ➔ software size, effort, or cost of a comparable project
from the past
▪ Advantages:
• Accurate if project data available
▪ Disadvantages:
• Impossible if no comparable project has been tackled.
Needs systematically maintained cost database
31
3. Pricing to win
▪ The project costs whatever the customer has to
spend on it
▪ Advantages:
• You get the contract
▪ Disadvantages:
• The probability that the customer gets the system he or
she wants is small. Costs do not accurately reflect the
work required.
32
4. Parkinson's Law
▪ The project costs whatever resources are available
Advantages:
• it helps to distribute the project development time among
different activities in a balanced manner without any
additional overspend
Disadvantages:
• System is usually unfinished
33
5. Bottom-up versus top-down
❑ Bottom-up : Start at the component level and estimate the effort
required for each component.
▪ Add these efforts to reach a final estimate
✓ use when no past project data
✓ identify all tasks that have to be done – so quite time-consuming
✓ use when you have no data about similar past projects
❑ Top-down : Start at the system level and assess the overall system
functionality and how this is delivered through sub-systems.
✓ produce overall estimate based on project cost drivers
✓ based on past project data
✓ divide overall estimate between jobs to be done
34
COnstructive COst Model (COCOMO)
▪ Actually three different models :
1. THE BASIC MODEL: a gross estimator that does not take
individual complexity characteristics into account.
2. THE INTERMEDIATE MODEL: considers 15 factors that
are called “cost driver attributes”
3. THE DETAILED MODEL: introduces “phase sensitive
effort multipliers” that enable the estimate to be modified
and updated as the project continues.
35
COCOMO : Basic Model
36
Cont’d...
▪ Organic mode (application programs) : relatively small,
simple SW projects (e.g. Thermal analysis program)
▪ Semi-detached mode ( utility programs): an
intermediate (in size and complexity) SW projects with
mixed experience, mixed requirements
▪ Embedded mode (system programs) – developed within
tight HW, SW and operational constraints (flight control
SW for aircraft)
37
Cont’d…
Example:1
▪ Assume that the size of semi-detached software product has been
estimated to be 33,300 lines of source code.
▪ Determine the effort required to develop the software product and
the nominal development time.
Solution:
• The estimated number of lines of code is : 33.3 KLOC
Project type is : semi-detached
Therefore,
pm = 3.0* KLOC1.12 = 3.0 (33.3) 1.12 = 152 person-months
To compute development time :
tdev = 2.5 pm0.35 = 2.5 (152)0.35 = 14.5 months
38
Cont’d…
Example:2
▪ Assume that the size of an organic type software product has been
estimated to be 32,000 lines of source code.
▪ Assume that the average salary of software engineers be ETB. 15,000
per month.
▪ Determine the effort required to develop the software product and the
nominal development time.
Solution
• From the basic COCOMO estimation formula for organic software:
Effort = 2.4 х (32)1.05 = 91 PM
Nominal development time = 2.5 х (91)0.38 = 14 months
Cost required to develop the product = 14 х 15,000 = 210,000 Birr
39
COCOMO: Intermediate Model
▪ There are 15 different attributes, called cost driver attributes,
that determine the multiplying factors.
▪ These factors depend on product, computer, personnel, and
technology (project) attributes.
▪ Each cost driver has a rating scale (very low, low, nominal,
high, very high and extra high ).
Software Project a b
41
Steps
1) Determine the initial estimate (nominal estimate) of the
development effort from the estimate of thousands of
lines of source code (KLOC).
→ Ei = a * (KLOC) b
2) Determine a set of 15 multiplying factors from different
attributes of the project, and compute the effort
adjustment factor (EAF).
→ EAF = product of all the 15 multiplying factors.
3) Compute the total effort by multiplying the initial effort
with the effort adjustment factor.
→ Total effort = Ei * EAF
42
Cont’d…
• Assume 4 modules are to be contained in a project.
• Assume the project is organic.
• The modules are
M1 = 0.5 KLOC, M2 = 0.5 KLOC, M3 = 0.3 KLOC, and M4 = 0.7
KLOC.
❑And the multiplying factors are:
✓RELY, required reliability is …. very high
✓CPLX, product complexity is…. high
✓STOR, main storage constraint is … high
✓Others are … nominal
❑Calculate: i) The initial effort
ii) The total effort 43
Cont’d…
Solution:
• size = M1 + M2 + M3 + M4
= 2 KLOC
• For organic project a = 3.2, b = 1.05
Ei = a * (size) b
= 6.72
• Total Effort = Ei * EAF; Where
EAF =1.40 * 1.15 * 1.06 * 1 = 1.71
Total Effort =6.72 *1.71
= 11.5 PM 44
Exercise
❑ Suppose a system for office automation has to be designed.
From the requirements, it is clear that there will be four major
modules in the system: data entry, data update, query, and report
generator. It is also clear from the requirements that this project
will fall in the organic category. The sizes for the different
modules and the overall system are estimated to be:
• Data Entry 0.6 KLOC
• Data Update 0.6 KLOC
• Query 0.8 KLOC
• Reports 1.0 KLOC
• TOTAL 3.0 KLOC
45
Cont’d...
▪ From the requirements, the ratings of the different cost
driver attributes(multiplier) are assessed
• Complexity High 1.15
• Storage High 1.06
• Experience Low 1.13
• Programmer Capability Low 1.17.
▪ Based on this value what is the estimated effort by person
month
• Ei =? a * KLOCb
• EAF= ?
• E= Ei * EAF
46
Project Scheduling and Staffing
▪ As well as effort estimation, managers must estimate the
calendar time required to complete a project and when staff
will be required.
▪ Once the effort is estimated, various schedules (or project
duration can be developed.
▪ For example, for a project whose effort estimate is 56
person-months, schedule of 8 months is possible with 7
people.
▪ A schedule of 7 months with 8 people is also possible, as is
a schedule of approximately 9 months with 6 people.
▪ The time required is independent of the number of people
working on the project➔ not fully interchangeable 47
PROJECT SCHEDULING
• Project-task scheduling is an important project planning activity.
• It involves deciding which tasks would be taken up when.
• In order to schedule the project activities, a software project manager
needs to do the following:
1. Identify all the tasks needed to complete the project.
2. Break down large tasks into small activities.
3. Determine the dependency among different activities.
4. Establish the most likely estimates for the time durations necessary to
complete the activities.
5. Allocate resources to activities.
6. Plan the starting and ending dates for various activities.
7. Determine the critical path.
• A critical path is the chain of activities that determines the duration of the
project. 48
Gantt Chart
• Gantt chart was devised by Henry Gantt (1917).
• It represents project schedule with respect to time periods.
• It is a horizontal bar chart with bars representing activities and time
scheduled for the project activities.
49
Why Are Projects Late?
✓an unrealistic deadline established by someone outside the
software development group
✓ changing customer requirements that are not reflected in
schedule changes;
✓predictable and/or unpredictable risks that were not considered
when the project commenced;
✓technical difficulties that could not have been foreseen in
advance
✓human difficulties that could not have been foreseen in advance;
✓miscommunication among project staff that results in delays;
✓a failure by project management to recognize that the project is
falling behind schedule and a lack of action to correct the
problem
50
Staffing( team structure)
▪ Detailed scheduling is done only after actual assignment of people has
been done.
▪ project's team is led by a project manager, who does the planning and
task assignment.
▪ is responsible for all major technical decisions of the project.
▪ The teams are structured hierarchically, consists of analyzer,
programmers, testers, a configuration controller, quality controller, and
possibly a librarian for documentation.
▪ Generally the team structure is determined by
• The Management style of the organization;
• The number of people, who will populate the team, and their skill
levels
• The overall problem difficulties.
51
Cont’d...
▪ Project Factors that should be considered when Planning the
structure of Teams.
1. The difficulty of the ‘Problem” to be solved
2. The ‘’Size’’ of the resultant programs in terms of Line Code
(LOC) or Function Points (FP)
3. The “Time” that the Team will stay together (Team Lifetime)
4. The degree to which the problem can be modularised.
5. The required Quality and Reliability of the System to be built
6. The rigidity of the Delivery Date
7. The degree of Sociability (Communication) required for the
Project.
52
Cont’d...
▪ Group communication: which affects the progress of the
project
❑Several factors affect communications in a group
✓ Status of the group members
• Higher-status members tend to dominate communications
with lower status members
✓Personalities in the group
• If there are too many people in the group who are task-
oriented, this may inhibit effective communications (all are
concentrated on technical issues and nobody discusses
problems) 53
Cont’d...
✓Sexual composition of the group
• Studies have shown that men and women prefer to work
in mixed-sex groups.
• Within these groups, communications are better than in
single-sex groups
✓ Communication channels
• Communications are more effective if anyone in a
group can easily contact anyone else
54
Team Structure
• We consider only three team structures:
• Democratic,
• Chief programmer,
• Mixed team
55
Chief programmer teams
• Fred Brooks was concerned about the need to maintain ‘design
consistency’ in large software systems
• Appointment of key programmers, Chief Programmers, with
responsibilities for defining requirements, designing, writing and test
software code
• Assisted by a support team: co-pilot – shared coding, editor who
made typed in new or changed code, program clerk who wrote and
maintained documentation and tester
• Problem – finding staff capable of the chief programmer role
56
Democratic Team
• Does not enforce any formal team hierarchy.
• Decisions are taken based on discussions,
• any member is free to discuss with any other member
• Since a lot of debate and discussions among the team
members takes place,
• for large team sizes significant overhead is incurred
57
Mixed Control Team Structure
• Incorporates both hierarchical reporting and democratic
set up.
58
Risk management
• The planning for risk includes these steps:
• Risk identification – what risks might there be?
• Risk analysis and prioritization – which are the most
serious risks?
• Risk planning – what are we going to do about them?
• Risk monitoring – what is the current state of the risk?
59
Boehm’s top 10 development risks
Risk Risk reduction techniques
Software Design
Software Design
▪ Software design deals with transforming the customer requirements,
as described in the SRS document, into a form (a set of documents)
that is suitable for implementation in a programming language.
A) Architectural Design
• At this level, the designers get the idea of proposed solution domain.
B) High-level Design
C) Detailed Design
➢ Command Prompt
• It is text-based notifier that is mostly shows the context in which the user is working.
➢ Cursor
• It is a small horizontal line or a vertical bar of the height of line, to represent position
of character while typing.
➢ Command
Logical Cohesion
• Stamp coupling
Temporal Cohesion
• Control coupling
Procedural Cohesion
• Common coupling
Communicational Cohesion
• Content coupling
Sequential Cohesion
Functional Cohesion
DMIoT, School of Computing
Software Engineering Academic Program
Coding
Coding
• Coding is the process of transforming the design of a system into a
computer language format.
• This coding phase of software development is concerned with software
translating design specification into the source code.
• It is necessary to write source code & internal documentation so that
conformance of the code to its specification can be easily verified.
• Coding is done by the coder or programmers who are independent
people than the designer.
• The goal is not to reduce the effort and cost of the coding phase, but to
cut to the cost of a later stage.
• The cost of testing and maintenance can be significantly reduced with
efficient coding.
Goals of Coding
1. To translate the design of system into a computer language format:
3. Rules for limiting the use of global: These rules file what types of
data can be declared global and what cannot.
• The goal should be correctness and economy (the software should not
make excessive use of time or space)
Cont’d…
High quality code has the following characteristics:
• Maintainability (easy to find and fix bugs, easy to add new features)
• Some times there are some complains by some people ➔ “limits creativity”,
this works if the system is developed in one person like “hacking”
• But dealing with large system that involves number of engineers, there
should be some standard which creates:
• Good communication
• Better understanding
• Engineers should be creative with algorithms and data structures, rather than
being “creative” with the coding style and language tricks.
Cont’d…
• General coding guidelines provide the programmer with a set of the
best methods which can be used to make programs more comfortable
to read and maintain.
• Most of the examples use the C language syntax, but the guidelines can
be tested to all languages.
• The following are some representative coding guidelines recommended
by many software development organizations.
Cont’d…
Cont’d…
1. Line Length: It is considered a good practice to keep the length of
source code lines at or below 80 characters.
• Lines longer than this may not be visible properly on some terminals
and tools. Some printers will truncate lines longer than 80 columns.
2. Spacing: The appropriate use of spaces within a line of code can
improve readability.
3. The code should be well-documented: As a rule of thumb, there
must be at least one comment line on the average for every three-
source line.
Cont’d…
4. The length of any function should not exceed 10 source lines:
• A very lengthy function is generally very difficult to understand as it
possibly carries out many various functions.
• For the same reason, lengthy functions are possible to have a
disproportionately larger number of bugs.
5. Do not use goto statements: Use of goto statements makes a
program unstructured and very tough to understand.
6. Inline Comments: Inline comments promote readability.
7. Error Messages: Error handling is an essential aspect of computer
programming.
• This does not only include adding the necessary logic to test for and
handle errors but also involves making error messages meaningful.
Cont’d…
Programming Style
• Programming style refers to the technique used in writing the source
code for a computer program.
• Most programming styles are designed to help programmers quickly
read and understands the program as well as avoid making errors.
(Older programming styles also focused on conserving screen space.)
• A good coding style can overcome the many deficiencies of a first
programming language, while poor style can defeat the intent of an
excellent language.
• The goal of good programming style is to provide understandable,
straightforward, elegant code.
• The programming style used in a various program may be derived from
the coding standards or code conventions of a company or other
computing organization, as well as the preferences of the actual
programmer.
Cont’d…
Some general rules or guidelines in respect of programming style:
Cont’d…
1. Clarity and simplicity of Expression: The programs should be
designed in such a manner so that the objectives of the program is clear.
2. Naming: In a program, you are required to name the module,
processes, and variable, and so on.
• Care should be taken that the naming style should not be cryptic and
non-representative.
For Example: a = 3.14 * r * r
area of circle = 3.14 * radius * radius;
3. Control Constructs: It is desirable that as much as a possible single
entry and single exit constructs used.
4. Information hiding: The information secure in the data structures
should be hidden from the rest of the system where possible.
• Information hiding can decrease the coupling between modules and
make the system more maintainable.
Cont’d…
5. Nesting: Deep nesting of loops and conditions greatly harm the static
and dynamic behavior of a program.
• It also becomes difficult to understand the program logic, so it is
desirable to avoid deep nesting.
6. User-defined types: Make heavy use of user-defined data types like
enum, class, structure, and union. These data types make your program
code easy to write and easy to understand.
7. Module size: The module size should be uniform. The size of the
module should not be too big or too small. If the module size is too large,
it is not generally functionally cohesive.
• If the module size is too small, it leads to unnecessary overheads.
Cont’d…
8. Module Interface: A module with a complex interface should be
carefully examined.
9. Side-effects: When a module is invoked, it sometimes has a side effect
of modifying the program state.
• Such side-effect should be avoided where as possible.
Coding Process
• Before starting coding determine the approach, top-down or bottom-up
• assign modules to developer, they use some process to develop the code.