Slide 1
definition of software engineering and why we need it.
Software engineering is the application of a systematic, disciplined, quantifiable approach to
the development, deployment, operation, and maintenance of high-quality software with
limited resources.
Software engineering practices aim to shift developers from writing programs to building
systems. As the size and complexity of a system grows, and/or as more people become
involved in development, adhering to software engineering practices help us to manage the
effort.
Chaos report’s most costly contributors to project failures are lack of user input, incomplete
or changing requirements, lack of resources.
Code of ethics:
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.
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.
Slide 2
What Software Engineers should pay attention to today.
Choose and properly use a variety of programming languages & application
frameworks
Choose and adhere to a variety of development methodologies
Work towards engineering high quality software
oProduct quality attends mostly to Verification and Validation, but
also Product-in-use
oProcess quality attends to Productivity, Effort Estimation,
Development Pace Sustainability etc.
Software engineers are able to communicate with management, developers, and
clients
Software engineers focus on requirements as delineated by clients
Software engineers carefully choose technologies to support their management,
development, deployment and maintenance efforts
Software engineers are involved in the deployment, operational training,
evolution and maintenance of the software they develop
Informed Design Effort – with tools like Gantt, Burndown, and PICK
Informed Effort to Ensure Quality – with quality control, Product quality attends mostly to
Verification and Validation, but also Product-in-use. Process quality attends to Productivity,
Effort Estimation, Development Pace Sustainability etc.
Informed Effort to Uphold Ethics and Equity Standards – with diversity, equity and inclusion.
Respect Pyramid: |TOP|Delightful (Human Experience), |MIDDLE| Functional convenient &
reliable (Human Effort), |BOTTOM| Decentralised, private, open, interoperable, accessible,
secure & sustainable (Human Rights).
Slide 3
Follow Coding Conventions, Conventions are standard practices that all developers on a team
agree to follow. Some are common practices, while others can be specific to a team.
Slide 4
Software development life cycle = Requirements > Architecture > Design > Implementation >
Testing > Deployment > Support or Decommission > loop.
Fundamental software engineering activities
Software Specification – The functionality of the software and constraints on its operation
must be defined.
Software Development – The software to meet the specification must be produced.
Software Validation – The software must be validated before to ensure that it does what the
customer wants.
Software Evolution – The software must evolve to meet changing customer needs.
Process Model is a description of what tasks need to be performed, in what sequence, in what
conditions by whom to achieve the “desired results.” This is useful to provide a guidance for
systematic coordination and controlling of the task and the personnel who performs the task.
Waterfall Development Cycle = Requirements > System Analysis & Design > Implementation >
Testing & Verification > Integration & Packaging. > loop (Incremental and Traditional)
Incremental Development Cycle starts with a fully formed vision of the final product and then
its built piece by piece.
Iterative Development Cycle starts with a conceptual vision of the final product, then it gets
more detail the more its built.
Rational Unified Process/Development (RUP) is both iterative and incremental.
Key guiding practices for RUP: Manage requirements > Develop Iteratively > Model Quality >
Use Component Architecture > Control Changes.
Pros of Modern Development Process – RUP
The Iterative approach to the elaboration, construction, and transition phases enables you to
incrementally define the requirements and assemble the application.
The elaboration iterations focus on risks and risk mitigation to improve the project’s chance of
success.
It can accommodate different development models flexibly. For example, can use series of
waterfall and agile in construction phase.
The inception and elaboration phases generate a lot of documentation that can help new
developers join the team later.
It can enable incremental releases if wanted.
Cons of Modern Development Process – RUP
It’s complicated, which requires more resources than simpler approach. Risk Analysis can be
difficult. The complication isn’t always worth the effort, particularly for low-risk projects. It
doesn’t work well with small projects.
Slide 5
Problems with “Traditional” Processes
Focused and oriented towards “large projects” and lengthy development time. (years). –
Started SWE
Inability to cope with changes in requirements and technology fast enough.
Assumes requirements are completely understood at beginning of project.
Starting to rely on non-sustainable heroic and lengthy development effort by the developers –
Hard to maintain constantly high productivity.
Complex set of activities.
Waste or duplication of effort, especially in documentation.
Agile Manifesto
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contact negotiation
Responding to change over following a plan.
Agile Principles
Working software is the primary measure of progress.
Agile processes promote sustainable development.
Continuous attention to technical excellence and good design enhance agility.
Simplicity – the art of maximizing the amount of work not done – is essential.
The best architectures, requirements, and designs emerge from self-organizing teams.
At regular intervals, the team reflects on how to become more effective. Then tunes and
adjusts its behaviour accordingly.
Key Practices guiding Agile.
Short releases and iterations > Develop incrementally > involve users > document minimally >
communicate continuously but informally > embrace change.
XP release cycle
Evaluate system > select user stories for this release > break down stories to tasks > plan
release > develop/integrate/test software > release software > loop.
XP Role – Customer, Tracker, programmer, coach, tester, administrator.
XP Core Values - Communication, Simplicity, Feedback, Courage
XP Fundamental Principles – Rapid feedback, Simplicity, Incremental change, Embrace
change, Quality work.
Crystal Family Methodology
Crystal Clear – for “non-critical” projects (6-8 people)
Crystal Orange – for “critical” projects (up to 40 people)
Crystal Orange Web – for web development.
Crystal Clear has one team, working in same room. There are at least four people being
sponsors, senior designer, programmer, and user. Work products are nine items, including
schedule, use cases, design sketches, test cases and user manuals. The maximum release
length is 2 months.
Crystal Orange has different teams for system planning, project monitoring, architecture,
technology, functions, infrastructure, and external testing. Fourteen roles played by different
people, + crystal clear roles + project manager, sponsor, business expert, architect, design
mentor, tester, and UI designer. Thirteen work products + crystal clear + requirements
documents, status reports, UI design documents, and interteam specs. Work Products are
developed until they are understandable, precise, and stable enough for peer review.
Maximum release length is 2-4 months, two user viewings per release.
Scrum - Incremental and iterative development approach. Develops small sprints in short
cycle of 2-3 weeks.
Scrum Process Approach
Vision > Product Backlog > Sprint Backlog > 2-4 week sprint > Daily scrum meeting >
Potentially shippable product increment.
Kanban Core Practices - Make the project status and the workflow visible. Minimize the
overall WIP in the process. Manage the overall workflow via measuring the tasks and items in
development. Make the process explicit and clear. Ensure there is a feedback loop for
properly monitoring and controlling the flow of the project. Ensure and improve collaboration.
Agile Summary – Small teams, requirements gathering, requirements validation, repeated
customer, constant integration and testing, informal review and communication, short
iterations and deferring complicated features.
Main Points of Each Methodology
XP – Requires high discipline and adherence to principles and practices. Based on four core
values (communication, simplicity, feedback, courage). Five fundamental principles (rapid
feedback, Simplicity, Incremental change, Embrace change, quality work, and 12 practices.
(high agility, discipline)
Crystal Clear – Does not require adherence to all principles. Based on 7 principles: frequent
delivery, reflective improvement, close communication, personal safety, focus, easy access to
expert users, and a good technical environment. Will only work for small team projects. (high
agility, low discipline)
Crystal Orange – Suitable for larger projects. It has different teams for different functions. Not
suitable for large or life-critical projects. (Medium agility, discipline)
Scrum – most popular agile process. A disciplined methodology that can be adapted and
combined with other techniques. It provides clear visibility to the project status and, in the
long run, reduces the effort spent on project management. (High agility, discipline)
RUP – Framework, instantiated as a very heavy process. Can be pared down to a relatively
agile process. (Low to Medium agility, high discipline)
Kanban – Minimize work in progress. Use visual cards for each task. Pull activities forward
when needed by focusing resources on them. (high agility, low discipline)
Slide 6
Requirements – the statements that describe what the software system should be but not
how it is to be constructed.
Requirements engineering – A set of activities related to the development and agreement of
the final set of requirement specifications.
Requirement activities – Elicitation, Documentation and Definitions, Prototyping, Analysis &
Organization, Specification, Review and Validation, Negotiation and Acceptance.
Analysis requirements – Checking for consistency (there are no contradictions), Checking for
Completeness (there are no ambiguities)
Slide 7