Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSC 354 – System Development Life Cycles & Processes, Fall 2013

Similar presentations


Presentation on theme: "CSC 354 – System Development Life Cycles & Processes, Fall 2013"— Presentation transcript:

1 CSC 354 – System Development Life Cycles & Processes, Fall 2013
November 2013, updated November 2016 Dr. Dale Parson

2 Waterfall Model This classic model performs each phase of software construction sequentially and never goes back. Requirements gathering & specification (from customers), functional specification (architect to customers), high-level & low-level design specification (architect & developers), testing specs, user manuals. In the face of too-little-information at the start, and incremental acquisition of domain, requirements and design knowledge, the Waterfall Model is unresponsive to change and prone to failure.

3 Iterative Development, Prototyping
Iterative development is a repetitive cycle of small waterfalls, where each major phase develops a subset of a big system, with its own requirement through deployment sub-phases. Rapid prototyping is construction of partial solutions, stubs and driver code that completes some parts, partially completes some, and skips others. It may use a high-level domain or prototyping language. Spiral design combines iterative development (prototyping & consolidation) with the Waterfall. We are doing spiral design with each semester’s overall project being a sub-phase.

4 Surgical Team Approach
This is the process we are using this semester. The Chief Surgeon is the Architect. The Architect is the team leader for the team leaders. The Architect is responsible for Conceptual Integrity – one or a few minds steer the central architectural concepts and structures. Individual project teams have leaders. Creativity is manifest in design and implementation. This approach is hierarchical.

5 Model-Driven Architecture
Use a modeling approach such as Unified Modeling Language (UML) to drive the architecture & design. We are using UML for sketches (a.k.a. maps). Strong proponents promote models for blueprints & even as a substitute for code via CASE (Computer Aided Software Engineering) tools. Domain-specific tools (e.g. parser generators) and domain-specific modeling languages exist, but generally CASE tools generate only the boilerplate code.

6 Model-Driven Tools Creation tool creates models.
Analysis tool analyzes models (e.g., for completeness.) Transformation tool transforms models into other models, documentation, or code. Composition tool merges model hierarchies. Simulation & test tools test models & code. Metadata management tool controls mappings between models and to code. Reverse engineering tool transforms legacy code into models.

7 Agile & Extreme – Good Parts
Agile Programming (including “Scrum”) and Extreme Programming are the fashion. There is minimal reliance on formal specs. Everything lives in the code. (I like UML maps.) Have a working copy of the code at the end of every day. (I am underlining the good ideas.) Integrate tests into the build & test repository as you write code or even before.

8 Agile & Extreme – some OK Parts
Sit together. (Max communication bandwidth.) Tear down the cubicle walls? I like some privacy. The corporate drones like hive mentality. Keep the architect involved in coding. Flatten development organization structure. Pair programming: “Write all production programs with all people sitting at one machine.” ??? There seems to be an over-emphasis on cosmetic details. “Extreme” too easily becomes another religion.

9 Become More Human Slavish adherence to any development methodology becomes too doctrinaire. Individuals need to be able to learn. Organizations need to be able to learn. Learning entails experimenting & adapting. Processes are fundamentally machines. Don’t let the machines do your thinking for you.


Download ppt "CSC 354 – System Development Life Cycles & Processes, Fall 2013"

Similar presentations


Ads by Google