Software development activities Note activities not steps l - - PowerPoint PPT Presentation

software development activities
SMART_READER_LITE
LIVE PREVIEW

Software development activities Note activities not steps l - - PowerPoint PPT Presentation

Software development activities Note activities not steps l Often happening simultaneously l Not necessarily discrete l Planning: mostly study the requirements 1. Domain analysis: study the problem area 2. System design:


slide-1
SLIDE 1

Software development activities

l

Note “activities” – not “steps”

l

Often happening simultaneously

l

Not necessarily discrete 1.

Planning: mostly study the requirements

2.

Domain analysis: study the problem area

3.

System design: devise computer solution

4.

Implementation: write the code

5.

Testing, documentation, maintenance, …

slide-2
SLIDE 2

Software engineering

l A subset of system engineering l Covers all software development activities,

planning through maintenance

l Also includes various management tasks

– Determine project roles, and assign personnel – Create and monitor development schedules – Some client relations and customer support

l Guided by CS theory

– But really just heuristics, and often ad hoc

slide-3
SLIDE 3

Professional, ethical responsibility

l Above all, do no harm! (Hippocratic Oath)

– NO VIRUSES or other malicious programs – Avoid inventing “the bomb” or a plague, or …

l Basically demonstrate loyalty to employer,

clients, co-workers, country, humanity, …

l See “Software Engineering Code of Ethics and

Professional Practice” by ACM/IEEE-CS at

https://www.acm.org/about-acm/code-of-ethics

slide-4
SLIDE 4

Development process modeling

Requirements Analysis System Design Program Design Coding Testing (several steps) Operation & Maintenance

The Waterfall Model

l The

classic:

l Step

after step, after step, …

l Never

back up

slide-5
SLIDE 5

Alternatives to waterfall model

l Okay, we

all agree – this extreme doesn’t work either

l Is there a

middle ground?

Requirements Analysis System Design Unit Testing

Software Development Reality

Integration Testing Maintenance Delivery System Testing Coding Program Design

slide-6
SLIDE 6

Considering risk

In a waterfall lifecycle, high risk issues such as integration and load test may be tackled late. Time Potential impact of risks being tackled

Requirements Analysis Design Implement Integrate & System Test

l Research conclusion: it is wise to do some

implementing and testing early in the process

slide-7
SLIDE 7

Engineering the risk factor

l Spiral Model

– Includes frequent risk analyses

l Frequent

reevaluation during an extended planning stage

slide-8
SLIDE 8

Testing and iterating

l Accounts for

requirement changes and mistakes

l Key idea:

plan to iterate

l But still a bit

too rigid?

Requirements Analysis System Design Program Design Coding Unit & Inte- gration Testing Operation & Maintenance

The V Model

System Testing Acceptance Testing Validate requirements Verify design

slide-9
SLIDE 9

Incremental / iterative process

l Hmmm … a hybrid that makes sense!

Requirements Design Implementation & Test & Integration & More Design Final Integration & System Test Requirements Design 4 weeks (for example) The system grows incrementally. Feedback from iteration N leads to refinement and adaptation of the requirements and design in iteration N+1. Iterations are fixed in length, or

timeboxed

. Time Implementation & Test & Integration & More Design Final Integration & System Test

slide-10
SLIDE 10

Iterating reduces risk overall

In an iterative lifecycle, high-risk issues are tackled early, to drive down the riskiest project elements. Time Potential impact of risks being tackled Iteration

l Especially if thorny issues are tackled early

slide-11
SLIDE 11

Unified Process (UP)

l By Rumbaugh, Jacobson, Booch, others l Iterative and incremental through 4 phases l Use case driven l Architecture-centric l Risk-focused l UML-heavy

– Static models – Dynamic models

slide-12
SLIDE 12

Agile Software Development

l Agility – observed to be a common feature of

successful processes

l Different projects need different processes l Generally better to focus on skills, communication,

and community instead of processes

l Fruitful to consider it “a cooperative game of

invention and communication” (Cockburn, 2002)

l See Agile Manifesto: http://agilemanifesto.org/

– And related Principles of Agile Software

slide-13
SLIDE 13

Extreme Programming (XP)

l Very popular agile development process today

– Started by Kent Beck, Agile Alliance member

l Mostly means adhering to some basic principles

– Client representative on-site – Always practice pair programming – Perform constant, at least daily testing – Keep iterations short, and clearly time-boxed – Do frequent, incremental builds

l See www.extremeprogramming.org

slide-14
SLIDE 14

About OOA and OOD

l Means: analyzing and designing a

system from an object perspective

– System composed of objects or concepts

l What things or ideas are involved? l How do objects/concepts interact?

l Means not: function-oriented

– System composed of processes, functions

l What to do, and how to do it? l Mostly worry about “flow of control”

  • Record loans
  • Add resources
  • Report fines

Catalog Library Book Librarian

slide-15
SLIDE 15

Doing OOA and OOD

l Not easy to do it well

– But worth it for: big systems, big teams, long-term productivity (software reuse, etc.) – Takes skill: experience, practice, learning

l OOA – investigation of the problem

– What must the system do? – Focus on learning the problem domain.

l OOD – find solution to the problem

– How will system fulfill requirements? – Define logical software objects and associations to solve the problem.

slide-16
SLIDE 16

Tools for doing OOA and OOD

l UML – Unified Modeling Language

– Standardized notation – now well accepted

l CASE tools – computer-aided software

engineering tools (like “Rational Rose”)

– Getting highly sophisticated now

l Can generate code from modeling diagrams l Can do reverse engineering, …

– Not necessary for CS 48 (but could help with diagrams, and other requirements) – may cost $

slide-17
SLIDE 17

Start by not even thinking about programming

l Try to focus on domain concepts at first

– Not software constructs (wait until design stage) – Avoids complexity overload – Design and eventual system will be better too!

l Create and maintain a steady stream of artifacts

– Mostly pre-programming – diagrams, class specifications, glossary, … – Guides initial implementation, and aids subsequent modification, maintenance, and software reuse

slide-18
SLIDE 18

CS 48 development schedule

l Overview: a planning phase, followed by

at least 2 complete development iterations – each iteration produces a working system

– Call it “relaxed UP” reflecting agile principles

l Planning phase – Requirements Analysis

– First be the client – describe the project – Then analyze the requirements

l Itemize system functions and characteristics l Write use cases, and assign use cases to

development iterations

slide-19
SLIDE 19

CS 48 schedule (cont.)

l Early iteration(s) –draft project (report and

current system)

– Analyze the domain pertinent to the iteration

l Identify classes, class attributes, and associations l Identify system behavior (as a “black box”)

– Design the current system

l Specify the way objects will behave and interact l Tie to other systems/tools as necessary

– Implement and test

l Complete at least 1 more iteration – final project

– Analyze/design/implement/test and update documents

l Also demonstrate system to class during last week of quarter

slide-20
SLIDE 20

Next

Requirements Analysis