Softeng
Softeng
Softeng
meet the highest professional standards - Sends signals to a micro-pump to deliver the
possible. correct dose of insulin.
4. JUDGMENT - Software engineers shall maintain - Safety-critical system as low blood sugars can lead
integrity and independence in their professional to brain malfunctioning, coma and death; high-
judgment. blood sugar levels have long-term consequences
5. MANAGEMENT - Software engineering such as eye and kidney damage.
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. -
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.
Essential High-level requirements
Ethical Dilemmas
- The system shall be available to deliver insulin
Disagreement in principle with the policies of when required.
senior management. - The system shall perform reliably and deliver
Your employer acts in an unethical way and the correct amount of insulin to counteract the
releases a safety-critical system without current level of blood sugar.
finishing the testing of the system. - The system must therefore be designed and
Participation in the development of military implemented to ensure that the system always
weapons systems or nuclear systems meets these requirements.
Key Points
Software engineering is an engineering
discipline that is concerned with all aspects of
software production.
Essential software product attributes are
maintainability, dependability and security,
efficiency and acceptability.
The high-level activities of specification,
development, validation and evolution are part
of all software processes.
The fundamental notions of software
engineering are universally applicable to all
types of system development.
There are many different types of system and
each requires appropriate software engineering
tools and techniques for their development.
The fundamental ideas of software engineering
are applicable to all types of software system.
Software engineers have responsibilities to the
engineering profession and society. They should
not simply be concerned with technical issues.
Professional societies publish codes of conduct
which set out the standards of behaviour
expected of their members.
COMSCI 3100: SOFTWARE ENGINEERING
changes will be fairly limited during the design 3. More rapid delivery and deployment of useful
process. software to the customer is possible.
- Few business systems have stable requirements. - Customers are able to use and gain value from the
The waterfall model is mostly used for large systems software earlier than is possible with a waterfall
engineering projects where a system is developed process.
at several sites.
- In those circumstances, the plan-driven nature of Incremental Development Problems
the waterfall model helps coordinate the work. 1. The process is not visible.
- Managers need regular deliverables to measure
Incremental Development
progress. If systems are developed quickly, it is not
cost-effective to produce documents that reflect
every version of the system.
2. System structure tends to degrade as new
increments are added.
- Unless time and money is spent on refactoring to
improve the software, regular change tends to
corrupt its structure. Incorporating further
software changes becomes increasingly difficult
and costly.
Software Specification
The process of establishing what services are
required and the constraints on the system’s
operation and development.
Requirements engineering process
1. Feasibility study
a. Is it technically and financially feasible
to build the system?
2. Requirements elicitation and analysis Design Activities
a. What do the system stakeholders 1. Architectural design, where you identify the overall
require or expect from the system? structure of the system, the principal components
3. Requirements specification (sometimes called sub-systems or modules), their
a. Defining the requirements in detail relationships and how they are distributed.
4. Requirements validation 2. Interface design, where you define the interfaces
a. Checking the validity of the between system components.
requirements 3. Component design, where you take each system
component and design how it will operate.
The Requirements Engineering Process 4. Database design, where you design the system data
structures and how these are to be represented in a
database.
Software Validation
Verification and validation (V & V) is intended to
show that a system conforms to its specification
and meets the requirements of the system
customer.
Involves checking and review processes and system
testing.
Software Design and Implementation
System testing involves executing the system with
The process of converting the system specification test cases that are derived from the specification of
into an executable system. the real data to be processed by the system.
Software design Testing is the most commonly used V & V activity.
- Design a software structure that realises the
specification;
COMSCI 3100: SOFTWARE ENGINEERING
Software Evolution
LECTURE 2
Software is inherently flexible and can change.
As requirements change through changing business Coping with Change
circumstances, the software that supports the Change is inevitable in all large software projects
business must also evolve and change. - Business changes lead to new and changed
Although there has been a demarcation between system requirements
development and evolution (maintenance) this is - New technologies open up new possibilities
increasingly irrelevant as fewer and fewer systems for improving implementations
are completely new. - Changing platforms require application
changes
System Evolution
Change leads to rework so the costs of change
include both rework (e.g. re-analysing
requirements) as well as the costs of implementing
new functionality
Change tolerance, where the process is designed so - Error checking and recovery may not be
that changes can be accommodated at relatively included in the prototype;
low cost. - Focus on functional rather than non-
functional requirements such as
Software Prototyping reliability and security
A prototype is an initial version of a system used to
Throw-away prototypes
demonstrate concepts and try out design options.
A prototype can be used in: Prototypes should be discarded after
- The requirements engineering process to development as they are not a good basis for a
help with requirements elicitation and production system:
validation; o It may be impossible to tune the system
- In design processes to explore options and to meet non-functional requirements;
develop a UI design; o Prototypes are normally
- In the testing process to run back-to-back undocumented;
tests. o The prototype structure is usually
degraded through rapid change;
Benefits of Prototyping o The prototype probably will not meet
1. Improved system usability. normal organisational quality
2. A closer match to users’ real needs. standards.
3. Improved design quality.
Incremental delivery
4. Improved maintainability.
5. Reduced development effort Rather than deliver the system as a single
delivery, the development and delivery is
Process of Prototype Development broken down into increments with each
increment delivering part of the required
functionality.
User requirements are prioritised and the
highest priority requirements are included in
early increments.
Once the development of an increment is
started, the requirements are frozen though
requirements for later increments can continue
to evolve.
Key Points
Processes should include activities to cope with
change. This may involve a prototyping phase
that helps avoid poor decisions on requirements
and design.
Processes may be structured for iterative
development and delivery so that changes may
be made without disrupting the system as a
whole.
The Rational Unified Process is a modern
generic process model that is organized into
phases (inception, elaboration, construction
and transition) but separates activities
(requirements, analysis and design, etc.) from
these phases.
COMSCI 3100: SOFTWARE ENGINEERING
History of Agile
History: The Agile Manifesto.
Agile
It is not a methodology
Specific way of Developing Software
Not a Framework or Process
Agile is a set of Values and Principles
Following different practices from various
methodologies and developing specific tools the
teams should follow.
Guidelines on how to choose: Methods and
Procedure that will work best for the team.
COMSCI 3100: SOFTWARE ENGINEERING
We are uncovering better ways of developing - “Self-organizing teams choose how best
software by doing it and helping others do it. to accomplish their work, rather than
Through this work we have come to value: being directed by others outside the
Individuals and interactions over processes and team.” - from the Scrum Guide
tools 5. Constant feedback cycles and continuous
Working software over comprehensive improvement
documentation - Agile teams must define a feedback
Customer collaboration over contract loop. Simply mean informally gathering
negotiation information that the team can discuss
Responding to change over following a plan and use to improve their efforts.
That is, while there is value in the items on the Retrospective Meeting.
right, we value the items on the left more. 6. Constant feedback cycles and continuous
improvement
Agile Principles - Agile teams must define a feedback
loop. Keep it Simple and impersonal.
- Don’t wait for your process to break.
Keep learning and adapting.
7. Rapid responsiveness and swarming behavior
- Plan less, deliver more; Stop starting
and start finishing
- Swarming - the act of coming together
to solve a problem or get something
done quickly. Use swarming as a
planned activity not just on addressing
critical issues or key activity that needs
Being Agile to be done.
- Great teams don’t point fingers at
1. Highly Cohesive others or engage in blamestorming.
- Closely United. Swarming focuses energy at a critical
- Their activities are logically consistent area or key activity so it gets done
and supportive of one another 8. Diverse skill sets and share a common vision
2. Loosely Coupled - The developers have the ability to get
- They don’t rely upon a single individual the job done without excessive reliance
to fully define or implement a major on outsiders.
system capability. - The team members have to work
- Thus, epics or large chunk of work together with a shared purpose and a
should be divided into small elements unified commitment.
to be able to deliver working software o Shared knowledge and pairing
iteratively and incrementally. Anyone o Collaboration
can select a portion of the system and o Simple techniques
work on it. o Trust and respect
3. Decentralized o Backlog management
- Servant Leaders – They lead instead of o Quality results
“Command and Control” approach
- Self Organizing teams
COMSCI 3100: SOFTWARE ENGINEERING
Extreme Programming
Perhaps the best-known and most widely used
agile method.