Chapter 1.a Introduction Combined 2024
Chapter 1.a Introduction Combined 2024
A:
Introduction
BER2043 Software Engineering
Student Learning Outcome
• Describe the flow of Software engineering
• Define Software Engineering Principles
• Discuss the Software cycle time.
• Learn about types of project management struture
• Learn about basics of computer based system engineering
Introduction: Software is Complex
• Complex complicated
Nailing Painting
Setting posts Cutting wood
[ 2 time units for unpainted; [ 5 time units for uncut wood;
[ 3 time units ] [ 2 time units ]
3 time units otherwise ] 4 time units otherwise ]
Customer
Customer
Programmer
System-to-be
(includes hardware)
Problem Domain
Software-to-be
User
Communication link
1
4 2
7 5 3
8 6
0 9
Bank’s
remote
ATM machine
datacenter
Bank
customer
Problem-solving Strategy
Divide-and-conquer:
• Identify logical parts of the system that each solves a part of the
problem
• Easiest done with the help of a domain expert who already knows
the steps in the process (“how it is currently done”)
• Result:
A Model of the Problem Domain
(or “domain model”)
How ATM Machine Might Work
Domain Model
Transaction
How may I record
help you? Cash
Bookkeeper
Speakerphone Safe
Safe keeper
Phone
Window clerk
Datacenter
liaison
Dispenser
Bank’s
remote
datacenter
Customer
: How ATM Machine Works
Cartoon Strip
A Enter B C Verify
account
D
your PIN
XYZ
Verify
this
account
Withdraw Dispense
H Dispensing!
$60 $60
Please take
your cash
Software Engineering Blueprints
Specifying software problems and solutions is like cartoon strip
writing
Unfortunately, most of us are not artists, so we will use something
less exciting:
UML symbols
However …
Second Law of Software Engineering
Design
Implementation
Testing
Waterfall
method Deployment &
Maintenance
doSomething()
doSomethingElse()
• Actors
Agents external to the system that interact with it
• Concepts/ Objects
Agents working inside the system to make it function
• Use Cases
Scenarios for using the system
ATM: Gallery of Players
1
4 2
7 5 3
8 6
0 9
1
4 2
7 5 3 1
8 6 4 2
0 9 7 5 63
8
0 9
D E XYZ
Please take
your cash withdrew
$60
1
4 2
7 5 63
8
0 9
Collecting
cash …
Acknowledged
How ATM Machine Might Works (1)
Domain Model
Transaction
How may I record
help you? Cash
Bookkeeper
Speakerphone Safe
Safe keeper
Phone
Window clerk
Datacenter
liaison
Dispenser
Bank’s
remote
datacenter
Customer
How ATM Machine Works (2)
Domain Model (2)
Solution
Alternative modification
solution
Transaction
How may I record
help you?
Bookkeeper
Speakerphone
Draftsman
Window clerk
Dispenser
Customer
How ATM Machine Works (3)
Domain Model (3)
Alternative Solution
modification
solution
Transaction
How may I record
help you?
Bookkeeper
Speakerphone
Courier
Window clerk
Dispenser
Remote
bank
Customer
Which solution is the best or even feasible?
Software Engineering
Principles
Principles form the basis of methods, techniques, methodologies and tools
Seven important principles that may be used in all phases of software development
Apply to the software product as well as the development process
Key principles
• Rigor and formality
• Separation of concerns
• Modularity
• Abstraction
• Anticipation of change
• Generality
• Incrementally
Rigor and formality
• Software engineering is a creative design activity, BUT It must be practiced
systematically
• Rigor is the quality or state of exactness, cautious and strictness. It is a necessary
complement to creativity that increases our confidence in our developments
• Formality is rigor at the highest degree. Often verified with mathematical or logical
rules.
Examples: Rigor and formality
• Product:
• – Formal-Mathematical analysis of program correctness
• – Rigorous-Systematic test data derivation
• • Process:
• – Rigorous- detailed documentation of each development step in waterfall model
• – Formal- automated transformational process to derive program from formal specifications
Separation of concerns
• To dominate complexity, separate the issues to concentrate on one at a time
• – "Divide & conquer"
• Supports parallelization of efforts and separation of responsibilities
Examples:
• Process: Go through phases one after the other as in waterfall Model
• –Do separation of concerns by separating activities with respect to time
• – Product: Keep different types of product requirements separate
• –Functionality discussed separately from the performance constraints
Modularity
• A complex system may be divided into simpler pieces called modules
• • A system that is composed of modules is called modular
• • Supports application of separation of concerns
• – when dealing with a module we can ignore details of other modules
Modularity
Modularity: Cohesion and coupling
• Each module should be highly cohesive
– understandable separately
An Example
Abstraction
• Identify the important aspects of a phenomenon and ignore its details
• Example: the user interface of a watch (its buttons) abstracts from the watch's internals
for the purpose of setting time; other abstractions needed to support repair
Anticipation of change
• Ability to support software evolution requires anticipating
• potential future changes
• –It is the basis for software evolvability
Generality
• While solving a problem, try to discover if it is an instance of a more general problem
whose solution can be reused in other cases
• Examples (process)
– deliver subsets of a system early to get early feedback from expected users, then add
new features incrementally
Yogi Berra
Waterfall Model
• Requirements – defines needed
information, function, behavior,
performance and interfaces.
• Design – data structures, software
architecture, interface
representations, algorithmic details.
• Implementation – source code,
database, user documentation.
Waterfall Strengths
• Easy to understand, easy to use
• Provides structure to inexperienced staff
• Milestones are well understood
• Sets requirements stability
• Good for management control (plan, staff, track)
• Works well when quality is more important than cost or schedule
Waterfall Deficiencies
• All requirements must be known upfront
• Deliverables created for each phase are considered frozen – inhibits flexibility
• Can give a false impression of progress
• Does not reflect problem-solving nature of software development – iterations of
phases
• Integration is one big bang at the end
• Little opportunity for customer to preview the system (until it may be too late)
When to use the Waterfall Model
• Requirements are very well known
• Product definition is stable
• Technology is understood
• New version of an existing product
• Porting an existing product to a new platform.
V-Shaped SDLC Model
• A variant of the Waterfall
that emphasizes the
verification and validation of
the product.
• Testing of the product is
planned in parallel with a
corresponding phase of
development
V-Shaped Steps
• Production, operation and maintenance –
• Project and Requirements Planning –
provide for enhancement and corrections
allocate resources
• System and acceptance testing – check the entire
• Product Requirements and software system in its environment
specification of the software system • Integration and Testing – check that modules
interconnect correctly
• Architecture or High-Level Design –
• Development roles
• Specification, design and construction of subsystems. Examples: Analyst, system architect, implementor.
• Consultant roles
• Support in areas where the project participants lack expertise. Examples: End user, client, application
domain specialist ( problem domain), technical consultant (solution domain).
• Promoter roles
• Promote change through an organization.
Power Promoter
• •Also called executive champion
• •Pushes the change through the existing organizational hierarchy.
• not necessarily at the top of the organization, but must have protection from top level
management, otherwise project opponents might be able to prevent the success of the
project.
• •Tasks:
• constantly identify difficulties, resolve issues, and communicate with the project
members, especially with the developers.
• •Example at project level:Project Manager.
• •Example at corporate level:Chief Executive Officer (CEO).
Knowledge Promoter
• •Also called the technologist,
• •Promotes change arising in the application domain or the solution domain. Usually
associated with the power promoter.
• •Tasks:Acquire information iteratively, understand the benefits and limitations of new
technologies, and argue its adoption with the other developers.
• •Example at project level:System architect.
• •When?
• The more people on the project, the more need for a formal structure
• Customer might insist that the test team be independent from the design team
• Project manager insists on a previously successful structure
Comparison of Management Structures
• •Project-based structures
• “Reports”, “Decides” and “Communicates-With” are different associations
• Cut down on bureaucracy reduces development time
• Decisions are expected to be made at each level
• Hard to manage
• •When?
•One-to-One
Ideal but often not worth to be called a project
•Many-to-Few
Each project member assumes several roles ("hats")
Danger of overcommittment
Need for load balancing
•Many-to-"Too-Many"
Some people don't have significant roles
Bystanders
Loosing touch with project
Project Roles: Coach
• •Listen to gripes from individual teams
• •Assign presentations (in-class project meetings, client review, client acceptance test)
• PERT chart, resource table and GANTT chart showing work packages
• Enter project plan into project management tool
• •Make project plan available to management
• •Collect agendas
• •Task Timeline
• Gantt Charts: Shows project activities and tasks in parallel. Enables the project manager to understand
which tasks can be performed concurrently.
• •Critical Path
• The path in a project plan for which the slack time at each task is zero.
• Determined by pre-requisite tasks, task duration and longest path in the schedule.
• The critical path has no margin for error when performing the tasks
(activities) along its route.
Risk Management
• Risk:Members in key roles drop the course.
• Contingency: Roles are assigned to somebody else. Functionality of the system is
renegotiated with the client.
• •Risk:The project is falling behind schedule.
• •Risk:One subsystem does not provide the functionality needed by another subsystem.
• Contingency: ?
• •Risk:Ibuttonruns only under JDK 1.2
• Contingency: ?
How to be a good project planner?
• •Establish a project plan
• Start with the plan based on your experience with the last project(s)
• •If
project goals are unclear and complex use team-based project
management. In this case
• Avoid GANTT charts and PERT charts for projects with changing requirements
• Don’t look too far into the future
•A system may include software, mechanical, electrical and electronic hardware and be operated by
people.
•The proportion of software in systems is increasing. Software-driven general purpose electronics is replacing special-purpose
systems
•Software is (unfortunately) seen as a problem in systems engineering. Many large system projects have been delayed because of
software problems
System Engineer Task
• •Design and creation of a complex system and efficient system
• •They can therefore only be assessed and measured once the components have been integrated into a
system
• These appear when all the parts of a system work together to achieve some
objective.
• •Software reliability measures may give a false picture of the system reliability
Hardware reliability
What is the probability of a hardware component failing and how long does it take to repair
that component?
Signal
Software reliability
How likely is it that a software component will produce an incorrect output. Software failure
is usually distinct from hardware failure in that software does not wear out.
Alarm
Operator reliability
How likely is it that the operator of a system will make an error?
Environment
Human and Organizational Factors
• •Process changes
• Does the system require changes to the work processes in the environment?
• •Job changes
• Does the system de-skill the users in an environment or cause them to change the way they
work?
• •Organisational changes