200 likes | 260 Views
Discover the nature of software applications, objectives of development processes, and best practices to optimize productivity and quality. Explore iterative development, scalability, and maturity levels in the software development process.
E N D
Software development process. • A software development process is the specification of a sequenced set of activities performed by a collaborating set of workers resulting in a coherent set of project artifacts, one of which is the desired software system. • The objective of a process is to make predictable the amount of effort required to: • Predict and evaluate costs • Attain and keep a certain level of quality • Predict the time needed for development
Nature of software applications • There is no unique and universal optimum development process. It is an asset of an enterprise that needs to be configured and tuned according to the nature of the product and the level of experience of the company. • Kinds of applications that impact in the development process: • Monoprocessor: They execute in a single computer. They do not communicate with other nodes and usually neither with other applications. e.g. a word processor. • Embedded: They execute in a particularly restricted computer whose external interfaces follow the metaphors and behavioral patterns of a different purpose device. They usually are co-design with its hardware. e.g. A washing machine. • Real Time: They have in their specifications timing requirements and usually hold a reactive nature. e.g. A radar control system. • Distributed: They execute their constituent parts in different processors, and hence use networks as elements for communication. e.g. Messenger, Dropbox, etc.
Objectives of a development process • To be a project template that guides practitioners along the sequence of tasks that are required and the products that must be generated. • To improve quality of the final product: • Reduce the number of failures • Lower the severity of defects • Enhance reusability • Improve the stability of the development and the cost of maintenance. • Improve predictability of the project regarding: • The amount of work required • The time needed for its development • Generate the proper information for the various stakeholders so that they can make an effective monitoring of the process.
Planning Working Plan DevelopmentTools Define Organize Plan Activity Support Realize Work in Results Worker/Role Create Generate Use Gestiona Product Especify Identify Formalize Guide Management &Configuration Defects & problems Pattern Basic elements in a software development project. Working lines
Scalability. • Scalability is an important property in a project since they may have very different dimensions. • It describes how linearly it varies the effort required to realize a project with regard to its complexity. • When the project complexity increases: • The required levels of abstraction rise • They increase the needs for communication between project teem members. • It becomes harder to find/discover errors. The ideal is to have a linear growing of the effort, not an exponential one. • Some means to achieve scalability: • Arrange different time scales for the generation of the activities. • Include specific options in guides and forms tailored to the characteristics of the projects.
Tecnolgical keys in model driven development processes. IterativeDevelopment VisualModeling Frameworks ExecutableModels AutomatedRequirements-Based Testing Bi-unicity Model-Code
Main tasks in a software development process. • Understand the application objectives in its domain. • Formulate a working plan • Create and manage the documentation. • Catch the requirements. • Design and build the product. • Test and validate the product. • Delivery and maintenance of the product.
Levels of maturity of development processes. • Primitive: There is not. • Programmed: It has a sequence of stages defined as well as the documents that will be delivered out of each. • Systematic: It is formulated in a systematic way. • Administrated: It includes criteria to quantify the performance of each phase and of the full process. • Optimized: There are control parameters that enable the optimization of resources and labors needed for each project.
Linear process model. • Tunnel process: • No process • No control • Just for small projects.
The waterfall model Time Requirements Analysis Analysis Design Advance Code implementation Modules test Debugging Integration System tests Maintenance High cost error recovery Implementation
Integration tests 7º Modules Test 8% Coding 7% Design 5% Specification 3º Analysis 3º Maintenance 67% Cost of development phases for a typical application Problems of the waterfall process. • The real test is performed when all is designed and done. • It assumes that before starting the process the product is fully defined. • When mismatches/errors are discovered in the maintenance phase, the problem is to be adapted to the solution, not vice versa...
Spiral process • The application is made in successive phases by evolving from simpler to more complex systems. • In technology, as in nature, complex systems have arisen as evolution of simpler ensembles. • Object oriented programming facilitates evolutionary programming: • Prototypes may be designed with only some objects. • And/or with limited functionality.
Characteristics of an iterative process • An iterative process is conceived as the construction of successive executable prototypes that go evolving from basic requirements up to the final fully functional desired system. • This strategy tends to post the more risky problems early. • Along the development process, real (partially working) prototypes are shown to the users and clients: • The user faces the product in a real experience. • The client participates as a collaborator in the project. • The teem is continuously motivated with closer in time objectives. • The integration of components/modules is progressive. • Progress is measured/monitored in a tangible way, not on paper.
N minicascade. • Cycles in an iterative process reproduce basically a cascade process, but subject to much simpler objectives. Analysis Design Coding N times Test
Assembly & test of the application prototype Test Planning and evaluation of the iteration Party Translation ROPES Microcycle Elaboration of the modules for the prototype Analysis Design Optimize the model to Satisfy the QoS requirements A microcycle iteration in the ROPES process. Identify & specify the required properties of the application
Detailed phases in the microcycle spiral. Translation Test Modulestest Integration & Test Coding Successive prototypes Validation Detailed design Party Mechanisticdesign Analysis of requirements Design Architecturaldesign System engineering Object analysis Análisis
Sinchronization management / technical development. Iteration Result Phase Preliminar iteration Viability Study Sketch Architecture iteration Architecture prototype Preparation Architecture iteration Architecture prototype Development iteration Development prototype Development iteration Construction Development prototype Development iteration alpha/beta version Delivery Iteration Beta version Transfer Delivery Iteration Fully deployed Time