Beruflich Dokumente
Kultur Dokumente
Page 2 2/7/2011
.Net Development Process
Introduction
Going forward, Microsoft’s platform of choice for application development is the .Net
framework and the Visual Studio .Net Integrated Development Environment. This new
direction gives the XXX.com Integration Development team great opportunities in
developing more robust applications using the Object Oriented (OO) design and
development technologies. We will leverage the tools provided by the new technologies
to create a “XXX Integration Framework”. This object framework will encompass all
functionalities to provide a comprehensive view of the entire Integration (Ancillary)
application layer.
However, with the advent of this new technology and its new design philosophy, our VB
developers will be greatly challenged in their ability to adjust and learn quickly and
become proficient in a short time in order to deliver quality results in the E-Commerce
Replacement project. In addition, our existing development process may also need to be
modified to mirror the type of development approaches recommended for .Net. This
document is intended to discuss approaches that should be taken when adopting the new
technologies in our design/development phases while minimizing the risks that hinder the
success of this project.
Major Challenges
Solutions
Developer Training
Page 3 2/7/2011
.Net Development Process
All these changes mean that the existing knowledge of VB cannot be leveraged for the
development in the new technology in most parts. The true learning curve lies on getting
familiarized with the .Net framework namespaces and classes and their functionalities.
As a result, we should focus on choosing a language that is going to be the language of
choice for future software development under .Net. At current time, the most popular
language is C# (currently used throughout Microsoft for its software developments). This
language is very similar to Java in its syntax and can be learned by a VB programmer
without much adjustment.
The real learning curve, as mentioned earlier, is learning the .Net Framework. There is
really no easy way to overcome this obstacle. Sending developers to training classes will
be helpful by providing a more complete overview of the technology and we should do
that when such opportunities are available. However, training classes alone will not be
sufficient for the level of expertise that will be required to develop complex systems.
Knowledge acquired through hands-on experience will be the only way our developers
can be come proficient with the technology.
There are risks, however, when trying to learn while developing at the same time. But
this is the nature of the fast-moving world we are in. Instead of avoiding taking risk, we
need to implement measures to control the negative effects. We have three things that
work in our favor:
• The presence of two MCS consultants who are both very technically capable and
have great deal of .Net development experience
• The additional Microsoft resources we can tab into for advices and answers
• The significant size of team members participating in this project
We need to take full advantage of the first two benefits by involving MS in all phases of
our development life cycle. In addition to leveraging their design / development advices
on the Commerce Server 2002 and BizTalk Server developments, we will involve them
in the design of our .Net Application Framework and in the review of our programming
practices.
Page 4 2/7/2011
.Net Development Process
review format rather than done by the analysts as in the past. Suggestions from other
members for better and more efficient coding practices should be welcomed and adopted.
Finally, the team will follow the industry best practices on coding standards. Doing so
will enable the team to produce source codes consistent with the industry standard for
.Net developments. We will solicit such standards from Microsoft and adapt them for
XXX environment (but try to make as little changes to them as possible).
Object Oriented design and development has been around for a long time and has mainly
been used in commercial software development. Enterprise application development has
been lagging behind in this area until recently. With the advent of Java and now with
.Net, the traditional client/server development is finally moving into this arena. Besides
the many programming benefits of the OO approach, the implication to our own
development lifecycle is the discipline it brings to our development process.
Right now, in our Integration layer (Ancillary Applications), the various functionalities
are developed as individual applications implementing its own business logic from end to
end. There is no overall architecture and no published interfaces for these application
modules which make sharing existing functionality very difficult. Furthermore, with the
lack of an overall and comprehensive view of the various applications in this layer, there
is little chance to enforce consistency and discipline to the application development. The
quality of the application design and implementation depends entirely on the quality and
experience of the individual developers.
Page 5 2/7/2011
.Net Development Process
Note: we will need to elaborate on this in the architecture design for the E-Commerce
Replacement project. Basically, we need to create a multi-tiered architecture for the new
Integration layer including “Presentation”, “Business Logic (Business Façade and
Business Rules)” and “Data Access” tiers. Each of these layers will consist of multiple
classes.
Evolution Prototyping
In Evolutionary Prototyping, you will still go through the analysis / design / development
phases. However, there is no clean separation between design and implementation. You
do not sit down and start designing to every details possible before the development start.
Instead, development (prototyping) is part of the design process and the prototype
continues to evolve into the final product though multiple iterations.
One key focus for Evolutionary Prototyping is addressing high-risk areas first and then
continues to evolve to include other areas of the application. So for the E-Commerce
Replacement project, we should start out by focusing on how functionality should be
divided and encapsulated (at a higher level sometimes) and the interface for each object
should be defined. The internal logic can either be simulated or left out until later
iterations.
Initial Design
We start by identifying the major functionality in each of the multiple tiers (Use Cases in
UML). Based on these functional blocks, classes are identified representing major
functionalities. The public interface for each class is also identified (Class Diagrams in
UML). Then the relationships and interactions among classes are added (Class Diagrams
and Sequence Diagrams in UML). The resulting classes are then grouped into
components for implementation (Component Diagrams in UML). This completes the
preliminary design (not the entire design) of the project. At this point, high-level
prototype development tasks are identified and rough time estimates are given and works
are divided among team members. All team members will participate in this effort to
contribute their knowledge of the existing functionality. Microsoft consultants will help
lead the discussion and provide guidance in the design.
While the object model design is taking place, the data model design is carried out as
well. For applications in the Integration layer, part of the data source will be defined
based on the Web site requirements (Commerce Server 2002) and the rest will be data
stores for internal usage. The data modeling effort will also be part of the Evolutionary
Prototyping process since there will be great inter-dependency between the object models
and the data models.
Page 6 2/7/2011
.Net Development Process
After the initial design is complete, the development of the initial prototype then takes
place. Since the developers are working with new technology, it may take some time for
the developers to become proficient with the tools. Therefore, allowance needs to be
made to account for the learning curve during the initial prototyping effort. During
prototyping, developers need to examine the usage of the classes critically to identify any
shortcoming in the existing class design (interface, encapsulation of functionality). After
the initial prototype is created, the resulting modules are validated through the build
process (more on this in the Team Development Environment section). Any suggestion
for changes in the object model is first reviewed by the team and incorporated upon
acceptance by the team.
From this point onward, the prototype goes through continual iterations to refine its
design. At the same time, the data model will evolve accordingly. The completion of
design phase is when classes supporting all of the tiers (UI, Business, Data) are included
in the object framework and the object model is stabilized (no more changes to class
relationships and interfaces). At the completion of the design, the time line for the project
will be readjusted to provide a more accurate estimate.
The development phase is simply a continuation of the iterative activities after the design
complete milestone. The emphasis for the development phase is to refine the prototype in
the following areas:
• Business logic finalized (from the previously more simplified version)
• Data access functionality Completed (from the previously simulated version)
• Code standard enforced
• Installation solutions finalized and incorporated into Build packages
• Rigid build / test processes established
In the beginning, the iteration frequency can be less rapid (weekly?) to accommodate to
the amount of code changes that need to be added initially. But as the prototype
approaching its completion (milestone TBD), daily build and the accompanying QA
testing will be required. Team members are required to make sure their portion of work is
well tested for the team builds to be successful. The testing of the applications should
start about two third into the development phase (TBD) as the majority of the
functionalities is taking shape.
Also, business users should be involved in the usability testing to provide feedback on the
UI functionality towards the later part of the development phase (after presentation layer
is taking shape).
Even during the development phase, shortcomings in design should still be identified and
object model adjusted accordingly. Code review by peers is conducted daily to safeguard
quality and consistency.
Page 7 2/7/2011
.Net Development Process
Since the QA process has been incorporated as part of the development process to
remove all of the bugs, only a final comprehensive testing for the applications in the
Integration layer will need to be conducted to verify the product quality. System
integration testing (end to end from Web to OrderPower order fulfillment system) will
take place subsequently (coordinated with the Web team’s development cycle) to ready
the applications for production.
The deployment / installation process should already been developed by launch time
based on the build process created and used in earlier phases. The deployment of the
applications and its required resources should all be part of an automated installation
package with little or no manual intervention.
One of the major risks for Evolutionary Prototyping in the traditional C/S development is
the poor design/ poor maintainability it may cause. RAD tools such as Visual Basic
enable easy prototyping but they often lead to undisciplined development practices such
as:
The combination of OO (with UML) and Evolutionary Prototyping help remedy such
shortcomings by build into the process a comprehensive object framework and steps to
maintain accuracy of the object model. In addition, this life cycle help ensure mistakes
are uncovered and addressed earlier on through iterative testing and reviews.
By using Visual Studio .Net, our development team will be empowered with capabilities
far beyond what they currently have using Visual Studio 6.0. However, to truly take
advantage of this opportunity, the traditional in-house C/S development process
associated with RAD tools need to be upgraded to the level of commercial software
development. A team development environment optimized for .Net development needs to
be established. In addition, our team structure needs to be modified to resemble that of a
software development team.
Microsoft has published a detailed white paper covering the various aspects of the a
successful team development environment (http://microsoft.com/downloads/release.asp?
ReleaseID=35981 or \\dta01\!FIL_DIR\ECO_PUB\Integration Team Share\Team
Page 8 2/7/2011
.Net Development Process
Build Process
In commercial software development life cycle, the Build/Test process is an integral part
of the development phase (See the Build section in the Microsoft white paper). Currently,
we have integration testing and QA testing that happen after the completion of the
development phase. However, in the new development cycle for .Net, the Build and Test
should be part of the development iterations. Also, the Build process is not the manual
installation/configuration we are performing today, but rather an automated process
based on the Visual Studio .Net Setup projects supporting the application projects plus
additional customized build scripts. In addition, there is a tight integration between
Visual Studio .Net IDE and Visual SourceSafe (VSS) to provide version control for
software builds.
All these new features require a person (team?) dedicated to support the build engineer
role. This person needs to
• Acquire the necessary knowledge and expertise required to create the VS .Net
setup projects
• Support the version control process using VSS and VS .Net
• Create and maintain the build package and support the regular build processes
There will be brand new learning curve for this “build engineer” for him to be
knowledgeable and familiar with the facilities that Visual Studio .Net provides. Currently
we have a role responsible for performing “integrations testing” which takes place at
code completion. There is similarity between this role and the “build engineer” role but
the current responsibilities need to be extended significantly to encompass the functional
responsibilities mentioned above.
QA Testing
Since the build process and the testing process work hand-in-hand during the
development phase, QA’s involvement will take place much earlier in the development
life cycle. Creation of the test plan and test cases need to start after the initial prototype is
completed. As the prototype evolves during its multiple iterations, the details of the test
cases should also continue to be updated. The test cases need to reflect the new features
added to the prototype in each iteration.
Page 9 2/7/2011
.Net Development Process
the limited QA situation is to have the QA members be responsible for creating test plans
and cases and to have the developers help out in executing some of the cases and report
back the results.
Stress Test
Environment
100Mb Ethernet
Developer Workstations
In addition to making sure the production server environment is satisfying the IDC
recommendation, the Infrastructure team also needs to help define and establish the team
development environment.
Conclusion
Moving to .Net development will yield tremendously benefits in upgrading the quality of
the team and provide us with a disciplined development process. The E-Commerce
Page 10 2/7/2011
.Net Development Process
We need to seize this opportunity and make the necessary changes in order to achieve
these objectives.
Page 11 2/7/2011